Introducing Soylent 1.6 Powder - <AUTHOR> http://blog.soylent.com/post/146357422357/introducing-soylent-16-powder <comment><USER2> Does soylent include creatine? Its not an essential nutrient but if a human exercises a lot and does not eat meat, creatine levels can get very low. This leads to a lack of energy both mental and physical. Studies have shown [0] improved mental performance in vegans when supplemented with creatine.

[https://www.psychologytoday.com/blog/evolutionary- psychiatry...](https://www.psychologytoday.com/blog/evolutionary- psychiatry/201202/your-brain-creatine)

<comment><USER3> It also doesn't have near enough protein for someone who is actively working out, so they're going to need to supplement it, too:

People that don't tend to work out need around 0.8g / kg; but, people that do work out tend to need 1.2-1.4g / kg a day.[1]

[http://www.medscape.com/viewarticle/414351](http://www.medscape.com/viewarticle/414351)

<comment><USER4> Precisely. I get the appeal of Soylent (quick meal replacement when otherwise obtaining food would be too big a distraction), but I don't get the appeal over meal replacement protein powders – many of which already taste better, have more protein, and are cheaper than Soylent.

</comment></comment></comment><comment><USER5> I would really like a version of Soylent that doesn't use sucralose. That stuff leaves a nasty aftertaste.

<comment><USER6> It's currently the sugar-substitute that tastes the best to the most people, so I'm sure that they could replace it with something that would please you, but it would probably displease many more.

<comment><USER7> Try xylitol. I use it for my coffee and the difference to sugar is barely noticeable.

<comment><USER8> Works, but is extraordinarily toxic to dogs... I think that's why it's not as widely used.

</comment></comment></comment></comment><comment><USER9> Anyone know if there's anything like Soylent but for protein only?

Sometimes I go on a no-carb diet (sometimes to lose weight and sometimes because carbs make me sleepy) and I am too lazy to buy ingredients and cook at home.

I just want soylent, but with 0 carbs. Anyone know?

<comment><USER10> Why not just get protein powder?

EDIT: Alternatively, you could go on [http://blendrunner.com/](http://blendrunner.com/) which gives a comparison of the various meal-replacement drinks out there.

<comment><USER11> Standard protein powder is usually animal protein which even if you're not a vegetarian is kinda gross.

<comment><USER12> If you aren't a vegetarian why would be it be 'kinda gross' in fact even if you are.

Protein powder is mostly whey, which is a milk component and most vegetarians eat dairy.

</comment></comment></comment></comment><comment><USER13> As someone who very occasionally gets very nervous about something to the point of not wanting to chew, soylent+chocolate powder in a blender bottle is really helpful.

<comment><USER14> How much chocolate powder do you usually use? I've been trying to experiment with different things to put in mine and haven't thought of chocolate powder before.

<comment><USER15> I was putting two heaping tbsp of cocoa powder per bag + a pinch of extra sucralose - the 1.4/1.5 soylent only had enough sucralose to offset the bitterness of some other ingredients, so adding 2+ tbsp of cocoa without something to balance made it taste bad.

</comment></comment></comment><comment><USER16> What's the difference between soylent 1.x and 2.y?

<comment><USER17> 1.x is powder that you mix yourself. 2.y comes in bottles.

<comment><USER18> They also have a very different taste and texture. I love the drink, but I when I tried the powdered stuff (1.5) it made me gag. (And I know people who have had the exact opposite reaction.)

</comment></comment></comment><comment><USER19> Can someone with access to the pack take pictures using the Open Food Facts app ? [http://android.openfoodfacts.org](http://android.openfoodfacts.org) or [http://ios.openfoodfacts.org](http://ios.openfoodfacts.org)

</comment><comment><USER20> Is this a point of discussion or an Ad? Here are some previous discussions which I feel cover everything their is to be said about the product:

[1]: [https://news.ycombinator.com/item?id=6247552](https://news.ycombinator.com/item?id=6247552)

[2]: [https://news.ycombinator.com/item?id=9995303](https://news.ycombinator.com/item?id=9995303)

[3]: [https://news.ycombinator.com/item?id=7814005](https://news.ycombinator.com/item?id=7814005)

[4]: [https://news.ycombinator.com/item?id=9109371](https://news.ycombinator.com/item?id=9109371)

[5]: [https://news.ycombinator.com/item?id=6115114](https://news.ycombinator.com/item?id=6115114)

<comment><USER21> Regardless, a 1.6 release is still a newsworthy item.

<comment><USER22> It's at least as relevant as the "Electrn v0.0.5-rc finally released!" style posts that seem to accompany every random web framework version release.

</comment></comment></comment><comment><USER23> I'm amazed the powder is still selling well enough to warrant further development after the release of the drink form. It's it primarily an issue of the drink being too expensive for many?

<comment><USER15> I quit buying the powder earlier this year, but never considered the drink. I don't want to be tossing a bunch of empty bottles or paying to ship a liquid; it's honestly a little weird that they are prioritizing all this sustainable food stuff but want to truck a prepared liquid to me. The liquid does (or did, not sure now) cost more per kcal and comes in 400kcal bottles, so I would want 4-5 a day; they ship in 12 packs so I would be buying and shipping a lot.

I'm not sure I buy the soy-feminizes-men stuff but it was also at the back of my mind. I don't particularly enjoy other soy things so I was disappointed when they went that route.

<comment><USER24> I thought about this, but all the food you eat was trucked to a distribution center, then trucked to the store, then driven home by you. There's lots of packaging involved there too. Meanwhile a shipment of soylent goes straight to you, cutting out all those middlemen.

I'd be interested to see if someone has done the analysis to see if 2000kcal of soylent uses less resources to ship than the same amount of calories from a grocery store.

<comment><USER25> It may use less than legacy solid foods, but it's significantly less efficient than powder in bags. With that said, bottled Soylent is much more convenient. I'm hopeful that they will improve the powder packaging and composition to make preparation easier.

</comment></comment></comment></comment><comment><USER26> Nice piece on Soylent

Soylent: How I Ate No Food For 30 Days

[http://motherboard.vice.com/read/soylent-how-i-stopped- eatin...](http://motherboard.vice.com/read/soylent-how-i-stopped-eating- for-30-days)

</comment><comment><USER27> I will comment on Soylent as a product, not the 1.6 update specifically, sorry, just want to make a few points (I think some of you are in for a tough ride, just passionate, not my intention to attack anyone personally):

-) psychological value: eating has a great psychological value, it's pleasure (if not, you should eat better food)

-) social value: you probably won't go out with friends to have a glass of Soylent, would you?

-) Arguments about "increased productivity" because of less food preparation are ridiculous... if you can work all day long without needing a break, congratulations, you are everything common sense and science tells me is not possible. We need breaks, regularly, and why not use that to cook something. And cooking doesn't take hours a day.

-) Health: Because the supplement industry is such a thoroughly regulated and well behaving industry? If you believe that, do your research. I want to know what I am eating, and I don't when buying this mix of various powders they most likely buy in themselves. Would you give this crap to your children? Do you think we already have unlocked the key towards the perfect nutrition? (spoiler: no, we haven't, studying this is hard)

-) You can't cook: It's not hard, have you ever really tried? You don't need a Michelin star to cook solid and good food.

-) Unhappy with your current diet? Then change it, why ditch food altogether?

-) Cost, so it's not about productivity or health now, but about saving a few bucks? I doubt you save much if anything at all, it's not that expensive to buy good food, and isn't this mainly marketed towards high income people to begin with? You can afford it.

-) Soylent is revolutionary: It's not, 100% food replacements have been used in medicine for decades (just no one was crazy enough to ditch real food for it if not needed) - you can even buy it, it's far more expensive though than this, and of course I am still not for it as a food replacement for healthy adults.

-) Trust your body: Every body is different, the reason we have cravings for food is because the body tells us what it needs. This can fail us, for example when we eat too much sugar and our blood sugar levels are creating massive cravings for more down the line (I am not making a case for Coca-Cola here though), but all in all, it's an incredibly accurate and needed thermostat. If you eat more, you will ditch your blanket at night subconsciously to burn more calories by cooling down, if you eat less you will feel more cold and not do so. It's downright arrogant to think that some individual having read some studies and reports knows what is absolutely best (besides commonplace arguments like "sugar is bad", "being overweight is incredibly unhealthy", no proper doctor would ever make such bold and arrogant claims)

My opinion: This is part of a not well regulated industry, a repackaged and cleverly marketed mix of food supplements that have been available for decades, sold with incredibly high profit margins. They buy in their stuff, they mix it, prep it up with some nice fancy talk, sell it, and see dollar signs in their eyes.

Everyone should be able to do whatever he wants to as long as he is not harming others. If you think Soylent is great, then by all means, I won't stop you, I am passionate about food and am disgusted just looking at this. If someone thinks this is healthy (spare me your cherry-picked study citations), then - with all due respect - you are delusional

<comment><USER28> Every time I see a comment like this, I'm amazed at the commenters inability to _not_ take everything to the extreme. YOU CAN EAT SOYLENT AND STILL EAT FOOD. If you don't have much time on your hands, and you want a quick meal, it works really well and is better than, say, McDonalds.

1) Eating isn't pleasure for me 2 to 3 times a day. I eat lunch because I'm hungry. I'll go out and eat a nice meal once or twice a week. You can drink Soylent and still eat food. Everyone is different.

2) You can drink Soylent and still eat food. And I only eat socially a couple times a week anyways.

3) Cooking takes time to prepare, time to fetch ingredients, and time to cleanup. This is a non-negligible amount of time. I'd rather spend 10 minutes total on a meal than 30+ mins.

