I'm a CS associate professor. I teach a course which consists in contributing to a free software, in third year at my uni. A few years ago a couple of students decided to make a contribution to GNU ls. The change was to have the output color independent of capitalisation (it is based on filename extension). Their code was accepted. It was a tiny tiny contribution, but it's probable that these few lines of code are and will be executed a few thousands times more than all other contributions my other students made.
That's great to see this course -- there aren't enough good courses materials on how to contribute to free software, and it can be quite intimidating the first time. Yet, it can definitely be one of the most rewarding development work...
With others from a few large free software projects & communities (Open edX, OpenStack, Framasoft, Mines-Telecom...), we are in the initial stages of producing an online course / MOOC about contributing to free software. If you (or anyone else reading this :) ) are interested in contributing or joining the project at this early stage, please let me know. : ) My email is on my profile.
Man I wish my college offered courses like these. I don’t regret getting my degree but I sure didn’t get much out of it besides the piece of paper that made me hire-able in some people’s eyes.
I work in finance. About 5 years ago I started building a FIX library on my spare time, out of curiosity. Over the years it has been countless fin tech start-ups as well as big companies reaching out to me about the library, suggesting fixes and features. Since then I have long lost the interest in the technology which enables connectivity to financial exchanges to automate trades, but I keep working on the library for the benefit of others and just the joy of creating something. But what’s the actual impact? Enabling companies getting richer? Greed?
I've been a user of your project and it's fantastic. I think you're being too hard on yourself.
The proliferation of marketplaces and assets to trade (and all type of projects, automated trading, market making, etc... that your project enabled) can been seen as a net positive, as a win win for all parties involved and more.
From a microeconomic perspective, your library enabled access to startup using js and with relatively simple tech stacks access to a tool that would otherwise be relatively complicated and time consuming and for which they would not necessary have the resouces. By doing so you lowered the cost of entry and allowed new entrants to challenge the status quo.
And from a macroeconomic perspective I think it's one of the reason access to capital has been simplified and has lowered in cost, it's one of the reason for the low cost of mortgages and the relative resilience of economies during covid (central banks interventions are useless without bank and other financial intermediaries participation, it would be like pushing on a string).
Don't be fooled by the contemporary contempt against finance. It's still the most important reason that explain the constant improvmements in prosperity and peace of recent years, and the best thing one can do is to make it less arcane and open it to more people. One of the achievements of your tool.
There is a common refrain in charitable organizations that are focused on helping the poor:
"Sometimes you have to feed the greedy to get to the truly needy."
In other words, the greedy will always take advantage, but that doesn't diminish the help you give to the needy. There is simply no way to totally filter for the greedy.
This doesn't really apply directly to your situation, but at least for every greedy company that benefits from free products like yours, there are a lot of jobs created and benefit to society as a whole when these companies create useful products.
I'd probably offer some sort of support/consultancy services and prioritize the work of the paying users, making it clear when filing github issues and pull requests. This could easily sustain you in a passive income way so you can spend most of your time working on things that matter more to humanity.
I don’t think you have any obligation to continue supporting the software,
but give yourself more credit! You’re making dozens (hundreds? thousands?) of developers lives significantly better. You’re helping bring the finance industry out of the stone age. You’ve created something useful and valuable, which is no small feat.
This is amazing. I now work in consumer SAAS web development, but I worked for a long time in finance and for 7 years of that exclusively focused on FIX, writing a real-time, highly performant market interface. I would have _loved_ to have had something like this while I was working on it. Have you thought of commercializing it? Do you get to use it in your day-to-day work?
Huh! You left out the most funky part: you wrote a FIX parser in Typescript.
What are people using it for? To make web apps and just not have to roll their own wrappers around FIX/FIX-derived data? (That is, if all back ends are used to speaking FIX, it’s nicer to have the front end and web serving tools also just speak it?).
Are your users compensating you well for this? Sounds like the impact you're having is making fintech serious money, so I hope you're getting some of that.
Quite a few years ago as a (very) junior FE dev I used mammoth.js to automate the generation of a biennial report. Three months had been earmarked for the task as this is what it had taken in previous years (due to bad tools and lack of expertise). I had it done in less than a week by using mammoth. Mike was also very accommodating with questions I'm pleased I cant remember as I'm sure they were embarrassingly simple.
The project still took three months as it was one of those special type of organisations, but it wasn't due to the HTML generation :)
Your story and mammoth's origin story really highlight how the Sisyphean corporate world is seemingly at odds -- or at least tangential -- to progress.
Companies isolate devs from customers by using Product Managers. PMs interview customers and then decide what to build. By the time the tasks get to the dev it’s hard to understand the motivation and impact. The best companies I’ve worked at put the engineers and customers in close contact so they understood the impact and shortcomings in their work. Alternately you need to foster a culture of shared purpose where you have “faith” that your work has impact.
I've seen more engineers completely disinterested in anything customer related (and even calling users stupid!) more than I've seen PMs isolating devs. Every time I ask a PM if I could interact with a customer (not asking for permission, but to hook me up) they were delighted. Every single time.
Another way to solve this problem is to have engineers on customer support rotation of some sort. This way, engineers get to see how their software is used in the wild and interact with customers, and PMs get to see how unrealistic expectations and deadlines comes back to bite you in the ass in a form of your engineers being busy fixing half assed crap.
The best PMs I've worked with have very clear understandings of customer workflows and needs (or work towards developing them) and communicate those to the dev team. They also make sure to share customer feedback, whether constructive criticism or excitement/thanks.
It's really motivating to hear customers are happy and I don't know why a PM wouldn't share that good news.
Documenting and communicating motivation and impact are often pretty high up the priority list for PMs, otherwise you're just a context-free ticket factory, which typically results in subpar products.
The project I'm currently the "lead developer" on never had a PM, so we directly communicate with users/customers. Often we are able to implement changes and make them available in a test environment within the hour - people are amazed, because they're used to everything taking days at the very least, usually weeks or months, with a lot of stuff never being fixed and so on.
This is an interesting and thoughtful piece but I think Mike (the author) does rather underestimate his impact.
I never worked with him directly but we both overlapped at Redgate for several years. During the time I was there he wrote code that was integrated into Simple Talk (https://www.red-gate.com/simple-talk/), which is/was Redgate's website for publishing content, articles, tutorials etc., useful to SQL Server and .NET professionals. I believe he also worked on https://www.sqlservercentral.com/, which remains the leading community site for SQL Server professionals. The old Simple Talk site is several years gone now, sadly, but Mike worked on it during its growth phase and (guessing somewhat here) most successful period.
These are sites that are used and useful to hundreds of thousands of SQL Server and .NET professionals every month. Yes, they are also promotional vehicles for Redgate and its products, and a core part of Redgate's marketing strategy, but it is possible for them to be both marketing and useful.
Mike is an excellent engineer, and very much cut from the get (valuable) things done mould - which mammoth.js firmly underscores. I have no idea what he's doing at the moment but, if you get the opportunity to work with him, you should jump at it.
Similarly, I've been writing respectable software for decades but I'm fairly certain that my most widely used piece of software, by a wide margin, is a mildly pornographic app (http://driftwheeler.com)
This app, published in 2017, has a continuously growing population of users from all over the world. I get email every day asking whether soft1 is the only server, thanking me, suggesting improvements, etc.
It's ironic, and there is a lesson to be learned here.
It's just a numbers game. The total number of people who consume porn is probably many orders of magnitude larger than the audience of your respectable software, so even if you're tapping into a very small niche of porn consumers, it can be enough to overtake your other software.
But often simple things have a very big effect - in my first job I made some simple scripts which imported data from machines into an ERP System.
I also made some bigger projects with feature rich GUIs at my first job.
The simple scripts probably sill import data every workday and automate a task previously made by humans since multiple years, some of the GUIs weren't even used daily before I left that job...
So I feel like the simple scripts will be there for a long time and save many work hours while some of the feature rich GUIs probably weren't necessary...
My most used program was a 7 byte .COM I wrote with debug.exe. It made the machine reboot. It took about 15 seconds to write. A friend who worked at the college ended up using it in their scripts. They had a way to do it before but it wasn't as reliable as my little program. That college's infrastructure was used as a model for the rest of the district and so my little program spread to the other colleges.
10 years ago at my current job I created a script to automate the job of checking a certain website for new data each day. It used to be done by a person who would spend maybe 20-30 minutes checking the site and circulating the info each day. Others would also check the site on their own periodically for faster updates.
The script just checks the site multiple times a day and circulates the results.
Over the course of 10 years, I’d guess that my little script I wrote in maybe 5-10 hours (including some tweaks over time as the site format changed) probably saved in the ballpark of half a million dollars in time spent, based on billing rates.
Yeah, this happens even within a side project. Smaller trivial ones tend to be found useful, while bigger ambitious one tend to ending up disappointing, even if completed.
At work, giving a spot-time quick help often feels more helpful than pushing through a "proper" project task.
I suspect this is because large part of the "work" project is more like a speculative investment than something obviously useful. That is probably OK because finding large-enough-obviously-useful-things is hard. What we tend to overlook is that finding a tiny-but-obviously-useful-thing isn't as hard as it looks. It's just hard to earn enough from it.
Ok, but then you should also ask: how much of that is my work and would someone else have written the same simple scripts? Perhaps the main value is in the existence of these ERP systems.
From that p.o.v. your feature rich GUIs may be your biggest contribution to society, because that's really work based on your decisions.
> Sometimes I wonder whether it'd be possible to earn a living off mammoth. Although there's an option to donate - I currently get a grand total of £1.15 a week from regular donations - it's not something I push very hard.
There's no shame in making the source available but using a license that requires payment for commercial use, like the Prosperity [1] license.
The problem with this approach is that it turns open source adoption into a procurement process: the developer who wants to use your projects needs to go through the legal department etc. So if there is any alternative option, employee devs will avoid a dual-licensed package.
Our story is very similar. I wrote a small library for converting XLSX and XLS files to CSV. Over the years, that grew into one of the most popular open source libraries on npm/github: https://github.com/SheetJS/sheetjs
> I don't know what the total amount of time saved is, but I'm almost certain that it's at least hundreds of times more than the time I've spent working on the tool.
To me, this is the entire point of software and automation. To give time and money back to people, because I want to make the world better. I see software being priced to just barely be worth it for the buyer because it saves time (e.g. Mailgun and Auth0). When I write software, I want to price it so that it saves them so much money adoption is a no-brainer. "Free" pricing would be included in that, of course. Unfortunately, I also don't write much useful software.
A few months ago my tiny side project blossomed into a 6-figure income stream. It’s an electron app that designs and prints labels.
Users import spreadsheet data and generate barcodes. Since I have a customer base and a target market, I’ve had every one of my mentors tell me I need to stop writing features and work more on marketing and analytics. But it’s not as fun!
Instead, I find myself up late at night working on USB weight scale integration for grocer/farm labeling kiosk. I’m looking for beta testers that have a need for such a thing.
Isn't the statement a bit obvious? Most of the tech companies out there were not born to make an impact on society, they were born to make money (which is totally fine). Only a handful of companies can be proud of making money while actually having an impact (good or bad) on society (e.g., Apple). Most of us (us != HN crowd) work for companies in the first group.
On the other hand, the vast majority of side projects have a very different: to have fun and/or being useful. Things that are useful usually make an impact on the society.
No, it isn't obvious, just like the Earth is not obviously round. Even 40 years ago, the statement wasn't obvious to many public intellectuals in the West, when they were in favor of neoliberal economic policies, under the broad assumption that free markets will automatically bring meritocracy (whatever it is). I think this example is one of many that show that meritocracy doesn't really happen by itself, but requires societal consciousness to be implemented.
All enterprises have multiple impacts on society. Many people want their work to tied to an overall net positive organization. That's why so many companies put energy into saying they are beneficial to society. Too bad those statements don't have to be vetted by an independent and impartial rating agency of some sort.
This is the magic of free software licensing: by removing barriers to sharing, it multiplies the usefulness of whatever is licensed by a much larger number of users, who are all free to repurpose it as they see fit. Most of my own free software is pretty radically useless, but I've written Wikipedia pages that thousands of people read every day, and made improvements to countless others. It would be difficult for anything I do in a normal job to have as big an effect on the world, either positive or negative.
I once helped a friend by writing a simple script to automate sending series of mails which were usually composed manually with attachments and same-ish subject and content.
This boosted their productivity at least by 60%. I was more proud and satisfied with that simple piece of code than my entire professional work that year.
I think the only other team who has made such a feature is Wordpress contributors, Wordpress offers a way to copy paste word documents in their Text box, and it formats correctly.
Perhaps you can launch commercial license for your library, and license it to famous CMSs, such as Umbraco or Craft. That way you can make a living on it too.
A few years ago that would have been true, at least client-side. There have been a variety of server-side options for years, especially if you run Windows as the server OS. More recently editors like CKEditor have vastly improved their Word pasting.
Even so, mammoth.js seems to remain unique in the ability to upload a file in the browser and programmatically retrieve matching HTML. That is why I use it - I can get the HTML, process it, and POST it back to my server already cleaned up and ready for my CMS. The browser does all the heavy lifting, my server remains a basic CRUD app, and I don't have to allow file uploads as it all happens client-side.
In 2015 or so I wrote a tiny tool for people to record the outgoing voicemail message from their phone. In the intervening years it's helped more than 23,000 people move on from loss, save a grown child's cute voice, and lots of other things. It hasn't been significantly financially rewarding but it's incredibly fulfilling to help someone on such a personal level.
have you tried working in public sector? i’m proud my software runs in our hospitals and saves hours for doctors, they now spend treating more patients!
I work in the public sector, and mammoth.js has been a huge help in allowing me to create tools for school districts to bring content from Word docs into our tools. So yes.... even if not directly, the OPs work has definitely had an impact in the public sector.
Same here, for most of my 15+ years career in IT I've been doing DevOps stuff, mostly writing small scripts and infrastructure code, occasionally hacking on existing projects enough to do drive-by contributions.
About 6 years ago I started AutoSpotting, an open source tool designed to reduce AWS costs by automatically replacing on-demand instances with up to 90% cheaper Spot instances, it was meant to be my playground project for learning golang.
I estimate it saved in aggregate in the tens or maybe even hundreds of millions of dollars and multiple companies have been built around my code or reimplementing the same idea.
It's still a side project that I work on occasionally but at some point I tried to monetize it through support and custom development. I failed to get enough traction to become a full time job, currently make some $400/month from about a dozen users whom I sell precompiled binaries through Patreon.
> I estimate it saved in aggregate in the tens or maybe even hundreds of millions of dollars and multiple companies have been built around my code or reimplementing the same idea.
> It's still a side project that I work on occasionally but at some point I tried to monetize it through support and custom development. I failed to get enough traction to become a full time job, currently make some $400/month from about a dozen users whom I sell precompiled binaries through Patreon.
We've had a lot of issues doing donations for cool projects like this. I'd really like a simple subscription service ala Gumroad so we can sign up for the "Enterprise" tier. Saving $100k we can totally kick back $5k to the person every month without feeling it.
I think there’s tons of developers who feel this way. Some of the brightest minds and smartest people go to work for tech companies simply working on figuring out how to keep an ad in front of your eyes for a few extra milliseconds.
I use a Mammoth WordPress plugin on a few sites. I dislike prominent donation nags, but if just popped up when I converted a document I think I'd be compelled to donate. It's a real time saver.
"Word Documents": Now there's a blast from the past. In my last 3 decades, I've used a UNIX-style operating system as my day-to-day operating system.
It used to be that my ever-present problem was in dealing with Word Documents. Practically every document I received back then was a Word Document. They were ubiquitous. If you couldn't read a Word Document you couldn't do business.
I used WABI on Solaris to run Word itself in the 90s. It wasn't always workable. So a lot of the time I was dual-booting to Windows and running the true Office.
In the Noughties, I was able to stay in my UNIX-like system and run Star Office followed by Libre Office to read the fairly common Word Documents that came my way.
But now, in the early Twenties, I only just realised that over the course of the 2010s, all of those Word Documents just dried up and blew away. These days, I might receive perhaps one to two .docx files a year, and Libre Office handles them without me having to think about it.
But I think the biggest killer of Word Documents has been Microsoft itself. By trying to stay proprietary and keep the free Office suites continually playing catch-up Microsoft kept extending and extending Word's features. If you didn't have the latest (expensive) Microsoft Office, you couldn't read the latest Word Documents. People got sick of this and the world gradually moved, over the course of the decade or so, to sending and receiving .PDFs.
Adobe were smarter than Microsoft. They realised that a .PDF could be available to all, no matter what operating system one used, and everybody could use it. That being the case, everybody DID use it.
Same here, I spent many years on complex and large pieces of software with relatively little impact, and an 'all nighter' pretty much changed the world for real time video on the web. Pretty weird when you consider that it was mostly gluing together pieces that already existed and adding a small HTTP server.
I haven't been able to replicate anything close to that success in all the years since then.
I put in a little effort each day, but thousands of people benefit. Small work, big impact. Contributing on Reddit is an easy way to have a meaningful effect on the world.
I’d love to see folks plan to monetize their product from the get go and not as an afterthought.
They should get measurable, direct compensation for the value created for others — be that saved time, joy or something else.
I feel there’s this quasi-apologetic approach to selling software when there should only be respect for those who can create value for others by their own creative and productive ability.
I think my career overall has been pretty high impact - I ran a team that built new systems from the ground up that were used by a team of 2k store employees to run daily operational tasks, optimizing their performance and ux tremendously, as well as building e-commerce into a website used by half a million people a month.
I still feel the most proud of a little library I made one weekend a few years ago [0], that’s now used all over the place. I get issues and contributions from Latin America, China, Japan, across the US and Europe, and Australia. I’ve done consulting work based on this library. It’s a great feeling to know I built something that others find useful directly and isn’t a tangential thing that was built as part of different business.
This happens in the crypto currency space all the time. I have friends that have launched very thought out projects that they spend a significant amount of time on. Then they’ll launch some meme project and it will do 1000x better. It’s certainly a weird feeling.
As a dev at a large company, I'm wondering how the author went about open sourcing the side project. My employment contract stipulates that anything I write for work is owned by the company. This company wouldn't have any motivation to let me open source the work I do, which in my case does not go into any product.
The reason I ask is that I have written, as part of my day job, a scientific library in C# that doesn't appear to have any public equivalent and I know addresses common tasks in the industry. I would love to open source it, if not for beer money, but for visibility to help my career --- I'm at that point where promotions only happen with externally-visible accomplishments.
Author here! The open sourced code was rewritten from scratch, not least because the original version was in C# while the open source version is in JavaScript. So, the same idea, but an entirely new implementation.
I forget exactly what conversations I had, but it was also very clear that they had no problem with me doing so since it doesn't really have any connection with their core business. If I wanted to, I suspect I could have open sourced the original version so long as I stripped out the stuff that was specific to the company.
> My employment contract stipulates that anything I write for work is owned by the company.
Did you agree on the price of that extra work? If not, I recommend to set price prohibitively high, e.g. $100 per line of code or $1000 per hour of work. If your company really want to own your side project, then they will need to pay the requested price.
At my firm you can request that side projects not be subject to the company’s copyright agreement. The firm’s market is fairly specific, so most requests get approved.
My first side project[0] is almost four years old at this point and continues to get lots of interest and use. It’s been really fun to engage with its users.
My second side project[1] has not got nearly as much traction but also has a much smaller target audience and I haven’t really got fully finished.
I do find my professional work rewarding and valuable but there is definitely something different about the side projects. They feel like much bigger accomplishments.
These kind of translators are fun. Long ago I wrote a PL/M (Intel proprietary compiler)- to - C convertor. It used context to translate the simple looping constructs of PL/M to the most congenial C loop (for, do, while). It translated the single macro mechanism into either 'const foo=x', simple #define or #define with arguments. It moved declarations into context. What it produced looked like C, not 'C/LM'.
It can be a blast to tinker with these, iterating until the output looks pretty sweet. One of my favorite projects. I can imagine the docx - to - css translation allowed for lots of neat tricks.
I've found that for the most part, you can work for money or you can work for impact. Commercial pressures prevent real disruption once a product is well established, and when it isn't, your disruption is corralled to the end of earning market share for your company, so anything disruptive that would go against that is not implemented.
That's why I don't work in software anymore. It may seem weird, but i would rather work a bullshit job. But I do write software, and it is all FOSS, and I pick my projects based on one principle: minimum effort for maximum impact.
I guess I can see why this would be surprising to most programmers. It doesn't surprise me at all. Why would the wishes of any profit-seeking enterprise, who serves a very select clientele, those willing to pay for what the business provides, have anywhere close to the impact of a software project chosen out of a random itch, taken to the point where others actually get interested in it, and use to build their side projects, each of which can provide their own impact?
Unless you're a big techco with worldwide reach, what could compete with that?
I am banging on about software literacy again, but if the users were more software literate they coukd have written something themselves, and if we lived in a software literate society we would reject inaccessible formats thus making the whole thing easier- same as the ERP system mentioned elsewhere.
We have a long way to go before the code and the data is truly free.
I was fortunate enough to have the opportunity to help hundreds of thousands of refugees in a small way through my day job. It's probably my greatest contribution to the world to make these peoples lives marginally better after everything they went through.
They'll never know who I am but I am so proud to have improved their lives even a little.
Similar experience. I created a little project and it has become very popular. It's also completed so there is no need to develop anything apart from updating any security issues.
When I feel down I always think of that little project.
Hoping to make another one by accident one day.
Converting Word documents to HTML and fixing layout and formatting issues afterwards is a huge pain of mine. I usually end up pasting content from Word (or more recently, from LibreOffice Writer) to CKEditor, cleaning extra formatting, like fonts and only then moving content to CMS.
Client side document rendering has a lot of potential. There is currently no open source library that can render docx file as nice as mammoth. There are some commercial libraries that rely on WASM, but they are generally bloated and you can’t read their source.
Impressive that he also supports ports to 4 other languages. Usually authors aren't interested in doing ports themselves, but that's often for a more complicated project.
This article starts to get at an interesting controversy about the definition of value. Is the value of a project equal to the amount of labor time it saves over previously used methods? Or is it equal to the amount of labor time it took to create the project? I think most software devs would intuitively pick the former, and that is what the article sides with and also what the market awards to innovations in the short term, but I think there is merit to the latter and people should at least consider it. The article presents an apparent contradiction (the author's side project was coded in a few hours and has arguably had more of a positive impact than their entire day job career's output) but that contradiction is resolved by the latter definition of value, the labor theory of value.
The labor theory of value explanation for this is straightforward. In general, LTV asserts that the value output of some work approximates the amount of work that ordinarily has to go into it, or more precisely, of the socially necessary labor time going into that work (ie, the time it would take an average worker to do it without slacking off). This is because if you wanted that work done and didn't care how it got done, the socially necessary labor time would be the real cost of doing it yourself or paying someone else to support themselves while they do it (before various market dynamics and other distorting factors - it is an idealized model). I.e., in an assembly line, the cost of a part is the cost of raw materials + the cost of the labor added to them. This seems straightforward for assembly line work, but is a little less intuitive when the actual work is about making other people's work more efficient, which a lot of software dev falls into. But if someone simply said to themselves "I need the functionality of mammoth.js", the core idea still applies - of being able to replace the worker, hire a generic software dev, and get comparable work (or at least, good enough work), for a similarly low amount of value. Another way to think of it is that mammoth.js might save a lot of people a lot of time, but getting some version of mammoth.js implemented is probably historically inevitable and has a fixed and much smaller cost to actually do.
How does this resolve the contradiction in the article? Well, mwilliamson's day job career labor output might possibly have saved less time of other people's work than mammoth.js. But their day job career labor output probably couldn't have been replaced in any way but by a similarly large amount of time and effort from other developer(s). Meanwhile, mammoth.js could be reimplemented in a similarly small amount of time by someone else, maybe taking a couple of tries to get it right. If mammoth.js hadn't been written at the time it was, maybe that would have happened.
This isn't to discount ingenuity or insight going into this side project, or the usefulness of something like mammoth.js being in the right place and time. But I think it is a more precise way to think about how much value and what kinds are being added to the world by larger or smaller amounts of effort. In other words, devs shouldn't feel bad about having worked hard on stuff that is less neatly labor-saving than a small widget, as long as that hard work turned out to be useful.
I believe this is incorrect even from the simple economic perspective.
Many companies (BigTech for example) are extremely net-positive financially. This means that the value they gain per employee is much higher than what they pay them.
Taking this further - the customers in many cases (and certainly in ideal cases) are getting more value than the price they are paying (hence they agree to pay), so in a sense you could argue that the value is actually even larger. This of course scales several times when working on some infrastructure (though the effect is very not obvious).
p4bl0|4 years ago
antoviaque|4 years ago
With others from a few large free software projects & communities (Open edX, OpenStack, Framasoft, Mines-Telecom...), we are in the initial stages of producing an online course / MOOC about contributing to free software. If you (or anyone else reading this :) ) are interested in contributing or joining the project at this early stage, please let me know. : ) My email is on my profile.
Presentation site (draft): https://larrybotha.gitlab.io/mooc-floss/ Repository: https://gitlab.com/mooc-floss/mooc-floss
inson|4 years ago
ozarkerD|4 years ago
inamiyar|4 years ago
aiisjustanif|4 years ago
iamcreasy|4 years ago
matheusmoreira|4 years ago
logotype|4 years ago
https://gitlab.com/logotype/fixparser
satellite2|4 years ago
The proliferation of marketplaces and assets to trade (and all type of projects, automated trading, market making, etc... that your project enabled) can been seen as a net positive, as a win win for all parties involved and more.
From a microeconomic perspective, your library enabled access to startup using js and with relatively simple tech stacks access to a tool that would otherwise be relatively complicated and time consuming and for which they would not necessary have the resouces. By doing so you lowered the cost of entry and allowed new entrants to challenge the status quo.
And from a macroeconomic perspective I think it's one of the reason access to capital has been simplified and has lowered in cost, it's one of the reason for the low cost of mortgages and the relative resilience of economies during covid (central banks interventions are useless without bank and other financial intermediaries participation, it would be like pushing on a string).
Don't be fooled by the contemporary contempt against finance. It's still the most important reason that explain the constant improvmements in prosperity and peace of recent years, and the best thing one can do is to make it less arcane and open it to more people. One of the achievements of your tool.
You can be proud of your work.
jjeaff|4 years ago
"Sometimes you have to feed the greedy to get to the truly needy."
In other words, the greedy will always take advantage, but that doesn't diminish the help you give to the needy. There is simply no way to totally filter for the greedy.
This doesn't really apply directly to your situation, but at least for every greedy company that benefits from free products like yours, there are a lot of jobs created and benefit to society as a whole when these companies create useful products.
alien_|4 years ago
bigyikes|4 years ago
mech4bg|4 years ago
boulos|4 years ago
What are people using it for? To make web apps and just not have to roll their own wrappers around FIX/FIX-derived data? (That is, if all back ends are used to speaking FIX, it’s nicer to have the front end and web serving tools also just speak it?).
CydeWeys|4 years ago
agumonkey|4 years ago
qmmmur|4 years ago
high_byte|4 years ago
DrOctagon|4 years ago
The project still took three months as it was one of those special type of organisations, but it wasn't due to the HTML generation :)
Thank you for mammoth.js!
musingsole|4 years ago
unknown|4 years ago
[deleted]
tppiotrowski|4 years ago
wreath|4 years ago
Another way to solve this problem is to have engineers on customer support rotation of some sort. This way, engineers get to see how their software is used in the wild and interact with customers, and PMs get to see how unrealistic expectations and deadlines comes back to bite you in the ass in a form of your engineers being busy fixing half assed crap.
kevinmchugh|4 years ago
It's really motivating to hear customers are happy and I don't know why a PM wouldn't share that good news.
davidivadavid|4 years ago
formerly_proven|4 years ago
shoto_io|4 years ago
bartread|4 years ago
I never worked with him directly but we both overlapped at Redgate for several years. During the time I was there he wrote code that was integrated into Simple Talk (https://www.red-gate.com/simple-talk/), which is/was Redgate's website for publishing content, articles, tutorials etc., useful to SQL Server and .NET professionals. I believe he also worked on https://www.sqlservercentral.com/, which remains the leading community site for SQL Server professionals. The old Simple Talk site is several years gone now, sadly, but Mike worked on it during its growth phase and (guessing somewhat here) most successful period.
These are sites that are used and useful to hundreds of thousands of SQL Server and .NET professionals every month. Yes, they are also promotional vehicles for Redgate and its products, and a core part of Redgate's marketing strategy, but it is possible for them to be both marketing and useful.
Mike is an excellent engineer, and very much cut from the get (valuable) things done mould - which mammoth.js firmly underscores. I have no idea what he's doing at the moment but, if you get the opportunity to work with him, you should jump at it.
tmp65535|4 years ago
This app, published in 2017, has a continuously growing population of users from all over the world. I get email every day asking whether soft1 is the only server, thanking me, suggesting improvements, etc.
It's ironic, and there is a lesson to be learned here.
alien_|4 years ago
secondaryacct|4 years ago
[deleted]
Wronnay|4 years ago
But often simple things have a very big effect - in my first job I made some simple scripts which imported data from machines into an ERP System.
I also made some bigger projects with feature rich GUIs at my first job.
The simple scripts probably sill import data every workday and automate a task previously made by humans since multiple years, some of the GUIs weren't even used daily before I left that job...
So I feel like the simple scripts will be there for a long time and save many work hours while some of the feature rich GUIs probably weren't necessary...
snarfy|4 years ago
D13Fd|4 years ago
10 years ago at my current job I created a script to automate the job of checking a certain website for new data each day. It used to be done by a person who would spend maybe 20-30 minutes checking the site and circulating the info each day. Others would also check the site on their own periodically for faster updates.
The script just checks the site multiple times a day and circulates the results.
Over the course of 10 years, I’d guess that my little script I wrote in maybe 5-10 hours (including some tweaks over time as the site format changed) probably saved in the ballpark of half a million dollars in time spent, based on billing rates.
flakiness|4 years ago
At work, giving a spot-time quick help often feels more helpful than pushing through a "proper" project task.
I suspect this is because large part of the "work" project is more like a speculative investment than something obviously useful. That is probably OK because finding large-enough-obviously-useful-things is hard. What we tend to overlook is that finding a tiny-but-obviously-useful-thing isn't as hard as it looks. It's just hard to earn enough from it.
amelius|4 years ago
From that p.o.v. your feature rich GUIs may be your biggest contribution to society, because that's really work based on your decisions.
mwcampbell|4 years ago
There's no shame in making the source available but using a license that requires payment for commercial use, like the Prosperity [1] license.
[1]: https://prosperitylicense.com/
abiro|4 years ago
goodpoint|4 years ago
For example this clause, phrased like an order, does not make sense:
"Don’t make any legal claim against anyone accusing this software, with or without changes, alone or with other technology, of infringing any patent."
You can't give orders to people in a license or other contracts. You can only describe conditions.
musingsole|4 years ago
tonyedgecombe|4 years ago
gitgud|4 years ago
Whereas, if it's a permissive license like; MIT, then I'm personally more likely to be much more forgiving and even try and fix problems.
sheetjs|4 years ago
Back in 2015, 'patio11 reached out to us. In addition to a structured license purchase, he gave great insights and actually wrote a blog post about the experience https://www.kalzumeus.com/2015/01/28/design-and-implementati...
Today, we offer paid software builds to solve related problems and it allows us to work on SheetJS full-time!
patio11|4 years ago
DangitBobby|4 years ago
To me, this is the entire point of software and automation. To give time and money back to people, because I want to make the world better. I see software being priced to just barely be worth it for the buyer because it saves time (e.g. Mailgun and Auth0). When I write software, I want to price it so that it saves them so much money adoption is a no-brainer. "Free" pricing would be included in that, of course. Unfortunately, I also don't write much useful software.
justinclift|4 years ago
One is "the day job", used to pay bills.
The other is "what I feel good about as a human being". It's great when both align, but that's not the standard thing that seems to happen.
Take it as a useful data point, not something to get bent out of shape over. :)
semireg|4 years ago
Users import spreadsheet data and generate barcodes. Since I have a customer base and a target market, I’ve had every one of my mentors tell me I need to stop writing features and work more on marketing and analytics. But it’s not as fun!
Instead, I find myself up late at night working on USB weight scale integration for grocer/farm labeling kiosk. I’m looking for beta testers that have a need for such a thing.
Check it out at https://label.live
pxue|4 years ago
I'm sure it made impact but at most it saved <10 people a couple of hours a day.
I'd compare this phenomenon as if drug companies spend millions of dollars to cure an obscure disease a handful of rich people have.
sdevonoes|4 years ago
On the other hand, the vast majority of side projects have a very different: to have fun and/or being useful. Things that are useful usually make an impact on the society.
js8|4 years ago
No, it isn't obvious, just like the Earth is not obviously round. Even 40 years ago, the statement wasn't obvious to many public intellectuals in the West, when they were in favor of neoliberal economic policies, under the broad assumption that free markets will automatically bring meritocracy (whatever it is). I think this example is one of many that show that meritocracy doesn't really happen by itself, but requires societal consciousness to be implemented.
wintermutestwin|4 years ago
kragen|4 years ago
praveen9920|4 years ago
This boosted their productivity at least by 60%. I was more proud and satisfied with that simple piece of code than my entire professional work that year.
david_allison|4 years ago
https://liberapay.com/mwilliamson
https://ko-fi.com/mwilliamson
icemelt8|4 years ago
Perhaps you can launch commercial license for your library, and license it to famous CMSs, such as Umbraco or Craft. That way you can make a living on it too.
codingdave|4 years ago
Even so, mammoth.js seems to remain unique in the ability to upload a file in the browser and programmatically retrieve matching HTML. That is why I use it - I can get the HTML, process it, and POST it back to my server already cleaned up and ready for my CMS. The browser does all the heavy lifting, my server remains a basic CRUD app, and I don't have to allow file uploads as it all happens client-side.
lmz|4 years ago
zrail|4 years ago
https://vmsave.petekeen.net if you're curious.
ushakov|4 years ago
codingdave|4 years ago
alien_|4 years ago
About 6 years ago I started AutoSpotting, an open source tool designed to reduce AWS costs by automatically replacing on-demand instances with up to 90% cheaper Spot instances, it was meant to be my playground project for learning golang.
I estimate it saved in aggregate in the tens or maybe even hundreds of millions of dollars and multiple companies have been built around my code or reimplementing the same idea.
It's still a side project that I work on occasionally but at some point I tried to monetize it through support and custom development. I failed to get enough traction to become a full time job, currently make some $400/month from about a dozen users whom I sell precompiled binaries through Patreon.
WrtCdEvrydy|4 years ago
> It's still a side project that I work on occasionally but at some point I tried to monetize it through support and custom development. I failed to get enough traction to become a full time job, currently make some $400/month from about a dozen users whom I sell precompiled binaries through Patreon.
We've had a lot of issues doing donations for cool projects like this. I'd really like a simple subscription service ala Gumroad so we can sign up for the "Enterprise" tier. Saving $100k we can totally kick back $5k to the person every month without feeling it.
busymom0|4 years ago
nattaylor|4 years ago
simonblack|4 years ago
It used to be that my ever-present problem was in dealing with Word Documents. Practically every document I received back then was a Word Document. They were ubiquitous. If you couldn't read a Word Document you couldn't do business.
I used WABI on Solaris to run Word itself in the 90s. It wasn't always workable. So a lot of the time I was dual-booting to Windows and running the true Office.
In the Noughties, I was able to stay in my UNIX-like system and run Star Office followed by Libre Office to read the fairly common Word Documents that came my way.
But now, in the early Twenties, I only just realised that over the course of the 2010s, all of those Word Documents just dried up and blew away. These days, I might receive perhaps one to two .docx files a year, and Libre Office handles them without me having to think about it.
But I think the biggest killer of Word Documents has been Microsoft itself. By trying to stay proprietary and keep the free Office suites continually playing catch-up Microsoft kept extending and extending Word's features. If you didn't have the latest (expensive) Microsoft Office, you couldn't read the latest Word Documents. People got sick of this and the world gradually moved, over the course of the decade or so, to sending and receiving .PDFs.
Adobe were smarter than Microsoft. They realised that a .PDF could be available to all, no matter what operating system one used, and everybody could use it. That being the case, everybody DID use it.
jacquesm|4 years ago
I haven't been able to replicate anything close to that success in all the years since then.
elcomet|4 years ago
tppiotrowski|4 years ago
I built a side project that I put on Reddit that got 5,000 hits last month.
The second seems like better ROI
CharlieMunger|4 years ago
I put in a little effort each day, but thousands of people benefit. Small work, big impact. Contributing on Reddit is an easy way to have a meaningful effect on the world.
high_byte|4 years ago
felgueres|4 years ago
They should get measurable, direct compensation for the value created for others — be that saved time, joy or something else.
I feel there’s this quasi-apologetic approach to selling software when there should only be respect for those who can create value for others by their own creative and productive ability.
lukevp|4 years ago
I still feel the most proud of a little library I made one weekend a few years ago [0], that’s now used all over the place. I get issues and contributions from Latin America, China, Japan, across the US and Europe, and Australia. I’ve done consulting work based on this library. It’s a great feeling to know I built something that others find useful directly and isn’t a tangential thing that was built as part of different business.
[0] https://github.com/lukevp/ESC-POS-.NET — check it out if you have a need to print to receipt printers from C#, and give it a star!
nubb|4 years ago
georgeburdell|4 years ago
The reason I ask is that I have written, as part of my day job, a scientific library in C# that doesn't appear to have any public equivalent and I know addresses common tasks in the industry. I would love to open source it, if not for beer money, but for visibility to help my career --- I'm at that point where promotions only happen with externally-visible accomplishments.
mwilliamson|4 years ago
I forget exactly what conversations I had, but it was also very clear that they had no problem with me doing so since it doesn't really have any connection with their core business. If I wanted to, I suspect I could have open sourced the original version so long as I stripped out the stuff that was specific to the company.
drran|4 years ago
Did you agree on the price of that extra work? If not, I recommend to set price prohibitively high, e.g. $100 per line of code or $1000 per hour of work. If your company really want to own your side project, then they will need to pay the requested price.
tyree731|4 years ago
conductr|4 years ago
cdubzzz|4 years ago
My second side project[1] has not got nearly as much traction but also has a much smaller target audience and I haven’t really got fully finished.
I do find my professional work rewarding and valuable but there is definitely something different about the side projects. They feel like much bigger accomplishments.
[0] https://github.com/babybuddy/babybuddy
[1] https://github.com/kcal-app/kcal
JoeAltmaier|4 years ago
It can be a blast to tinker with these, iterating until the output looks pretty sweet. One of my favorite projects. I can imagine the docx - to - css translation allowed for lots of neat tricks.
betwixthewires|4 years ago
I've found that for the most part, you can work for money or you can work for impact. Commercial pressures prevent real disruption once a product is well established, and when it isn't, your disruption is corralled to the end of earning market share for your company, so anything disruptive that would go against that is not implemented.
That's why I don't work in software anymore. It may seem weird, but i would rather work a bullshit job. But I do write software, and it is all FOSS, and I pick my projects based on one principle: minimum effort for maximum impact.
vinceguidry|4 years ago
Unless you're a big techco with worldwide reach, what could compete with that?
JabavuAdams|4 years ago
On the Phenomenon of Bullshit Jobs https://www.strike.coop/bullshit-jobs/
lifeisstillgood|4 years ago
We have a long way to go before the code and the data is truly free.
iaw|4 years ago
They'll never know who I am but I am so proud to have improved their lives even a little.
swayvil|4 years ago
intricatedetail|4 years ago
butz|4 years ago
woranl|4 years ago
kristianp|4 years ago
ChuckMcM|4 years ago
mountainriver|4 years ago
ChrisMarshallNY|4 years ago
unknown|4 years ago
[deleted]
0x262d|4 years ago
The labor theory of value explanation for this is straightforward. In general, LTV asserts that the value output of some work approximates the amount of work that ordinarily has to go into it, or more precisely, of the socially necessary labor time going into that work (ie, the time it would take an average worker to do it without slacking off). This is because if you wanted that work done and didn't care how it got done, the socially necessary labor time would be the real cost of doing it yourself or paying someone else to support themselves while they do it (before various market dynamics and other distorting factors - it is an idealized model). I.e., in an assembly line, the cost of a part is the cost of raw materials + the cost of the labor added to them. This seems straightforward for assembly line work, but is a little less intuitive when the actual work is about making other people's work more efficient, which a lot of software dev falls into. But if someone simply said to themselves "I need the functionality of mammoth.js", the core idea still applies - of being able to replace the worker, hire a generic software dev, and get comparable work (or at least, good enough work), for a similarly low amount of value. Another way to think of it is that mammoth.js might save a lot of people a lot of time, but getting some version of mammoth.js implemented is probably historically inevitable and has a fixed and much smaller cost to actually do.
How does this resolve the contradiction in the article? Well, mwilliamson's day job career labor output might possibly have saved less time of other people's work than mammoth.js. But their day job career labor output probably couldn't have been replaced in any way but by a similarly large amount of time and effort from other developer(s). Meanwhile, mammoth.js could be reimplemented in a similarly small amount of time by someone else, maybe taking a couple of tries to get it right. If mammoth.js hadn't been written at the time it was, maybe that would have happened.
This isn't to discount ingenuity or insight going into this side project, or the usefulness of something like mammoth.js being in the right place and time. But I think it is a more precise way to think about how much value and what kinds are being added to the world by larger or smaller amounts of effort. In other words, devs shouldn't feel bad about having worked hard on stuff that is less neatly labor-saving than a small widget, as long as that hard work turned out to be useful.
aaron695|4 years ago
oxmane|4 years ago
Many companies (BigTech for example) are extremely net-positive financially. This means that the value they gain per employee is much higher than what they pay them.
Taking this further - the customers in many cases (and certainly in ideal cases) are getting more value than the price they are paying (hence they agree to pay), so in a sense you could argue that the value is actually even larger. This of course scales several times when working on some infrastructure (though the effect is very not obvious).
nikkinana|4 years ago