FreshDBCache – Eventually consistent database cache for Java - <AUTHOR> http://freshdbcache.com/

<comment><AUTHOR> Hi guys, I had very good experience with following architectural pattern: 1\. Cache full dataset on webserver 2\. Use triggers to create "table of changes" od Ins/Upd/Del 3\. Update only changed rows identified in "table of changes" Experienced great scallability and performance. Great for codebooks but also for real data if they fit into RAM and app is not update intensive. So I decided to make library of it: freshdbcache.com Feedback and opinions welcome ;)

<comment><USER2> Interesting product. A question: How would this add value / differ compared to just applying a CQRS pattern? [1]

[1] - [http://martinfowler.com/bliki/CQRS.html](http://martinfowler.com/bliki/CQRS.html)

<comment><AUTHOR> You can use Fresh DB Cache for queries only and then it matches with CQRS pattern providing great performance and scallability (only small constant load is generated by each web server). But you may also use it for command model as well by caching codebooks and configuration data to improve performance (response time). In more complicated systems you often have to validate tons of business rules to make update and only small part of update has to be done really in database transaction. If you don't like torturing your database by running same codebook queries again and again Fresh DB Cache helps there as well.</comment></comment></comment>


The Road Goes on Forever - <AUTHOR> http://www.oxfordamerican.org/magazine/item/722-the-road-goes-on-forever <comment><USER2> An impressive piece of writing but one wonders about the author's nearly random assemblage of band history and present day impressions of Macon.

<comment><USER3> Agreed. It's impressive that she can make it sound like an adventure to bum around Macon, Georgia, peering into a condemned building and drinking by yourself in a local watering hole.</comment></comment>


Travel firms sue creator of cheap airfare site - <AUTHOR> http://m.bbc.com/news/technology-30634144

<comment><USER2> Discussion from yesterday: [https://news.ycombinator.com/item?id=8813138](https://news.ycombinator.com/item?id=8813138)

</comment><comment><USER3> [https://skiplagged.com/](https://skiplagged.com/)

<comment><USER4> The legal goal is almost funded too [http://www.gofundme.com/skiplagged](http://www.gofundme.com/skiplagged)

</comment></comment><comment><USER5> If they wanted to make sure everybody and their grandmother starts doing this on a regular basis ... well done !

<comment><USER6> I assume you mean the airlines?

The airlines, in a strict sense, don't care. They'll set whatever prices the market can bear. If the market demands that flights from LAX to JFK are no more expensive than flights from LAX via JFK to Elbonia, they'll just raise prices on LAX to Elbonia, because LAX to JFK is a vastly bigger market. It's the Elbonians who lose, not the airlines.

</comment></comment><comment><USER7> A little complicated? Must have to get luggage, which is usually booked all the way through.

<comment><USER8> This is why most airlines won't let you short-check bags to an intermediate city.

Also, in the event of IRROPs, you have no guarantee that the airline will still send you through the same connecting airport. If you're trying this on a ticket with (e.g.) United from Boston to Milwaukee via Chicago, intending only to fly as far as Chicago, you could easily find yourself going through Newark or Cleveland if Chicago is snowed in or that flight has mechanical problems.

In that case, connecting in Chicago was essentially an implementation detail, United is free to reroute you through any other hub (even Houston or Denver if that's where they've got open seats). I've certainly had more out-of-the-way reroutes with United.

(edit again, just to add more)

You could even wind up on a completely different airline. United could stick you on a Delta flight through Detroit. Many ways to screw yourself.

<comment><USER9> I recently noticed DTW -> PHL was over $400 more on United than DTW -> PHL -> NYC. (For me, worst case scenario would be having spend an extra three hours on a train back to Philly.)

It would be nice to know what percent of flights have a problem that causes a reroute, so we could do the math on wether it is worth it.

<comment><USER8> UA doesn't fly DTW-PHL. Do you mean US or DL?

The airline can claw back miles, ban you from flying or, if you're a repeat abuser, go after you for the fare difference.

<comment><USER9> You're right, it was US Air.</comment></comment></comment></comment></comment>


Ask HN: Would you start a startup if the upside was limited? - <AUTHOR>

I heard that Switzerland is voting to implement a system where CEO's could only make 12x that of the company's lowest paid employee.  They would also be implementing a system where every citizen is guaranteed roughly $22k/year, regardless of employment (I might not have all the facts correct).
Regardless, my question is if you were capped at $500k/year knowing that you would have this $22k/year safety net, would you still start a startup?
EDIT: I'm trying to ask whether a moderate upside - that is roughly equivalent to making $500k/year - would be enough to motivate most people to start startups. The Switzerland thing was just what got me thinking. DH5 people! <comment><USER2> Start-up founders don't get rich from salary, they get rich from owning the company (shares.)

Here is a list of people who have employed themselves for one dollar.

[http://en.wikipedia.org/wiki/One- dollar_salary](http://en.wikipedia.org/wiki/One-dollar_salary)

I'm guessing that people like Warren Buffet and Mark Zuckerberg spend surprisingly little money for their day to day living expenses. You don't see these guys driving around super cars, sporting a lot of bling, rolling with an entourage and building the largest mansions they can afford.

<comment><USER3> Exactly. Given this system, there might actually be more incentive to create startups, as earning potential from a traditional job is limited.

<comment><AUTHOR> Really? How many traditional jobs make over $500k/year?

</comment></comment></comment><comment><USER4> Switzerland isn't planning to limit 'upside' in any way, as simply owning [part of] a rapidly growing company is something completely different from compensation like getting stock options that you didn't have before.

The 'cap', in essence, would refer only to hired managers.

<comment><AUTHOR> The Switzerland example was just what got me thinking, not the focus of the question.

I was thinking about redistribution of wealth. There's all these founders making billions of dollars. What if instead they only made a couple million, and we gave the rest of it to poor people? Would they still have started their startups?

<comment><USER4> The founders probably would have started them anyway if other things would be the same - but they wouldn't be the same.

In particular, the whole concept of venture capital wouldn't work, so lack of funding would've prevened the start of most current startups as it happened.

</comment></comment></comment><comment><USER5> Oh, if I _have_ to, OK. [pouts while a billion people hope for clean water tomorrow]

</comment><comment><USER6> Absolutely!

If it means helping to define and grow the culture I can do my best work in. To work with people I admire and trust(and may even be around for the next thing).. that's better than most jobs anywhere and incentive enough to be honest. It just so happens I also love designing great products, but designing great places to work can be just as fulfilling.

</comment><comment><USER7> To me a startup isn't about the money, but introducing my idea to the world. The idea of satisfying a need is enough.

That being said, the money is still a great incentive since you're taking a huge financial and personal risk, but you can still live pretty damn well with $500k/year.

</comment><comment><USER8> Doesn't affect me. I don't do what I do purely because of money and $500k/yr is still quite a cap relative to any job I would want to do. Even at a fraction of that, I still would rather work on something I care about. The only exception is if I care about the job I would be working.

</comment><comment><USER9> It seems like once you have a lot of money locked up in equity you'll be able to evade this salary limit by recategorizing your income as investment earnings or some such. So, in practice I doubt this law will be effective.

</comment><comment><USER10> Just run a couple of them, its not hard right?

</comment><comment><USER11> \- Yes. I'll do it for the thrill.</comment>


Much Hyped Facebook Mail is launched to selected users - <AUTHOR> http://www.comptalks.com/facebook-mail-is-here/

<comment><AUTHOR> Currently very few people have access to it ,check the screenshots</comment>


Ask HN: need a writer/researcher for travel site. Recommendations, experience? - <AUTHOR>

I'm looking for a writer/researcher for my travel-related website. I need someone to research vacation locations and write short articles. Does anyone have any experience with hiring writers? How much do I have to expect to pay? What are good websites/or writers you can recommend?<p>Any help/tips appreciated, thanks. <comment><USER2> Try oDesk, had luck there. Prices of course vary, but for $10 / hour you will definitely find someone.</comment>


Ask HN: How to have a talk with your co-founders about quitting - <AUTHOR>

Hello everyone
I'm a CTO in a young startup, one of the co-founders is a very good friend of mine and we're doing pretty well, hopefully we will get funded soon.
Few weeks ago I was approach by one of my university professors that is starting his own venture. He already got tremendous funding from Google and another VC and the project is truly one of a kind.
He offered me to be the CTO of his company.
Up until now, during my time with my current venture I rejected a lot of offers, but this one was very tempting and I said yes. The project is directly related to what I had researched as a grad student, and I feel I have much more to contribute to such a company, comparing to my current startup where most programmers can do what I do.
Bottom line, I feel that career-wise - this is a smart decision. But since I'm working with a very good friend, I feel like I'm betraying him by leaving.
So my question is: How to properly talk about it? Am I doing something "wrong" here? What do you think? <comment><USER2> I think you are the only one that can determine whether you are wrong or not. I think a true friend will understand and want the best for you and vice versa. Questions to ask yourself 1\. Is there anything proprietary about my startup 2\. How would you feel if the shoe was on the other foot 3\. How will I feel if the startup does well and my job stinks and I am unhappy or worse fired 4\. Do you mind being an employee as opposed to a co- founder/entrepreneur of a startup

</comment><comment><USER3> This might be just me but if you explained to your friend the situation as you have to us he'll most probably be okay with it.</comment>


Artisan chocolate and social revolution - <AUTHOR> http://www2.macleans.ca/2012/06/11/artisan-chocolate-and-social-revolution/#more-265819

<comment><USER2> I really liked the Scharffenberger plant in SFBA until it got bought by Hershey and production moved elsewhere. It was at the sweet spot (heh) of quality ingredients, scale (prices at $3 or so, and decent variety, but with small batches), and aesthetics. Really small scale production doesn't add much beyond that point.

Currently, I just get Trader Joe's (Villars or Valrhona). Especially at the $2-3 price point.

</comment><comment><USER3> <http://news.ycombinator.com/item?id=4095602>

<comment><AUTHOR> Oops, I should have noticed that hash crap on the end.

So you like the Cosh too?</comment></comment>


Copyright for censorship|Satirists fear new Hong Kong laws may turn joke on them - <AUTHOR> http://www.smh.com.au/world/satirists-fear-new-hong-kong-laws-may-turn-joke-on-them-20120601-1zn0y.html

<comment><AUTHOR> Opposed by content industry, because the new law will stifle commentary on copyrighted materials.

"More than 1,700 artists have signed a petition urging the government to shelve proposed amendments to the Copyright Act, while pro-democracy lawmakers have launched a filibuster campaign to delay its passage into law."

[http://newsinfo.inquirer.net/196747/hong-kong-artists-cry- fo...](http://newsinfo.inquirer.net/196747/hong-kong-artists-cry-foul-over- copyright-bill)

Besides the raft of new restrictions on copyright (copyright owner now has exclusive right to communication of all forms of reproduction of the work, including satire.), there is an addition of a clause to allow a non-copyright owner to initiate legal action against copyright infringers.

"88C. Notice of a alleged infringement

(1) If it is alleged that an infringement of the copyright in a work has occurred or is occurring on a service provider's service platform, a notice in respect of the alleged infringement may be given to the service provider under this section.

(2) A notice of alleged infringement -

(a) must be in writing;

(b) must be signed or otherwise authenticated by the owner of the allegedly infringed copyright or that owner's authorised representative;

…

(3) A notice of alleged infringement -

(a) must contain the name and address of the complainant and any other information that is reasonably sufficient for contacting the complainant;

…"

[http://www.gld.gov.hk/egazette/pdf/20111522/es32011152215.pd...](http://www.gld.gov.hk/egazette/pdf/20111522/es32011152215.pdf)

What is dangerous about this is: The "complainant" could be the government taking action against political satire it doesn't like. The amendment text does say it requires the copyright owner's signature - but if you're a movie studio that regularly send your work to the government to obtain a classification for permission to show your work in theatres / broadcast of TV / sell your work in shops, then I imagine that signature of yours would be quite easy to get.</comment>


Show HN: Project Management as Code with Graphviz - <AUTHOR> https://zwischenzugs.com/2017/12/18/project-management-as-code-with-graphviz/ <comment><USER2> I frequently make use of [http://viz-js.com/](http://viz-js.com/) so I can generate dot graphs without needing to install GraphViz.

<comment><USER3> I built a tool for generating graphviz graphs at [http://dottask.mattboehm.rocks](http://dottask.mattboehm.rocks) .

Once you get used to the controls, it's very quick and has a ton of useful features (including export to dot so that you can further customize things.)

</comment></comment><comment><USER4> Glad to see somebody else trying something like this. I was manually maintaining some charts like this for a while at a prior job and was toying with productizing it, it's super powerful, especially if you've got a large backlog or a large feature list ahead of you.

I wanted to have another representation that generated the GraphViz files, though, so you could more easily do other work with the data. Some other features we thought we needed:

* Notation of whether a dependency was "can't start until it's done" or "can't finish until it's done" to designate whether or not an item and it's deps could be in progress concurrently or if the earlier project needed to be completed first.

* Attach rough time estimates to each node (person-week granularity)

* Generate a list of "eligible" projects, i.e. those things with no hard blockers

* Sort this list by how much downstream work it blocks. Probably by each of: number of work weeks blocks, number of projects it blocks, and depth of the tree it blocks. This would help identify the boring projects that stand in the way of everything.

* Generate a list of "up next" projects that had only one in-progress blocker and thus were eligible for moderate discussion, but couldn't be allowed to dominate meeting time.

* Generate another list of "off limits" projects that had at least one blocker that wasn't even in progress yet and thus were a waste of staff time to meet about. No point having design meetings when something is 3 nodes deep in the graph.

I ultimately left because the management was insane and irresponsible and undermined these efforts once they started to set in well (because they removed her absolute authority to monkey with priorities). But I think it's a system that works well with sane management. At present I don't have enough backlog to need this tool, but look forward to working on it again one day.

<comment><AUTHOR> We should talk. I was thinking size of node could == some kind of measure of size/risk/significance. There's lots of things one might want to visualise, so some collaborated standard would be good.

<comment><USER5> Don't forget other modalities. E.g.

      Size: effort estimate
      Number of edges to the shape: depth of dependencies.
      Brightness: size of dependencies.
      Hue: ...tbd...
      Border (double/triple/dashed): ...tbd...
      Font size: ...tbd...

<comment><AUTHOR> I like it. Another one for part 2.

</comment></comment></comment></comment><comment><AUTHOR> Code here: [https://github.com/ianmiell/pm-as- code](https://github.com/ianmiell/pm-as-code)

I'm not a GV expert, so contributions/suggestions/critiques welcomed.

<comment><USER6> Nice stuff.

You might want to look at ordering things left to right with

        rankdir=LR;

You can also force particular groups to be on the same row/column (rank).

Also subgraphs to group certain sections if you want: [http://graphs.grevian.org/example](http://graphs.grevian.org/example)

This may also be useful to see the building up of a bit more complex graph [http://larsbarkman.com/2015/08/26/alignmentmaps-with- graphvi...](http://larsbarkman.com/2015/08/26/alignmentmaps-with-graphviz/)

<comment><AUTHOR> Thanks, I may include these in a deeper dive.

</comment></comment></comment><comment><USER7> nice one.

Dot (both the layout engine and the graph DSL) is used in OmniGraffle, so you can import the dot files like you made into OG and edit them further, either manually or via OG's scripting interface

and then for instance, quickly convert text inside a node to a link to a suboordinate graph (ie, the top-level graph might describe a large project, and each node in that graph, might represent a "sub-project"\--hence you can represent a very large project as a hierarchy of graphs, eg, one per sub- project, but that still roll-up to a single top-level. This is a core feature in OG and trivial to do

<comment><AUTHOR> I'm interested in OmniGraffle and will check it out.

</comment></comment><comment><USER8> What a great idea. I really struggle to plan sprints and projects just using lists. Also MS Project etc are just far too complicated for my small projects.

I actually resorted to drawing dependency and flow diagrams by hand, then translating those into JIRA tickets and adding to Kanban style boards.

The ability to track changes using git is such a simple (and with hindsight, obvious) idea, but I should think very effective.

Nice one.

<comment><AUTHOR> Thanks - do get in touch with how to get on.

</comment></comment><comment><USER9> This is just a PERT chart, right? [1] Only difference is you don't appear to have any durations on the tasks. If you added that you would be able to calculate your critical path.

[1] [https://en.wikipedia.org/wiki/Program_evaluation_and_review_...](https://en.wikipedia.org/wiki/Program_evaluation_and_review_technique)

</comment><comment><USER10> This is great, thanks for sharing. I stumbled across this idea myself since no todo manager really represented complex dependencies of tasks - the "list" format is just so prevalent and usually ends up increasing cognitive load as I can sometimes get frustrated trying to figure out what's "next" on a non- linear project.

Have you seen DropTask? It's the same idea, I just haven't dug too much into it yet: [https://www.droptask.com/](https://www.droptask.com/)

The key feature for me is being able to have multiple ancestor/dependency tasks to a task node, instead of a hierarchical "next action" setup like most task managers.

<comment><AUTHOR> Thanks for the kind words. I haven't seen droptask... I'll add it to the list. Although I have a prejudice for old and ugly tools like GV, Make et al.

</comment></comment><comment><USER11> Thanks! I never thought about applying this to my todo list, but its a great idea!

I have done something like this for creating "recursive recipes" [1] which generates similar looking dependency charts when you start probing how to make a recipe from scratch [2].

[1]: [https://github.com/schollz/timetomakefood](https://github.com/schollz/timetomakefood)

[2]: [https://user- images.githubusercontent.com/6550035/34167929-6...](https://user- images.githubusercontent.com/6550035/34167929-6a389572-e4a0-11e7-8e92-e2818634156b.png)

<comment><AUTHOR> Thanks, I'll take a look.

</comment></comment><comment><USER12> a great gui editor for similar tree-node structures is freemind

a lot quicker than code dsl -> git -> graphviz

and freemind also has search, edit, history, links, export as HTML

[http://freemind.sourceforge.net/wiki/index.php/Screenshots](http://freemind.sourceforge.net/wiki/index.php/Screenshots)

<comment><AUTHOR> Can it export to code?

<comment><USER12> it is open source and you could write an extension to output whatever you like.

there is even the last resort of transforming the built in XML ouput ( yuck ). Several Perl examples are given.

[http://freemind.sourceforge.net/wiki/index.php/Import_and_ex...](http://freemind.sourceforge.net/wiki/index.php/Import_and_export)

</comment></comment></comment><comment><USER13> Really interesting and well written post. Certainly has started some cogs turning in my mind.

Just a note, I think there is some text missing or leftover at the end of the 'Surface Assumptions' paragraph.

<comment><AUTHOR> Cheers, have corrected.

</comment></comment><comment><USER14> This reminds me of an experiment I had going a year or so ago. Same basic idea, but far more automated: I'd been using taskwarrior for years, and had gotten into the habit of breaking what I was doing into multiple taskwarrior tasks with dependencies. Out of curiosity, I wrote a bash script that extracted those dependencies and created a graphviz dot file.

(I never really found much use for it though, and had forgotten about it until reading this. I now just prefer taskwarrior's urgency ranking in its regular output.)

</comment><comment><USER15> Your last example can be made more concise (and more readable IMHO):

         "EH" -> {"BT", "BFR", "BTOW", "PSNB", "GCD"}
         "BFR" -> "BPB"
         "BPB" -> {"GTS", "GCG"}
         "PSNB" -> "BGB"
         "BGB" -> "GTS"
         "PSNB" -> "BEC"
         "BGB" -> "GCG"
         "BEC" -> "GCG"

</comment><comment><USER16> Gantt charts also represent dependencies among tasks.

They add more information as well: time estimation, milestones, asignees, etc.

Gantt charts receive some criticism since estimations are approximations and any precision issue starts compounding very quickly.

Issue trackers may also support dependencies between tasks. The problem is that issue trackers usually come with scrum/kanban boards that do not have a represention dependencies among tasks.

There are many applications to put together a gantt chart.

<comment><AUTHOR> Can I export it to code?

<comment><USER16> I am not sure a GraphViz digraph is the way to go.

If you want to keep track of what is done and what is remaining eventually you will need to update that file.

This will quickly lead to version control conflicts.

Issue trackers I think are the way to go. You can integrate with one using their API.

<comment><AUTHOR> I think version control conflicts are good in this case - they indicate the level to which there is conflict within the team around what the project consists of.

<comment><USER16> Version control conflicts in this case don't necessarily map to disagreement.

Imagine 2 team members that are in agreement add leaf 2 nodes. That would trigger a version control conflict.

Now imagine that situation in a team of 5, or 10. It becomes hard to maintain.

</comment></comment></comment></comment></comment><comment><USER17> Perhaps someone will find this old-ish project of mine[1] useful. It automatically generates graphs using Graphviz based on Taskwarrior queries, which makes it considerably easier to manage and filter task lists.

[1]: [https://github.com/shushcat/taskgv](https://github.com/shushcat/taskgv)

<comment><USER18> I use this regularly.

</comment></comment><comment><USER19> Mixing this with [http://orgmode.org/worg/org-contrib/babel/languages/ob- doc-d...](http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-dot.html)

Would be pretty awesome. Your todo list could have graphs in them or dependancies.

<comment><USER20> Here you go

[https://github.com/theodorewiles/org-mind- map](https://github.com/theodorewiles/org-mind-map)

</comment></comment><comment><USER21> Great write-up! I tried something similar for modelling out the Snowplow release dependency chain ([https://github.com/snowplow/](https://github.com/snowplow/)) - I gave up and started looking at SaaS alternatives, but inspired by this I am going to try again.

For the record, I didn't find any good product management or project management tools (SaaS or desktop) which acknowledge that roadmapping any sufficiently complicated platform or product family is best expressed by a directed acyclic graph. Casual.pm had the right concept ([https://casual.pm/](https://casual.pm/)) but the implementation was very primitive.

<comment><AUTHOR> I've found it quite hard to get non-technical people on board with this.

</comment></comment><comment><USER22> Thanks for writing the post. Although I've heard of graphviz (and dot) before, I didn't take the time to read up on them since the docs were so dense. Thanks for making this accessible.

<comment><AUTHOR> Thanks! Yes, I'd always shied away from GV and just copy/pasted examples until I used them at work and had to work through some problems.

Is there interest in a deeper post on graphviz from the POV of the casual user?

<comment><USER23> I'd be interested although I already know it, it would be handy to have an approachable guide for others to point to.

</comment></comment></comment><comment><USER24> How much do people use dependencies in jira etc? Seems that one ought to be able to create a plugin that would automatically generate and update this graph for any issue with dependencies.

<comment><AUTHOR> I looked into this.

There are plugins, but I can't add plugins at will at work. People don't use deps properly though - GIGO.

<comment><USER24> Well, yes both are then blockers to the success of this approach. And on the other side of the coin, knocking up one of these dependency graphs is reasonably quick and straightforward. Its a thought provoking article - thanks.

</comment></comment></comment><comment><USER25> Thank you, very interesting example, but I don't necessarily see the added value in the graph form, for this particular example - it implies dependencies where there are none - for example buying GBP only after buying the guide book etc. I think it is just the example that is wrong. What's typical for a holiday break, is a todo list, which is in no particular order. Perhaps an actual project would be a better example?

<comment><AUTHOR> The dependency order is the other way round:

Enjoy Holiday

depends on

Pack suitcase

depends on

Buy guide book

depends on

buy GBP

I could have used a 'real' example but then it would have got bogged down in the details of that example. Most of us have planned for a holiday, so I just used that example. Maybe 'moving house' would have been better, but that's more culture-specific.

I'd welcome a PR if you'd want to add a better example.

</comment></comment><comment><USER26> Thanks for sharing!

I've been using the "same" technique with some projects I have but just to outline specific components of the system such that it becomes more clear what interacts with what.

For me, the best that I got out of it was having to think hard about those relations and improving the documentation of the subject.

Have a good one!

</comment><comment><USER27> Pragmatic approach, I like that and am willing to play with it. Combining it with [https://en.wikipedia.org/wiki/Critical_path_method](https://en.wikipedia.org/wiki/Critical_path_method) could yield interesting results.

</comment><comment> FLUX-YOU Most of these graphs don't seem to have too many connections.

Wouldn't a checklist layout be much better?

<comment><AUTHOR> For simpler projects, yes. The more complex and shared the project the more value there is in documenting and sharing dependency relationships in code, as described in the article.

</comment></comment><comment><USER28> Cool post, really enjoyed it!

<comment><AUTHOR> Thanks!

</comment></comment><comment><USER29> Seems really overkill

<comment><USER30> The toy example? Of course!

For an actual large, complex project with lots of inter-dependencies among sub-projects and tasks – arguably not.

</comment></comment><comment><USER31> I love Graphviz but hate the Dot language with a passion. Has anyone tried to come up with a more consistent and user-friendly graph definition language?

<comment><AUTHOR> Check out mermaid.

<comment><USER31> Thanks. That looks like just what I need to create class and sequence diagrams in a version control-friendly manner.</comment></comment></comment>


Code Shame: Sharing your embarrassing code - <AUTHOR> https://www.brendonbody.com/2020/01/31/code-shy/ <comment><USER2> If you're constantly getting better at what you do then you'll always look back at your old work with a unique perspective. To some, that might take the form of embarrassment, humiliation, etc. But put in a more positive light, you can look at your work and know how far you've come.

I think we should all behave more like the later; appreciate your growth mindset, and remember 5 years from know whatever you're doing now might be unrecognizable.

<comment><AUTHOR> Exactly, agree with you 100%. However I think when we start our careers there is a resistance to put ourselves out there.

</comment></comment><comment><USER3> There's an unfortunate productization that happens when you put some code publicly on GitHub. There seems to be a culture that you should make the repo look attractive even if it's just some off the cuff experiment no-one ever tried to run in production.

I'm certainly not against doing your work in public if that works for you, but I wish GitHub were better at encouraging people to label their half finished experiments as half finished experiments.

<comment><USER4> There's this: [http://unmaintained.tech/](http://unmaintained.tech/)

<comment><USER5> There's also the Archive Repository feature, which can help: [https://help.github.com/en/github/creating-cloning-and- archi...](https://help.github.com/en/github/creating-cloning-and-archiving- repositories/archiving-repositories)

</comment></comment></comment><comment><USER6> I really, really wish that I had the source code I wrote back before Github was a thing. Most of that, though, was never in version control, and I have long since lost the floppies it was stored on.

This post is inspiring me to go clean up my old repos on Github, and perhaps wax nostalgic about my previous works, even the awful ones.

<comment><USER7> I have stuff I wrote in the mid 90's. Mostly C code. It's horrible to look at.

I wish I kept the earlier stuff from my Amiga days.

<comment><USER8> Same! Best programming I ever did was on the ST and Amiga.

<comment><USER9> Any reason why? I tried to do a bit on our C64 as a kid but . . . well, it's amazing I wound up as a developer after that experience.

<comment><USER7> You had to be very careful programming the Amiga. There was multitasking, but no memory protection. If you wrote to a bad address (like a null pointer), you were staring at a "Guru Meditation" screen followed by a reboot.

</comment></comment></comment></comment></comment><comment><USER10> At my very first coding job, I was hired to update the design of a .net webforms website. My academic background was in java. There was no on the job training. It was just me, 2 C# books, and stackoverflow.

I remember writing monolith methods/functions with 1000+ lines of code.

I remember manually generating SQL as a string for ado.net. I also remember being unaware of stringbuilder and doing tons on += on strings and wondering why the application was slow.

Looking back now at my first time, it seems funny more than embarrassing. I remember it fondly.

</comment><comment><USER11> Here's a pretty embarrassing one ;):

int index = 0; while (!element.equals(sortedList.get(index)) && sortedList.size() > ++index); return index < sortedList.size() ? index : -1;

<comment><USER12> Asking for the sortedList size with every iteration of that loop. haha, ouch! :)

</comment></comment><comment><USER13> The CRAPL is somewhat related: [http://matt.might.net/articles/crapl/](http://matt.might.net/articles/crapl/) , [https://news.ycombinator.com/item?id=9670497](https://news.ycombinator.com/item?id=9670497)

</comment><comment><USER14> I thought this was just going to be another humblebrag like all that cringeworthy impostor syndrome stuff last year, but this has some good advice. If it did something useful, then certainly someone else can learn from it and you can be proud of it, no matter how far it is from what you do nowadays.

<comment><AUTHOR> Thank you for the feedback, I am glad you interpreted what I wrote that way. I was trying to essentially take my conversation with my friend, take the advice I gave to him and add some self-reflection.

</comment></comment><comment><USER15> I enjoyed the "impressive feet" typo in the first sentence.

(First time I've ever seen that word pairing!)

<comment><AUTHOR> Thanks for pointing out the typo, it has been fixed. I guess it is a phrase I heard more than I read/wrote.

<comment><USER15> No worries!

I also enjoy the opposite: when people pronounce words incorrectly because they've never heard them aloud, only in writing.

I've embarrassed myself several times in this regard.

<comment><AUTHOR> I always thought "force of habit" was "forcive habit".

</comment></comment></comment></comment><comment><USER16> I just put everything on Github, good or bad. I always try to keep code smell at a minimum, but I can't even recognize my earlier code anymore, like ten years ago. Doesn't look like I coded it at all.

<comment><USER17> What would you say the biggest difference is?

For me, the amount of magic in my code has been significantly reduced.

<comment><USER16> Mostly two big changes that I got with experience: Code architecture and organization in general. You make more modular code, minimize code coupling etc. And another big change is in optimization. You learn to better optimize your code, avoid too much allocations, performance tricks, etc. That depends on the language to an extent, but several things are global to all programming languages; I mostly code in C# and Javascript these days. Game development and game tools;

</comment></comment></comment><comment><USER18> Certainly I would want upcoming developers to share as much as possible, to get as much help and as many pointers as possible. But personally, I want to see your best. In the authors case, he's seemingly improved a lot since writing the early code, so I see no harm in taking it down/replacing it.

But in general, share what you can. Don be embarrassed, even a stern code review will help you improve, but I very rarely see 'stern reviews' outside of Linux Kernel development :)

<comment><AUTHOR> Author here, with regard to "taking it down/replacing it", I found a middle ground. I moved all those repositories to another organization (that I control), so my profile is clean and if I need/want to see that code I can go there.

</comment></comment><comment><USER19> There were some old assignments I wrote at university that I really wish I could find (my favorite "real" one being a catastrophically insecure implementation of RSA)

</comment><comment><USER20> I kinda fear this as I am working on my startup. I am sure that the code needs a lot of refinement but I am often pleased that it does the job that I set out to achieve.

I am not quite sure how this is going to work out as I am self-taught coder .... [https://blog.mypad.in/](https://blog.mypad.in/)</comment>


What we can learn from the gutsy way 13-year-old Steve Jobs landed a job at HP - <AUTHOR> https://www.businessinsider.in/What-we-can-all-learn-from-the-gutsy-way-13-year-old-Steve-Jobs-landed-a-job-at-HP/articleshow/48011299.cms <comment><USER2> TL;DR: if you ask for what you want and are very lucky, you might just get it. Nothing new here.</comment>


Real-time Twitter sentiments, visualized. - <AUTHOR> http://marketsense.io/sentiment

<comment><AUTHOR> This small webapp measures Twitter sentiment along seven psychological axes based on a paper by Bollen, 2010, titled Twitter mood predicts the stock market.

It's a work in progress and a MVP.

As a webapp it is similar to A World of Tweets by frogdesign, tweetping.net by Franck Ernewein and the hedonometer.org.

</comment><comment><USER2> Very cool, what's the current time frame for the analysis?

<comment><AUTHOR> This is an expanding window starting with the time of the page opening, and the tweets are binned for updating at 1 min intervals.

<comment><USER2> Thanks!</comment></comment></comment>


Drugs fairly effective on novel coronavirus at cellular level - <AUTHOR> https://www.shine.cn/news/nation/2001300859/ <comment><AUTHOR> The "we're doomed" narrative has a whole different flavor if it's really "we're doomed, except we can prevent this with face masks and maybe-prevent and maybe-treat it with three different drugs that are all widely available and in mass production"

Remdesivir and Ritonavir make sense because they are HIV drugs, both HIV and coronavirus (and SARS) are retroviruses, and these drugs are antiretrovirals that were found to have significant effect against SARS.

Chloroquine is a malaria drug and that's a surprise, but kudos to somebody for being up on the literature because there it is in Pubmed, Chloroquine might do something on coronaviruses. [https://pubmed.ncbi.nlm.nih.gov/14592603-effects- of-chloroqu...](https://pubmed.ncbi.nlm.nih.gov/14592603-effects-of- chloroquine-on-viral-infections-an-old-drug-against-todays-diseases/)

Also, no story about coronavirus drugs is complete without a shout-out to this legit researcher, whose story is "I gotta get to Wuhan to test these drug candidates before this outbreak is over." [https://www.nature.com/articles/d41586-020-00190-6](https://www.nature.com/articles/d41586-020-00190-6)</comment>


When Doctors Play This Game, You Get Better Medical Care - <AUTHOR> http://www.npr.org/blogs/health/2014/05/21/314255998/when-doctors-play-this-game-you-get-better-medical-care

<comment><USER2> Very nice - modest gains, but almost no cost. As an experiment, this quiz- with-funny-pictures is great. "Games" offer a new medium of expression, and are probably the "right tool for the job" for some problems. As this article shows, games might be particularly useful in education, if we can figure out creative ways to use them.

If you're interested in the idea of games-in-education, ExtraCredits has been running a very interesting (and fun) overview/exploration of this idea over the last few weeks:

        http://www.youtube.com/playlist?list=PLhyKYa0YJ_5BIUqSDPmfBuKjTN2QBv9wI

</comment><comment><USER3> What's scary is that in the age of worldwide information databases and machine learning, we rely on a Doctor's 20-year old intuition for choosing therapies. Patients should insist "Citation needed" for their doctor's advice, and doctor should gladly give it.</comment>


The Great Venture Capital Rotation - <AUTHOR> http://www.linkedin.com/today/post/article/20130928204536-24171-the-end-of-venture-capital-sort-of <comment><USER2> > Sorry, we couldn't find that page. Here are some others for you to explore.

Do you need to be registered with LinkedIn to read?

<comment><USER3> I tried logging in and still couldn't read it.

<comment><USER4> try this from Google cache: [http://webcache.googleusercontent.com/search?q=cache:http://...](http://webcache.googleusercontent.com/search?q=cache:http://www.linkedin.com/today/post/article/20130928204536-24171-the- end-of-venture-capital-sort-of)</comment></comment></comment>


Machine Learning Done Wrong - <AUTHOR> http://ml.posthaven.com/machine-learning-done-wrong <comment><USER2> _" Statistical modeling is a lot like engineering."_

I can certainly see why this is a good comparison, because it's true that both engineering methods and statistical methods rely on sets of given assumptions, but it's also really important not to take this analogy too far. Engineering is ultimately something that is done in a mechanistic world with primarily deterministic outcomes, whereas statistical modeling is conducted in a stochastic world with probabilistic outcomes, so it wouldn't be good to think about machine learning as predominantly mechanistic in nature (in spite of its name). Of course, a lot of the seven points that follow in the post actually emphasize the importance of stochastic factors (e.g. outliers, variance issues, collinearity, etc), so the author is clearly not making this mistake, but it might be good to clarify for anyone else who is reading.

 _" 6\. Use linear model without considering multi-collinear predictors"_

This is a great point, and just to expand on it a bit, you can also have situations where you have simultaneity, i.e. two or more of your features or predictors are either functions of each other and/or functions of some third variable. This type of problem is more difficult to detect but can cause serious problems with interpreting the regression coefficients as it's ultimately a type of endogeneity, which means that common approaches like OLS will not be consistent.

<comment><USER3> great comment and +1

</comment></comment><comment><USER4> I strongly disagree with not using linear models, at least to build some theory and intuition before continuing with more sophisticated algorithms. What I find to be more egregiously misused when doing machine learning in practice is that everyone too often flocks to the state of the art with little understanding why. There's no reason for example to spend weeks (or months) tuning a incredibly deep neural network if the current predictive ability is enough and there are higher priority matters to work on.

Moreover, there's just too much of an emphasis on prediction. Design and analysis of experiments, handling missing data and the context of the data sets, and quantifying one's uncertainty about parameters in a principled manner for robust estimators are very underappreciated skills in the community. Using p values arbitrarily and "95% confidence intervals" based on an unchecked normal approximation is incredibly more harmful than not doing anything at all. There's just so much more to machine learning than supervised learning.

<comment><USER5> In natural language processing, we can get close to state of the art performance on nearly every major task with a linear model; usually, the feature sets contain what are essentially conjunctions of features, but these are chosen by hand, by domain experts, rather than produced with, say, a polynomial kernel.

</comment></comment><comment><USER6> "2\. Use plain linear models for non-linear interaction" It should be noted that Linear models are only linear in the model parameters, while the features can be transformed using non-linear functions. This trick makes linear models very powerful. Also if you have big data (in millions/billions) then you are better off with linear models, as SVM is very difficult to scale.

In my experience (all in big data), I rarely seen people use SVM, usual choices are logistic regressions and tree based models. In some finance and insurance industries you are restricted to use only interpretable models, which linear models are.

<comment><USER3> As you pointed out the transforming features is powerful, I believe that's the exact reason which makes SVM powerful. Though the way features can be combined with SVM is limited, the limitation makes SVM training fast in the dual space.

On the other hand, if you wanna compare logistic regression with SVM. While the detail is pretty tricky. One simplified view is to compare linear SVM which is essentially hinge loss with L2 regularization against logistic regression with L2 regularization which is essentially negative binomial log likelihood loss with L2 regularization. If you plot the loss functions, it's easy to see how they penalize negative & positive cases differently.

</comment></comment><comment><USER7> I think the points are good, but I am not very happy about this statement

"When dealing with small amounts of data, it's reasonable to try as many algorithms as possible and to pick the best one since the cost of experimentation is low. But as we hit "big data", it pays off to analyze the data upfront and then design the modeling pipeline (pre-processing, modeling, optimization algorithm, evaluation, productionization) accordingly."

If done correctly, then I agree. But we have to be carefull about overfitting when we try out several models or make an initial analysis to determine which model to use. In this sense, choosing a model is no different from fitting the parameters of the model.

<comment><USER8> If you are disciplined, and separate data into training and testing sets, you can try as many models as you want without fear of overfitting. Indeed, optimizing over the parameters of a model on the training set is essential (pruning parameters in a tree, regularization weights, etc.) and can be thought of as training large number of models.

If you aren't doing this correctly, then you can't really interpret the performance of even a single model. Seen people screw this up in so many ways - my favorite recent one that was quite high on HN was someone using the full dataset for variable selection, before doing a training-testing split afterwards.

<comment><USER9> If you use performance on the test set for model selection, this is not true. It follows from simple probabilistic reasoning, the more models you try the higher the chance one will score well on both the training set and the test set by "luck", and this is especially true with small datasets. In fact it is a best practice to use a separate validation set for model selection and use the test set only for final performance evaluation, see e.g. the answer to this question:

[http://stats.stackexchange.com/questions/9357/why-only- three...](http://stats.stackexchange.com/questions/9357/why-only-three- partitions-training-validation-test)

</comment></comment></comment><comment><USER10> _Returning to fraud detection, high order interaction features like "billing address = shipping address and transaction amount < $50" are required for good model performance._

I agree, that non-linear models are often able to beat linear ones, but if you have limited amounts of data feature engineering will always beat clever algorithms.

<comment><USER3> Yes, and IMO, most of the time, the insight behind the data is far more important than the modeling algorithms to achieve high performance with few exceptions (say computer vision, NLP, etc which really requires A LOT OF data). Even in some large data set, take page rank as an example. The fundamental insight was the popularity of the site would be a great signal for ranking the search result, and random walk would be a great way to approximate the popularity. As a result, Google made a great success in search ranking.

</comment></comment><comment><USER11> Good post! A bunch of mistakes is a bunch of opportunities to improve. It kind of complements Domingos' paper:

[http://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf](http://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf)

</comment><comment><USER3> Also, thank you all for reading the post. I'm the author and I'll be happy to clarify any of the points in the blog~

</comment><comment><USER12> Good list. I am new to Machine Learning with only ~1 year of real work and sometimes I slip and make one of these mistakes.

I have a question on #7. I have not used the co-efficients to mean feature importance but some times get tempted to use them. How do you explain which factors are the most important factors behind some outcome to non-stat people?

<comment><USER8> Some techniques, e.g. random forest, give variable importance indicators for free. If you can test it out, give it a go - don't have to use the random forest as the final model.

<comment><USER10> You can use correlation or the coefficients of a linear model iff the features on the same scale. Another method is to train a model leaving out each feature once, then you see how much accuracy drops.

</comment></comment></comment><comment><USER13> I'm glad #1 is #1. If I had to partition these into two sets, they would be "make sure it works (2-7)" and "make sure your definition of 'works' works (1)."

</comment><comment><USER14> You suggest up/down sampling rare cases. Can you please elaborate on the standard approaches for this kind of problem? For both linear and nonlinear classifiers. Thank you.

<comment><USER3> Great question and my main point is less about up sampling the rare cases but more about the default loss function used in the model training might not directly align with the final business metric (which is the metric practitioners should care more about). As a result, it's important to align the both. For some algorithms, it's easier to incorporate different loss function, while for some others, it might not be the case. Over or under sampling is one fairly generally applicable way to tweak the loss function.

While I'm not an expert of the theory behind sampling, if you do find the need to tweak sampling to align the default loss function and the business metric, I would say doing grid search first, and validate the result with the business insight, e.g. if you find getting the rare cases right is much more important that getting the common cases right, does that align with the business insight?)

</comment></comment><comment><USER15> Is it somehow inspired by Linear Algebra Done Wrong by Treil which itself was probably inspired by Linear Algebra Done Right by Axler ? :)

<comment><USER3> Not really, it was actually more inspired by Statistics Done Wrong.

<comment><USER15> Oh, Ok. Never knew there was a book by that title.

<comment><USER16> It was written by someone in my PhD cohort—it's available for preorder now. [http://www.statisticsdonewrong.com](http://www.statisticsdonewrong.com)</comment></comment></comment></comment>


Business Grads Look Beyond Wall Street - <AUTHOR> http://www.nytimes.com/2009/04/18/business/economy/18grads.html?hp

<comment><USER2> I'm opening a gourmet dessert store this summer. Last week a Harvard MBA student asked me if she could do a free summer internship for me so that she can have something to put on her resume. I'm still really surprised about it - is the market for MBA students really that bad? Well, I'm not going to turn down free labor.

<comment><USER3> _"is the market for MBA students really that bad?"_

It's not the best job market, but I don't think that person is necessarily an indicator of what's being faced by recent or upcoming MBA grads. Among the big benefits of going to a top-tier school like Harvard are things like the recruitment programs and alumni networks, and I haven't heard anything about them being completely tapped out. What grads are facing are fewer options, less favorable positions to choose from and less pay than people graduating in other years.

I'd speculate that she is probably just more interested in working on an attractive and fun project like a gourmet dessert store than going through an intensive recruitment process and entering something like an executive rotation program during the economic downturn. Hell, I know I would be (but that's like all of us here on HN, right?)

</comment></comment><comment><USER4> It's interesting that they chose to focus on undergrad business students rather than MBAs. I would guess that undergrad biz majors are going to be more flexible about career options than MBA students.</comment>


Fin: A Vibrator for Fingers - <AUTHOR> https://www.kickstarter.com/projects/dameproducts/fin-a-vibrator-for-fingers <comment><USER2> Maybe this is a cool product, but why is this on Hacker News?</comment>


Confessions of an Unreal Engine 4 engineering firefighter - <AUTHOR> https://allarsblog.com/2018/03/16/confessions-of-an-unreal-engine-4-engineering-firefighter/ <comment><USER2> I'm sure this article resonated with many engineers, not just from the game industry. What resonated with me the most, was the part about hiring a consultant, only to tell management what their employees have been telling them all along (for a ridiculous hourly rate of course). The simplified executive line of reasoning, why to rather trust an external entity over their own people, goes usually along these lines: "We do not take advice from our employees. We hired them for grunt work and we only expect them to follow orders. What could they possibly know that could benefit our high-level decision making. Afterall we pay them so little".

I consider the case, which the author describes, where the consultant actually talks to engineers, a happy day scenario. I was witness to a fast growing startup hiring a well known global consulting firm to help them set up company structure and processes. The startup was unable to do this on its own because of lack of leadership and unwillingness of the owners to empower their own people. The consulting firm sent over a couple of their junior consultants who consulted their 3-ring binder of best practices for the nearest matching industry category and gave their recommendations, which were followed quite strictly by a newly hired junior management. All without talking to a single engineer.

More often than not, employees are considered a necessary means to an end and treated as such, with the least amount of reward and care for which they are willing to work. Their sense of professional honor, responsibility and guilt is often exploited in an attempt to achieve higher output. Does the company's products or services suffer because of this? Of course, but nobody at the top cares as long as there is a metric that tells a good story. And when not, the lowest ranks are the first to be pruned and restructured.

<comment><USER3> > The simplified executive line of reasoning, why to rather trust an external > entity over their own people, goes usually along these lines: "We do not > take advice from our employees. We hired them for grunt work and we only > expect them to follow orders. What could they possibly know that could > benefit our high-level decision making. Afterall we pay them so little".

It's not always that leadership ignores line-engineers just because they consider them stupid. Even obvious recommendations get tangled into the web of politics and personal favors. Sometimes the 'obvious solution' is also a play to get more power or influence for someone you're opposed to. That factors into how the advice is taken.

Part of the fiction management sells itself is consultants can cut across those organizational boundaries and find the 'right solution'. Sometimes having an 'impartial' voice echoing what others have already said is enough to convince you it's not just someone trying to poach your turf, it's actually good advice.

Further, our tendencies towards tribalism influence this process. We tend not to think of other employees as part of the same group - they are devs, or ops, or product. That builds an 'us vs. them' mentality that's hard to break. Bringing in an outsider tends to unify the group into us (the company/team) vs. the outsider (the consultant). That psychology helps us to justify bitter medicine like our team getting more work (which will help the company).

I tend to have a negative opinion of consultants, but someone pointed this aspect of group psychology to me in the past and it resonated.

<comment><USER4> > Part of the fiction management sells itself is consultants can cut across > those organizational boundaries and find the 'right solution'.

Being a consultant, and knowing multiple others, I feel that not being part of the company "tribes", really allows you to more easily cut across those organizational boundaries you mention.

How many times I've heard of 2 technical divisions complaining about each- other where the main issue is the lack of communication and simply not knowing who to talk to in the other "tribe". Consultants however are part of their own little 'consultant tribe' across company tribe boundaries, who more easily bond together and talk about stuff like that. This means this group is more diverse and has more contacts spread throughout the organization, making them ideal to cut trough the bullshit. You also have the fact that when a company was happy about a consultant, chances are that when they need someone somewhere else, they'll hire the same consultant again, dumping them in a completely different group of people.

Yes this is 100% a social problem, but it's there, and a group of outsiders will address this more efficiently.

</comment></comment></comment><comment><USER5> The amazing thing to me is that now people can make games without a bunch of great engineers. Back in the day when we made Battlezone we had at least four really amazing engineers (one was a Masters in CS from MIT, one wrote early 3d workstation code, UCLA, Cal Tech CS degrees). In those days you needed people like that to just 3D to work in Windows. Direct X helped a lot. Unity and Unreal have made things we couldn't have dreamed of possible.

<comment><USER6> > Unity and Unreal have made things we couldn't have dreamed of possible.

Such as mountains of bloatware/shovelware template games clogging up every single online store and platform.

<comment><USER5> There has always been mountains of books and huge libraries of music being created and we have always managed. Find people you trust to recommend things to you. I recommend Tom Chick at Quarter to Three.

<comment><USER7> I've never understood why there's so much rage about crappy games on steam. I certainly wouldn't have the gall to charge money for a unity tutorial game, but I absolutely love some of the insane games people like zachtronics make. If we want to go back to publishers controlling access, who in their right mind would approve Schenzen IO? There's a lot of crappy products on EBay as well, but that doesn't mean the platform is useless.

<comment><USER8> >I've never understood why there's so much rage about crappy games on steam.

It's because there are _so many_ crappy games on Steam that it makes it all but impossible for indie developers with decent games to be discovered. The perception that Steam is a cesspool of con-artists and incompetents depresses the perceived value of any game on the platform not released by a known publisher, meaning any independent game is more likely to fail merely by being associated with Steam to begin with. Also because the last time the video game market was drowning in mediocrity, it crashed.

I mean... when I was in high school I used to doodle Mario levels on my schoolbook jackets because I was just that kind of nerd, and now I live in the glorious future of Unity and Godot and Game Maker and C++ and SDL2 if I want to be a masochist. It's fantastic that anyone can more or less make something that can at least theoretically be called a "game." But that doesn't mean all of it deserves to be on the open market.

>If we want to go back to publishers controlling access, who in their right mind would approve Schenzen IO?

You're right, if it were up to publishers no one would be making anything but MOBAs and first person shooters and maybe Candy Crush clones. Independent game development allows niche and non-profitable genres to thrive. However, again, it's still a problem that the sheer bulk of garbage on these platforms makes it difficult to _find_ that good content without some kind of gatekeeping.

<comment><USER9> Similarly, it is not because one can play a guitar that they are entitled to turn into musician, or writing something doesn't turn one into a writer.

There is crap in all kinds of artistic work, for some reason devs seem to think they should be special and get everything for free.

<comment><USER8> > Similarly, it is not because one can play a guitar that they are entitled to > turn into musician, or writing something doesn't turn one into a writer.

I disagree.. playing a guitar _does_ make one a musician, and writing _does_ make one a writer. What either is not entitled to is success in the marketplace, but then, no one is, regardless of skill. Once you put your work into the marketplace, the market decides its value, and your value by proxy. But for that to work successfully, the marketplace has to efficiently sort for quality, and one way to enforce quality is having the barriers to entry be sufficiently high. In practice, that doesn't often work because entrants don't want to be sorted efficiently, they want to be sorted to the top to maximize exposure and revenue. It's why SEO exists - to optimize the Googlebot for _you and you alone_ by any means necessary. Unfortunately, Steam also wants to maximize the size of its library and revenue, so it has an incentive to engineer a marketplace that favors quantity over quality.

But even amateurs put in more effort than the developers publishing much of the garbage onto Steam - using the term "developers" loosely. These are incoherent rage games or weekend projects, barely functional tech demos and tutorial games, asset flips, etc. Games that don't even _run._ If the bar for quality on Steam was merely "amateur" then I would be happy, but it isn't. There seems to be no bar, and that makes it bad for everyone, except maybe Valve.

</comment></comment></comment></comment></comment></comment></comment><comment><AUTHOR> FTA, a take on entry/mid/senior level distinctions I haven't heard before:

"If you are the guy asking for help from people below, to your side, and above you, you're probably an entry-level engineer. If you frequently need support from those above you (excluding C-level and executive support, that my friends are a whole new level of hell), there's a good chance you are a mid-level engineer. If you find yourself supporting and being supported by those at your side, you are likely a senior or lead level engineer."

<comment><USER10> I've heard a similar thing but phrased as what frustrates you in you work most. It's a bit more cynical.

Basically: If you're frustrated by your work... probably junior. If you're frustrated by your colleagues... probably mid-level. If you're frustrated by too much management... probably senior. If you're frustrated by too little management... probably lead.

<comment><USER11> I think about it in relation to how much responsibility each person in the team is comfortable taking.

If you're responsible to solve tickets, you're probably junior. If you're responsible for implementing features, mid. If you're responsible for making sure the whole project will work in time for delivery, senior. And if you're responsible for making sure your team can deliver the project on time, lead.

</comment></comment></comment><comment><USER12> "Usually an outstanding problem or issue is already known by your staff, and often they have tried to make you aware of this problem, but usually it gets prioritized into nothingness, or filtered into white noise by your chain of command where no action gets done."

This is the same as being a consultant. You come on site, you listen to everyone and make notes of it, and then you make a presentation and plan for direction.

They pay you way more than their own people, to tell you what your own people are telling you. It's quite crazy.

<comment><USER13> As a consultant, they never change.

<comment><USER14> As an employee happy with his current employer, those who can change will and won't hire consultants in the process.

<comment><USER13> Not that kind of consultant. :) And sort of agreed. Though, those who can change and will, should stop being a problem "soon" anyway.

</comment></comment></comment></comment><comment><USER15> As somebody who writes code for games for a living, I found this article fascinating. Something that was coming up in my mind again and again as I was reading through it is the question of who has the power to affect the necessary changes. That seems to be the crux of a lot of the issues; is the studio leadership wrongminded, or have they put the wrong people at the gate?

The parable of the producer ignoring engineering specialities when assigning tickets seemed especially gregarious. Why was that person unable to learn, even after the engineers raised the issue? Why were they still there? Were they friendly with the higher-ups, or what? Why was there no will to improve the process until external help had to be brought on?

It also reminds me of stories I had heard from inside Microsoft in the pre- Nadella era. Tales of power brokers and entrenched lifers who could make things easy or impossible on a whim. What is the nature of the organisations that allow people like these to take root?

It's funny how small scale engineering problems are rooted in code and large scale engineering problems are rooted in people.

<comment><USER16> I think I'mma have to use this quote somewhere, if permitted.

'It's funny how small scale engineering problems are rooted in code and large scale engineering problems are rooted in people.'

<comment><USER15> Take it!

</comment></comment></comment><comment><USER17> tangentially, the "blueprint spaghetti" link is pretty great:

[https://blueprintsfromhell.tumblr.com/](https://blueprintsfromhell.tumblr.com/)

at a former job i knew a team of devs who built and maintained a framework to help teams of researchers put together pipelines of simulation (often fluid simulation), animation, rendering, etc. This framework had its own blueprinting functionality.

One of the cute features they had was nested blueprints -- e.g. you could define some blueprint, and abstract it behind an interface as its own component, then re-use the component in another blueprint.

So i guess in a "blueprints from hell" scenario that lets you have "fractal blueprints from hell".

edit:

i'm also reminded of Chris Domas' defcon talk "Psychological Warfare in Reverse Engineering", where he sets out to construct binaries that cause despair when someone tries to reverse engineer them -- in particular he asks the question: "could i make a binary that draws a particular picture when someone views the binary's control flow graph in IDA"

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

</comment><comment><USER18> Good article, but I'm not sure who it is targeted at. Companies/teams that do bad things the author recommends against (or don't do good things he recommends) are usually ran by people who either don't care or are _pathologically_ clueless. They're not going to read this. If they do, they are not going to change the right thing. They will instead go to some business conference, listen to overhyped process consultants and force-implement more "agile" techniques that have nothing to do with what actually hurts their productivity.

Maybe, strip out most of the game dev stuff and write a small book? That might help. I don't know why, but books work on managers much better than articles. At least I can _give_ or recommend someone a book without making it seem like an insult. "Hey, I've read this book by an engineer who worked on many large game projects. You should check it out."

<comment><USER16> You're right. I wrote this article knowing this, which is what I tried opening with.

I'm not qualified to write a book however because this article itself is proof my writing skills need work.

Otherwise I'd be able to be more clear.

<comment><USER19> Are you kidding? It was a great article.

<comment><USER20> Agreed - great article. That said, I think most authors of books like the one we're all imagining have support (in the form of friends and colleagues) in addition to an editor. I don't want to pressure you to write a book, but please don't let your own criticism of your writing abilities get in the way of a book.

</comment></comment></comment></comment><comment><USER21> > Overtaxing your engineering effort is a surefire way to end up with hard-to- > maintain work. Unless you are developing a throwaway prototype, hard-to- > maintain work is one of the fastest ways to cause engineering fatigue

Sadly this was still all par-for-the-course back when I was in the industry and all my old contacts still affirm that this is the case today across most studios. Easier to burn people, ship something and then re-hire/train a new batch.

It's a shame the incentives of development aren't aligned with reasonable employment, the industry would be a lot better for it.

</comment><comment><USER22> > They immediately asked who was giving up this information and wanted to > crack down on this perceived insubordination, rather than trying to address > the issue. I was then dismissed for not specifying names, and my services > were no longer required.

Wow! That sounds terrible.

<comment><USER23> This is horribly routine in all hierarchical organisations across the world; those that manage to escape from it usually become runaway successes.

</comment></comment><comment><USER24> This was a great article and I recognize most of the issues described but I feel it doesn't criticise leadership enough (even though it does somewhat). This is the biggest failure in the industry. A lot of the best people are too busy putting in the hard work to be put in leadership roles due to mismanagement from the current leadership. Why is crunch always a thing in games dev? It's poor planning that endures for years and years.

</comment><comment><USER25> Great article that reminded me of John Cleese's wonderful talk about creativity.

> So, here's how to stamp out creativity in the rest of the organization and > get a bit of respect going.

> One: Allow subordinates no humour, it threatens your self-importance and > especially your omniscience. Treat all humour as frivolous or subversive.

> Because subversive is, of course, what humour will be in your setup, as it's > the only way that people can express their opposition, since (if they > express it openly) you're down on them like a ton of bricks.

> So let's get this clear: blame humour for the resistance that your way of > working creates. Then you don't have to blame your way of working. This is > important. And I mean that solemnly. Your dignity is no laughing matter.

> Second: keeping ourselves feeling irreplaceable involves cutting everybody > else down to size, so don't miss an opportunity to undermine your employees' > confidence.

> A perfect opportunity comes when you're reviewing work that they've done. > Use your authority to zero in immediately on all the things you can find > wrong. Never never balance the negatives with positives, only criticize, > just as your school teachers did.

> Always remember: praise makes people uppity.

> Third: Demand that people should always be actively doing things. If you > catch anyone pondering, accuse them of laziness and/or indecision. This is > to starve employees of thinking time because that leads to creativity and > insurrection. So demand urgency at all times, use lots of fighting talk and > war analogies, and establish a permanent atmosphere of stress, of breathless > anxiety, and crisis.

> In a phrase: keep that mode closed.

> In this way we no-nonsense types can be sure that the tiny, tiny, > microscopic quantity of creativity in our organization will all be ours!

> But! Let your vigilance slip for one moment, and you could find yourself > surrounded by happy, enthusiastic, and creative people whom you might never > be able to completely control ever again!

> So be careful.

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

[https://www.brainpickings.org/2012/04/12/john-cleese-on- crea...](https://www.brainpickings.org/2012/04/12/john-cleese-on- creativity-1991/)

</comment><comment><USER26> Good article and I agree with most points, however I am not sure I like the articles tone. Maybe I am a precious butterfly but it was a bit "all-knowing", with too much emphasis on how you save the day. I am sure your phone will start ringing after publications too :) Thanks anyway though, I read it :)

</comment><comment><USER27> I don't understand why Unreal Engine 4 is in the title. It feels click-baity since you're expecting to read something about the "dark side" of UE4 or something.

<comment><USER28> First sentence of the article: "I have been working professionally with Unreal Engine for over 9 years."

Second paragraph: "If a game company in Los Angeles is having an Unreal Engine 4 problem that no one can solve, I usually end up getting that call. I am writing this article to explain why I get that call, how one would prevent the need for that call, and what I normally do after getting that call."

So while a lot of these things are pretty useful strategies for _any_ large project (we had asset naming conventions for parts of the Flash cartoons I was working on around the turn of the century), they are all common problems he's encountered in his career of being That Guy You Call When Your Big Unreal Project Is Broken.

<comment><USER27> Yea I read the article >.>

I still read it as him trying to suggest what better practices you can adopt specifically pertaining to UE4 that would "prevent the need for that call"

<comment><USER29> Have someone who has a clue how to design and integrate complex systems from a high level on your team. Seems to be the point of the whole article.

</comment></comment></comment></comment><comment><USER30> Wow, this hits way too close to home. On the last few projects I've been hired as a lead Unity Dev, my main job was to untangle the mess left by previous maintainers and finally put some good engineering practices in place. Project I'm working on right on had it's multiplayer "just added" on top of single player gameplay mechanics, and now my team finds itself in the middle of the complete architectural rewrite instead of making any new features.

</comment><comment><USER31> Most of this just sounds like standard software engineering best-practices, though from what I've gathered it seems like standard SE challenges get multiplied five-fold in game development. It takes an engineer braver than I to work at a triple-A game studio.

</comment><comment><USER32> About this:

" _responsibilities than they can handle, and development suffers from this person being fatigued, or worse, leaving altogether. Neither the engineer nor team can grow because of this, as new features or changes get increasingly more resource-demanding to implement_ "

This is said about mid-level engineers who burn out, but I think it happens to senior level engineers as well.

</comment><comment><USER33> One of the most common things I've seen over and over is under powered hardware. It's so cheap in comparison but since it's easy for an accountant to total compared to lost time it's very frequently done. It's not a solve all but in so many cases it would make a significant difference ignoring all else.

</comment><comment><USER34> "If you're reading this as an engineer (but this may apply to many fields), or as someone looking to grow an engineer, the most important thing you can do is identify current issues and weaknesses."

I learned a very different things, but thank you nonetheless: there _are_ companies that care about these things! I just got a full-time job that is basically like this, a hell on Earth (I've been freelancing before). So the lesson I learned is, I should be looking for a new job :)

My coworker (we are 2 in the team) is already jumping ship even when he joined later than me.

</comment><comment><USER35> Since I've lived, almost to the letter, a few times many of the scenarios detailed here, I cannot upvote more this post.

My question now is: is there any company mid-big size not guilty of those sins? Does it even exist or it is an utopia wished but not achievable? (just asking)

</comment><comment><USER36> _When I got the call to fix this dilemma literally a couple of weeks before release, the simple act of cleaning up the source control server, and purging these unneeded cache files from source control, fixed this audio issue that was plaguing them for months and had costed the company tons of money and time._

This sort of thing drives me insane (or at least used to; my current colleagues, from junior to senior, are all actually pretty good). This is something that everyone knows, just by looking at it, is a bad thing. Everyone who saw this must have known it wasn't a great idea, even if they didn't know why. Even without being able to elucidate why, everyone (should) get the feeling that having these things in the repository is asking for trouble; I'd expect a junior to have at least a bad feeling about it, and a senior to be able to specify what kind of problems it could cause. I don't know about the exact circumstances, of course, but it's even surprising that nobody found this problem while they were investigating. I've certainly gone as far as "are we definitely using the exact same binary files on the different systems?" when chasing odd problems that only manifest on some installations and not others, so what went so wrong that nobody got that far in their debugging?

So unless the company in question had by chance a room full of people with this particular massive blind spot, people saw this happening and they knew it was a bad idea and they didn't do anything about it. Culture failure. I don't know why. Maybe they were afraid to mention bad things because pointing out possible problems is seen as not being a team player. Maybe they were just so sick of it all they didn't care anymore. Maybe there were a couple of forcefully strong people in charge of the repository who saw any question as a personal attack and people were just sick of dealing with the egotistical prima donnas. Maybe the process for doing anything about it was laughable painful and went through someone who would shoot it down on the grounds that we're so busy firefighting things that are broken and you want to waste time tinkering with something that looks fine to me?

If Allar is reading, could you say a few words about this? How many times do you get called in to fix something that could have been averted with a decent programming culture, even if the specific technical chops weren't there? We've all seen teams with good culture deliver software that they really didn't know how to build when they started through good culture, and we've all seen teams of people who all know what they're doing deliver a flaming wreck because the culture was a disaster. How often are you called in to deal with something that the existing team really couldn't have foreseen without some particular piece of specific knowledge or experience, and how often is it something that they could have dealt with months ago if they had just been allowed and guided to work sensibly and professionally?

<comment><USER16> Literally no engineers were allocated to the issue and majority of the project.

20% of the time I work on novel unforseeable issues. R&D and future tech stuff.

80% of the time its culture, professionalism, and generally "are you fucking serious" issues.

I've dealt with literally every situation you've described however. Just because this particular reason was that there were no engineers, you could swap in any other situation and still have a true story.

</comment></comment><comment><USER37> Url changed from [https://80.lv/articles/confessions-of-an-unreal- engine-4-eng...](https://80.lv/articles/confessions-of-an-unreal- engine-4-engineering-firefighter/), which points to this.</comment>


Oracle Deletes CSO's Screed Against Hackers Who Report Bugs - <AUTHOR> https://www.wired.com/2015/08/oracle-deletes-csos-screed-hackers-report-bugs/ <comment><USER2> Anyone who has ever had to use any of Oracle's products would not be surprised, in the slightest, that a person who thinks like is a leader in their corporate culture. Even without the Android lawsuit, I always go the feeling that this is the type of person was running that company.

Edit: It's customary that if the article dates back to a previous year, to put that year in parenthesis at the end of the post title.</comment>


Why Are Most of Football's Sideline Reporters Women? - <AUTHOR> http://freakonomics.blogs.nytimes.com/2010/03/15/why-are-most-of-footballs-sideline-reporters-women/

<comment><USER2> Because most of the viewers are men, and men like looking at women?</comment>


Antarctic Snow Cruiser - <AUTHOR> https://en.wikipedia.org/wiki/Antarctic_Snow_Cruiser <comment><USER2> Check out the "Tucker Sno-Cat" that was used by New Zealander and British explorers in early (1950s) Antarctic expeditions, several of the historic vehicles are in the Canterbury (Christchurch) museum.

[1] [http://www.spiritofmawson.com/objects/tucker-sno-cat- antarct...](http://www.spiritofmawson.com/objects/tucker-sno-cat-antarctica/)

[2] [http://forrestmccarthy.blogspot.com/2016/03/commonwealth- tra...](http://forrestmccarthy.blogspot.com/2016/03/commonwealth-trans- antarctic-expedition.html)

And some amazing video footage here (sorry about the music): [https://youtu.be/NA4pUalceVE](https://youtu.be/NA4pUalceVE)

<comment><USER3> Tucker Sno-Cat is still in business too, still making snow crawlers. There's something to be said about businesses that don't try to diversify, they just keep making one line of good product.

</comment></comment><comment><USER4> I wonder what prompted them to use smooth (treadless) tires?

Large and soft tires are certainly good on snow, but smooth?

Maybe that actually works better on ice?

<comment><USER5> The threads will be packed with snow in no time.

<comment><USER6> Siping is an important part of snow tire tread.

<comment><USER7> Siping was cutting edge technology at that time. From [https://en.wikipedia.org/wiki/Siping_(rubber)](https://en.wikipedia.org/wiki/Siping_\(rubber\))

> [...] _It was his son, Harry E. Sipe, who popularised the use of sipes in > the USA for the new low-pressure balloon tires around 1939._

> _The process was not applied to vehicle tires on a large scale until the > 1950s, when superior tread compounds were developed that could stand up to > the siping process._ [...]

</comment></comment></comment></comment><comment><USER8> I wonder if this was inspiration for the design of transport vehicle in Aliens.

[https://en.wikipedia.org/wiki/Aliens_(film)](https://en.wikipedia.org/wiki/Aliens_\(film\))

<comment><USER9> I tended to imagine that was inspired by larger 'pushback' vehicles at airports.

eg. [https://www.terbergdts.co.uk/globalassets/special- vehicles-s...](https://www.terbergdts.co.uk/globalassets/special-vehicles- subsidiaries/terberg-dts/products-media- blocks-659-x-439/aviation/schopfproducts.jpg) \- looks bad-ass!

<comment><USER10> The Wikipedia article says that it was an airport vehicle.

</comment></comment></comment><comment><USER11> There's a good video on the topic here: [https://www.youtube.com/watch?v=zR0M7KjnJTE](https://www.youtube.com/watch?v=zR0M7KjnJTE)

<comment> matt-attack Thanks, that video is way more informative that the wikipedia article.

</comment></comment><comment><USER12> > combination kitchen/darkroom

As in photographic darkroom ?

edit: yes, [https://books.google.de/books?id=vNsDAAAAMBAJ&pg=PA494&lpg=P...](https://books.google.de/books?id=vNsDAAAAMBAJ&pg=PA494&lpg=PA494&dq=snow+cruiser+%22darkroom%22&source=bl&ots=3nXHKPOtuI&sig=ACfU3U1wUJi05_JOKlS8LZ_0ifNXksqKbA&hl=en&sa=X&ved=2ahUKEwiT_aCPv43oAhWXgVwKHYekB5YQ6AEwD3oECE4QAQ#v=onepage&q=darkroom&f=false)

<comment><USER13> We forget, with the advent of digital photography, how pivotal access to a darkroom used to be for all sorts of endeavours.

Facility for developing Black and White photos is not very complicated. Usually you just need an enlarger, some chemical tanks and a room with no light. If you want to do slides (rather than prints), and use the right film, it's even simpler as you just need to develop the film.

<comment><USER12> Yeah I'm about to setup a darkroom in my bathroom. I already develop myself but I want to get into printing. Doing that on the go during an Antarctica exploration seems like a pain in the ass though.

It's simpler with slides because you skip the print process, but developing slide isn't nearly as easy as b&w. It's 10+ steps process [0] and temp is critical vs 3 steps for b&w. You can also make slides from b&w film if you're adventurous: [https://www.bhphotovideo.com/explora/photography/tips-and- so...](https://www.bhphotovideo.com/explora/photography/tips-and-solutions/bw- slides-from-tri-x-you-betcha)

[0] [https://en.wikipedia.org/wiki/E-6_process](https://en.wikipedia.org/wiki/E-6_process)

</comment></comment></comment><comment><USER14> LeTourneau Land Train concept seems to use large tires as well. And is even more insane (in a good way) [https://www.hemmings.com/blog/2009/11/19/54-wheel-drive- the-...](https://www.hemmings.com/blog/2009/11/19/54-wheel-drive-the- letourneau-electric-arctic-land-trains-that-put-australian-road-trains-to- shame/)

<comment><USER15> > By the way, recognize those tires? Bob Chandler bought four of them from a > Seattle junkyard and fitted them to Bigfoot 4 to capture the title of > Tallest Monster Truck.

From what I have read elsewhere this was where the monster truck idea started.

</comment></comment><comment><USER16> They could have waited a few months for the winter and tested it on the snow.

</comment><comment><USER17> I don't think the Goodyear logo has changed a bit:

\- [https://en.wikipedia.org/wiki/File:Snow_cruiser_1.jpg](https://en.wikipedia.org/wiki/File:Snow_cruiser_1.jpg)

\- [https://corporate.goodyear.com/en- US/about/history/wingfoot-...](https://corporate.goodyear.com/en- US/about/history/wingfoot-origin.html)

That seems somewhat rare these days.

</comment><comment><USER18> Scientists measured cosmic rays in a 1930's, deco designed, self-sufficient, artic snow cruiser with an airplane on top! How cool is that!

</comment><comment><USER14> Here seems to be another article with much better pictures about this beast [https://www.theatlantic.com/photo/2015/06/the-antarctic- snow...](https://www.theatlantic.com/photo/2015/06/the-antarctic-snow- cruiser/396617/)

<comment><USER19> Not for me, subscription only site.

<comment><USER20> 4 free articles per month that they track in a cookie in your browser. Surprisingly common tactic these days... Good thing there's a Firefox extension keeping track of which sites do that and declining the cookies.

</comment></comment></comment><comment><USER21> How come a 11L Diesel engine only made 300HP? Was the engine that ineficient at the time, compared to a modern engine?

<comment><USER22> Horsepower (which has many definitions) is the torque output multiplied by the engine RPM (divided by some number to make it equal to the strength of an average horse). Since these engines operate in a relatively low RPM range, the HP number is not that high. Most countries switched to using kilowatts as a measure of vehicle engine power.

Also remember that these are diesel engines from the late 1930's. This was before the development of 2-stroke (blown) or even turbocharged diesel engines. These engines were a lot less powerful compared to modern diesel engines.

<comment><USER23> Kilowatts are also a multiplication of RPM and torque - one horsepower is 0.7457 kW, no RPM factor required. High-redline gas engines compared to diesels will have more kilowatts than torque regardless of which system of measurement you use.

You need low-speed torque with low fuel consumption to work at relatively high power output efficiently for long durations.

<comment><USER22> That is correct. kW is used the same way as HP, except that kW is better standardized.

There are many definitions of how much power a horse has, and just one definition of the watt. For example: the 'mechanical' HP (commonly used in the US) is the equivalent of 0.7457kW, but the 'metric' HP (commonly used in Europe) is 0.7345kW [0].

[0] [https://en.wikipedia.org/wiki/Horsepower#Definitions](https://en.wikipedia.org/wiki/Horsepower#Definitions)

<comment><USER24> They are both units of power the fact that they have different numbers does not have bearing on the question asked, power is power, torque is torque regardless of units.

</comment></comment></comment></comment></comment><comment><USER25> such a huge feat of engineering and then they put smooth tires on it! humans are amazing.

what are some other examples of inexplicably bad engineering decisions on otherwise well built machines?

the front wheel drive nissan lemans car comes to mind

</comment><comment><USER26> First ever application of the diesel-electric drivetrain setup on a 4-wheel land vehicle, now commonly used on those monster mining trucks. Neat.

<comment><USER27> Diesel-electric drivetrains were planned earlier for some heavy tank designs - e.g. TOG2 and I think one of the Porsche designs.

</comment></comment><comment><USER28> I wonder why tires were used rather than a continuous track. Perhaps because repair of continuous track would be harder than tire replacement?

<comment><USER29> From Wikipedia:

> Wheels and tires retracted into housings where they were heated by engine > exhaust gases. This was to prevent low-temperature cracking of the natural > rubber compound. Long front and rear overhangs on the body were to assist > with crossing crevasses up to 15 feet (4.6 m) wide. The front wheels were to > be retracted so the front could be pushed across the crevasse. The front > wheels were then to be extended (and the rear wheels retracted) to pull the > vehicle the rest of the way across. This process required a complicated, > 20-step procedure.

<comment><USER28> continuous tracks can be retracted too though, and they can be made without rubber.

</comment></comment></comment><comment><USER30> Here's a nice video summing up the story

[https://youtu.be/zR0M7KjnJTE](https://youtu.be/zR0M7KjnJTE)

</comment><comment><USER31> Snowmobile was patented in 1937, would have a been a much better choice than threadless wheels.

</comment><comment><USER32> Should have used Agile development to iterate on an MVP snow cruiser. Let's have a standup to talk about any blocker re: the wheels getting stuck and [spike] a quick solution.

</comment><comment><USER33> "75,000 lbs" .... whoa.</comment>


Ask HN: Open source vs. proprietary technology for our project? - <AUTHOR>

Hey guys,
Myself and two partners are beginning work on a new project, but we've hit our first obstacle early on; what language/framework are we doing it in? I am strongly leaning towards PHP, one is strongly pushing for ASP.net, and one is impartial.
Does anyone have any ideas why using ASP instead of an open source technology like PHP would be a good and/or bad options? All developers on the team have experience with PHP and ASP.net. <comment><USER2> Wrong question. Build it in what you can build it fastest in. You need concept validation before anything else, scale and cost don't matter if the idea fails to get traction.

And incidentally, there is open source asp.net, Mono, which you can run on linux.

</comment><comment><USER3> Two things:

a) PHP has multiple platform support (ie. Windows, OSX, FreeBSD, Linux) so you can more easily transition when necessary and

b) the OS licenses required when you scale out horizontally are cheap (free!) for Linux, FreeBSD, which are the de-facto PHP platforms. (ie. think multiple database servers with multiple web servers with multiple load balancers, etc.)

Assuming you see yourself succeeding with your projects, always think 2 or 3 years down the road to what your system uptime & maintenance costs are going to be.

As an aside - when it comes to hiring developers, I'm _guessing_ that PHP developers are cheaper and more plentiful as well.

</comment><comment><USER4> Whichever one you have to Google the least is the best solution. Proprietary- or-not at the web server level is not even worth thinking about - the only part of MS you have to be cautious about is if you accidentally an SQL Server farm and that's easy to avoid in this day and age.

If you go with .NET then make sure you check out BizSpark, you can get free Visual Studio, Windows and everything else they make for 3 years:

<http://www.microsoft.com/bizspark>

</comment><comment><USER5> Whatever you do, avoid licensing costs. Licensing is Microsoft's core business, so...</comment>


J.P. Morgan CEO Answers a Girl Who Wants To Marry a Rich Guy - <AUTHOR> http://inspirationalstories.quora.com/A-reply-from-CEO-of-J-P-Morgan-to-a-pretty-girl-seeking-a-rich-husband?srid=XV8W&share=1

<comment><USER2> This isn't from Dimon, it's copied from a Craigslist best-of(with the JP Morgan parts added in). It even has a Snopes entry.

<http://www.snopes.com/love/dating/golddigger.asp></comment>


Why should I buy your app? - <AUTHOR> http://staceyclermont.com/why-should-i-buy-app/

<comment><AUTHOR> It's refreshing to get the perspective of why someone would buy an app or not, from someone that doesn't write software for a living. I think it's all too easy to lose perspective. I wish there were more articles like this one.</comment>


Sometimes eight screens are better than one - <AUTHOR> http://google-latlong.blogspot.com/2009/12/sometimes-eight-screens-are-better-than.html

<comment><USER2> Eight screens would be better than four. Am I missing something or is the author unable to count properly?</comment>


Google Pack: Chrome Replaces Firefox in Google Pack's Default Browser Choice - <AUTHOR> http://lifehacker.com/5108733/chrome-replaces-firefox-in-google-packs-default-browser-choice <comment><USER2> Anyone else have NoScript alert on this page to a potential XSS condition?

<comment><USER2> Guess this explains it. Sigh. Now I've admitted to using Facebook. But you see, it was this girl, and she wanted to "friend" me...

Shoulda known better.

[http://lifehacker.com/5109085/log-into-lifehacker-using- face...](http://lifehacker.com/5109085/log-into-lifehacker-using-facebook- connect?t=9448521#viewcomments)

</comment></comment><comment><USER3> How would you like to be on the Google Pack team right now? What a lame assignment.</comment>


HBase Tutorial: Tips for Low Memory EC2 Stability - <AUTHOR> http://dev.hubspot.com/blog/hbase-tutorial-5-tips-for-low-memory-ec2-stability?utm_campaign=hbase&utm_medium=hackernews&utm_source=social

<comment><USER2> How much of the c3.xlarge memory should be reserved for file system caching?

<comment><AUTHOR> The c1.xlarge referenced in the article, which has more disk than c3.xlarge, really doesn't have room for OS cache unfortunately. You can try experimenting with lowering heap, to leave more for the OS, but we found that HBase needed all we could give it or risk OOM.

I haven't used c3.xlarge in production, because it has so much less disk. But for that reason you could probably get away with less heap in the RS, leaving more for the OS. However, keep in mind that the HBase block cache is optimized for HBase use case, whereas OS cache is not. There have been some profiles done, and block cache usually performs better -- [http://hadoop- hbase.blogspot.com/2012/12/hbase-profiling.htm...](http://hadoop- hbase.blogspot.com/2012/12/hbase-profiling.html) for example. So I would value that over OS cache on a low memory system.

The ideal, in my opinion is i2.4xlarge. You can give 25GB heap, which is manageable with java7's G1 GC, giving plenty of block cache, and still have 100GB to split between the DataNode and OS cache, or anything else you want to run. I'll cover that in another post.</comment></comment>