4) Do you know if everything that goes into every processed food you eat? Do you have verification?

5) You can eat Soylent and still eat food.

6) This clearly isn't about cost.

7) Soylent is evolutionary in the sense that it's one of the first food replacement marketed to consumers that doesn't have a load of sugar in it.

8) Doesn't every company have dollar signs in their eyes? How is that a fault? They're providing a product that people want at a price point people are willing to pay. There isn't much to complain about there.

<comment><USER27> I am going by how they market it, not by how you use it. If company makes market claim "x", which is ridiculous and I criticize that claim, someone then saying that he personally hasn't bought it because of claim "x" does not make my point invalid at all.

1) We differ there, I can well get all of my calories from normal food without being annoyed by eating.

2) But it's marketed as complete food replacement, not as a simple nutritional supplement. Though I don't fancy the supplement industry either.

3) I think it's stupid to consider this time as waste instead of time well spent.

I had rice with fresh salmon today: Wash rice, put it in the rice cooker with 1 1/2 parts of water and some salt - wait 15 minutes (you can do whatever you want there) - use a non-stick pan, some olive oil, fry the salmon, use some spices, in between you can start cleaning up whatever kitchen equipment you have used - 5 minutes later rice is cooked, salmon finished, arrange it on a plate, some soy sauce and Wasabi on the side. Total time of work maybe... 8 minutes? Total time to clean up... 2? Total time to eat (quick eater)... 5?! And that's a pretty decent dish I think, I have my go to foods too, when I really can't be bothered. I can easily have a banana, an apple, eat some peanuts (100 grams have 620 calories, important and healthy fats, 25 grams of protein), can make some hard boiled eggs (can make them in the morning, eat them during the day), I can just take some bread, butter, tomatoes, and salt, sit in front of the computer watching something and eat during that. Takes no time really, and in the end you don't have much to clean. Food allows for creativity, be creative.

Have we all forgotten how to deal with real food?!

I hate to go to the store to buy, what I can I buy in bulk, sometimes I buy things frozen (it's often incredibly healthy food, when immediately frozen the nutritional value is great) and when I really can't avoid making an effort, it's not a waste considering what I get out of it.

4) Standards for food production are higher, I can touch it, I can see it, I can ask where it's from. Not sure where you have been buying your food. A banana I eat is not the product of a badly regulated industry, where hobbyists create mixtures of their liking.

5) It's the same point you made with 2)

6) It's an argument I have encountered multiple times, and it's also something I remember from the early days of Soylent. "It only costs x dollars a day and is all you need" (see my intro)

7) You mean "revolutionary"? It's not revolutionary by any means, if you mean it's revolutionary because it has taken something previously not used as mainstream food and marketed it as such, then yes maybe. I don't think that's a great achievement.

8) You are only addressing part of my ending here, talking about the high profit margins and that I think they are acting in bad faith was part of the larger point, that what they are doing is fundamentally easy and a lot of it is simply improvised, they don't really know themselves, but they claim to know. They buy it in, they mix it, dress it up, and market it. Anyone can do it, I can't however raise cattle, grow tasty bananas, peanuts, and catch delicious fish every day. So talking about profit margins, I think their profit margins are quite higher than people realize, their expertise is lower than what people think, their claims are 100% marketing, what they do is easier than people give them credit for.

<comment><USER29> >Have we all forgotten how to deal with real food?!

Apparently, yes.

"The dream of all these companies is to capture the all-powerful and elusive millennial eater, who just isn't all that into cereal for breakfast. It's just too much work, for one thing. Almost 40 percent of the millennials surveyed by Mintel for its 2015 report said cereal was an inconvenient breakfast choice because they had to clean up after eating it."

[http://www.nytimes.com/2016/02/24/dining/breakfast- cereal.ht...](http://www.nytimes.com/2016/02/24/dining/breakfast-cereal.html)

The Washington Post also has an analysis of the trend:

[https://www.washingtonpost.com/news/wonk/wp/2016/02/23/this-...](https://www.washingtonpost.com/news/wonk/wp/2016/02/23/this- is-the-height-of-laziness/)

<comment><USER30> Wow... and I thought cereal was the _lazy_ option.

<comment><USER31> Soylent powder isn't that clean anyway. It's much easier to wash a bowl than to clean your counter and scoop after making a Soylent meal.

<comment><USER32> But what's left on your rag after you do so becomes a free meal!

</comment></comment></comment></comment></comment></comment></comment><comment><USER33> Now if they would ship internationally... I'd love to order 6 months supply of 2.0

</comment><comment><USER34> I've stopped drinking Soylent since I found out that it contains more than the recommended amount of soy in a single meal.

Excess soy has been found to "feminize" men [1]. It also "may cause some reversible sexual disruption in men".

Researchers decided the safe amount of soy (isoflavones) in a single day is 75mg [2]. If you drink Soylent as one of three meals in a day, Soylent contains about 87mg (52mg * 5 bottles / 3 meals a day) [3].

[1] [http://blog.zocdoc.com/does-soy-feminize-men-fact-vs- myth/](http://blog.zocdoc.com/does-soy-feminize-men-fact-vs-myth/) [2] [https://www.fsc.go.jp/english/evaluationreports/newfoods_sph...](https://www.fsc.go.jp/english/evaluationreports/newfoods_sphealth/soy_isoflavones.pdf) [3] [https://faq.soylent.com/hc/en-us/articles/205682935-Soy- Prot...](https://faq.soylent.com/hc/en-us/articles/205682935-Soy-Protein)

<comment><USER35> I've seen tons and tons of people pointing out that soy contains phytoestrogens but I've never seen a single study that showed that it had any significant effect on an adult male. I have seen studies that have shown no statistical difference between a diet high in phytoestrogens and a normal diet. Here's the abstract of an examination of 9 different clinical studies on the topic: [http://www.fertstert.org/article/S0015-0282(10)00368-7/abstr...](http://www.fertstert.org/article/S0015-0282\(10\)00368-7/abstract) . Also, I'd like to point out that your first reference even states that a diet heavy in soy is unlikely to have any harmful effects. It also only provided two anecdotes of men with a hormonal problem and in both of those cases the cause was never determined.

I'd need to see some pretty strong proof before I am convinced that the amount of soy in Soylent is anything to be concerned about.

<comment><USER36> Soy can "feminize" in some men. It probably requires some kind of predisposition, but it's not a conspiracy theory.

There are several case reports out there now. I remember reading about an Australian guy who was otherwise healthy, with no prior hormonal issues.

For what it's worth, it also happened to me. When I was 20 or 21, I developed a taste for soy burgers & started eating them every day.

I quickly developed breast tissue under both nipples. When I realized what was happening, I cut out the soy & most of the tissue atrophied.

Same thing happened to my brother years later, from protein powder. I tried to warn him but he didn't believe me.

It's a thing, it happens.

</comment></comment></comment><comment><USER37> Synthetic food ad copy: _" In addition to sensory and macronutrient improvements, Soylent 1.6 is the first powder iteration to use whole algal flour and high oleic algal oil - innovative ingredients that are yet another step toward sustainable food production. We have also introduced soy protein isolate as the primary protein source, replacing the rice protein. Its benefits include a superior ratio of amino acids for nutrition and smooth digestion. Soy protein is isolated from other components of the whole soy plant and offers an exceptional level of purity from inorganic compounds compared to the rice protein._"

Synthetic motor oil ad copy: _" Synthetic oil is not only refined but also distilled, purified and broken down into its basic molecules. This process not only removes more impurities from the crude oil but also enables individual molecules in the oil to be tailored to the demands of modern engines. These customized molecules provide higher levels of protection and performance than conventional oils. But the synthetic base oil is only half the story. The correct blend additives must go into the mix to create the oil. Base oil makes up nearly 80% of a motor oil formulation, and additives make up the remaining nearly 20%. The chemically engineered molecules in synthetic base oil have more uniform properties, while the molecules found in conventional base oil differ in shape and levels of impurity."_

<comment><USER23> So what?

<comment><USER38> Both read similar and are pretty much complete bullshit.

<comment><USER39> How is synthetic oil bull? It is literally the process that prevents oils from degrading, and results in cars that use far less oil over their lifetime due to a tripling of change time and mileage limits.</comment></comment></comment></comment>


Ask HN: How to stay 'stealth', but get enough user/market feedback? - <AUTHOR> <comment><USER2> To me, unless you are reasonably well known, with significant available funds or investor backing then staying stealth is the same as just never starting. Stealth = death for a little or unknown team or founder.

That isn't saying you aren't capable or your idea isn't good, but go with the numbers and don't try to be stealth.

From personal experience, it is generally hard to get people to listen to you about your startup initially. So what you learn is generally you are doing it right when you talk to every person that will give you 30 seconds. That is how you revise your pitch, revise your positioning etc. If you aren't saying it enough then you will fail.

Worse yet, the failure of a "stealth" startup is usually slow because you get focused on product first, client second which is not usually how you will make a software startup successful. You also won't have gotten enough feedback to keep you from spending money in the wrong places, and you won't have enough traction to really convince people you are doing something worth paying attention to.

The couple startups I can think of that were stealth and are doing good now both had reasonably well known founders, significant monetary resources and in at least 1 case had already landed large enterprise clients they were working with before they even started writing code. So they were stealth only in that they were not making announcements or doing the common startup marketing things we all have come to expect. But they weren't stealth in that people knew basically what problems they were trying to solve, and knew they already had clients.

An advisor told me once not to worry about the guy trying to steal your idea, just keep inventing and working harder as someone will always "borrow" your idea or come out with a competing product etc. And competition in the end is good for you if you keep executing. Executing well solves almost all problems.

<comment><AUTHOR> Thanks a lot for your long answer. Really good points!

</comment></comment><comment><USER3> I am _nobody_ but I have had to actively lower my profile. Historically, I tended to attract a lot of attention in a way that goes bad places. I have worked hard to figure out how to get more attention on my work and off of _me_ per se. So, some lessons learned:

You can _stay stealth_ while getting early users by doing one or more the following:

1) Brainstorm a list of ways to frame the concept. Find one that is low key, boring as hell and sounds anything but _revolutionary_. Just indicate "We slightly tweak (totally ordinary thing)."

2) Use a social medium to reach out to people who seem like they might be interested. Offer them a private invitation in exchange for feedback.

3) Get initial feedback from friends/family/some other limited social circle where you feel comfortable talking to them and you feel they might have some clue what they are talking about.

