The art of over-engineering your side projects - <AUTHOR> https://elsyms.com/the-art-of-over-engineering-your-side-projects/ <comment><USER3> The whole point of a side project is to over-engineer it! The thought of holding myself to deadlines and driving myself to "ship" is totally antithetical to the entire purpose of a hobby project. It's a welcome relief from the 9-to-5 constant necessity to cut corners and finish things without ever properly understanding them because there's no time.

For my side projects, I actually want to go down rabbit holes. I will try the same thing 7 different ways and benchmark the hell out of them. I'll read all the documentation and every blog post I can find. Learn a new language just to see if its features make things ever so slightly easier. Learn a new framework, write a new framework, throw it away and write a new one.

The point isn't to ship code, it's to learn. Honestly I don't care if it ever ships. And even when I do release one, I don't care if nobody uses it except me.

<comment><USER4> HN is made up of two groups in ever constant warfare, the yin and yang, as it were- the group who thinks that programming should be fun, experimental and enjoyable, and the group that thinks that programming is a means to the end of getting a product to market and nothing more.

Whenever a post from one group (such as the article) comes out, a post from the other (such as OP) will quickly appear. And everyone loves it :)

For what it's worth, I think that both perspectives are valid. It depends only on your goals.

<comment><USER5> This is mostly off-topic, but being able to identify or root out the value mismatches between people in a discussion (as you've done) seems like an essential ingredient to productive discussion.

I've noticed that people who can do this are disproportionately better at achieving their goals than those who can't, especially in engineering organizations. Exceptions of course for zealots and revolutionaries.

<comment><USER6> Absolutely. This even works at a somewhat lower level... I remember hearing an argument between two cow-orkers, and realizing that each was thinking _different_ (but similar!) things, but assuming the other was thinking the _same_ thing. Angriness ensued...

<comment><USER7> > Angriness ensued...

This usually only happens when one begins to make personal insults, i.e. "only a poor programmer would think that!"..

</comment></comment></comment></comment></comment><comment><USER8> Lots of times I use side projects as a way to explore new stacks, deployment approaches, etc. The goal of the project is not to deliver anything, it's to learn so that when I go to do my next "real" project at work, I know what works well and what doesn't.

<comment><USER9> Exactly. When I see a coworker start irrationally focusing on a new technology at work the first thing I think is "This person probably has no side projects to play with"

<comment><USER10> > "This person probably has no side projects to play with"

Exploring new technologies that could be beneficial (or harmful) to the company shouldn't be a side project. Perhaps we can shift the thinking from "this person doesn't have time for side projects" to "how can we make exploring new technologies a part of the job?"

<comment><USER11> How about making wednesday mornings, a 4hr 'personal project' time? Make it a requirement that everyone has to work with tools at the edge of their skillset, that is also relevant to work, but let them choose what, why, how. They could work on a personal project, or experiment with a new library or tool they would like to incorporate.

Start the day with a "not really a standup", where people can quickly explain what they want to accomplish in the next four hours.

Once a month, you spend a couple of hours of the time demoing the work you have done for each other, explaining the technology and what you have learned, and then discussing and evaluating our individual technical weaknesses and deciding what to do next. This rest of this monthly meeting could also be spent improving social coding skills - code and commit hygiene, team processes etc.

Not only would this keep people technically sharp but it keeps them from playing with toys in production and breaks up the work week, while still fulfilling company goals.

<comment><USER12> If you have to start giving reports, it kills creativity. The point is to do something everyone else may think is irrational, but you feel would lead somewhere interesting.

</comment></comment></comment></comment></comment><comment><USER13> _"I know: I'll create a triple zoned redundant architecture with pub /sub database replication, a 32 node Kubernetes cluster and private networking across all regions – that way, I can handle anything!"_

The good news is, once you've done that, you can get a pretty decent job.

 _The majority of software engineers seem to be under the illusion that potential customers care about the stack they are running._

This is not entirely true. The technology do surface in terms of user experience. It does in the details: app start, ui responsiveness, etc. I'm writing a game using go right now, and the end user can tell it's different because the user's cpu seems more powerful.

All in all, I think those are good mistakes, not bad ones. I wish more engineers could spot over-engineering, and they don't until they did the mistake a couple times. Side projects are, I believe, how one really learn to write programs. I think the right advice is: do whatever you want, do all the mistakes. How can you write a successful side project anyway if you never learn how to write a program? Also, the worse type of programmers are the ones telling you about over-engineering because they read about it in a blog. Code more, read less, I guess should be a good motto.

<comment><USER14> Potential customers do care about the stack you're running. They care if they have to download Java or Flash. They care if they have to be connected to the internet or can use your product offline. They care if your program starts quickly. They care if your program runs quickly once started. They care if your program has bugs (let's not pretend different languages aren't more or less error-prone). They care if your program is cross-platform. They care if your UI is consistent with their platform. They care if your product releases new features quickly.

All of these are stack-related.

<comment><USER15> Those are all client usability concerns, and none of them are stack intrinsic.

<comment> mark-r I think the point was that user doesn't care about your stack, but they care about the _consequences_ of the stack you've chosen. It's a subtle but important distinction.

<comment><USER15> Of course. My point was that it's fairly common to write slow/unsuitable applications _in spite_ of a stack's strengths, while stack limitations (or strengths) are generally overstated, depending on trends.

Proper engineering and design are required no matter what you choose.

No silver bullets ;-)

<comment><USER14> There are no silver bullets, but there are wooden bullets that are totally ineffective.

</comment></comment></comment></comment></comment></comment><comment><USER16> For me it's very important that I don't discuss projects with friends / family / colleagues etc. until I really have something to show.

I have always found it very easy to talk all the energy out of a good idea before I've even got any real work done.

<comment><USER17> That's a thing. Expressing in public your desire to achieve something makes you less likely to deliver.

[http://www.psych.nyu.edu/gollwitzer/09_Gollwitzer_Sheeran_Se...](http://www.psych.nyu.edu/gollwitzer/09_Gollwitzer_Sheeran_Seifert_Michalski_When_Intentions_.pdf)

<comment><USER18> The weird thing is the same situation works in reverse as well.

Publicly declaring your intention to quit a habit or lose weight has also been shown to increase success in some instances.

I think it depends on whether people reward you with positive regard for stating an intention to do something, and whether you look foolish if you don't do the thing you stated. When you can get the reward just for the statement and there is no consequences for failure, pre-stating your intention seems harmful. On the other hand, if you are not rewarded for pre-statement, and failure is embarrassing, pre-stating your intention seems helpful.

<comment><USER19> I have observed this vastly "bipolar" results amongst my friends as well. Some take public declaration to heart and they ram through their goals. However I quickly lose interest of the project after I told everybody. I would go extra length to surprise and dish out cool stuff more often I care to finish side project only because I said I will do it.

I somehow concluded that I don't care about approvals on my 'integrity' yet I highly value my 'creativity' viewed by others.

</comment></comment></comment></comment><comment><USER20> Good points in there. I have a little trouble with "mistake #5" though.

I found that worrying about deployment automation early on is immensely valuable, especially for side projects. I don't always find time or interest to keep working on side projects after a regular day of work. Quite often there are weeks or even months where I abandon a side project only to come back at a later point when motivation is back or things have settled down and leave more time for my side projects. If I didn't take the time to automate testing and deployments (which makes a lot of what continuous delivery is about) I find myself struggling with getting things up and running and become frustrated before I even get started.

Then there's only one way to make sure that my test and deployment automation keeps working: running it regularly, e.g. in a pipeline.

So, yes, don't over optimise your deployment pipeline early on. But having one in place early can pay off really soon -- and maybe even keep your side project alive.

<comment><USER21> Agreed. Having a deployment pipeline in place dramatically reduces the friction of returning to an old project.

I have a back-burner project that touch very infrequently, but I can jump in, make a quick change, and have it deployed to "production" in just a few seconds.

</comment></comment><comment><USER22> At risk of a tar and feathering by the 'lean' crowd, I am going to declare that I don't do MVP's at all, and never really have, with _any_ of my projects.

Why? Well, because almost all my projects are designed for businesses and enterprises, and with that audience - things better work well and they better work first time during the demo or you don't stand a chance of getting a customer.

Perhaps if I was writing a social media app for sharing cat pictures, then yeah, I would slap together an MVP and show it to cat lovers. After all - <USER2> is the worst that can happen if your cute cat picture doesn't upload? Just try it again or delete the app and walk away, and there are no consequences.

But what if my HR app doesn't send that crucial reminder email to a department manager that one of your electrical tradesmen's license expires tomorrow, and you end up sending him out to a job next week and he makes a mistake that ends up getting your company sued and eventually shut down, putting hundreds of others out of work?

I am sure as sh*t going to ensure that my reminder email system is absolutely over engineered to ensure reliable email delivery and tracking. You don't get ANY chances to blow that kind of stuff with a business of enterprise audience.

<comment><USER23> I fully agree with this. Big enterprise MVPs are often about cutting scope -- not cutting corners.

Of course, by the very nature of enterprise customers, sometimes there isn't a whole lot of scope that you can cut.

</comment></comment><comment><USER24> Related to this, I've been following a practice I call "Release Notes Driven Development", which is _perfect_ for side projects. Don't worry too much about technical debt (although, keep it under control), but focus on the little time you have and how to make that as efficient as possible.

I wrote about it here; [https://ma.ttias.be/release-notes-driven-development- rndd/](https://ma.ttias.be/release-notes-driven-development-rndd/)

<comment><USER25> Sounds good. Early on, a quick list of bragables should be able to tell you how awesome the idea is. Have new bragables for the next version. If its not awesome at some stage (and the bugs are fixed) you are probably done?

It reminds me of many release notes describing a ton of work without any _woah_.

</comment></comment><comment><USER26> The best thing about side project is that I may be wonderfully inefficient, so I can do it the way I want and enjoy the way. Even mentioning the word 'deadline' or 'planing' or 'efficient' or 'customer' in the same sentence as 'side project' is contradictory to me.

E.g., I love to program in assembler. Preferably 8 bit SoCs like AVR. The point is not to finish the project fast or even at all by using a more efficient language that may have libraries for everything, but to enjoy programming in 8 bit assembler. Reading the absurdly detailed manuals. Comparing chips at register level. Obviously, I need to write my own libraries/frameworks, because, I want to do that myself, in assembler.

Even if not using assembly, I may still want to write the library myself in order to, well, do that.

Wood workers often seem to have similar ideas about side projects, like when they build a project without power tools, without glue, from old scrap wood, etc., just because. But for some reason, I seldom meet hackers who understand the fun in doing stuff from scratch.

<comment><USER27> Yeah, I read the title and I thought it was going to be an ode to the joy of trying new things with your side projects, and spending a ton of time working something just because it is fun.

I guess the author and I have a different purpose for side projects. It sounds like the author is trying to actually start a business while still employed, while I am just trying to mess around and have fun.

</comment></comment><comment><USER28> I absolutely use my side projects as a vehicle to learn new things... though I always try to pursue ideas that at least appear to have a possible path toward monetization at some point (though I haven't had much success with turning much of a profit from any projects thus far) :)

For my current side project, which I've been working on for a year (and is probably a month or two away from being "beta-able"), I've learned Clojure, Elasticsearch, ES6, mithril.js, Ansible, and have expanded/refined my skills with RabbitMQ, Postgres (or SQL in general), and distributed architecture (not to mention getting to figure out how systemd service and timer configuration files work).

I've really been working hard on it because my current day job doesn't involve any programming, and by the time I get home in the evening I'm really jonesing for some code.

Have my side projects made me a better developer? Without a doubt. Am I any more employable? No, not really - I still haven't figured out how to improve my 'Cultural Fit' via side projects.

<comment><USER29> Could you tell me how you go about knowing what all you might be needing.

</comment></comment><comment><USER30> I always overengineer my side projects, because it's way more interesting that way. I do side projects for fun and to learn something, both of which happen more easily when the project is overengineered.

<comment><USER31> Agreed. Part of the fun of my side project is that it's well built. At work I have to deal with poor quality code practices from artificially tight timelines, contractors, etc. From one perspective it's very wasteful to have higher quality code for an app that generates $150/mo. vs multimillion dollar projects I manage at my day job, but I enjoy that $150, the code and customers more than what I get from my day job. I wouldn't if it was an MVP.

</comment></comment><comment><USER32> When I first read the title, I had thought that this would be a humorous example of a delightfully over-engineered side project. It turns out that this is instead a list of 5 common mistakes of over-engineering with some commentary.

</comment><comment><USER33> A major roadblock I find is that when you want to release your side project and start charging for it, I feel it becomes much harder to make changes after. This means you get caught in a loop of trying to polish it more and more before biting the bullet and releasing it.

If you change the interface a lot or how features work, you'll annoy users that don't like the change and you'll have to be extra careful not to introduce any bugs. If users can save data, the new version will have to work with the old data format. If you want to move features from a free version to the paid version you'll annoy users. So to me, releasing a MVP you charge for that might change a lot later might lead to more headaches than developing the idea further.

Are there ways around this?

Side projects you release for free are one thing but when you want to charge for them the amount of polish and attention to detail you have to pay to marketing jumps by an order of magnitude. People will tolerate bugs and rough edges for free projects but not for paid ones. I agree with the advice about not wasting time with CI, switching frameworks etc. though.

</comment><comment><USER34> I'm currently working on a side-project, and I think I've figured out how to beat over-engineering and just launch a MVP which is actually a "minimum viable product". I'm building the product for my own use, and I'm just building the bare minimum that I actually need to complete the task. After that, I'm planning to bring on my first 10 customers and be available 24/7 to answer any questions and build the features that they need. But only if they're going to pay me money to use those features.

I've often fallen in the trap of "oh that would be cool", but this time I'm going to try to only build the necessary features that actually bring in customers, instead of wasting time on a bunch of useless stuff.

> Over-architecting infrastructure

Yep, I think it's a good idea to just put everything on Heroku until you're spending at least $100 per month. It's just so easy to get up and running.

</comment><comment><USER35> I'm pretty sure if I wasn't over-engineering my side projects I wouldn't be technically competitive as I am now. So over-engineering is a very good strategy for learning and mastering any field. You can't really lose anything, either your project will succeed or you will acquire/strengthen your skills.

</comment><comment><USER36> IDK, I over-engineer my side projects _every single time._ Like tweaking for days something which is so clearly premature optimization.

But sometimes I need that knowledge again for the next side project. And this over-engineering is often a way to simplify a reference architecture and be much faster at the end.

So for me over-engineering equals learning but is also a big part of the motivation.

<comment><USER37> I have similar experiences. I was working with an embedded platform that uses C exclusively and I decided I wanted to use C++. I ran into mountains of hurdles, had to stare at disassembled code, tweak stuff, build a class library, etc. I never actually finished the project I was working on but doing all that stuff was the fun part.

</comment></comment><comment><USER38> #3 hits home. I've been "working" on my side project for 3 years now with almost no progress because I'm constantly intrigued by new frameworks and BaaS. I spend all my time tinkering with them until I get bored with it all together. If I had just built the thing in Rails from the start I'd probably have a solid app under my belt by now.

<comment><USER39> Yeah I've been working on a game for 5+ years that went thru C++/DirectX, then C# and Managed DirectX, and now Java and LibGDX.

Thinking about using Unity now...

<comment><USER40> I'm in the same position. I've built my own game engine from scratch and while it was a really good learning exercise I recently started looking at Unity and wow... So many things I've always wanted in my engine that I will get for free. I don't regret a thing though.

</comment></comment></comment><comment><USER41> I've stopped the urge to create repos, buy domain names etc, and started just diving into Sketch to do mockups to flesh out ideas instead.

It gives me pause to think about features and to show people to get feedback. You can also use it as a sales tool to sell an app you are thinking of building without investing weeks and months.

Nowadays its so simple to do nice mockups its so easy to find stencils for SemanticUI, icons etc. Makes it a breeze to get an interface going and I have never been this productive in the 'idea' stage before.

</comment><comment><USER42> If your goal is to make money on something, then yes I agree with the author's points. However the whole goal of side projects is to have fun with new languages, frameworks etc.

</comment><comment><USER43> > A customer will not know or care if you are using Ruby, Go, PHP or any other > language

Users will absolutely notice if your product crashes or breaks, which is more likely with some languages than others. The single most likely reason for me to stop using a nominally useful product is that it doesn't work reliably. I _hate_ the fact that so much technology today is broken, partly because people have this cavalier attitude towards choosing technologies that help to keep things working.

</comment><comment><USER44> I spent many years before I learned not to over-engineer side projects. I'm a c guy, mostly, so I don't have the stack issues (make and the standard c library and I'm g2g). Now I just start writing code to do the first basic feature, then refactor if needed to handle the second one, rinse and repeat. Once the project takes shape, it gets easier to predict what changes might be needed in the future, and what concessions I can make in the code for them now without slowing me down.

Working this way is much nicer for me. It's more organic. I end up with code that evolves, and takes shape of it's own accord. It makes me feel more creative. The best thing is, I have code that does things. It's not out in the wild, but when I come home from work I have a couple of projects that are coming along nicely to work on and play with.

</comment><comment><USER45> I think side projects and hobby projects need to be thought of separately.

In the context of hobby projects, over-engineering can even serve purpose of learning new things you otherwise could not.

For side projects, or startup candidates, however, you just ship it

</comment><comment><USER46> "Continuously Delivering Nothing" is a mission statement for several companies I know.

<comment><USER47> Tar it up, cat it to devnull

<comment><USER48> It is important to compress it with bzip2 or your even better custom algorithm before finally archiving it in /dev/null

</comment></comment></comment><comment><USER49> I recently had this with a html5 project. Thought it would be nice to use es6 and transpile, then disappeared down a hole of gulp and webpack.

Eventually backed up and used Make to run Babel and then cat the files together.

</comment><comment><USER50> I have committed almost all of these mistakes with my food side project [https://bestfoodnearme.com](https://bestfoodnearme.com) .

Probably the best thing I have come to understand in building side projects is that you need to get it out in front of people as soon as possible. After that, just get feedback, use analytics, and iterate quickly to fix issues.

Even more important, go look for existing problems, whether it be in online forums or talking to people in person. If you making a unicorn detector and you spend several years with your nose down, its a rough lesson to learn that no one wants a unicorn detector.

<comment><USER51> Nice! I actually wanted to do something like for my own food obsessed self. Were you able to get good traction with your project? Or did you just do it for fun?

My biggest hurdle was friction between using instagram and my app. But may that's not what you're targeting.

Either way, I was just curious...

<comment><USER50> I am still iterating to improve it, but I was doing it for fun and to scratch my own itch.

There is not much traction, the 1% internet rule is real in terms of the number of people that contribute verse those that consume content.

</comment></comment></comment><comment><USER52> If you are doing hobby side projects that are solely for learning, then this article's advice is (mostly) not intended for you. If your goal is to explore new tech, try new approaches, go down rabbit holes, then by all means, go for it!

The author's use of "side project" is referring to "I'm building something outside of my day job that I hope will turn into a business." IF your goal is to make money, then the author's advice is spot on. Get to MVP. Get users. Listen to them. Iterate. All the advice we hear that applies to startups, applies here.

</comment><comment> Spartan-S63 I actually find that unless I do some amount of project management (i.e. use Trello or Pivotal Tracker), I easily get myself sidetracked. I'll use other tools for longer running timelines, but splitting things out into small stories actually helps me stay focused without getting bogged down in considering the implications to every design decision I make.

For a lot of software, making the best decision today without worrying about tomorrow, while still following tried and true engineering practices (i.e. test driving, etc), leads to a project that continues to progress.

</comment><comment><USER53> I write a SVG path string optimizer for fun on the side. So far I wrote a custom decimal floating point type because of the 0.1+0.2 problem which I threw out afterwards, a zero allocation filter for printing rounded f32 without leading zeroes (.1 instead of 0.1) and dropping of unneeded spaces (.1.1 is valid and equal to 0.1 0.1), which I now want to replace with a custom float formatting routine.

All I did I did for fun and maybe learning something. So I think over- engineering side projects is fine.

</comment><comment><USER54> I can tell this article was written by a very wise man who wasted time on lots of projects or saw a lot of other people waste time on projects. He's described behaviors I have dabbled in many, many times.

In fact, I have a side project currently where I just needed to fabricate a tiny fixture for a physical device. I caught myself over-engineering the prototype, went to sleep, woke up, saw this article and came to my senses. Consider this article bookmarked!

</comment><comment><USER55> We just did a talk on this exact thing at Laracon last month. And raised many of the same points. We however also talked a lot about the business side of things.

For those who are interested: Video: [https://streamacon.com/video/laracon- us-2017/day-2-mathias-a...](https://streamacon.com/video/laracon- us-2017/day-2-mathias-and-michele-hansen) Slides: [https://speakerdeck.com/minicodemonkey/launching-and- scaling...](https://speakerdeck.com/minicodemonkey/launching-and-scaling-a- side-project)

</comment><comment><USER56> > "Develop your project. Then, put it on the bare minimum architecture that it > can run on (be that a 512MB instance from DigitalOcean or a medium instance > on AWS). As you get more users, monitor, and modify the infrastructure > appropriately to account for load and redundancy."

That's a pretty ignorant and potentially short sighted statement. Look at what happened to Instagram. They almost lost it all because they hadn't planned for the possibility of handling scale quickly

Sometimes you simply don't have the luxury of monitoring and modifying to account for load and redundancy. Sometimes you're monitoring says "hey traffic" shortly followed by "OMG YOU'RE SCREWED" because you can't possibly think up and implement an appropriate scalable architecture, and modify the codebase to handle it and and and while your servers are melting and everyone is yelling at you.

Yes, this is very unlikely to happen, but when it does it can cost you your business if you're not prepared. Obviously apps with no networking and no viral component are far less likely to have this problem. Got a macApp that creates icon sets for XCode? Yeah, you can ignore this scaling issue. Writing the next Instagram? You're a fool if you don't have plans in place, in advance of launch, for . handling the onslaught of people that will make your business successful.

<comment><USER57> > Look at what happened to Instagram. They almost lost it all because they > hadn't planned for the possibility of handling scale quickly

That's a problem that essentially nobody has. You're talking such a very small percentage of start-ups or projects, as to be meaningless as a reference point.

Simply put, that isn't a problem you're going to have.

If by some small miracle you have that kind of scaling problem, you can very likely fix it thanks to the fact that you've struck gold.

The number of homeruns that failed because they couldn't scale, is few and far between. There are so few of them, that you're naming one that became a huge success instead of listing some huge prominent failure. First, start with the fact that there are so few of these Instagram rapid hyper-scaling scenarios to begin with, then narrow it down to the percentage that failed due to poor scaling, then narrow it down to the number of those who failed due to poor scaling in the modern cloud era (ie not Friendster from 2004-05). You're very likely down to close to zero examples.

</comment></comment><comment><USER58> The article has good points. But the term "side project" implies working on something that isn't part of your job. I think looking at your project from that perspective can also be a step in the wrong direction---if you enjoy what you do, work is just one such application of your knowledge and ability. Projects you do outside of work are another, and may even be more important to you than work.

A number of commenters point out that many side-projects to them are to explore new concepts/libraries, or as a means of learning. If it's for the sake of learning for your job, then yes, it'd be a side project.

But if you're looking to take a project to completion (the author talks about products; my projects aren't), I find that using it as a learning environment extremely detrimental. Yes, you do learn things over the course of development ---through research, struggle, and growth. But if too much of your time is spent on things you don't have a good foundation on, you may burn out too early, wind up frustrated, and wind up with a mess that leads to refactoring. Use a foundation that you have experience with and know well, and learn the parts that are necessary.

(I do distinguish, though, a research project with a project for playful learning. The former is much more formal and disciplined. But you can still burn out early.)

</comment><comment><USER59> I thoroughly enjoy over-engineering side projects, and writing about them (linked below). The trick for me is in managing expectations. It's completely possible for a learning project to evolve in to something widely used, just don't go in with that expectation.

[https://blog.skywelch.io/2017/06/over-engineering-bunnies- io...](https://blog.skywelch.io/2017/06/over-engineering-bunnies-io/)

</comment><comment><USER60> I have built projects with a friend in the past.

He so aggressively avoids overengineering that he goes the other way - if you make ANY effort to properly engineer something he gets really annoyed and says time is being wasted.

It's almost like he feels software MUST be engineered to NOT scale in order to be an "MVP".

It's strange because for me, thinking about how something is built means that it can be built right the first time, without extra effort, just by thinking it through.

<comment><USER61> This is my attitude to the React PATENTS file - yeah okay I probably won't be big enough to worry about it, but just in case I am, why take the risk with React?

</comment></comment><comment><USER62> I have a personal Jenkins that's been running for years. Adding new jobs isn't yak shaving; it's a two minute task that gives me CD.

Same with my AWS "framework". And my CSS "framework" and my React component superclass and lots of other stuff I carry from one side project to another.

Some would (and have) accused me of over engineering; but I can discover my project is pointless very quickly.

</comment><comment><USER63> Man, I think this article is dead on, except it doesn't identify the original reason, for me at least. In a normal environment, there are constraints on time, money, goals, resources, etc. Suddenly, when there are no constraints, a side project, you try to do everything perfectly, which leads to the issues in this article.

</comment><comment><USER64> >You're so hyped for this project and confident that it will succeed that you start thinking about the future: "how will I scale my application for the millions of users it will have?"

That's one of my side project vices!

Every time I write a new login database... I wonder if I should make the ID a MEDIUMINT or INT.

<comment><USER65> I go full and make them BIGINT straight away. One less thing to worry once I will become billionaire.

</comment></comment><comment><USER66> > 4\. Use frameworks and customise them – only refactor/build your own when > absolutely neccessary.

> 5\. Build your project first – then worry about continuous delivery.

These contradict each other. Building your own deployment system is just as much of a distraction as building your own CSS framework.

<comment><USER67> Your "deployment system" could be a 20-line systemd service and a git checkout. You deploy with a "git pull" and "sudo service restart".

<comment><USER68> You could even skip the systemd and just rely that the server will never be restarted in the very beginning.

</comment></comment></comment><comment><USER69> But that's all the fun

<comment><USER43> Agreed. The best part of side projects is that I can take as long as I want to build it to my satisfaction, rather than to the minimal acceptable state for business purposes.

</comment></comment><comment><USER70> I really like over-engineering my side projects. I have three frameworks, one in PHP, one in JS, and one in PHP/JS (a bit abandoned) that no one really uses. But you know what? Because no one uses them, I'm not burdened by any opinion except mine. When I change something, I don't read death threats because someone's solution stopped working. And since I don't have any deadlines, I can spend as much time as I want to get the exact solution as I planned. I don't need to compromise. That's quite opposite thing to what I do at worktime and get paid for.

</comment><comment><USER71> I feel like there should be a solution that covers 99% of online projects. out of the box it scales, deploys, upgrades, does continuous integration, testing, logging, supports all major logins, has an admin console, metric console, etc... maybe it starts with the traditional Todo app and you just start modding.

I find it incredibly frustrating that much of this isn't a solved problem that I can then just insert my side project into.

hacking is fun until I have to maintain it and then I start wishing for all of those features instead of having to spend days or weeks implementing each of them from scratch

</comment><comment><USER72> I can only speak for myself here but I feel that belonging too strongly in either camp is a bad thing.

Ideally, you'd want to understand both worlds.

As such, I feel that the projects I work on in my own time and the crazy things I do in them help me to better understand what kind of things _really do need_ to happen when working under tight deadlines in the workplace.

I.e. It's easier to produce an effective product quickly if you know from personal experience exactly which approaches or things really are essential.

Also, note I haven't read the actual article. I'm replying mostly in response to the comments :)

</comment><comment><USER73> > I know: I'll create a triple zoned redundant architecture with pub/sub > database replication, a 32 node Kubernetes cluster and private networking > across all regions – that way, I can handle anything!

Well, maybe not a 32 node k8s cluster. However, spinning up K8s clusters is so easy now, that it costs almost no time to deploy stuff there. And so many things are taken care for you: configuration, secret storage, networking, versioning, keeping services up, etc.

If on AWS, there's Kops. If on GCP, that's even easier, a couple of clicks and you have a cluster.

</comment><comment><USER74> > Then, put it on the bare minimum architecture that it can run on (be that a > 512MB instance from DigitalOcean or a medium instance on AWS).

Or just test it in a VM and stop wasting money on side-projects.

</comment><comment><USER75> One of the ways I learn is via code review. In a side project I'm often doing new things that I am not already an expert in. Any ideas on how to get feedback that things are ok vs not?

</comment><comment><USER76> Side projects are meant to be challenging because they are a learning opportunity so it's possible that they end up over-engineered sometimes. You can always refactor the parts that are over-engineered. There's a very fine line between highly-engineered and over-engineered. One of my favourite projects is Kubernetes; some might consider it over-engineered but it's extremely powerful.

"Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away"

<comment><USER77> > "[...] when there is nothing left to take away"

I've always taken that quote to apply only when you have been taking things away; not when you've ended up with a colossal complex monstrosity where removal of any single strand would cause total collapse.

</comment></comment><comment><USER78> As in everything: figure out what you are trying to get out of your side project.

If you want something to generate a nice supplementary income stream, or practice for starting a company when you get "that great idea" then this article is very good advice.

On the other hand, if you are trying to learn a new technology stack, develop experience in building scalable architectures or even beefing up your project management skills then this is terrible advice.

So, the real art is figuring out what you want out of your side project.

</comment><comment><USER79> If I don't overengineer my side projects -- if I stick to what's simple and practical -- how am I going to gain marketable skills with the modern frameworks?

<comment><USER80> Set your goals high for the project instead, achieving your goals can never be considered over-engineering. Don't let the scope creep into "oh I should totally spend 30 hours on this form design"

</comment></comment><comment><USER81> As an amateur coder/noob I'm happy I'm not unique in this idea. I constantly start projects in Flask/Python and just try to make them as complex as possible (to the limit of my current capabilities). When I'm at work (im an Incident Manager for a NOC/SOC) I can somewhat hold my own in conversations about infrastructure issues. I'm also hoping to go into the security field soon (OSCP cert).

</comment><comment><USER82> There's probably another reason hidden in the first sentence, which is that there's a transition from building the product (engineering) to shipping the product (marketing, customer development, sales) that requires different skill sets and experiences. Was just discussing this with a software engineer friend of mine who realizes that he "has no clue how to market my product the right ways."

</comment><comment><USER83> When I do side projects it's normally because I want to explore something which is too risky for someone to do (or it would most likely have been done). In my experience that normally requires some sort of overengineering because your problem and solution isn't common.

A few of them turned into great side businesses but most of the times it help me explore technologies and projects while still solving real problems.

</comment><comment><USER84> Just like in real life, the art of engineering is iteration. So I always get quick and dirty results with my side projects, and iterate if it's worth iterating. But my side projects are just for myself, not for others, so it's things like writing a multi-thread stock strategy backtester, a dashboard for my IoT devices, etc. It's never that I think will make money.

</comment><comment><USER85> This makes a lot of sense -- and makes me feel like I'm guilty of over engineering a non-side project I started working on at work ...

I'm always looking to make the code as easy to change as possible -- the idea being that change is a precondition for any form of improvement ... Reading this article makes me wonder if I've turned that pursuit into an anti-goal

</comment><comment><USER86> I'm going to try another approach with my next project - not sure if it's a good idea, but I'm going with the Minimum Unviable Product. As soon as the project is bootstrapped and compilable, I'm going to release a version. I figure this way at least I can say I released something, even if it's not that feature rich.

</comment><comment><USER87> Duck it, it's your side project.

You own it, nobody it paying you to work on it, over-engineer the shit out of it if you feel like it.

</comment><comment><USER88> I recently was thinking about 1). At my current company, I got to know agile methodologies for the first time, I liked it and started planning my side project, but it instantly started to felt like work! I just realized if I write the parts whatever interests me the most, I will be more inclined to finish it!

</comment><comment><USER89> "Continuously delivering nothing" – exactly what I'm doing, building a product no one will use.

</comment><comment><USER90> I think [https://qbix.com/platform](https://qbix.com/platform) is the epitome of this. It came out of me wanting to abstract away once and for all everything that made developing social networks hard. And I just kept going lol.

</comment><comment><USER91> Depends what the goal of the project is.

If the side project is for learning purposes then taking time to explore different approaches is OK.

If your side project goal is to build a product, then you should approach it as a more traditional project, budgeting your time, and focusing on time- sensitive tradeoffs, etc.

</comment><comment><USER92> Every enterprise client I have worked with has asked about our tech stack. I will agree that your groupon clone users do not care about your stack, but respond to an enterprise SaaS RFP and stack, security, DR will all be discussed.

</comment><comment> real-hacker The definition of a side project is not clear. Is it just for fun/learning about new tech, and can be thrown away? Or is it a serious endeavor, and supposed to be the next big thing? These require completely different mindsets.

</comment><comment><USER93> This article ignores the fact that many of us work on side projects for fun. PHP? Nah.

</comment><comment><USER94> I have been successfully applying Jonathan Blow principles into my side projects. It's been working great. If you are not familiar I highly suggest you to listen to a few of his presentations about software development.

</comment><comment><USER95> I think deferring the CD part until the end can be really painful when you are "ready". I think it's a worth upfront investment even if you have few users, will make your life much easier and less stressful.

</comment><comment><USER96> All those rules applies to our new non-side projects as well.

I can't even count how many times I seen projects with awesome infrastructure and basically zero functionality after depleting whole budget (and usually some more).

</comment><comment><USER97> Minimum viable product (MVP) [https://en.wikipedia.org/wiki/Minimum_viable_product](https://en.wikipedia.org/wiki/Minimum_viable_product)

</comment><comment><USER98> on point! cannot agree more - I have been down this road before with my last project - Jabid.com. We tried to boil the ocean even though that was not the goal of the project. This time around, for [https://veganfutura.com](https://veganfutura.com), I am taking a complete opposite approach, that closely aligns with the list you have provided. Keep it simple, focus on the problem you are trying to solve and the user. Marketing and User acquisition > Tech initially.

</comment><comment><USER99> For the record (it's not mentioned but a lot of time it happens): security (e.g. password storage) should not be something left for later. Do it or use a framework that does it for you.

</comment><comment><USER100> #Mistake 6: not writing tests.

In case I want to actually deliver a side-project, I usually write some basic tests. As such I can focus more on adding new (fun) features instead of hunting down regressions.

</comment><comment><USER101> If you want to release your project and maybe turn it into a start up, then these are all great points. However, many times the purpose of a side project is to just learn new things.

</comment><comment><USER102> Doing #5 is chronic because I'm too lazy to handle my own deployments and it's easier to copy paste a generic firebase deploy.

Then you can send the link to anyone and it always just works.

</comment><comment><USER103> I believed over-engineering IS the point of personal side-projects.

<comment><USER77> I'm in the opposite camp - personal side-projects are where you can safely implement the MVP and/or ruthlessly chop things/ideas that never* get used without people harassing you about bells and whistles.

</comment></comment><comment><USER104> I think the majority of engineers only do side projects to learn things they couldn't at work or explore architectures they wouldn't be able to in a work environment.

</comment><comment><USER105> heh, most of this stuff is extra wastes of time past the very first hurdle that you should be working on: make something that works and is useful to people.

sure it would be great to have scaling to 10,000 users already sorted by the time you get there but odds are your project will never get there, when you get to 5k users you need to start worrying about that

if you're just doing it to learn or for fun then obviously this article or my comment don't apply

</comment><comment><USER106> guilty of all of the above. my thinking is always "i'll kill 2 birds with one stone, side project and learning the latest framework!" and yah.. after struggling with the framework for 2 weeks the project loses steam and then just thinking about a stupid challenge i have to solve BEFORE getting back to my project is crippling.

it does have a nice side benefit however of actually learning a new framework :)

</comment><comment><USER107> If only it was applied to side projects exclusively...

</comment><comment><USER108> Setting up a CI on AWS using git, CodePipeline, Code Build, and elastic beanstalk takes no more than a few hours. It's worth the few hours. Otherwise you're manually pushing builds out which wastes more time in the long. In the beginning your CI should be nothing more than ==> I check in code, it deploys to environment. Later on you can worry about triggering tests and preventing builds for deploying if they fail. Also if you use elastic beanstalk, you can scale as necessarily with a few configuration changes.

</comment><comment><USER109> Love the title of this post.

My side projects have all been over engineered, an unsuccessful. They have also helped my career enormously :)

</comment><comment><USER110> Bottomline is, you need to deliver something usable - regardless of its size or the technology behind it.

</comment><comment><USER111> Depends on the goal. Do you want to learn a lot or launch a MVP in the least amount of time possible.

</comment><comment><USER112> Oddly enough, I would apply some of these practices to real projects as well.

</comment><comment><USER113> A lot of time this can be applied to any new project not just side projects.

</comment><comment><USER114> These apply to every project.

</comment><comment><USER115> the best real joke of month!

</comment><comment><USER116> Back in the 90's and early oughts no one thought of writing code this way. It was counter productive. I'd suggest that it is still counter productive to consider SDLC concepts when writing pet code: great idea or not.

This whole agile sdlc idea is a distraction from writing good code.

</comment><comment><USER117> this should apply to the start of any project.

</comment><comment><USER118> This post should be renamed : The art of over-engineering

 _" those software engineers often have the tendency to over-engineer their side projects"_

When your first sentence is false, so do is the rest of the article !

<comment><USER119> "When your first sentence is false, so do is the rest of the article !"

Not necessarily.

</comment></comment><comment><USER120> Triggered. Leave me alone and let me make my Hugo blog migration with my custom theme using bulma.io and webpack. Never mind that the WordPress setup I have now could handle 100x the traffic I get.</comment>


The 19-Year-Old Behind Ethereum, a New Digital Currency, Is Insanely Smart - <AUTHOR> http://fusion.net/modern_life/story/ethereum-bitcoin-currency-created-19-year-372034 <comment><USER2> "But this is different. Why? basically, this dude really REALLY knows his stuff".

Err... What else ?

</comment><comment><USER3> Because nothing says "reliable store of value" like PR such as "Who wouldn't want to ride the first (possible) wave?", amirite?</comment>


The rise of LinkedIn's news feed - <AUTHOR> http://venturebeat.com/2012/09/15/the-rise-of-linkedins-news-feed-and-how-twitter-made-a-big-dumb-mistake/

<comment><USER2> > "Feeds are now full of relevant engaging posts because LinkedIn user's post > stuff they think will be relevant to their audience"

My 200+ connections must be very quiet - all I see in my feed are job title and skill changes.

That being said, if LinkedIn enabled folks to follow without connecting, that could be very interesting indeed.

<comment><USER3> As a successful massive social network with engaged users Linked in makes me think what "engaged" truly means and how it can be measured. "X connected with Y. Z updated his profile." was all that comes out (I am a member since its first year) and now add to it some news. Linkedin seems to be club you went with all your ex/colleagues and ex/bosses. Since no one is drunk yet, no one dances or speaks.

The only valuable engagement seems to be clicking on a profile of someone. Knowing that he will see you doing this, is what stops me from clicking. Finally, people mostly pay for membership due to this instinct to see "who looked at me?".

</comment></comment><comment><USER4> I use LinkedIn's news feed quite frequently, though through Flipboard. It is hard to compare it to Twitter because I follow a radically different group of people. First five stories from LinkedIn right now on my flipboard:

      How to evaluate whether or not you should join a startup
      How to Win Over someone Who Doesn't Like You
      Why termites explode
      Twitter Marketing Software
      How Disney Built a big data platform on a startup budget

My Twitter feed however is filled with mostly political and local news stories.

</comment><comment><USER5> I'm a tech lead working on the feed backend at LinkedIn. I work both on storage and feed relevance. Happy to answer any questions if I can. I will say we're always looking for passionate engineers, especially those with a background in machine learning or information retrieval.

<comment><USER6> Could you please add an unsubscribe from the linkedin updates email - I've been told by customer service the only way to stop getting that is by deleting my account : (

<comment><USER7> Not 100% if this is what you're asking, but if you go to settings (hover over the triangle near the top right corner) there's a "email preferences" tab near the bottom left. You can change the frequency and kinds of emails you receive there.

<comment><USER6> Thanks, you can unsubscribe from some emails there, but the linkedin update and a bunch of other email communications are not covered.

I've solved the problem by marking it as spam.

</comment></comment></comment></comment><comment><USER8> Meh. I use LinkedIn for job leads. And that's only when necessary.

I've been getting increasingly spammed by the site, and am getting consistently lower and lower quality recruiter contacts (both on and off LI), in conjunction with a number of privacy-violating moves, which have lead me to greatly reduce the information on my profile.

LinkedIn has a certain role, but shouldn't push too far beyond that.

Twitter? What's that?

</comment><comment><USER9> I turned off the news feed the second day I saw it. As it turns out, I don't really want to receive articles shared by every professional contact I've ever had.

"People I've worked with" is just not a good filter function for content.

</comment><comment><USER10> Hm. I am not a LinkedIn user, but I was under the impression that LinkedIn is something like "Facebook for people that are looking for a job" and I have it, in my mind, connected with "boring serious business" issues. (I am a student with a really small income, but not currently looking for a job.)

Did LinkedIn somehow became a social sharing platform while I was not looking? When exactly?

How do you connect "a better kind of CV" (which I always thought is LI purpose) with social sharing?

<comment><USER11> Like a cocktail party but online.

</comment></comment><comment><USER12> yeah i've been seeing some nice traffic from them for articles i share with my community.</comment>


Building a Cloudburwsting Capable Infrastructure - <AUTHOR> http://devcentral.f5.com/weblogs/macvittie/archive/2008/09/18/3627.aspx

<comment><USER2> Burwsting? You might want to fix that...</comment>


How common was it for parents to lose a child? - how-about-this https://ourworldindata.org/parents-losing-their-child <comment><AUTHOR> This is something that struck me when reading Dickens; people died, a lot. One thing it highlights to me is the importance of modern medicine and antibiotics. Another thing is how different the human experience is now for most of the world; children and death are much less common (for most) than previous centuries. Sure this is common knowledge, but taken for granted I believe.

<comment><USER2> Pardon the seemingly naive idea. How much life is worse when you're shielded from harsh.

I wonder if people weren't more mentally stronger due to the fact that they knew how fragile and dangerous things were. You have to overcome fear and sublimate your existence.

Nowadays I (maybe many others) feel like always wondering if I should dive in the pool.

And the recent VR era is not helping, someone on IRC was complaining that he couldn't be in VR 24/7 so he could just live in it try anything without ever fearing death.

<comment><USER3> Groups countries going through hard times tend to have higher suicide rates, substance abuse, crime rates, violence rates and what not including mental health problems.

So likely not.

<comment><USER2> Thanks for your answer.

</comment></comment></comment></comment><comment><USER4> One thing that shocked me was finding out J.S. Bach had 20 children, out of two marriages.

Of these, 4 died during birth, and 6 died within the first five years.

I can't even imagine what losing ten kids would be like, even if you have ten more.

<comment><USER5> Not to make light of his loss, but even with ten kids, I marvel at his ability to crank out as much music as he did! I can't imagine any peace and quiet at home for concentration.

<comment><USER6> He apparently only did two things: Compose and have sex.

<comment><USER7> He also played organ in cathedral. That was his day job.

<comment><USER8> Can you imagine that? Going to mass and think the guy playing is pretty good, but then it is Bach?

I mean that is like going to a meeting with your sons HS teacher and it is Einstein.

</comment></comment></comment></comment></comment><comment><USER9> I have said for a long time that having a child die is one of the most human experiences (more flagrantly "welcome to being human"). We are fortunate to live in a time where it has become a rarity. Nice to see someone try to put numbers on it.

<comment><USER10> why do you consider it one if the most human experience?

<comment><USER9> I think about it this way: until about 3 or 4 generations ago, every single one of my ancestors running back to the time before they were 'human' experienced the loss of a child.

</comment></comment></comment><comment><USER11> We don't really understand the human condition of the past, even when it is within living memory. A related aspect of life that has been practically eradicated is teenage motherhood. 18-19 years at birth of first child was the most common age for Americans in the middle of the 20th century. 40-year-old grandparents were common. That was just 60 years past, but we view everything differently today.

<comment><USER12> I wouldn't call teenage motherhood "practically eradicated", at least here in the US. Two of my sisters had kids before they were 18; one is (like me) a millennial, and the other is (I'd reckon) Gen Z. They ain't exactly outliers, either; teen pregnancy is still pretty commonplace, especially in impoverished areas.

Thankfully, my sisters were part of a big family that was happy to share the burden of raising these kids and hopefully allowing them to live happy and healthy lives (and the numerous nieces and nephews I got out of it have been absolute blessings). Not every teenage mother has that resource, unfortunately.

</comment></comment><comment><USER13> Another aspect of frequent death more than century ago was blended families. A widow or widower usually remarried soon after the mourning period because it was hard for single parents. If both parents passed together, then children were quickly adopted into other families needing labor. Shiffs book on the Salem Witch Trials has a long section on blended families. She attributed that causing some of tensions leading to witch accusations.

</comment><comment><USER14> I often think about whether or emotions towards our children are affected by our evolutionary past, specifically that since your kids had high mortality, you were smart to not get too close. Interestingly Darwin himself is the case study. I happen to have visited his home and I discovered he lost several kids. But it hurt him as much as you'd imagine, according to his diaries.

You also have to wonder if we have a coping mechanism, for the same reason.

</comment><comment><USER15> Reminds me that the Inca didn't use to name their children until either 2 or 3 years of age, because of how likely the were to die.

<comment><USER12> Pretty common to see things like "Child Jones" or "Son Adams" or "Daughter Johnson" or similar placeholders even in Western family trees. Lots of kids wouldn't get names until they were at least a couple years old.

</comment></comment><comment><USER16> Did I miss something, or does this article say that, for example, if one parent lost 5 children, that means that on average 5 parents lost 1 child each?

It's an interesting topic and the recent bumps on the graph have me wondering what caused young child deaths to rise in the '80s and '00s.

But unless I missed different numbers than averaging all child deaths across all parents, it doesn't answer the question in the title at all.

</comment><comment><USER17> As a fairly recent father of a toddler, I was a bit hesitant to click the link. It's just one of those things you think about but quickly bury to the back of your mind.

The quotes of grief from the article especially resonated. "Inexplicable" grief comes to mind. Thank goodness for modern medicine, healthcare and vaccinations.

<comment><USER18> Children are innocent, thoughtful, and full of anticipation for life. The death of a child is a tragedy.

"Here ends the joy of my life" is the proper opening to such a diary entry, and would likely be my words as well.

</comment></comment><comment><USER19> From genealogy it appears to me that before the dawn of antibiotics and vaccines _all_ parents had at least some children die of childhood diseases. The only exceptions I find are cases such as where the woman has two children then dies herself in childbirth or shortly thereafter from complications, and both children eventually grow up. Having no dead children a century ago and beyond seems to have been a very rare experience.

<comment><USER20> The converse is also true: when divorce became easier and more common, there was much hand-wringing over one-parent families, but in the past, one-parent families were just as common. The difference was that it was usually one of the parents had died.

Around here in the Boston area, every town has a colonial-era cemetery, and they are all have a lot of graves of children.

<comment><USER21> Its interesting to walk in them and read the headstones. The older headstones where I live are for very young children, then there seems to be a gap then it's young men and women. The males seem to have died in workplace accidents and the women in childbirth.

<comment><USER20> At the beginning of the 20th century, before antibiotics and safety rules, the top killers were pneumonia, tuberculosis, childbirth, and farm accidents. Yes, work was dangerous.

</comment></comment></comment></comment><comment><USER22> This thread reminds me of the Frost poem 'Home Burial.'

[https://www.poetryfoundation.org/poems/53086/home- burial](https://www.poetryfoundation.org/poems/53086/home-burial)

</comment><comment><USER23> Judging by families I've known - even if you ignore the still common stillbirths (something that's heartbreaking for those it happens to) - it's still pretty high. My own family lost one, another family I know lost some, know others who lost some too. It's still too common.

I've known too many people who probably wouldn't have survived childbirth either, if it weren't for modern medicine. (particularly including my own mother)

This is all changes within "recent history" \- my great grandparents were born before any of this were available.

I came close to dying too, of a disease that now has widespread vaccination. That vaccination wasn't available when I was little, and that disease still kills many where such isn't available - and most particularly children. And one will live the rest of one's life with the complications in a bad case.

</comment><comment><USER13> Another factor towards the large morbidity rate decline around 1900 was clean water and sewage.

</comment><comment><USER24> For those desiring an affirmative defence of the Enlightenment; reason, science, and humanism (which I think falls short ethically, but is a subset of what I try to practice), then I would strongly suggest reading "Enlightenment Now", by Steven Pinker. He makes a few broad generalizations of political groups, but I wouldn't try to argue against the specific policy recommendations that he has. Similar data is covered in so many different disciplines that it left me with incredible optimism that I continue to carry.

</comment><comment><USER25> The decline in child mortality explains why anti-vaxxers are getting footing. They've never had to watch a child die from something that was readily preventable with cheap, nearly risk-free medicine.

<comment><USER26> Not sure if vaccines are relevant here because -- as per the CDC data, and contrary to popular belief -- child mortality rates were on a downward trend well before the introduction of vaccines in the mid 1960s. The CDC claim it's had a "modest" effect:

Infant mortality: [https://www.cdc.gov/mmwr/preview/mmwrhtml/mm4838a2.htm](https://www.cdc.gov/mmwr/preview/mmwrhtml/mm4838a2.htm)

Edit: children mortality follows similar trend: [https://ourworldindata.org/grapher/child- mortality?tab=chart...](https://ourworldindata.org/grapher/child- mortality?tab=chart&time=1933..2016&country=USA)

<comment><USER27> Why is CDC research being downvoted?

<comment><USER28> If I had to guess, because it's about infant mortality but the poster presented it in support of an assertion about child mortality; which of course, it says very little about.

</comment></comment></comment></comment><comment><USER29> typo in the title : "was it was"

<comment><USER30> Thanks! Fixed.</comment></comment>


Why should I firewall servers? - <AUTHOR> http://serverfault.com/questions/201298/why-should-i-firewall-servers

<comment><USER2> He's right; if you only have a single host, and you're very confident about the host-based tools you're using to restrict access (note: you're much better off with netfilter or pf than you are with TCP Wrappers), there's little to be gained from deploying an additional machine just to do access control.

 _But_ , once you have two machines, it makes far better sense to centralize access control in a single place. With two machines, it's simply good engineering. As your stable of machines grows, it's less a style point and more a necessity. It's hard to keep a group of machines in sync with a single policy, and virtually impossible to avoid mistakes and windows of vulnerability over the long run.

An attacker that truly wants to target your network can continuously profile your network, and is more likely to spot your mistakes than you are. A sensible way to approach network security is to assume that there's always someone who's willing put forth the effort to break in.

<comment><USER3> For those who make the effort, configuration management and monitoring systems that continuously profile _one's own network_ are another way to deal with a growing, unfirewalled cluster. And they avoid having to learn yet another vendor's CLI or slow down iterations in resistance to changes on the one-off system.

<comment><USER2> As someone who sells exactly such a system, let me advise everyone not to use them as a replacement for a single, central, simple, coherent firewall.

<comment><USER3> In any case, folks should be continuously profiling their networks integrated into monitoring/alerts. I find many firewalls that are doing different things than my clients expect they are -- or have just been left to diverge from reality in some form of config rot. Automated testing surfaces these differences.

Can you really put "simple" in the same sentence as firewall? Vendors prevent that. Folks don't have time to maintain them.

</comment></comment></comment></comment><comment><USER4> Anybody who has worked in a large organization, or heck, any company with more than 30-40 people in the systems (DB/Servers/Network/Syseng) infrastructure group also knows that firewalls have the advantage of "Defense in Depth." If a sysadmin runs a quick pfctl -F a while troubleshooting a problem, and neglects to restore the ruleset, the firewall team has them covered. And the firewall team will never, ever run pfctl -F a. They likely will require multiple-day advance notice to even add a new, very specific rule.

Also - having policy for the network guaranteed at a single chokepoint (Usually a ruleset that generates firewall configuration, that is then pushed onto hundreds of firewalls) is a big win. One spot to audit.

With all that said - if you are a tiny 2-3 person shop, you can probably get by without Load Balancers, Firewalls, or heck, most infrastructure out there. Just throw it all on AWS/slicehost/linode and harden your hosts to do the right thing.

But, when you get big, and have hundreds (thousands?) of hosts, and are tempted to run them yourself, you will have firewalls, and loadbalancers. Many of them, in fact.

Check out Margrave ([http://www.cs.brown.edu/~sk/Publications/Papers/Published/nb...](http://www.cs.brown.edu/~sk/Publications/Papers/Published/nbfdk- margrave-firewall/) ) for some of the interesting stuff around formalizing policy inspection.

</comment><comment><USER5> Firewalls can protect you from a number of things because they deal with the entire stack at once, which tcpwrappers can't do.

They can detect and take action against denial of service attacks, port scans and probes for known vulnerabilities. They can manage incoming connections statefully.

They can block outgoing connections (big one there), including replies from the stack that give away information you don't want to give away.

They can also log what's going on.

Really, the ideal system only responds to the one port you're serving (and should stop that if you DOS or probe the system).

</comment><comment><USER6> This advice seems to me to be misguided.

Suppose you have a standard database backed website. With his procedure the database would wind up on the internet, exploitable by anyone who knows of a security flaw in it. Under standard operating procedures you'd have a firewall which the web servers are accessible to, and a second firewall that allows the web servers to connect to the database but for nobody else to. Now if someone on the internet knows of a problem in your database software, it is not easily exploitable.

<comment><USER7> No. With his procedure the database would be properly configured to listen only connections from local network or localhost. So it wouldn't really be any more vulnerable than if there was a firewall protecting it.

His point in my understanding is that you should harden your servers, firewalled or not, and to hardened hosts firewall doesn't add a lot of value anymore.

<comment><USER8> In an ideal world where your OS has no vulnerabilities, your application stack has no vulnerabilities and you never make configuration errors I would agree.

However, as far as computer security goes it is very far from an ideal world.

See ghshephard's comments about "Defense in Depth" above.

</comment></comment></comment><comment><USER9> I didn't see any mention of a DMZ. What percentage of his company's servers are hardened in the way he describes? What about his users' desktops? There's got to be some point at which one declares that the "administrator" of a computer (an individual user with a laptop, even) must be protected from himself.

What I liked about his argument was that he was actively thinking about threats instead of applying a heuristic of "it's ok -- we have a firewall." With all this said (and asked), I'm no security expert.

</comment><comment><USER10> Am I missing something? If you have a server open to the internet, like a database server, it means it's open to brute force attacks. And who wants that?

<comment><USER7> If you are running database locally, then bind the daemon to localhost only, otherwise bind it to a non routable private address. Problem solved.</comment></comment>


Ask HN: Docker, Vagrant? What's your dev environment setup look like? - <AUTHOR> I know this has been discussed a lot, but things change rapidly.
I currently use a combination of Vagrant + local services, that I manually run when required. Some other people in the team use Docker, that I personally haven't touched for quite a while. I'm looking to standardize the dev setup in our organization and curious what are the best practices in 2017. There are a few goals I pursue:
- an easy way to spin up the entire infrastructure locally (say for new hires);
- an easy way to share new services with the team;
- the environment should mimic staging/production as much as possible.
I'm leaning towards a Vagrant VM + Docker containers inside of it. In this case we can share a single Vagrantfile across the team, which to me solves the first two goals. Running multiple containers in the VM solves the third goal.
I sometimes hear that Vagrant is a useless layer in this setup. But I'm not sure.
Are there some best practices today? What's your setup looks like?
P.S. We use Chef to manage non-local environments. Could be nice to have a single tool for all environments (local, staging, prod, etc.), but I'm not a dev-ops, not sure if that's a handy practice.
Edit: formatting. <comment><USER2> I use Cloud9 IDE for dev, it is a collaborative web app that runs the env inside a Docker container and has clone/revert capability. For MS related projects, I use PaperSpace, a windows VM in the cloud, they offer Enterprise plans with advanced provisioning.

You can also run the open source version of C9 locally.

I don't know how far you can practically go with keeping the environments consistent, especially for performance. It can be resource costly to allocate a clone of Prod for every dev. Depending on your stack, it might be better to auto-test on a dev server on a commit cycle.

<comment><AUTHOR> Thank you. I'll check c9 out. It's unfortunate that this submission did not make it past 'new'.</comment></comment>


Ask HN: How do you evaluate a start up? - <AUTHOR> I've been considering leaving my current job at Google, for a more fulfilling role, where I feel I'm having a positive impact on society, e.g. Recidiviz.
I also plan to start a family in a couple of years, so I'd like to find a stable job with good work-life balance and nice benefits for my family.
So, what things should I look for to know if a start up job will be stable? Have good life work balance, and good benefits? <comment><USER2> Startups can definitely vary a lot in this regard. From the top of my head, this would be the best way(s) to evaluate a startup:

1) You know founders personally or worked with them before 2) You know somebody who is working in the startup That way you can have first-hand info and get pretty reliable feeling on how things are working.

If that is not an option, you can of course evaluate the available data - company size (the bigger it is, the more stable it is probably) etc.

But I think at this point it is pretty much a lottery also - you just won't know for sure until you start. Things can differ a lot in different teams and it matters who you work directly with.

The same happened to us when hiring - somebody may look great during the interviews, but then when you start working together the problems emerge. And then you feel "how is it possible I haven't realized this before?".

The same with the founders - from the outside they can sound very convincing and confident about what they do, but in the inside it might be a totally different story.

Hope this was somewhat helpful! At the end of the day, you can always try something and if doesn't work change it, I believe that is still a better option than staying put somewhere where you don't feel content or challenged enough.</comment>


Steam should let users resell games, French court rules - <AUTHOR> https://www.rockpapershotgun.com/2019/09/19/steam-should-let-users-resell-games-french-court-rules/ <comment><USER2> How long until Valve stops selling in uncooperative regions?</comment>


Ask HN: What do you think of "Initiative Q"? - <AUTHOR> "Moving through the gaming community right now: Initiative Q" [1] "Initiative Q Founder Responds To Claims Calling The Bitcoin Competitor A Pyramid Scheme" [2]
"https://en.wikipedia.org/wiki/Initiative_Q" [3]<p>[1] https://www.reddit.com/r/CryptoMoonShots/comments/9qwl9r/moving_through_the_gaming_community_right_now/ [2] https://www.forbes.com/sites/lelalondon/2018/11/01/is-initiative-q-the-new-bitcoin/#77dbe94e783f [3] https://en.wikipedia.org/wiki/Initiative_Q <comment><USER2> This _Initiative Q_ is all over my Facebook feed. I'm curious too, but weary, as it seems to have all the trademarks of a pyramid scheme though;

\- Members recruiting other members

\- Big promises of future gains

\- Utopian, almost cult-like following...

Probably best to wait and see what happens. A friend of mine said he signed up and his phone number was taken and he instantly got spammed by telemarketers.... so they might not be so genuine...</comment>


It's All Just Programming - <AUTHOR> http://www.cs.uni.edu/~wallingf/blog/archives/monthly/2009-11.html#e2009-11-02T18_59_40.htm

<comment><USER2> The linked-to article is much more thorough:

[http://gilesbowkett.blogspot.com/2009/07/do-you-believe- in-m...](http://gilesbowkett.blogspot.com/2009/07/do-you-believe-in- magic.html)

</comment><comment><USER3> Great article. It makes me wanna learn more on how to write programs.</comment>


Will You Take $100 Now or $200 in a Month? - <AUTHOR> http://www.nilkanth.com/2014/04/11/will-you-take-100-now-or-200-in-a-month/

<comment><USER2> "Will You Take $100 Now or $200 in a Month?"

I suppose it depends who you are, on the value of $1, and how many other people you're making the same offer to...

Definitely take the $200 in a month if you're my bank.

</comment><comment><USER3> Depends. Are you a trustworthy person to handle my money, or are you a meth- head junkie who owes me rent? Because if it's option #2, the risk of "investing" with you is probably not worth the interest rate.

</comment><comment><USER4> Would answering "Yes" get me a $100 now and $200 in a month?</comment>


Google CEO Larry Page: 1M$ Houses in Silicon Valley Should Only Cost $50K - <AUTHOR> http://www.businessinsider.com/google-ceo-larry-page-houses-should-only-cost-50000-2014-11

<comment><USER2> "There isn't a further explanation, so we're not exactly sure what he means."

So why assume what he means, exactly?

</comment><comment><USER3> This makes no sense.

</comment><comment><USER4> He must be just back from the Pittsburgh office, where $50k can buy you two houses.</comment>


For the past year, I put away every $5 bill that came into my possession. - <AUTHOR> http://imgur.com/gallery/TIfr5ow

<comment><USER2> For a long time, I've used the "pay yourself first" trick ... (at least) 10% was direct-deposited into a savings account and we learned to live on the rest (which also included 10-15% of charitable giving).

My only other advise would be to never buy purchases over $100 on impulse. If you still want it after three days, you can find the item again. This helps identify the difference between wants and needs, and also helps you consider whether you want to deal with having another item in the house (you've got to store and maintain most of what you buy).

Lately we've been buying less than ever, selling of giving away things we don't use (try FreeCycle!) and it's nice to not be part of the accumulation crowd.</comment>


Ask HN: Who has access to Open AI gpt-3? - <AUTHOR> <comment><USER2> I'm curious, too. Are all these tweets of people showing off GPT-3 capabilities those who have access to the OpenAI API?

</comment><comment><USER3> What level compute is needed to run it, also?</comment>


Look what you made us do, hackers tell Vevo - <AUTHOR> https://www.fastcompany.com/40469670/vevo-hack-breach <comment><USER2> The hackers breached Vevo, and then took down the data from their site because Vevo asked them to? Well, that's nice of them.</comment>


Montreal researchers "prove" that aging is the result of a genetic program - <AUTHOR> http://lemire.me/blog/2017/02/02/montreal-researchers-prove-that-aging-is-the-result-of-a-genetic-program/ <comment><USER2> They "proved" nothing of the sort. Further, you never "prove" anything in biology, you just find models that fit the data and sustain attempts at falsification.

Anyway, computer scientists should stay out of biology unless they are willing to learn all the necessary underyling biology. Otherwise, they've continue to come to ludicrous conclusions and promote their ideas at the expense of legitimate biologists.</comment>


C++ sequenced-before graphs - <AUTHOR> http://josephmansfield.uk/articles/c++-sequenced-before-graphs.html

<comment><USER3> > Black nodes are value computations in general. Blue nodes are value > computations that use the values of objects.

I don't quite understand the difference. Don't all value computations use the values of objects?

<comment><USER4> You can have values that don't belong to objects. I consider there to be three types of value computations:

\- The value computations of operators, like 5 + 6. These don't use the values of objects. They just use the values of their operands. The operands may be subexpressions that denote objects (like 5 + x), but it is the value computation of those subexpressions that uses the object's value, not the value computation of the operator.

\- The value computations of expressions denoting objects where the expression is being used as an lvalue. These also don't use the values of objects - <USER2> only care about the object's storage location. I give an example in the article, which is the left operand of =.

\- The value computation of expressions denoting objects where the expression is being used as an rvalue. This means lvalue-to-rvalue conversion is performed, which is conceptually "reading an object's value out of memory". This, therefore, uses the value of the object.

<comment><USER3> Just to make sure I've got the terminology down.

Objects correspond to locations in memory.

5 + 6 has operands which are rvalues (and thus not objects because you can't take their address).

if x is an int, then in the context of the expr 5+x, it is undergoing lvalue- to-rvalue conversion

Did I get that right?

</comment></comment></comment><comment><USER5> The good news: there is a simple rule you can use instead of understanding all this. The simple rule? Write simple code.

Don't write multiple assignments in a single statement. Don't overuse the ternary operator (?:). Don't overdo it with assignment inside larger statements like comparisons. These "don'ts" will make your code clearer to humans and you are much, much less likely to wind up with holes in your feet.

<comment><USER4> Author here - absolutely! This is only for those with an interest in the details of C++ evaluation. Considering the number of times I see these expressions in a purely theoretical context, I assume many people are at least intrigued.

</comment></comment><comment><USER6> Yeah, that graph - it didn't make anything clearer...

<comment><USER4> Author here - Apologies, I'll work on making that better. It could perhaps do with an intermediate step where the expression is broken down into a subexpression tree.

<comment><USER6> You know what might make it a bit clearer? Showing the assembly code that is associated with each of the boxes. It's hard understanding what each box represents, no-one outside of compiler developers has the right vocabulary for descriptions to work. Something concrete, such as an x86 representation of each boxes actions would make things _much_ clearer.

<comment><USER7> Assembly code would fail to demonstrate the point. The graphs are meant to demonstrate that, temporally speaking, the basic actions being performed by the abstract machine are partially ordered. A consequence of these actions being temporally _partially ordered_ is that two individual actions may be temporally _unordered_ , or "unsequenced." The undefined behaviour comes, roughly speaking, when a "write" action is unsequenced with a "read" or "write" action on the same memory location. This scenario corresponds graphically to a red box and a red/blue box unconnected by any single- direction chain of arrows.

Anyway, the problem with using assembly is that it imposes an artificial temporal total ordering on the actions being performed. Under temporal total ordering, the possibility of unsequenced actions disappears, and the message is lost.

>no-one outside of compiler developers has the right vocabulary for descriptions to work

There's nothing here specific to implementing compilers. There are a few uses of standardese and graph theory, but they're relatively basic concepts that are important to familiarize yourself with if you want to use tools like C++ effectively.</comment></comment></comment></comment>


Intuit Notice of Unauthorized Access to Tax Returns [pdf] - <AUTHOR> https://ago.vermont.gov/wp-content/uploads/2019/02/2019-02-22-Intuit-Notice-of-Data-Breach-to-Consumers.pdf <comment><USER2> FWIW, the reports are saying these accounts were compromised due to credential stuffing attacks. While, Intuit can do something about credential stuffing by being proactive and hooking into haveibeenpwned etc. but they were not "breached" in an intrusion sense.

[edit]: Here is a source with more info - [https://www.scmagazine.com/home/security-news/intuit-the- com...](https://www.scmagazine.com/home/security-news/intuit-the-company- behind-tax-preparation-software-turbotax-alerted-users-their-accounts-may- have-been-accessed-by-an-unauthorized-party/)

<comment><USER3> I think you are letting TurboTax off too lightly. Many banks and the UK tax office make their login credentials unique by having a username with random characters, or requiring an account number on login.

<comment><USER4> That is not the solution. Usernames are not passwords. If they were, why have them at all? Generate a random unique password for your user and don't have a username at all. As the parent mentioned using haveibeenpwnd or similar service is a much more user friendly and secure approach.

<comment><USER5> > That is not the solution. Usernames are not passwords. If they were, why > have them at all?

Claiming that usernames cannot be a source of entropy/security needs foundation.

Back when the whole concept of authentication was new (UNIX) that was true because usernames were quite literally public information, you could see them via a directory listing. With early email (SMTP) that remained true but worse via public directories listings across-computer.

However in this context there's nothing inherent about a username that allows us to ignore its security characteristics. Unless the argument is "over the shoulder" leakage? Which I'd argue itself doesn't have a strong foundation.

Both obscure usernames and obscure passwords can contribute to the overall strength of a system. A system that allows the user to set their own password may gain particularly from pre-selected randomized usernames, as users have proved untrustworthy in the past when picking passwords (e.g. reuse, patterns, common words, etc).

As an aside, scrapping usernames and only having a password isn't inherently problematic, except two users with the same password may clash, and a password recovery scheme may be more difficult to develop. That's essentially what authentication tokens are.

> Generate a random unique password for your user and don't have a username at > all.

Because having an unknown username with an unknown password increases the difficulty of compromise via improved entropy.

<comment><USER4> I agree there is nothing technically bad about using usernames as more entropy (it is bad from a user experience standpoint), but why have two strings at all? Just have one longer, truely random string.

> Because having an unknown username with an unknown password increases the > difficulty of compromise via improved entropy.

Not necessary. It depends on the characteristics of each. If the username is truely random, sure, but then you are back in the same boat as using one random string.

</comment></comment></comment></comment></comment><comment><USER6> Why was this recently uploaded to vermont.gov? Wouldn't it be Intuit's responsibility to inform its own users?

Confused whether this is just precautionary and given out to governments each tax season, or if something has occurred. The "Insert Date" makes it appear like the former.

Edit: According to another comment linking to "scmagazine," this is not precautionary!

</comment><comment><USER7> This is exactly why I always used to pay extra for the TurboTax desktop edition (I say "used to" because I ended up ditching TurboTax entirely a couple years ago, but that's another story). It's worth it to me to pay a little extra to reduce the number of entities that have this kind of data stored, and it appears that bet has paid off in this case.

<comment><USER8> What did you replace it with?

I have used it for 5 odd years, but it's really starting to annoy me now. I'm seriously considering trying to find a professional that can handle everything for, say $500/year.

<comment><USER9> Because I'm paranoid, I usually use Turbotax then do a sanity check by filling the paperwork out by hand. My return is probably slightly more complicated than the average one since 90% of people don't even itemize, but I can still do everything in an afternoon. Unless you have a particularly gnarly tax situation (own a business, exercising stock options, etc) it may be doable to take care of it yourself and save $500. Even if that $500 is a write-off :)

<comment><USER10> 90%+ don't itemize because, we tried it, some of us for a couple years, and realize that we've been spending 10s or even 100s of hours of time keeping records, feeding them in to the tax software and then get told...

Taking the standard deduction (all your work, charitable donations, and other itemizable items still don't cross this threshold).

It's really annoying that taxes are even the way they are, it's all just a huge, convoluted mess. For something like 95%+ of the US the government already knows your earnings (W2/etc), banking (INT-whatever), and any brokerage/etc stuff. The only reason the IRS doesn't send a pre-filled out form that says "this is what we believe is owed to whom, - please pay / cash the check, or fill out taxes manually to report where you think we missed data" is PRECISELY because HR Block and Intuit (Turbo Tax) lobby for complicated taxes and no government automation.

<comment><USER11> Things generally not known by the government: deductions & credits you are eligible to take, any changes to your marital status, _changes to your address_. Often your government cannot find you, has no idea if you're still single/married/widow, and doesn't have the data for credit eligibility. Besides, you're also assuming perfectly accurate reporting of _all_ data elements on income reporting documents by all payers and employers. We don't even have that now.

It is a nice idea but in practice it would just overcomplicate things. Changing up the Internal Revenue Code is a better way forward.

<comment><USER12> In practice there are many countries that don't require citizens to file tax returns, and somehow it all works just fine. Optimize for the most common path - standard deductions etc. Anybody who needs something more complicated will have to do some extra work, but why should _everybody_ be forced to do this when it's rote for most?

</comment></comment></comment></comment></comment></comment><comment><USER13> This is one of the reasons I will never use a tax preparation product online. Nor will I file online through the IRS's "secure" system. Even the downloadables are open to shenanigans behind the scenes, so it's not the best option either.

At some point, it's possible that one or more IRS databases themselves will be breached. This may (?) cause a re-evaluation of the risks the US government is subjecting its citizens to by collecting and storing such large volumes of financial data.

<comment><USER14> Just make everyone's tax returns public. That's what Norway, Sweden and Finland do. Society hasn't collapsed when people know how much money their neighbor makes.

<comment><USER15> In the US, lottery winners are advised to remain private because of the significant increase in crime targeting public lottery winners; it's certainly not society collapsing when rich people get robbed, but I'm wondering if criminals in the Scandinavian countries use the tax returns for picking targets?

<comment><USER14> I imagine it happens. I remember a kidnapping of a wealthy young inheritor in Finland ten years ago... But that crime got so much attention because it was so unique.

Anyway, isn't it much easier for criminals to pick a target by simply going into a wealthy neighborhood? The American rich are much more segregated than their Scandinavian counterparts. That's a more obvious target on their back than having tax data available on request.

<comment><USER15> The ultrawealthy are certainly more segregated, but for upper-middle-class it's not unusual to see a factor of 10x difference in household income in the same neighborhood (e.g. $25-30k per year for a single parent or retiree vs $250-$300k per year total for two married professionals).

[edit]

For some data, you can look at primary school districts (which are almost always geographically assigned in the US, and are usually much smaller than secondary school districts). They tend to have statistics on percentage of students that qualify for government subsidized meal programs, which is a good proxy for poverty. I'm well above this line, but have lived in districts where the numbers were as high as 91% and as low as 5%.

</comment></comment></comment></comment></comment><comment><USER16> The document says that the accounts may have been accessed using id/password combinations obtained from other sources. But doesn't TurboTax have two-factor authentication? If so, how is this possible? If not, what would an extremely important service like TurboTax not have two factor authentication?

<comment><USER17> Because it decreases conversion, and because people only use it one month of the year, and because people will desperately call up about needing to log in to file but they changed their phone number yada yada.

</comment></comment><comment><USER18> Even if one account is compromised, they have to send that notification. So I wouldn't be so worried about it. Some credentials stuffing attack gained access to a few accounts protected by a password like 123456. TurboTax has 2FA support.

</comment><comment><USER19> I have a ticket open with them for a couple of weeks now due to them not supporting MFA with my bank. My bank requires the token code after the password and TurboTax tries to replay the password and token code twice. I feel like a financial institution shouldn't be tripped up by enterprise secretary that they assuredly have in house too.

<comment><USER20> This is a defect with your bank, not TurboTax. Your bank should be doing oauth, not user/pass.

[https://community.intuit.com/questions/1752343](https://community.intuit.com/questions/1752343)

<comment><USER19> Not really if TT is saying they support it.

</comment></comment></comment><comment><USER21> Side note: TurboTax's updater still requires TLS 1.0. _facepalm_</comment>


Home Depot Hacked After Months of Security Warnings - <AUTHOR> http://www.businessweek.com/articles/2014-09-18/home-depot-hacked-wide-open#r=read

<comment><USER2> Is there any reason to believe the criminals aren't still maintaining a presence in Home Depot's networks?</comment>


Building Filtron, a new photo editing platform for Mac and iOS - <AUTHOR> http://blog.drewwilson.com/building-filtron <comment><USER2> TL;DR (though you should read the whole thing) - they've spend $100k+ dollars and just launched a free app with some IAP filter upgrades.

The article starts with saying how hard and crazy it is to build and an app and then runs through the empirical experiences as just why that's the case.

However, I think there's a flaw in the initial idea here where the level of difficulty in pulling something like this off nowdays is just astronomical.

I've been using the 3Axes framework [1] for evaluating ideas like this and this just seems incredibly difficult to execute on profitably.

Very consumer focused, more a tool than a done-for-you service and really no pain that it's solving.

1 - [https://medium.com/@mbuckbee/the-3-axes-of-startup- difficult...](https://medium.com/@mbuckbee/the-3-axes-of-startup-difficulty- cad7c1ff6950#.5fbswu6ew)

</comment><comment><USER3> This development process seems to exemplify Apple and the old-school third party ecosystem Mac ecosystem (that in part transitioned to iOS).

Where is the constant iteration to find exactly what users want?

That said, if the aim is to become a sustainable small business, rather than a billion-dollar VC funded company with no profits, maybe you don't have to get it right, maybe you can afford to be a way off the mark and still do ok?

I'm not saying that Filtron is way off the mark, but what are the chances they made exactly what users want, straight off?

</comment><comment><USER4> Curious about the rationalization behind creating yet another photo filters app. There are quite a few of them on iOS, its very competitive and they are all quite polished.

<comment><USER5> For months I've been waiting for something like Priime for Mac, I know iOS is inundated with this kind of apps, but I couldn't find something enjoyable to use as Priime and ready to work with the thousands of pics living in my computer (faster, bigger screen, all my pics live there). I even wrote the team with the suggestion and I'm fine with paying a fair amount for it. I still haven't used Filtron but it looks promising, congrats to the team.

EDIT: What could be a greta addition is to suggest filters based on the picture. Or at least indicate in what's the best use of each filter... the nenufar demo doesn't make it evident.</comment></comment>


Show HN: Clip War - <AUTHOR> http://www.clipwar.com Just wanted to show off my weekend project. Carry on. <comment><USER2> Front page is NSFW, should probably pick a different clip unless it's random.

<comment><USER3> It looks like the clip should always be random since it will be the last clip that someone chose to post. I don't like it that this site requires you to use a facebook id but, that is probably a good way to control a site like this.</comment></comment>


Make Waze Remind You About the Child in Your Car - <AUTHOR> https://offspring.lifehacker.com/make-waze-remind-you-about-the-child-in-your-car-1821303538 <comment><USER2> I've noticed this feature in their iOS app for a while now. Waze is by far the best nav app around, glad it's getting more press.</comment>


Brett Victor's Principle - t-crayford https://vimeo.com/36579366

<comment><AUTHOR> How soon can we expect to see an editor like this that is robust enough to no longer be a proof of concept?</comment>


A small chrome extension to help quickly close multiple tabs - <AUTHOR> https://chrome.google.com/webstore/detail/bulky-close-tabs/ggpngjjjpfoplolfkljmlhkcgdefjgae?utm_source=chrome-app-launcher-info-dialog <comment><USER2> What we _need_ is a way to turn off the Chrome keyboard shortcut(s) that shuts down your window and all of its tabs (or asks confirmation first, like IE) that works even with Incognito windows.

I stumble across that sequence a few times a month, and bam, all that context is lost.

</comment><comment><USER3> I had to uninstall it. Even though there was an extension icon on each individual window using it in one acted on all windows. Not cool.

<comment><AUTHOR> Hi mchahn, the plugin has been updated to only work on each individual window</comment></comment>