4) Be as public as you want without actively promoting it, but be careful to not give away the secret sauce part of the idea.

</comment><comment><USER4> Without a product/market fit or a brand, there's really no super reason to stay stealth unless it's top secret tech, in which case, check out some patents. If your idea is easy to copy, it will be copied when you launch. If you're worth copying, that means there could be a business to build.

</comment><comment><USER5> You surely have a plan from having studied competitors and their weaknesses. You also have a domain-specific network to target after you go public or soon before to start with traction. Finally, a tailored landing page / media pack for the buzz and the early birds.

</comment><comment><USER6> Nobody is going to steal your idea. If there is actual risk of this then use patents and copyright to the best of your ability.

Your startup is likely to fail if you are not shouting it from the rooftops. Only established brands are able to pull off stealth effectively.

</comment><comment><USER7> Why do you need to stay stealth?</comment>


How Graphicly is paving the way for self-published digital comic books - <AUTHOR> http://venturebeat.com/2012/01/25/graphicly-digital-comics-self-publishing/ <comment><USER2> Why not just do things in webcomic format?</comment>


Ask HN: Show your own blog/vlog - <AUTHOR> Title. Share your personal cyberspace and what you're writing/vlogging about. <comment><USER2> [https://kubedex.com/](https://kubedex.com/) \- I write about playing with Kubernetes

When I was young, before my first IT job, I used to love playing with Xen, distcc and watching my desktop pc scroll compiler output for days rebuilding my X-Windows. I fell in love with the idea of Beowulf clusters and Gestalt computing.

Kubernetes combines a lot of all of that stuff so I'm very lucky to both work and spend my free time on what would be a hobby anyway.

<comment><USER3> what are your father's and mother's professions?

</comment></comment><comment><USER4> [https://www.youtube.com/channel/UCEJxHRVVF3bLrv6XANtcPbQ](https://www.youtube.com/channel/UCEJxHRVVF3bLrv6XANtcPbQ)

Started a vlog to show my journey as a developer and freelancer. The videos are about developing, starting and maintaining your own company, meetup & conference reports and improving productivity.

It's still in its infancy so feedback is always appreciated!

</comment><comment><USER5> I'm writing about engineering compensation, management, and leadership here: [https://blindchief.com/how-much-do-engineering-managers- make...](https://blindchief.com/how-much-do-engineering-managers-make/)

Much of the content is going to be geared towards folks who may be moving from an IC position into management.

It's a difficult transition that's taken me years to navigate -- hoping I can save others some time (and pain!)

</comment><comment><USER6> I've tried to abstract my "blog" into a personal aggregator that provides a central place to see (and caches) the activity I want to share with other people.

[http://www.techdragon.io](http://www.techdragon.io)

I'm working on a pretty major overhaul for the next version and I'm considering making it into a SaaS product since there seems to be no equivalent options that don't require you self hosting someone's open source product (with the associated maintenance that this will incur) that may or may not continue being updated to support new services (which was what motivates my work on the next version)

<comment><AUTHOR> Your link doesn't seem to work, try this [http://techdragon.io](http://techdragon.io)

</comment></comment><comment><USER7> I wrote one blog post that became a top post here on HN (2nd top post with over 500 points and 100 comments) [1].

My blog can be found here [2] ... I write about ... all kinds of stuff but mainly technology, data science, and stuff ... I'd like to write more about management and leadership but I feel like I lack the credibility to talk about it.

[1] [https://www.janmeppe.com/blog/regex-for- noobs/](https://www.janmeppe.com/blog/regex-for-noobs/)

[2] [https://www.janmeppe.com](https://www.janmeppe.com)

</comment><comment><USER8> Super extensive guides about my travels. Only 2 posts, but each took multiple weeks to write.

[https://guides.shinzu.com/guides/](https://guides.shinzu.com/guides/)

<comment><USER9> Oaxaca link appears to be broken...it links to the Taiwan post.

Great write-ups, btw.

<comment><USER8> fixed! ty!

</comment></comment></comment><comment><USER10> The Web's Grain [https://websgrain.com/](https://websgrain.com/)

A blog about tech products I started to write everyday.

Meagher.co [https://github.com/tmm/tmm.github.io/tree/e1a673aab9fdcaa488...](https://github.com/tmm/tmm.github.io/tree/e1a673aab9fdcaa4889195db4dc1de59de123b82/blog/_posts)

My personal website blog with 41 medium-sized posts about design, data, code, philosophy, etc.

Edit: Both of these are currently lapsed.

</comment><comment><USER11> [https://andrewpillar.com](https://andrewpillar.com)

Blog a little about some of the programming I do in my free time. Most recent post I wrote was about using first class functions for idiomatic query building in Go [1].

[1] - [https://andrewpillar.com/programming/2019/07/13/orms-and- que...](https://andrewpillar.com/programming/2019/07/13/orms-and-query- building-in-go/)

</comment><comment><USER12> [https://www.developingdapper.com/](https://www.developingdapper.com/)

I found it difficult to learn how to dress properly when starting with zero knowledge on the subject, and every article and website I could find on the subject was always a "How to be the best dressed person in the room". I started this blog to help people take the first steps in dressing properly.

</comment><comment><USER13> [https://lukaszkups.net](https://lukaszkups.net) -> [https://lukaszkups.net/notes/](https://lukaszkups.net/notes/)

I write about tech / geeky lifestyle / programming (JavaScript/Vue.js/Front- end focused).

</comment><comment><USER14> Blog: [https://philipkiely.com/essays](https://philipkiely.com/essays) \- I write about my experiences in software development.

Vlog: [http://youtube.kiely.xyz](http://youtube.kiely.xyz) \- A series from my studies abroad in Budapest

</comment><comment><USER15> [https://edmundojr.com](https://edmundojr.com)

I write about design and code and the intersection between the two (or at least I try to).

The most difficult thing for me is maintaining the blog updated with new content, as every time I write a post I usually feel the need to redesign the whole thing altogether

</comment><comment><USER16> Sysadminy stuff such as my "the network ate my font!" story, [http://verticalsysadmin.com/blog/sysadmin-war-story-the- netw...](http://verticalsysadmin.com/blog/sysadmin-war-story-the-network-ate- my-font/)

</comment><comment><USER17> Still need to turn this into a proper blog but you can find me at [https://dev.to/carlmungazi](https://dev.to/carlmungazi) writing about my journey rebuilding different parts of the frontend stack (think framework, testing library, build tool etc).

</comment><comment><USER18> [https://amehta.github.io/posts/](https://amehta.github.io/posts/) Experimentation in tech/programming!

Also, plan to soon start photoblogging about my travels.

<comment><USER18> [https://themountaintravelers.netlify.com/](https://themountaintravelers.netlify.com/)

</comment></comment><comment><USER19> Still quite unfinished, but my site [https://lightmeta.com](https://lightmeta.com) has a couple of posts that might interest HN readers, in the Blog section and the Perspectives section.

</comment><comment><USER20> [https://mitchum.blog/](https://mitchum.blog/) I write mostly about programming, but also about whatever I happen to be interested in at the moment.

</comment><comment><USER21> [https://terranostra.one](https://terranostra.one)

My background is ecological modelling, so my blog is a merry mix of ecology, programming, and reviews of books I read.

</comment><comment><USER22> [https://cavalier.dev](https://cavalier.dev) It is a site that I can just toss anything onto. It is really new, and doesn't have much content but it is mine.

</comment><comment><USER23> [https://codeureka.blogspot.com/](https://codeureka.blogspot.com/) mostly python related stuff and other stuff with which i'm tinkering.

</comment><comment><USER24> [https://andre.cool](https://andre.cool)

I'm trying to write about the Shitshow Sidekick that I'm working on (there's a post that describes what it is.)

</comment><comment><USER25> [https://tysonmaly.com](https://tysonmaly.com) I write about engineering management, programming, and other random topics.

</comment><comment><USER26> I write about SAP and sometimes software in general. [https://allbyd.com/blog/](https://allbyd.com/blog/)

</comment><comment><USER27> Here's mine I write about python and general technology [https://muhammadraza.me/](https://muhammadraza.me/)

</comment><comment><USER28> [https://101node.io](https://101node.io)

I write about server side web development using Node, Express, Javascript, mongodb

</comment><comment><USER29> [https://marcell.me](https://marcell.me)

I write about design and programming mostly iOS, C/C++, and Ruby.

</comment><comment><USER30> [https://ruairidh.dev](https://ruairidh.dev) \- general coding and my first image recognition project.

</comment><comment><USER31> [http://milapneupane.com.np](http://milapneupane.com.np) Blogs on AWS, programming, Golang, NodeJS

</comment><comment><USER32> [https://memogarcia.mx](https://memogarcia.mx) I write about very random stuff and technology

</comment><comment><USER33> [https://www.alleaktien.de](https://www.alleaktien.de)

</comment><comment><USER34> [https://dav.today](https://dav.today)

Just a collection of random things or experiences I come across.

</comment><comment><USER35> Here's mine: [https://barrowclift.me](https://barrowclift.me)

Hosted with Github Pages and Jekyll.

</comment><comment><USER36> [http://liza.io](http://liza.io)

I mostly write about snails, but sometimes general life things too.

</comment><comment><USER37> [https://alchemist.camp](https://alchemist.camp)

Learn Elixir and Phoenix by _building_ things.

</comment><comment><USER38> I write about pricing strategy. [https://taprun.com](https://taprun.com)

</comment><comment><USER39> [https://susam.in/](https://susam.in/)

On technology, mathematics, etc.

</comment><comment><USER40> [https://epiphany.pub](https://epiphany.pub)

My tech blog on different topics

</comment><comment><USER41> Https://www.minvolai.com

I blog on what I learn so I something for reference

</comment><comment><USER42> about CS and stuff: [https://dogan-ucar.de](https://dogan-ucar.de)</comment>


82% of vehicles sold this year came with a touch screen - <AUTHOR> https://www.marketwatch.com/story/teslas-infotainment-dashboard-screen-tops-consumer-reports-ratings-2019-05-01 <comment><USER2> I hate this trend.

My ideal car:

\- buttons and dials I can feel with my hands without looking for climate/volume/etc. controls

\- Car has a well documented API that can be used to control all non-safety critical features of the car (climate, media, etc.) as well as get lots of read only stats (current speed, current gas levels, current GPS location, etc.)

\- mount on the center console where I can put my own touchscreen device if I so choose (iPad, Android, phone, etc)

\- Car has an official app that can talk to said API over bluetooth or whatever for iOS/Android.

\- Or I can write my own apps or programs, etc. that talk to the API.

Maybe I want to listen to audiobooks on Tuesdays and my own app would know to push that to the speakers as soon as I start the car on Tuesdays

Or maybe I want a raspberry pi in the trunk to log my car's current location and speed once per second because it's my teenager.

Just stop forcing crappy touchscreens attached to crappy laggy computers into my car! I want to choose my own computer and I want to be able to replace it if it breaks without taking apart my whole car and paying someone $1000 in labor. A stock iPad is 10x more responsive than the crappy touchscreen in the Model S; just let me mount my iPad

<comment><USER3> I'm genuinely on board with most of this, but it reads like satire.

On topic, it is wild how dated even brand new car consoles feel. Luxury brands do a bit better, but it's still worse than my phone. Where do I sign up to overhaul vehicle UX?

<comment><USER4> Bmw has the best in business, they left climate, track, volume controls as separate physical buttons and their console is incredibly quick to respond and feels fluid like a phone. New Audi's really made a bad decision to use two screens without physical buttons, both of the screens are little laggy too.

<comment><USER5> BMW uses the Qt GUI framework in its center console AFAIK. Ford Sync 3 does, too. Those are some of the better and more responsive car GUIs. Disclaimer: I offer Qt services. And... I actually prefer cars without any screens for my own use.

<comment><USER4> Screens are important in cars, for backup camera, bird view camera (incredibly useful), for everything else I use the head up display, I still don't understand how more companies don't adopt it, I can't drive without it anymore, incredibly useful and does not take eyes off the road

</comment></comment></comment></comment></comment><comment><USER6> At CHI conference about a decade ago I spoke with some of the lead HCI researchers at Mitsubishi (which has long contributed to human factors research). During Q/A they said the single best thing you could do to improve safety was to NOT buy a car with a touchscreen interface. Lack of tactile feedback is a major problem.

We all were quick to point out that they were selling cars with touchscreens. The HCI researchers said yes the company did, but their point still stood.

You want to be able to do things like adjust heat and defrost without looking (just with hands).

<comment><USER7> How do you feel about using voice commands?

<comment><USER6> I'd be interested to see human factors research to see if it helps. Still, if you've got kids in the back seat who are asleep and there's background road noise from a highway, you don't want to yell "Carbot, turn down the A/C". Turning a knob isn't that hard.

<comment><USER8> As a new parent this is something I hadn't considered. I use Siri quite a bit in our car with CarPlay and haven't noticed if it bothers our child but I'll be more aware now. Thanks!

</comment></comment></comment></comment><comment><USER9> Touch screens are without a doubt more dangerous. You are forced to take your eye off of the road to navigate the screen menus.

There is nothing I prefer more in a car than the classic 3 physical knob layout for heat/cold, vent/selector and music.

I feel every car should start with that, and maybe add a touchscreen only for deeper interactions, usually needed when the vehicle is not in motion.

<comment><USER10> Hard buttons pretty much a hard requirement for me on a car. Thankfully they still exist and will probably continue to exist. The trend towards touchscreen everything is already starting to reverse.

</comment></comment><comment><USER11> All new vehicles sold in the US after May 2018 were required to have a backup camera.

[https://www.iihs.org/iihs/sr/statusreport/article/49/4/4](https://www.iihs.org/iihs/sr/statusreport/article/49/4/4)

If the automakers have to install a video display, it's not much of a leap to turn it into an infotainment system.

<comment><USER12> The backup camera in my 2010 Tacoma is embedded in to the backup mirror. The usability is nearly perfect because it's right next to where you were looking already and is tremendously useful.

<comment><USER13> I recently rented a u-haul that had this and couldn't believe all cars don't do this. It is very useful having the camera and the mirror viewable at the same exact time.

</comment></comment></comment><comment> pi-rat Most of them are still so slow, unresponsive and laggy that they break any illusion of "touch" when interacting with the UI.

The iPad is almost 10 years old now.. come on..

<comment><USER14> Car tech is _insanely_ bad; I don't understand why, but it boggles my mind.

<comment><USER15> Armchair Electrical Engineer here:

The parts used in cars need to handle a lot of vibration and heat and last 10+ years.

The tech lags behind consumer electronics because consumer electronics don't need to work in these difficult environments.

<comment><USER16> On the other hand size, weight, power consumption, and heat dissipation are all vastly less important. Vibration is also generally easier to deal with than shock as these things don't need to survive the 10' drop tests.

Car electronic systems suck because they are not a major selling point.

<comment><USER17> Automotive electronics tend to have an operating design range from -20 to 120C ambient. Not that they see this kind of ambient temp but usually they have to be AEC-Q:100 qualified. Think about solar loading. Touchscreen (VHB tape, backlite, etc) all have to withstand intense temperature swings and last longer than a typical consumer electronic. If you look at the some of the Automotive testing, its pretty intense (High temperature Operation endurance testing and Thermal shock testing) in comparison to commercial grade testing.

Usually car manufacturers have to spend significant amount of Reliability testing before the launch the product to avoid recalls. Tesla missed some of the typical automotive testing and the early Tesla vehicles had a bluish Mura after a year and some the adhesive layers on the TFT panel started seeing issues and they had to replace the screens on a rather large number of cars

<comment><USER18> But like another commenter said, that still doesn't explain crappy software.

<comment><USER19> It's very hard to do software when the hardware has the priority.

You spend a lot of time fighting with its quirks and drivers.

<comment><USER17> Yes, Crappy automotive SW is solely because most if not all infotainment SW is written by third party vendors. GM/Ford/FCA have engineers who are good at drafting Requirements and throw these said requirements over the wall to vendors like panasonic, bosch, Lear etc. They write 100 page documents on how the system needs to behave and these OEM vendors need to deliver these infotainment black boxes without any significant issues. (You can imagine why, if the infotainment board (Say intel or Qualcomm FW) has a bug that was found in production; they would need to update over USB or some other form debug method and reflash on the side of the production line and this cost hundreds of millions).

Again tesla has done a great job and implemented OTA and some of the automotive companies are following suit but this still does not help them much as the updates are given by the vendors whose sole job is to cover themselves (So most updates will go through a year of testing even for minor changes to make sure not to brick anything)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER20> Before buying my car I test drove a Mercedes that had what I assumed was a touchscreen. Upon trying to tap it the person working at the dealership said none of their cars have touchscreens because they don't make sense to operate when driving, and instead had a easily reached dial in the center console that controlled everything on the screen. Seems to be the case with any other German car I've been in.

Takes some getting used to compared to just old fashioned knobs & buttons, but far and above better than all the cars we test drove with touchscreens.

<comment><USER21> It's the worst of both worlds. Rather than having dedicated dials for each function, or a touchscreen, you have a single dial and loads of menus to work through. Want to change the radio station first you have to make sure you are in the radio display context and then scroll through the stations until you find your desired station. Meanwhile, you're constantly taking your eyes off the road to work this dumb wheel.

<comment><USER22> I've had cars with either, and I'm kind of ambivalent on BMW iDrive vs Honda touchscreen, but my main complaint with everything I've driven is the way Bluetooth will not connect reliably. Sometimes you have to restart your car or your phone to get it back, and once that didn't work and only unpairing it and repairing it worked. This is really, really, basic and I sometimes feel like screaming because when I was younger, whatever the flaws of a radio or CD player, at least they consistently worked every time you switched them on.

<comment><USER21> I've heard Ed Sheeran's A-Team every time I start the car because the Bluetooth receiver thinks it has to play something and it's going to start at song 1 of my library.

</comment></comment></comment></comment><comment><USER23> Friend of mine just got a new Volvo, that touch screen was such a UI/UX disaster it was just shocking. The number of touches it took to do anything was ridiculous. He was trying to figure out how to do something super basic, like it should've just had a dial on the dash basic, and it took minutes to find. I don't know if others are better, but that thing made me want to never buy a new car.

<comment><USER24> XC90? I'd say they have a pretty great touchscreen interface.. My favorite right now is from JLR (Jaguar Land Rover) with physical dials embedded into a screen - that can context change. [1]

1\. [https://i.ytimg.com/vi/Wj857_eHVHE/maxresdefault.jpg](https://i.ytimg.com/vi/Wj857_eHVHE/maxresdefault.jpg)

<comment><USER25> Don't forget the OLED buttons on the steering wheel that also change context.

Land Rover is so far ahead in UX it's unbelievable.

[https://www.youtube.com/watch?v=S6YYun90S8g&feature=youtu.be...](https://www.youtube.com/watch?v=S6YYun90S8g&feature=youtu.be&t=6m22s)

<comment><USER24> Wow - that is WILD!

</comment></comment></comment></comment><comment><USER26> It's hard to keep your eye on the road and use a touch screen interface. There's no tactile feedback.

<comment><USER27> You can have both a touch-screen AND tactile feedback. Ex: have a volume nub AND a touch-screen.

The touch-screen is almost a necessity with Apple Play and Android Auto. If you want to interact with your cell-phone apps with your car system, you better have a touch screen.

But please don't get rid of my AC buttons or fan setting knob.

<comment><USER28> "make the system as simple as possible, but no simpler"

I think designers get into a mindset, and then keep going (too far)

</comment></comment></comment><comment><USER29> Horrible, like stoves with touch interfaces that can't handle water.

<comment><USER30> Any interest in a voice controlled stove? Just an idea I've been kicking around...

<comment><USER31> No thanks. I want my stove to last 10+ years. Replacing a single knob is a lot simpler to repair, and less likely to fail than the microphone, speaker, logicboard etc. in a voice stove.

<comment><USER32> FWIW my GE electric stove/oven was installed when my house was built in 1967 (52 years ago). Everything works perfectly except for one front burner, which went bad about 2005. Oven is perfectly calibrated. I bought the house (and stove) in 1983 and have never required a service visit. When I mentioned to an appliance tech who was installing a new Maytag washer/dryer that I was thinking of getting a more modern stove, he said, "Don't."

</comment></comment></comment></comment><comment><USER33> This used to be hilarious, but living it is about as much fun as predicted:

[https://www.youtube.com/watch?v=9BnLbv6QYcA](https://www.youtube.com/watch?v=9BnLbv6QYcA)

</comment><comment><USER34> I'll happily stick to using my phone mounted to the dash, a 3.5mm input, and a set of bluetooth controls mounted to the driver's side door.

</comment><comment> m-p-3 Not a fan. Sure, a touch screen makes it easy to have an interface you can change on-the-fly all through software, but it requires eye-hand coordination which forces you to stop watching in front of you. How is this any better than trying to type on a cellphone while driving? I prefer proper dials and buttons in such a situation, which I can easily use without looking at them.

</comment><comment><USER35> I've had a touch-screen in my system since 2005 (Prius). I prefer to the nest of buttons that is my 2012 Sienna.

I don't mind if temp controls are dials/buttons.

Nowadays a strong feature point is a decent implementation of CarPlay/AndroidAuto in the vehicle. That requires a touchscreen.

<comment><USER36> BMW does a good integration of CarPlay without a touchscreen. Select by turning the control knob, push down to click.

<comment><USER35> How do they do maps integration? I assume they have a display somewhere...

<comment><USER36> It has a screen on the dash, but it has no touch capability so you interact with it solely through the wheel in the center console.

</comment></comment></comment></comment><comment><USER37> What are people using the screen for? I do maps and Spotify, all of which is controlled through the phone, voice, or steering wheel control. None of it requires interaction while driving aside from thumb flicks

Having a screen is much better than a separate phone or gps unit showing maps.

</comment><comment><USER38> How well do these work if I have wet hands? Like, if it's rainy or snowy and i get in the car, will I be able to control the temperature? Turn on the defroster? Every smart phone I've owned would be anywhere betw 0% and 50% chance of it working.

</comment><comment><USER39> My 12 year old car (perhaps obviously) doesn't have a touch screen, and every time I drive a card that does have on, I find it to be either a complete distraction and/or a UI failure. Cars don't need to be gadgetized.

</comment><comment><USER40> I'd guess most of the interfaces we see in 2019 are roughly 2009 designs and implementations. I think it's changing, but many of the manufacturers started out by putting software in the same test/certify cycle as the hardware.

</comment><comment><USER41> I find Jeep's Uconnect OS and Console to be pretty good but nowhere close to say iPad in 2015.

I hoped Car play and Android Auto would be better but they suck too and have many bugs that make them unusable.

</comment><comment><USER42> One big reason I looked at (and bought) my current car is that it's got a sea of button and dials. I can't stand touch screens in cars, they are hard to use while driving.

</comment><comment><USER43> Regarding safety issues, many cars also come with an array of collision avoidance and other safety features that could potentially mitigate some of the risk of touch screens.

<comment><USER44> I love how that sort of argument keeps coming up.

We are going to take UI that works.

We will instead make the UI that doesn't work. It'll be more expensive, more prone to failure, and it'll come with safety compromises.

To address those compromises, we will install more software that's more expensive and more prone to failure.

I understand I'm the minority user who just wants to drive his car safely and use buttons and dials that I can move without staring down at my knees while hurtling down the highway at 100kph while hoping that collision avoidance saves me and paying extra thousands of dollars for the privilege of poor UI. But I do wonder which planet everybody else is on...

<comment><USER43> I'm not saying it's the right thing, but it at least helps.

<comment><USER45> But it eases (does not eliminate) a problem that doesn't have to exist in the first place.

</comment></comment></comment></comment><comment><USER46> As if 40,000 deaths a year due to cars in the US isn't enough? How there not any laws about making cars more dangerous to drive?

<comment><USER47> If my car is unsafe, to me, is it not my own risk assesment to judge? Should we ban extreme sports too? As an adult, I cherish the responsibility of choice.

<comment><USER48> I don't think it should be only yours, no.

If you were primarily only putting your own life in danger, sure.

But with driving the way it is now, I do not think it's a leap to make the claim that distracted driving is a danger to not just yourself but to others on the road. It's exactly the kind of thing that the government should be regulating.

</comment></comment></comment><comment><USER45> Touch screen in vehicles are pretty bad, in my opinion. But worse is the whole "internet connected car" business.

</comment><comment><USER49> My car has a touch screen and I hate it. Aside from being crap, I cannot safely use it while driving.

</comment><comment><USER50> Soon, with self driving cars, a touchscreen will be all you will have to control the car

</comment><comment><USER51> Do cars these days also come with non-replacable non-free software or tons of tracking?

</comment><comment><USER52> That's terrifying. (Have car with touch screen. No car should have a touch screen)

</comment><comment><USER53> 82% of them were mistakes.

</comment><comment><USER54> One more reason to not buy a new car I guess. Nothing like a latency ridden touch screen that some autist designed.

</comment><comment><USER55> Are cars still a topic? Who owns a car here? I don't and i really don't plan to. Public transports, bus, subway, train, carpooling, stuff like that seems more than enough for me, here in europe (france) at least. I think we need to shift the subject here: sure current cars are bad (low reparability mostly), but to what extend do we need personal cars (at least specifically for people living in urbanized areas).

<comment><USER55> Not sure about the downvotes, care to explain? I did not expect this would be seen as out of topic.

<comment><USER56> I did not downvote you, but I imagine it's partly because of this:

> Are cars still a topic? Who owns a car here?

I think that's very self-centered to imply cars aren't worth talking about just because you don't have one.

<comment><USER22> I think it's perfectly fine to have that opinion, but if you're reading this thread, it's about cars, so it equates to "this thread shouldn't exist" which isn't very constructive.

<comment><USER55> I was simply trying to have a broader thinking, not only about how current cars are bloated with hitech but about the place of cars. I care about technology and consumer goods getting more and more opaque, littered with useless electronics (not all, abs and esp have proved themselves). But to have a complete picture one should also take into account their usage of cars, which use case they fulfill, and whether or not this could be done otherwise.

<comment><USER57> Even if people in cities weren't using cars it would still be a problem if they were designed badly, and worth discussing. Conversely, even if cars' electronics were designed well, that would mean very little to the discussion of whether they are optimal transportation in cities. In summary, your comment is in the wrong thread.

<comment><USER55> I'm not sure i completely agree with that, maybe you're right. Isn't bad design is at least partly linked to the fact that these are _personal_ (non- utility) cars, which are for a large part used in (sub)urban areas, ie usage influences the design and reciprocally. It seems to me utility cars (and other "professional vehicles") are among the less prone to this interface bloat. Actually to support your point i recently saw how this exact problem was a big issue for tractors, farmers being locked in with broken (electronic) stuff they're not allowed to/can't repair themselves.</comment></comment></comment></comment></comment></comment></comment>


Same old PATENTS file in create-react-app - <AUTHOR> https://github.com/facebookincubator/create-react-app <comment><USER2> New? It looks like nothing has changed in that file since the initial commit about a year ago?</comment>


Why closed source sucks - <AUTHOR> http://www.red-gate.com/products/dotnet-development/dotnet-demon/

<comment><USER2> All I can say is get used to it.

Sometimes even in open source support just ends; unless you know how to patch bugs/fix dependency drift then you may be SOL there too.

Only best defence is know what your project's dependencies are and mitigate for potential loss/change.

<comment><USER3> _" unless you know how to patch bugs/fix dependency drift"_

Or are willing to pay someone who does...

<comment><USER4> Whouah! You mean I COULD patch bugs, fix dependency drift or have somebody do it for me against (reasonable) payment at all? That's wonderfull!

Try to do that with Microsoft Windows or Microsoft Word!</comment></comment></comment>


Top 20 Sites like Fiverr - <AUTHOR> http://www.phillturner.com/like-fiverr#

<comment><AUTHOR> Is it just me, or do a few of these sites look like the same backend? Example, fiverr and gigbucks.</comment>


Google must extend payments across Europe for use of content - <AUTHOR> http://www.reuters.com/article/2013/02/07/us-europe-google-idUSBRE9160ZM20130207 <comment><USER2> Google deserve all the hassle and costs they get now from _everyone_ , after ceding to the French without any meaningful fight and therefore setting a precedent.</comment>


Show HN: Using ML to detect key changes to 2020 Candidates' Websites - <AUTHOR> https://deepdiveduck.com/campaignmonitor/ <comment><USER2> These look like diffs to me, which I'm okay with. Not sure where the ML will come to play, and honestly, just calling it a site that shows "updates" or "changes" to 2020 candidate sites is good enough.

<comment><AUTHOR> Thanks... the bulk of the site is made up of diffs. We score them w/ our ML model. We aren't (yet) surfacing those scores on a page by page basis. Rather, we are simply collecting the stand-out examples detected by ML in the top card as links to those specific diffs.

Our bad for not including the scores for each page... our thoughts w/ this content piece were it would be attractive to journalists who may not have an appreciation for underlying scores.

</comment></comment><comment><USER3> Very cool idea.

It's not clear where you're using ML from the site - URLs seem chronological, not ranked on "relevance/importance" and I can't see any relevance/importance indicators.

I'm curious to hear some more detail on how you're encoding your visual diff model?

BTW I ran into 2 issues: 1\. You can't zoom out on your image diff slider 2\. I got this error when I returned to the site after closing it: {"crossDomain" : true, "method" : "GET", "url" : "https : //api.fluxguard.com/publi c/site/7f646558-f754-447a -b627-9b5202c8a1f2/page?l imit=10&publicAccount=cam paignmonitor"} Please contact us if this is error is happening frequently for you.

<comment><AUTHOR> Thanks for the feedback... right now we are only using extracted text (and some DOM data) for ML. We aren't using the images for any ML work because, as you likely suspect, that's pretty hard to do in a meaningful way.

We aren't surfacing the per page scores at the moment... most of the ML work was done specifically for this content piece, so we haven't adjusted our core presentation to include it (including the flag grading system which we use to build the training model), other than simply listing stand-out examples at the top of the site.

For our customers, we likely will need to build industry/use-specific models. (Amazon is already sort of doing this by providing pharm-specific text classifiers.) Use cases are so disparate at the moment that it's hard to build a general model for everyone.

As for the cross-domain errors, grrr! Thanks, we will look into it... hard to troubleshoot those. Our API stack consists of CloudFormation -> API Gateway -> API Gateway Caching -> Lambda -> DynamoDB... ( _edit_ AKA who knows where those errors are! haha)

(And more detail on the problem you are having w/ image diff slider would be appreciated... feel free to email us directly from email at bottom of site. Not sure I understand this issue you're having.)

( _edit_ feel free to email me w/ error details at peter (at) deepdiveduck . com ... the cross-domain scripting errors are a constant thorn in our sides so we'd like to get any other info you have on 'em)

<comment><USER4> Are you sure the error is Cors error? The data says crossdomain but the error object posted doesn't seem to actually contain much info on the cause. unless crossdomain true is supposed to tell u that

<comment><AUTHOR> Yeah, I am not sure it is a CORS error, though that wouldn't surprise me. This looks to be an error from our API Gateway validation rules (which, at least for us, is notoriously difficult to get to send any more error data to the client)... that is to say, this will typically occur when one of the form or query string params is sending illegal data. I tried to repro last night w/ no luck. This sort of error isn't in the error logs (that we typically monitor)...

</comment></comment></comment></comment><comment><AUTHOR> Hi folks: So we're monitoring most major 2020 Presidential Candidates' sites for visual + HTML/DOM + network + extracted text changes. (You can see all detected changed at the above link.) There's a lot of noise! So we're using ML to identify significant changes. (You can see these findings so far at the top of the page.)

We've trained our model using detected changes from corporate sites and some earlier political sites. Each change for our model was human-rated in terms of relevance/importance, and we also feed in other descriptive attributes about each change, such as DOM location, immediate parent tag, and several other attributes.

<comment><USER5> Congrats on what you've made!

What sort of noise are you running in to? (Curious)

In an old project we actually did something a bit more based on visual changes. Basically detected visual diffs and got coordinates of offsets to the change. We then found the smallest html container that encompassed the diff and highlighted it.

Using visual diff you can fuzz things a bit to handle artifact and small movements.

A good lib we have some miles on [https://github.com/mapbox/pixelmatch](https://github.com/mapbox/pixelmatch)

And this write up on niffy is pretty good

[https://segment.com/blog/perceptual-diffing-with- niffy/](https://segment.com/blog/perceptual-diffing-with-niffy/)

<comment><AUTHOR> In terms of overall noise, we're running into a lot. (This is what led us to ML as a way to hopefully reduce it.)

Comparing the pure DOM reveals almost constant change due to various inserted Javascript from Google/Facebook/etc modifying the DOM. Looking at text/images also result in a fair amount of expected noise, but it's mostly in the form of interstitial marketing banners, fundraising targets, etc.

We already have various options to "filter" out certain DOM areas. (As an example, remove all footers, headers, or any other CSS selector.) These work really well... but they require a fair bit of setup.

Thanks for the pixelmatch GH repo link... I have it starred so must have taken a look in the past. We need to evolve our image diff, so we may end up using this!</comment></comment></comment>


Libtorrent experience - the poor state of async disk IO - <AUTHOR> http://www.rasterbar.com/libtorrent_blog/2012/10/asynchronous-disk-io/ <comment><USER2> My experience with Linux and buffered IO (ext4) from multiple threads has been very positive. The only beef I have is that you can't prevent the data you write/read from polluting the cache without resorting to madvise which isn't available from Java. I don't usually care about the contents of the page cache so it isn't a showstopper.

You can do hundreds of thousands of random reads a second from a single thread submitting tasks to a thread pool on an in memory data set. You can do tens of thousands of reads for a > memory data set with an SSD and I was able to get the advertised number of 4k IOPs out of the SSD (Crucial m4) and an Intel i5 desktop CPU.

I frequently have to multiplex data as it becomes available into a single file (to keep the IO sequential for the disk and filesystem) and I always use a thread per file and I got up to 250 megabytes/sec on a 4 disk RAID-0. I don't currently have a use case for needing more sequential write throughput than that so I haven't tried to attaching more disk and SSDs weren't as fast or common at the time.

My reading of buffered IO in Linux is that it translates to a combination of page cache interactions and async IO under the hood so we are technically always using async IO.

<comment><USER3> Yeah, I would be more interested in hearing why libtorrent feels the need to implement their own disk cache. I'm sure they can do better, but by how much?

<comment><USER4> i actually very much doubt that they can do better. writing any sort of large LRU cache in a machine with swap turned on is a bad idea because a lot of your cache will get swapped out and then swapped back in unnecessarily when you try to use that memory for something else. mlock can be used to mitigate this effect but the default mlock limit is so low that it's useless in practice. another thing to consider is that using mmap gives you a big advantage over writing your own disk cache because the OS can take advantage of the paging hardware in the processor, which you can't do from userspace.

<comment><USER5> one reason why the bittorrent layer could make better decisions on what to flush is because it always need to hash pieces that are downloaded. When blocks are downloaded out of order, it doesn't make sense to flush unhashed blocks before ones that the the hash cursor has already passed. If an unhashed block is flushed, it will have to be read back from disk again, when the piece complete, which is very expensive.

</comment></comment></comment></comment><comment><USER6> (Copy'n'paste of reddit comment:)

While it's true that the Windows API seems to be the best thought through, I was surprised to learn that the implementation may randomly fall back to synchronous IO in unpredictable ways, which (depending on the app, but likely for something that's attempting to juggle a lot of work like a bittorrent implementation) means you need a thread pool anyway.

[http://neugierig.org/software/blog/2011/12/nonblocking- disk-...](http://neugierig.org/software/blog/2011/12/nonblocking-disk-io.html)

<comment><USER7> Interesting, I've personally experienced this bug multiple times and always been surprised when it happens since Chrome is normally extremely responsive UI wise even when under load.

<comment><USER8> My experience is the opposite: When Chrome starts to hit the disk, it freezes, especially on startup.

</comment></comment></comment><comment><USER9> Another good read about increasing disk IO and reducing latency can be found at the Mechanical Symphony blog about the single writer principle: [http://mechanical-sympathy.blogspot.com/2011/09/single- write...](http://mechanical-sympathy.blogspot.com/2011/09/single-writer- principle.html)

We ran into issues where lots of threads attempting a disk write were causing latency problems. We were able to get around this by having a single dedicated thread to disk IO.

</comment><comment><USER10> I believe even NodeJS's libuv came to the same unfortunate conclusion for non windows hosts.

<https://github.com/joyent/libuv> <http://nikhilm.github.com/uvbook/filesystem.html>

<comment><USER11> When node switched to libuv it didn't degrade io performance on unix hosts; io in threads has been competitive with evented io. I don't think async io was even considered, but let me know if you dig up anything.

<comment><USER12> yep, node has always used a threadpool for filesystem calls, even before libuv.

</comment></comment></comment><comment><USER13> The problem is that we have a chicken and egg problem. Very few programs (including most enterprise databases) use AIO. Why? For portability reasons; there are other ways of doing things (i.e., using thread pools) that will allow a database developer to get all or most of the benefits of AIO, at least before the days of super fast storage. (Now that we have really fast PCIe- attached flash which is fast enough that scheduler overhead starts becoming a real problem, this may no longer be true.

As a result, there is little incentive to improve AIO (on all systems, but especially on Linux --- a lot of the Direct I/O work was done to make the enterprise database vendors happy). And since AIO isn't good enough, very few people want to use it, and since making it better is difficult, few people are interested in working to solve the problem, and the cycle repeats again.

</comment><comment><USER14> Nice write-up. I suspect the poor implementation of async I/O suggests how often it is actually used in practice. Signal handling definitely feels like the wrong design here, especially for a library author.

I'm also not surprised that Windows fared better here; with IOCP they had a chance to redo async I/O completely.

<comment><USER3> Or the disuse of async disk I/O is due to the difficulty of its proper implementation.

<comment><USER15> It's also the extremely limited use case. There's not that many I/O requests to a disk that you can do at a time while getting a performance speed-up. Having to use a thread pool ends up not being such a problem -- you don't really hurt your performance benchmarks. On the other hand, a system that talks on a network to thousands or millions of clients will benefit greatly from avoiding 4-8KB of stack overhead per connection.

<comment> throwaway54-762 4-8kB? Maybe physical memory overhead, if your code isn't too deep. But userspace thread stacks are anywhere from 128kB (FreeBSD) to 8MB (Linux) of virtual memory overhead.

<comment><USER15> Stacks can be made to be 4KB or 8KB if you want them to be.

<comment> throwaway54-762 Depends on what libc (or other) routines you call... going over the end of the stack is no fun. Lots of code seems to be written to rely on deep stacks in userspace.

</comment></comment></comment></comment></comment></comment><comment><USER16> Alan McGovern chose a compromise for MonoTorrent, using async io but processing all the results in a single thread.

The Evolution of MonoTorrent - FOSDEM 2010

[http://www.youtube.com/watch?v=TbhKpeqIy8o&t=10m10s](http://www.youtube.com/watch?v=TbhKpeqIy8o&t=10m10s)

Simplified Threading API

[http://monotorrent.blogspot.com/2008/10/monotorrent-050-good...](http://monotorrent.blogspot.com/2008/10/monotorrent-050-good- bad-and-seriously.html)

</comment><comment><USER17> the line breaks make it very difficult to read for me - here's a copy of the text: <https://gist.github.com/3960408>

</comment><comment><USER18> > The aio branch has several performance improvements apart from allowing > multiple disk operations outstanding at any given time. For instance:

This sounds like a bad idea. If the improvements aren't tied to asynch, why weigh them down with the async albatross instead of merging them to the mainline?

<comment><USER19> No problem, that's why we have cherry-pick.

</comment></comment><comment><USER20> libeio makes some strides in this direction.

<http://software.schmorp.de/pkg/libeio.html>

<comment><AUTHOR> by using a thread pool, right?

</comment></comment><comment><USER21> This is a good writeup in general, but it fails to mention the fact that under glibc, POSIX AIO is implemented with a thread pool anyway. Only native (non- portable) Linux AIO is implemented by the kernel.

In general, unless you're doing something super high-performance, you should not bother with AIO. It's kind of one of those "if you have to ask, you don't need to know," situations.</comment>


Want to know what Web 2.0 offices look like or what millions of funding can buy? - <AUTHOR> http://www.officesnapshots.com/

<comment><USER2> OK, I'm jealous. That place is a million times better than the beige hell I put up with 40 hours/week.

As much as I want to work for myself (and I am working on that), if I had to work for someone else and I had to go to their place to do it, that place seems pretty sweet.

Although, I'm sure you get used to it the longer you work there. Regardless of how nice the place looks, if the work is boring/crappy, you'll still hate going there and doing it.

That's not to say that workplace surroundings aren't meaningful; they most definitely are. If the work is fun and interesting, good working environments (they don't have to be as lavish as IAC) make it more fun and interesting.

</comment><comment><USER3> I love the first picture, with the glittering crystal tower behind razor-wire fence, under ominous sky...

Damn, now where'd I put those mirrorshades...

</comment><comment><USER4> The place looks quite nice inside. I would imagine most places with millions of funding can't work at such a nice location.

</comment><comment><USER5> I have one customer whose facility is so bad, even the cochroaches eat outside. I dial in as much as possible because I don't feel like doing ANYTHING while I'm there.

Good hackers should be able to work anywhere, but there sure is something so be said for nice digs.

Joel is pretty big on good space:

<http://www.fogcreek.com/About.html></comment>


Ask HN: Managing direct ad sales - yourself? or hire? - <AUTHOR>

I have a website that has enough traffic that I'm going to start seeking direct advertisers.
I've never done it before, and someone suggested just posting an ad on Craigslist and hiring someone, paying them 20% commission.
Does anyone have experience doing this? What worked for you? What didn't? <comment><USER2> Do it yourself first, the cold-calling will give you valuable insight. Then hire a pro.

Commission should be as high as you can, up to %70 is not unheard of. That's because the sales person makes money from the first payment, but after that, the advertiser is all yours to keep. Make sure to get all the contact information within the company from the salesperson and communicate your intent to them.

</comment><comment><USER3> I work for an online media company with a range of websites, with online advertising being a decent chunk of our revenue.

We have a full-time Director of Sales who comes from a background of non- advertising sales (he worked for a UK hardware distributor previously), and he is by far the most talented salesman ("salesman" makes him sound like someone who goes round knocking on doors, but I can't think of a better word), and there's no way we would have ended up in a better situation if he wasn't with us.

Obviously it depends on your situation, but I'd certainly suggest that there are many scenarios in which paying a high wage for someone who's really good at what they do will bring in more than they cost.

</comment><comment><USER4> <http://buysellads.com/></comment>


Ask HN: Etiquette on resubmitting a link (that died on the vine) - <AUTHOR>

I submitted a link to an excellent Fresh Air interview with Jeffrey Rosen about interpreting the 1st and 4th Amendments in the digital era.  Turns out it had been submitted 9 hours earlier, here: http://news.ycombinator.com/item?id=3296176 but it went nowhere. It's hackerish, and relevant -- what is the HN etiquette towards resubmitting it? <comment><USER2> Technically, you can bypass the filter by tweaking the URL a bit - adding or subtracting a /, ? or # will usually work.

But please don't resubmit. There are already too many stories on the 'new' page relative to the number of people looking at it; if people would regularly resubmit stories, that problem would get even worse.

<comment><AUTHOR> Yes, I understand both points, which is why I asked. But I thought this was a very interesting link and could generate a very interesting discussion.

I'd be happy if the original submitters link were revived. His link would seem to be long gone (9-12 hours old.) So my voting it up would seem futile.</comment></comment>


Standing Out in a Flood of Web Applications: An Open Letter to Developers - <AUTHOR> http://webworkerdaily.com/2009/06/24/standing-out-in-a-flood-of-web-applications-an-open-letter-to-developers/ <comment><USER2> Should read "8 basic tips" rather than "open letter."</comment>


When does design matter? - <AUTHOR> http://natekontny.com/post/18194968750/when-does-design-matter

<comment><USER2> Nate, I answered this on your blog, but here's copy-pasted response:

\</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>----

Nate, design is not binary. I am a big fan of well designed sites, but at the same time I think design needs to serve a purpose.

First, In the case of DrudgeReport, people go there for hand-picked content, probably learning about the site through referrals. Although design would make things look prettier, it wouldn't attract more readers, in that case.

Second, good design doesn't mean pretty things. Imho, for most products, user- experience is more important than fancy graphics. People need to want to use your site, and then they need to be able to use your site!

Lastly, it all depends on your business. If you're building something where your content is judged by the looks of your site, then by all means go ahead and make something really sexy. However, if your site is judged by the content, make sure the usability is top-notch and you can apply a sexy skin later.

p.s. All that said, if you're releasing a new product that needs to capture attention from a wide audience or you need to stand out among competitors, then yes, you need to make sure your design (among other things) is the best on the market. After all, you want to be noticed!</comment>


Useful Techniques in Go - <AUTHOR> http://arslan.io/ten-useful-techniques-in-go <comment><USER2> 'Use tagged literals for struct initializations'... I'd rather the compiler help me make sure i've updated all uses appropriately when I add a new field.

<comment><USER3> Sometimes you don't use the field everywhere. Instead you add a new field to extend a functionality, with a proper new method/function. So if you use tag literals your existing code will still compile safely, and the tests will pass too (assuming you didn't change the functions where the struct were used).

In a very large code base, not using tagged literals will just break anything. Not sure you want it (for the case of extending). Removing will already break it so no problems there.

(Disclaimer: I wrote the blog post)

<comment><USER2> This is one of the trouble spots I have with Go.

Say I have 3 members that must be set, and 5 optional members. Go's solution is to make the 3 critical members private so that someone using this struct will probably figure out they should use a construction function. And doing this means replacing all code that creates my struct with calls to a 'New' function. With all this friction, people aren't likely to do the right thing.

At least in C++ with public members I can initialize appropriately in the constructor. Of course littering my code-base with public members would be bad practice in the first place.

<comment><USER4> I used to worry about that, too, but in practice it rarely causes problems. The constructor function will be grouped with the type it returns in Godoc, and auto-complete generally will show both _type Foo_ and _func NewFoo_ when you start typing "Foo". And generally you place the constructor function next to the type it creates in the code as well.... it all contributes to it not really being a problem.

</comment></comment></comment></comment><comment><USER5> #8 is pretty great in that you can assign methods to custom types but not builtins.

As an example, say I have []Card. If I want to sum all cards with a certain color then I could

      Sum(cards []Card, color string)

but that is not great. Rather, I could use

      type Cards []Card

and then name a method

      (cards *Cards) Sum(color string) int

The benefit is that any []Card can now have Sum called on it without any explicit casting.

I've been using this and find it to be clean.

</comment><comment> ainar-g Great article, especially #2. I found it strange how they didn't mention the stringer tool[1] in #5 though.

[1]: [https://godoc.org/golang.org/x/tools/cmd/stringer](https://godoc.org/golang.org/x/tools/cmd/stringer)

<comment><USER3> Author here. It was not written back then :) However it was used so much Rob decided to write a tool to auto generate the String method. So it's now very easy to generate and and it's also uses a much more efficient algorithm to return the string :)

</comment></comment><comment><USER6> Regarding #6, starting with 1 is better than starting with 0, but even better is using negative values: [http://play.golang.org/p/ES8nNv4PeW](http://play.golang.org/p/ES8nNv4PeW)

Also regarding #6, the author didn't say it, but with iota is really trivial to create power of two constants, so you can combine them: [http://play.golang.org/p/rzD3Vl0C4q](http://play.golang.org/p/rzD3Vl0C4q)

For #5, he should have mentioned the stringer tool to maintain the list of strings for you: [https://godoc.org/golang.org/x/tools/cmd/stringer](https://godoc.org/golang.org/x/tools/cmd/stringer)

#10 really depends. There are many cases where you want to wrap your map, but there are many other cases (more cases dare I say), where it doesn't really matter because you only use the map (which is embedded in s struct) in very few places (basically some methods of that struct).

The example also fails to synchronise reads.

A more important case that is not mentioned is that if you often initialise once and read many times, without ever writing again, you don't need that kind of wrapper in those scenarios.

And you also don't want that kind of wrapper even if you read and write often, but read more than one value at a time. That hurts performance, but can even limit your available semantics. With an explicit lock you can arrange so that your map presents a consistent snapshot at all times.

<comment><USER7> > but even better is using negative values

Honest question: Why?

<comment><USER6> Most small values in programs are positive (lengths, counts, etc), so it's possible to write a value to something that should be initialised to a constant by mistake, and you'll never know, since the ranges overlap.

But if you use negative values, and you write a positive value, when you see it, you'll know.

Of course this is a very trivial thing, but it helped me many times.

Sometimes it's better to use typed constants with a custom type, then the Go type system will help you and not let you assign things of a different type. Note that I only said sometimes, in many cases it's better to use untyped constants (or use primitive types rather than custom integers), and positive integers because you can _calculate_ the constant corresponds to some value from a delta, or from some other criteria, like here:

[https://github.com/golang/go/blob/54789eff385780c54254f822e0...](https://github.com/golang/go/blob/54789eff385780c54254f822e09505b6222918e2/src/cmd/internal/obj/arm64/asm7.go#L890)

with the definitions of constants here:

[https://github.com/golang/go/blob/54789eff385780c54254f822e0...](https://github.com/golang/go/blob/54789eff385780c54254f822e09505b6222918e2/src/cmd/internal/obj/arm64/7.out.go#L260)

Another thing useful when debugging is using constants with non-overlapping peculiar ranges, rather than small integers, then simply by seeing a value in a debugger (or in a print of a value without a String() method), you'll know where that comes from.

<comment><USER7> Thanks.

</comment></comment></comment></comment><comment><USER8> The shown label example for #2 is only one option, you could also use a simple loop:

        for loop := true; loop; {
            select {
            case <-time.After(time.Second):
                fmt.Println("hello")
            default:
                loop = false
            }
        }
        fmt.Println("ending")

</comment><comment><USER9>
      type T struct {
          Foo string
          Bar int
          Qux string
      }

      t := T{"example", 123} // doesn't compile
      t := T{Foo: "example", Bar: 123} // OK

I find this behavior somewhat surprising. Contrary to the author's claim, I would expect _both_ to fail to compile.

Reading the Go specification, it seems to be a valid behavior.

> An element list that contains keys does not need to have an element for each > struct field. Omitted fields get the zero value for that field.[1]

I understand zeroing out the "unused" fields is common in low level programming, but Go's behavior in this specific case feels a bit too implicit for my taste.

[1] [https://golang.org/ref/spec](https://golang.org/ref/spec)

<comment><USER10> > Contrary to the author's claim, I would expect both to fail to compile.

I wouldn't - the first example is undefined (is 123 Bar or Qux? I guess technically it should be Bar as without quotes it's an int... but it's not unusual for int's to be cast into strings on assignment) and I would expect it to fail. The second example explicitly states which variable is being assigned.

edit: Thinking more about it, I guess it could go either way, but it's just one of those things that once you do it once you know it.

<comment><USER9> I understand that in the latter case, what fields are being assigned is clearer (albeit the former case can also adopt a similar order-based strategy).

What I disagree is the "zeroing out" part. I don't want 0 or empty string to be more "special" than ordinary values. Letting the compiler decide what values are suitable if I omit them can be a cause of potential bug.

<comment><USER11> Except that the spec states that the 0 value is "more special".

[https://golang.org/ref/spec#The_zero_value](https://golang.org/ref/spec#The_zero_value)

I personally like it this way, and it's better, imho, to have a "set everything not specified to 0" step rather then "leave whatever garbage was there"

<comment><USER9> Huh, I didn't know Go has a concept of implicit default value. In that aspect, zeroing out in struct literals also makes sense.

However I would say that while default zero is better than garbage value, failing to compile is even better than default zero. (e.g. the compiler refuses to compile `var i int` in the first place) But I guess this is a matter of preference.

<comment><USER12> If the code failed to compile unless you initialized all values, you could never add a field to an existing type without updating all cases where you were creating an instance. This would basically make refactoring impossible in most real-world Go projects. You could potentially solve this problem by forcing all object creation to be through special constructor functions (like Java and Scala do), but that is not the Go way of doing things.

<comment><USER9> Yup, I'm much in favor of using a constructor, or even a trait, if such a breakage can be problematic, because I believe types are part of an API (so they should have been opaque types in the beginning). But I now understand what an idiomatic Go way is.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> I disagree with #3.

If I change a data structure I want the compiler to tell me exactly which parts of the code I should rethink. I do not want it to silently initialize new fields with automatic values, as that may invalidate some of my invariants.

Confusingly, it seems that the author is aware us this issue, as he acknowledges exactly this issue #6, and provided a recommendation for easier debugging of such situations.

<comment><USER4> The idea is that, when you add a new field to the struct, the behavior should not change if that field is given its zero value. Thus, all the rest of your code continues to work as it did before.

If you change the code such that the zero value of that field makes the code behave differently, then yes, it's your responsibility to go find all the places that use the struct and update them. However, thanks to static typing and nice namespaces, that's trivial.

</comment></comment><comment><USER14> Re #7: Why have a function wrap it at all if all you're going to do is return the function?

<comment><USER3> It's just an example. Of course the function has many other statements before the returning function which is not shown, otherwise it doesn't make sense of course.

</comment></comment><comment><USER15> Lots of gems of good advice here!

Not sure I agree about #7 though, as I prefer the more explicit and log friendly approach of not returning function call results directly.

</comment><comment><USER16> Yes, and no.

#3 - ("T{A:1, B:2} is better than T{1, 2}") - usually yes, and you'd want to write it multi-line for readability etc (see #4); but there are times, when you exactly _want_ to benefit from the fact, that T{1, 2} is verified for completeness. And sometimes it can read better in table tests. ( _Sometimes._ Only sometimes.)

#5 - as others said already, you can be smart and spare yourself some dumb work here and use golang.org/x/tools/cmd/stringer + go generate.

#6 - even _better_ : start from 0, and make sure the 0 value is correct as the default value for unitialized variable/field! E.g.:

        const (
            Stopped State = iota
            Running
            Rebooting
            Terminated
        )
        // That said, this is assuming the "Stopped" can also mean "pre-running".
        // Otherwise, add a named "Uninitialized" state, or something.

#7 - I believe sometimes yes, sometimes not. Especially in longer functions, for the sake of "no surprises", it might be easier for readers to just keep multiple boring (read: regular) "return 0, err" blocks, and final "return x, nil". Also, it's then slightly easier to add more code to such a function (in growing codebase), and/or refactor it. Still, for cases when this results in a concise one-liner, totally yes!

#9 - as Author notes at the end, "This approach has the disadvantage that it pushes out the indentation and makes it harder to read. Again seek always the simplest solution." In my opinion, nice trick to know, but usually a "x := NewContext(...); defer x.Close()" or similar is the standard idiom.

NOTE: _Especially_ for locks, I'd say you _won 't_ be adding anything to the block in future (see also: YAGNI). On the contrary, you might actually want to change it to a RWLock at some point, and then modify only some of the uses, and then the func would actually make it more annoying.

#10 - I'd say, only when you need it. If you don't need the lock, just use the map. If you need the lock... usually, I'd think you probably already have some higher level meaning for the "map", so I'd suggest to already wrap it in a proper type name & higher-level interface. "type FooRegistry { ... }; func (r * FooRegistry) Register(...)" etc. (And, actually, probably don't add the Delete() yet, until you really need it.) And probably you already have more complexity at this point that you'll want to nicely encapsulate in those funcs.

That said, all of the above is just my subjective opinion, too.

"#11" \- By the way: if you're able to force yourself to use vim, absolutely have a look at the Author's [https://github.com/fatih/vim- go](https://github.com/fatih/vim-go) plugin. Especially with full oracle support, it's a _killer_.

<comment><USER3> 5) I've replied on another comment, but stringer was not written back then. Totally agree on that one :)

6) Makes sense, but starting it with +1 makes it really easy to see if it's initialized or not (if you care about or need the knowledge of external explicit initialization).

11) Thanks akavel :)

</comment></comment><comment><USER14> These are excellent tips.</comment>