Ask HN: How do I become a consultant? - <AUTHOR>

First a little background. I'm a developer working for a near-profitable startup. I'm a high level employee and after building out our initial platform I moved on to recruit a team of developers to scale the business. But I'm not a founder and it is time to move on.
Which brings me to HN.
I think most businesses have a very particular need that I could help meet as a consultant, but I'm unsure how to get started. I'll call the need "data liberation".
A recent project at work showed me the value of this idea. After being given a broad mandate to consolidate some reports, I chose to spend some time trying to make the reports actually "good". That is to say fast, fast, fast, and searchable. I looked at options such as SSRS but ended up going with a custom built solution. In short, I channeled my inner Google and did everything I could to make the reporting app provide instant results with very elegant search interface.
Everyone was blown away and the four primary analysts reported saving a combined 10 hours a day over their old methods. One of the higher ups came out and asked me if I had opened up some secret high speed connection to the database. Although flattering, it was just good software design.
And then it hit me, I like this type of work. I can do this type of work. And I think I'm good at it.
This couldn't be a software play. Not only do I not own the code, but it is too specific to the company. But that specific nature is what makes it good. Solutions from SAS, Cognos, and Microsoft already fill this space and they are flawed for one simple reason: too generic. In order to really liberate a company's data I believe you need a very tailored interface that can make using your data feel like using Gmail or Craigslist. It is all there, easy to find, and only a few key strokes or clicks away. And with the power of data warehouses, open source software, and a JavaScript fronted I believe you can make a custom application cheaper than buying the larger generic tools.
So, how would someone even go about providing a service like this? More over:

    * Where should I look for my first client?
    * Would I have to link up with an existing consulting firm or can individuals find success in this space?
    * Is this even a problem that businesses acknowledge?
    * Do you have similar experience doing or hiring out this kind of work?
 Any thoughts or feedback would be appreciated. <comment><USER2> Honest to god answer? I think this would be hard to sell to most companies as a consultancy.

Rarely will you get a broad enough mandate to actually pull it off (based on your description). The other problem is entirely custom solutions put companies off because they then have to rely on your for support (one lucrative area that I do consultancy is supporting such programs for companies silly enough to go that route :) costs 'em a fortune). A custom solution sounds expensive from a companies perspective; both in cost but also in development time.

But most importantly the concept of "data liberation" and custom built databases are just not really on the commercial radar at the moment. Selling it to them could be pretty time consuming. To give you an example Im currently working with a company that are doing some pretty cool things - they've asked me to work on expanding their web app and database. It's a total mess and I have suggested a complete redesign which will cost about the same and be a lot easier for the both of us; they are resisting like hell...

(this is purely my opinion ofc, YMMV)

Not to put you off; but it is worth considering it from this perspective now rather than later. To answer your questions:

 _Where should I look for my first client?_

People you know. I started contracting through a friend who, via religious connections, had a lot of eager clients/friends with work. However based on your description this is probably a very hard market to sell to.

 _Would I have to link up with an existing consulting firm or can individuals find success in this space?_

Depends how much success you want - but I would say no. The resources and tools (legal templates, time tracking, invoicing) are now freely available on the web with a little looking. The only real need you may have is getting a foot in the door with large corps (which strike me as your target market).

 _Is this even a problem that businesses acknowledge?_

See above. I suspect you will have to work pretty hard to sell this as a concept - at least initially.

<comment><AUTHOR> Good thoughts. To answer your main thoughts, maintaining custom reports on a generic platform is itself a major cost. I agree I'd love the repeat business but I think my approach is dead simple enough that I could easily hand it off to existing tech talent within a company.

My main thought is that rarely can a company pull either their business or tech people off of "working in" the company to "work on" the company for a few weeks to improve their reporting.

<comment><USER2> I can't disagree with your thoughts; to be honest it could be you occupy a specific but useful niche (just based on language; reporting, data liberation, etc.) but it is hard to say for sure on generalities.

I actually have an anecdote about reporting in a piece of software we use. It's a highly customized database which then lets you design reports using Microsoft Report Server. Honestly, it's, really, a complete nightmare to use. But is it cost effective to get a consultant in to make it like, say, Gmail? That would be a dream (and if I had the decision you'd be at work on it tomorrow morning :)) but the truth is that your additions would mean re- auditing the whole thing, hiring other consultants to ensure it met data standards, retrain staff, etc.

Essentially what I am saying is that while the trade off of your cost vs. the man-hours saved is probably a net gain. When you get into a largish company lots of additional costs come into effect.

In addition (and this is probably a more important factor) habit breeds contempt; or, rather, if I was using this DB for the first time today I would hate it. But after 2 years it doesn't bother me any more.

If you came to us with a knowledge of the software, our requirements and a proposal of how to beat it then that would probably be considered - making a pitch like that can be hard though (because how do you know what we use and how). Something with before/after figures dressed up in the kind of language managers like.

Turning up with a "vague" (If you follow me) proposal to liberate databases is nice, but unlikely to hook anyone in the few minutes pitch window.

Again; not to put you off. But you may well need to use a different approach to "normal" consultants to get companies involved (I really wanted to give you a suggestion here but I am struggling, sorry).

<comment><AUTHOR> Depressing but true.

My experience is that a company would rather assemble a team of low level business people to power through raw data or cobbled together observations for weeks rather than pull a developer off of doing CSS tweaks on the company's about page to actually solve the problem once in for all.

Using good tools can be a religious experience and make a company much leaner, meaner, and effective. However building good tools is high risk and rarely something company's want to work on (hence the problem with enterprise software in general).

</comment></comment></comment></comment><comment><USER3> I've done this kind of work, and my first thought is that you're seriously underestimating the difficulty in getting data consolidated in one place at most companies. The barriers aren't technical, they are things like sprawling poorly designed databases, critical information found in disparate systems, and having to work with uncooperative DBAs who want to maintain their private empires. (You may also have smaller data volumes. That definitely helps performance!)

Your experience is in a young startup which hasn't accumulated layers of legacy cruft, with a reasonable schema, where you understand the data model, and you have good relations with key players you need to cooperate with. As a result you encountered none of the common problems that are endemic in more established companies.

I say this as warning, not discouragement. As you pursue this course, be warned that you will encounter those problems and they will take more time than you think. Be prepared for that, don't over promise, and when you arrive at a company pay attention to those possible roadblocks so that they don't catch you by surprise. Because forewarned is fore armed.

<comment><AUTHOR> Warning and cold hard reality I'm afraid. Still would be awesome to at least give it a try and see what I learn.

</comment></comment><comment><USER4> I think about making a similar move all the time - every company out there has bits of data in different systems that need to be pulled together without a multi-million $$ business intelligence effort.

If I was making a change in this direction, here is what I would look for:

1 - contract job listings or small consulting firms that do data warehousing, ETL dev, and reporting. 2 - Mid-size companies in a specific industry that need this type of custom reporting. Financial services companies are immediate targets.

One caveat - my personal search has indicated that many companies are tightly (very tightly) bound to using a report solution from a big vendor (Sas, Cognos, MS, or Microstrateg) and will probably NOT deviate from that platform. These types of places view reports using a specific provider as a _very good thing_ seeing how they can hire report devs with that exact skillset when they need new reports or additional data sources added in.

This vendor tie-in extends into ETL tools (eg, you'll see lots of job requests for Informatica or AbInitio skills)

<comment><AUTHOR> Yeah, I think you've hit the nail on the head here. I firmly believe a good platform could be custom built in a short amount of time and allow the business to realize the value of their data months or even years earlier than would happen going the route of a big vendor's solutions...however the bureaucracy within a large organization would always red light such an effort. To put it another way, no one ever get fired for using SAS.

</comment></comment><comment><USER5> My friend and former colleague Steve Friedl has something to say on the subject of becoming a consultant.

<http://unixwiz.net/techtips/be-consultant.html>

<comment><AUTHOR> Very good read. Thank you.

</comment></comment><comment><USER6> Look for customers posting work on the underlying platforms you'd build your interface on top of (e.g. SAS, Cognos, etc.). I'd suggest being willing to take work related to, but potentially outside of your immediate interest in improved interfaces. Otherwise as many people are alluding you will have a very hard time finding work. The benefit of this is that you will learn a ton more about what customers want beyond what you're already imagining _and_ establish credibility with them.

I started consulting about 6 months ago. I was very picky about which customers I took on. The ones I did turned out to be amazing sources of problems that could be whole product categories. Now I am getting ready to build my first product and I feel very confident I have my first sale lined up.

<comment><AUTHOR> Awesome!

</comment></comment><comment><USER7> The two biggest helpers are networking and past-endorsements, both of which can be helped by sites like LinkedIn.

Your quote about saving 10 hours a day - try and get that as a formalised written recomendation, and do so for all future clients as well.

Also encourage your current company (assuming they aren't pissed at your decision to leave) as well as future clients to recomend you to business partners that they think you might be of use to you - the majority of the consultancy work I've done (albeit in Marketing rather than IT) has been through word-of-mouth recommendations.

<comment><AUTHOR> That's true. I'll try and nail down that quote if/when I decide to leave.

</comment></comment><comment><USER8> Start advertising yourself as a consultant, get some business cards, go to conferences, reach out to people you've worked with in the past, network! If all else fails, there are always craigslist gigs.

I would avoid consulting firms, as in my experience employees of consulting firms generally get the shaft. Especially if you're new to the game and don't realize that clients are paying the firm 250$/hr for your time while they turn around and pay you 40$/hr. You are much better off as a freelancer if you want to get a decent hourly rate.

<comment><USER9> _I would avoid consulting firms_

I would not set that as a hard fast rule, if a firm can get you your rate, then by all means use them. I have a network of firms that use me and all pay my rate. They know not to even bother if it is not at my rate. The thing is too, they know my reputation as a top caliber guy in my area and they call me in when they have a discerning client that is looking for a solutions guy. Sure a lot of firms are looking for someone who will take 40hr and that they can charge 250hr for, but almost all of them keep a stable of ringers that they can call on when they need them. What they charge their client is of no relevance to me. I have my rate and if they pay it then I could care less. To discount these firms is to cut out a massive network of well connected people that can get you work with little to no effort on your part. You just have to be very clear that you rate is non-negotiable.

</comment></comment><comment><USER10> Your first client is your current employer.

Don't use an "existing consulting firm", they take half the money for providing contacts. Find your own contacts.

All your contacts will be personal. Before you quit, find and contact them from your employer's customer/vendor/peer space.

</comment><comment><USER11> I think you should consider getting into QlikView development. I can't talk about my personal experience, but suffice it to say it is growing like wildfire and the idea is very similar to what you're describing.

I think it would be hard to get into this field with completely custom built apps, because maintenance will kill you in the long run.

<comment><USER12> Looks interesting. Demos at <http://www.qlikview.com/us/explore/experience>

</comment></comment><comment><USER13> "I think most businesses have a very particular need that I could help meet as a consultant..."

Why do you think this?

Do you know of the companies that have this need? If so, they're the first on your list for you to network into.

Promote yourself: @corin_29 is right. Get LinkedIn endorsements but more than that, consider starting a blog and putting advice on there others can use. If people find and read it and think it's useful, you have a new vehicle to tell people you're available.

<comment><USER6> To extend on the idea of starting a blog, you might actually try a minimum viable product type approach to this. Don't just build a blog, build a product page for it, put a price on it, and have a buy button. The buy button just says "This product is still in beta, but if you'd like to be on our beta list click here."

</comment></comment><comment><USER14> I would ask for help from my current employer.

This, of course, requires you to be completely open and honest about your desires and that they're not jerks.

They already think you're a superstar, so it really won't be that much of a surprise when you say something like, "I had so much fun 'liberating our data' that I'd like to start my own service business doing the same thing for others."

Smart business people like helping others, especially helping others get started. They seem so sense that the karma will eventually come back to them (and I believe they're right). They also understand (even better than you) the business benefits of your work and can really help you focus your new business.

Ask them (starting with the top person, of course) for guidance on how to get started. You may be surprised how much you learn from them and how willing they are to help. You may think you know how much your work has helped them, but I bet they have more to share that you don't already know.

They probably can be the source for great leads, their vendors, their customers, other companies in the boss's CEO or Tech circle, golf buddies, who knows. For example, if your owner/president/CEO has an associate who would benefit from your services, _everyone_ wins when he recommends you.

As long as they don't feel their core business threatened by your service business (helping their competitors), your own employer may be the best source for ideas and leads to starting your own service business. Give it a shot.

<comment><AUTHOR> Yeah, that is a difficult cat to let out of the bag. I'm high enough in the company that voicing that I think my personal success is going to be found elsewhere is going to be a hard break no matter what. That said, a few weeks later I could probably get some endorsements and maybe recommendations but for now my skills are a competitive advantage (if only because I'm the only one who's actually done this particular work up until now) and they wouldn't be inclined to help anyone else secure them (I think).

</comment></comment><comment><USER15> <http://unixwiz.net/techtips/be-consultant.html>

</comment><comment><USER16> Why not do a saas product that includes consulting integration?</comment>


DailyBooth.com builds community through photos - <AUTHOR> http://www.latimes.com/business/la-fi-dailybooth-20100704,0,2881369,full.story

<comment><USER2> Congrats guys.

Maybe somebody in the f^&$ing Visa office will take note and help @jon get over here.</comment>


Draft your code - <AUTHOR> http://cultureofdevelopment.com/blog/2013/06/19/draft-your-code/

<comment><USER2> I think the author is arguing for a cultural shift that has already happened. During my 4 semester co-op readability and maintainability was the single largest concern. All commits were code reviewed and it usually took 3-4 iterations to make everyone happy. I learned a ton about why best practices were best practices and how you could structure code to make it more intuitive and less prone to misuse.

I hang around the gamedev.stackexchange a lot. All the senior members value taking extra time to make readable and reusable code. I don't get told "once it works, the code is right" I get told take your time and make a reusable understandable block of code.

Even at the very large corporation that I work at now where I'm stuck using XP and IE 7 there is a large emphasis on making sure the code is readable and maintainable.

In my short career no one has ever told me getting it working and move on. Everyone has told me that I should strive for the code I write to be easily readable and maintainable by a new hire.</comment>


It's about what broke, not who broke it - <AUTHOR> https://rachelbythebay.com/w/2018/03/27/whowhat/ <comment><USER2> I work in the nuclear industry, where most places are pretty good about maintaining a "blame-free" culture. You focus on what processes and procedures failed, what controls were missing, etc., that allowed somebody to make a mistake.

As this attitude was adopted, things shifted too far (at least in the opinion of industry groups, and my observation) to the point where people underperforming to the point of negligence weren't blamed, and the corrective actions to prevent reoccurrences of problems they caused ended up being cumbersome and expensive without really improving safety. (And in this industry, everything relates back to safety.)

In recent years, things have shifted back towards a more pragmatic middle ground. There are tools to assess if a problem was organizational (and it still almost always is) or if there was some element of personal negligence involved. This follows with an industry wide trend of trying to fix the real problems that affect safety and operations, not over-engineer cumbersome corrective actions.

<comment><USER3> Well, that's just it, the fact that underperformers aren't recognized is also a symptom of the process, and the fix is fixing the process, not throwing away the process.

Every problem is organizational, even those caused by individuals, because it's the organization's job to recognize and remove those individuals where appropriate.

<comment><USER4> In a bad organization many people that would perform to satisfactory levels begin to underperform. One signal of this is when individual responsibility is removed from the equation.

I enjoy organizations where individual's expectations are clearly defined, and I prefer if there are consequences for missing those expectations because I feel like it increases the reliability of the team.

</comment></comment></comment><comment><USER5> My manager at work especially has the reverse attitude where the person who broke it is more significant than what broke/how we fixed it/ how to avoid it in the future. I have seen people get taunted for a bug they caused two years ago, a bug which didn't affect any revenue or was pretty easy to fix. And of course it still gets pointed out during appraisals.

Its a nightmare, because there's no room for experiment left anymore. Everyone just sticks to the template, afraid to do more than required, never deleting unused code etc. An attitude like this never ever helps!

<comment><USER6> We don't touch production. We don't upgrade. We are are a X million company we can't afford the risks.

These are some of the excuses they put up.

And then they sit 10 years or more with that bad stuff in there, build even uglier ways around it.

But the time comes to actually do something about. And what was once a one day job becomes "we will hire a consultancy firm to guide us".

<comment><USER7> Ha. "Outsourcing of blame"!

Outsourcing of blame - as a Service. Where's my VC???

<comment><USER8> Accenture. You've invented Accenture.

<comment><USER9> What do they do, exactly?

<comment><USER10> [http://exposingevilempire.com/accenture/bigtime- consulting/](http://exposingevilempire.com/accenture/bigtime-consulting/)

[http://exposingevilempire.com/accenture/bigtime- consulting2/](http://exposingevilempire.com/accenture/bigtime-consulting2/)

[http://exposingevilempire.com/accenture/bigtime- consulting3/](http://exposingevilempire.com/accenture/bigtime-consulting3/)

</comment></comment></comment></comment></comment></comment><comment><USER11> I took down an assembly plant by clicking on a Network status icon from a particular hardware supplier.

Over the weekend, firmware patches were applied, and the server rebooted. After reboot, everything worked fine, so the tech marked the change successful and went home.

Well, apparently the NICs would work just fine, but not all settings were applied until you opened the UI provided by the vendor. When you opened the UI, the final settings would be applied, and the NICs would reboot, just long enough to kill TCP connections.

That loss of TCP connection killed the parent system, and then all the other children systems also died when the parent died.

So who would you even blame there? The guy who set the tripwire? The guy who tripped on the tripwire? The guy who designed a system that could be brought down by a momentary loss of connection?

I'm lucky that my boss wasn't the type to point fingers, because I was the guy who was there when it happened, and it sure got a lot of attention.

<comment><USER12> > [...] not all settings were applied until you opened the UI provided by the > vendor. [...] the NICs would reboot, just long enough to kill TCP > connections.

The UI part suggests that it was Windows, and if it was, it's not quite the case that "just long enough" to kill TCP connections, as you need quite a lot of downtime to terminate a typical TCP session.

In Windows, if a NIC goes down, all the TCP connections that use the NIC get closed immediately. (Or at least this was the case a few years ago. I had a similar system with similar drawbacks deployed back then, though it was an automated warehouse, not an assembly plant.)

> So who would you even blame there?

The idiots who designed the system to run on non-industrial-grade operating system. Windows was never a good choice to control industrial installations.

<comment><USER13> Windows is often the only vendor-supported choice for interfacing your computer applications to PLCs and such things. Also most of the proprietary protocols run over industrial ethernet are some kind of legacy serial (232, 485..) bytestream format wrapped in TCP and the software usually does not handle loss of the TCP connection particularly gracefully. (on multiple occasions I've seen rules like "reboot the whole installation on every shift change" to "handle" the obvious reliability issues of such systems)

It is not about some small and well defined set of "idiots", it is essentially industry-wide design mistake.

<comment><USER12> > Windows is often the only vendor-supported choice for interfacing your > computer applications to PLCs and such things.

Which is not a problem by itself, since PLC, being an industrial equipment, should operate independently from a non-industrial equipment. The problem is idiots who think a desktop PC can reliably control PLC in real time.

<comment><USER13> Problem is when you have some kind of process that is inherently controlled not by the logic in PLC, but by some external system (either because the required data will not fit into PLC's data memory or because they constantly change based on some external bussines processes)

Reasonable architecture for this kind of problem would be attaching some server to the PLC as peripheral, but it tends to be done other way around. As for reasons for that I speculate that it is simply inertia of the typical PLC programmer which is then compounded by reasoning along the lines of nobody does that, so it is not tested and we will hit unknown bugs in the PLC firmware itself.

</comment></comment></comment></comment></comment><comment><USER14> We have put a rule that made our system very strong over the years: We don't care if you broke the site, just fix it quickly and more importantly write a test that will catch the same problem if it happens again.

Every time someone breaks something, we get harder to break.

<comment><USER15> Sounds like your system is antifragile.

<comment><USER16> Robust. The word is "robust". We don't need to promote buzzwords.

<comment><USER15> I think there's a worthwhile distinction between 'robust', meaning 'able to resist stresses', and 'antifragile', meaning 'able to react to stresses and become stronger.'

</comment></comment></comment></comment><comment><USER17> I used to think this way until I started working with someone who was _nearly always_ the one who broke it. At some point we just had to face the fact that his work was unreliable even after significant mentoring.

If the tasks were difficult that would be one thing, but I'm talking about stuff like committing code to prod that was clearly never even executed once.

<comment><USER18> Sounds like you have a code review and automated testing problem and not a bad coworker problem.

<comment><USER19> Sounds like both.

</comment></comment></comment><comment><USER20> I do a lot of open source work and unfortunately a very common posion is focusing on "who broke it," which is especially disparaging when done in public. A particularly nasty habit is when outsider Alice opens an GitHub issue saying "xxxx is broken" and developer Bob replies with "yup, @Charlie's commit fubar'd everything."

Unfortunately both very demoralizing and very common.

<comment><USER21> Demoralizing - why? That seems like an attitude problem on the part of "Charlie", not "Bob". If "Charlie" is going to slink off with his tail between his legs every time he makes a mistake, he'll have a tough time of it - it's not like everyone can't SEE that he broke it through version control anyway!

I just don't really get it. Even when I was a junior, if I overheard "this thing is broken," I was the first to pop up and say "oh, I bet that was me, let me have a look."

<comment><USER20> I'm with you 100% except you're not taking into account what I said about this being in public and Alice not being a part of the project. Internally assigning blame isn't the issue, it's about the "team" facade being shattered when dealing with the outside. If you've accepted Charlie into the organization then from without it isn't about Charlie or Bob, the answer should be "yes, we're aware; a recent commit broke that functionality and we're working on fixing it." I'm not even talking about a dev mailing list or GitHub PR discussion, I'm taking about the specific case of badmouthing a developer to an enduser.

Imagine if Apple came out and said "yeah, that blank root password bug, it was all because of John Smith and his crap patch that caused this."

Outsiders don't have the same perspective as insiders. If Charlie's commit message read "implementing the really difficult thing we talked about," the team might be aware of mitigating factors that Alice won't. But even without those mitigating factors, all you've done is badmouth your own devs to the public. Additionally, you are not considering whether Charlie is an otherwise stellar developer that has never had a bad patch before. Alice may incorrectly presume that the only reason he's being called out is because this is a habit of his, perhaps.

<comment><USER4> I often compare open source projects based on what's visible on the github page.

Drama around a volunteer team in the open is a bad smell.

Edit: I'd like to explain why.

* Open source projects with lots of drama often don't attract new talented developers, and if talent happens to depend on that codebase they are more likely to fork and start a new community, or fork and not submit pull requests.

* If I need to interact with the team for pull requests or bug/support tickets I'd like to feel assured we can do so respectfully and professionally.

* If a community has drama in it I am less likely to recommend the software to a friend or blog about the software because I won't want to be associated with it. I'm more likely to stop using it and switch to a different solution.

</comment></comment></comment></comment><comment><USER22> _I had to then tell them that this person still worked there._

The old IBM story is worth mentioning in relation to this: [http://www.mbiconcepts.com/watson-sr-and-thoughtful- mistakes...](http://www.mbiconcepts.com/watson-sr-and-thoughtful- mistakes.html)

</comment><comment><USER23> When someone makes a mistake, that's an incredible investment in them. I'm always surprised* when people try to throw it away by firing them or making them want to quit. Help them learn from it and apply that knowledge moving forward. Otherwise they're just taking that knowledge and using it to help another company.

*Obviously with the caveat that some people are repeat offenders who are careless or just not good employees

<comment><USER4> In other professions some mistakes cost the professional real money (doctor malpractice) or cause them to lose their license (drinking and driving with a commercial vehicle license).

As an industry we don't have a response to a truly neglectful mistake yet.

</comment></comment><comment><USER24> Reminds me of when someone ran "rm -rf /" at Pixar and deleted all of Toy Story 2.

The backups were crap and the only reason it survived was because someone took a server to work from home.

When all was said and done, they never really found who did it, they just made organisational changes to ensure it didn't happen again. No blame game.

<comment><USER25> When I worked with my first non-remote team in Phoenix, I basically did this to our mobile app codebase with an in-house git repository due to some faulty rsync changes to a grunt task.

To the old NPL team, sorry about that. Culture is important.

</comment></comment><comment><USER26> If in soccer the opposing team scores, who is to blame? the goalkeeper, defenses? the coach? the whole team? the referee? nobody?

Preventing goals means that the strategy needs to ensure good ball possession, and staying on the offense, to reduce the burden on the defense, to reduce the burden on the goalkeeper, who is the last line of defense.

If the last line of defense fails that's not an individual failure but a team failure, coach included, since the coach selects who gets to play, when and their roles.

Same in software: bad management passes the burden to developers, bad development passes the burden to testers, bad testing passes the burden to release management.

<comment><USER26> Now, there are cases when everyone knows what to do, steps are taken so everyone is informed of it, but someone still decides to go against it. In that case the individual is at fault.

</comment></comment><comment><USER27> It's not about whats broken, its about what you DO when it is broken.

This my favorite interview question to ask candidates:

"What is your all time biggest screw up, and how did you come back from it" \- I then tell them the story of me loosing several hundred thousand dollars and the funny things that happened around it to set the tone. If you have been in tech for any length of time you have one of these stories (if not a few). I have heard some great ones by simply asking and it gives great insight into a candidate (humor, stress response, the things you have seen).

</comment><comment><USER28> I think this is an important piece of organization culture. If the first reaction to problems is blame and punishment, issues are covered up. But if finding bugs and fixing them is considered valuable, there will be less issues in the long run.

Of course I write enough stupid bugs myself that I'm bound to think this way.

<comment><USER29> This is so true. Providing the incentive to squash bugs than punishing people for making them is the driving force for innovation in a team. Take that away, and you get a toxic culture where everybody starts finger pointing when an issue arises.

</comment></comment><comment><USER30> I found this to be the touchstone of spotting a dysfunctional enterprise. There it is all about the 'who', never about the fix. In those environments every new project is CYA from day 1. The disconnect between daily activities and the success of the company is so large, that all actions and projects are just about personal politics. A failure that can be blamed on the right target is often even a preferred outcome as eliminating a competitor for a promotion is even better than not having failed. If you find yourself in such an environment, try to leave asap.

</comment><comment><USER21> Sure, if you have a huge company and a revolving door, the solution is a bunch of processes and idiot-proof safety nets, and no one person is to blame for most bugs. If you're in a small company, the solution is to teach the devs by showing them what mistakes they made. I don't think that's a bad thing; if you write code, that code is your responsibility, and you shouldn't be sensitive about people telling you your code is broken.

Also, focusing on the code itself, for me at least, easily leads to thoughts like "this function is crap! What idiot wrote this!?". Finding out who broke it leads to thoughts like "I see John introduced this buggy function. I should go check with him, maybe he had a good reason."

</comment><comment><USER31> Mishaps occur on a spectrum, and may be categorised from mistakes, carelessness, recklessness, through to malicious intent, and any combination of the above all along said spectrum.

Though these categories may seem like they are orientated on individuals' actions, they may be used to determine where the risk lies in systems (and people's use thereof) and how measures can be taken to avoid the same problems being repeated.

Much of the time, the complexity of systems (using the term in the widest possible sense) is under-estimated, and automated integrity checks are not used as religiously as they may be.

</comment><comment><USER32> I'm 90% in agreement. Her workplace definitely sounds like somewhere I'd consider working myself (if I were looking for a job).

There are some things that I consider basic competence standards, like not storing passwords in plain text in any system you're building. I wouldn't fire an intern for getting that wrong but I also wouldn't let an intern near a production authentication system without some oversight.

If someone is a security engineer with a responsibility to know these kinds of things as part of their job role and certification, then if they'd implemented passwords-in-clear to cut corners somewhere, even if it's to meet a really important deadline, I'd be extremely unhappy. Of course I'd establish the general pattern of what had gone wrong first, and if it was a superior being abusive to the security engineer to get the product launched on time I'd still be really unhappy but not at the engineer.

Occasionally one does follow the chain of causes back though and finds not the organisation's culture but an individual who really should have known better.

<comment><USER33> If you can go back in time, join me in 2013 and you can enjoy the ride for a few years, too. I'm sorry to say that I don't think you'll get the same experience in 2018.

</comment></comment><comment><USER34> The answer requires context, at least for FLOSS projects.

If unlucky dev #13 broke something because humans can no longer reason about the relevant part of the system, then it doesn't matter that #13 was the one who broke something. What really matters is that people get busy removing the sandtraps from their software.

However, many FLOSS projects run on the sheer joy and freedom that comes with maintaining a particular subsystem or area of the code. Most devs have a quick understanding of the responsibilities associated with that. But in cases where that responsibility doesn't come naturally, _who_ broke becomes the focus. Addressing that issue will determine whether or not future breakages occur.

</comment><comment><USER35> It isn't about who broke it. But if there is a person on the team who continually breaks things, does not learn from their mistakes and repeats them, or is not truthful when they break things, the team should react appropriately.

</comment><comment><USER36> It's also about how it broke. And who broke it is sometimes the person who can say a lot if not most about that. Therefore i don't recommend teaching to never talk about tge person who took an action that lead to a disaster, but rather encouraging a culture where admitting having taken a wrong step doesn't lead to punishment, neither financial or social. Who broke it is an important part of the analysis, helping the organization to learn from each other's errors. Making it a taboo talking about it is missing a chance for development...

</comment><comment><USER37> Ooh, this is good. Part of it's covered under the name of "blameless post- mortems," but I don't remember searching for similar breakage, which is a great idea.

</comment><comment><USER38> This seems like a classic case of applying the Five Whys [[https://en.m.wikipedia.org/wiki/5_Whys](https://en.m.wikipedia.org/wiki/5_Whys)] methodology for root cause analysis.

</comment><comment><USER39> I don't see how this is not "better mousetrap, better mouse". Phrases from "they build a better fool" to "they build a better US Navy crewman" are a hundred a penny, and yes I've experienced the other side of this.

The best programmer vs the worst user, and every mix in between, shall produce situations needing attention this article addresses.

I've been in this situation on both sides. "Of course it should be clear what this phrase means, how could they fuck this up?" ... and ... "I have on idea what this means, both choices could mean what I want but either choice ends me up on the wrong page of this bullshit 'choose my own adventure' that I'll have to repeat if I'm wrong".

I'm interested in finding out if I'm understanding this wrong, and//or other thoughts.

</comment><comment><USER16> The SRE Book teaches a lot of the lessons that this blog teaches. [https://landing.google.com/sre/book.html](https://landing.google.com/sre/book.html)

</comment><comment><USER40> I totally agree. Its usually the hallmark of a good team, if they have the "we are in this together" attitude.

</comment><comment><USER41> There is the risk of conflating two separate types of problem. There are problems that arise from the complexity of the code, and problems that arise from particular people.

If a programmer has a habit of sloppy code, or violates the team's standards in some ways, then a good leader will keep track of the fact that one person is responsible for a recurring pattern of mistakes.

I absolutely agree with Rachel By The Bay, that many bugs arise from the complexity of the situation, and it would be wrong to blame the person who just happens to trip over that bug. But a good leader should take action against anyone who repeatedly screws up, and who seems unwilling to improve.

I've written about this before. This is from "How To Destroy A Tech Startup In Three Easy Steps":

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

Wednesday, July 15th, 2015

I got to work at 11:00 a.m. John announced that our demo had stopped working. Sipping my coffee, I logged into the server to find out what the problem was. I looked at the error log for the API app, but it seemed okay. Then I checked the error log for the NLP app.

java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at java.lang.String.substring(String.java:1955) at Celolot.nlp.Extractor.fuckBitchesGetMoney.java:87

What the hell was this?

"FuckBitchesGetMoney"?

What kind of name is that for a function?

A computer programmer can name their functions anything, but there are some "best practices" regarding names, and this particular function name violated all of them.

I asked Sital why he had given this name to his function. He looked at me straight, shrugged, and stated that the name was from the 1995 song by The Notorious B.I.G., "Get Money." I replied that rap lyrics were not part of our naming conventions. He promised that he would change it.

Coming from anyone else, I might have interpreted the function name as an act of angry rebellion, but Sital was too forthright for that. Apparently, he thought the name was funny and went with it because he wanted to add some humor to his code. Never did he stop to think it might be unprofessional.

I looked through his code and found several other functions that had inappropriate names. I sent him a list and asked him to change their names to something standard.

A week later the function was still there. FuckBitchesGetMoney. Yet I don't think that any of this was a deliberate act of rebellion. He was just oddly forgetful and disorganized.

[https://www.amazon.com/Destroy-Tech-Startup-Easy- Steps/dp/09...](https://www.amazon.com/Destroy-Tech-Startup-Easy- Steps/dp/0998997617/)

<comment><USER42> if the function was still there, I think it is also likely that the old jar or class file (with the function) was still lurking in the classpath or your version control and build system weren't using his revision

<comment><USER41> The point is, he failed to make any revisions. He was oddly disorganized. Even with quite a bit of coaching, he was unable to do what we needed.

</comment></comment></comment><comment><USER43> What's that old saying; " _Fix the problem, not the blame_ "?

</comment><comment><USER44> I like this site and hadn't really read much from it - it's interesting how much it's been front paged over the last couple of weeks: [https://news.ycombinator.com/from?site=rachelbythebay.com](https://news.ycombinator.com/from?site=rachelbythebay.com)

<comment><USER45> Rachel is an excellent writer who was on a long break from writing. Seems like HN is happy to read her posts again.

<comment><USER33> Thanks! I was working a "real job" from about mid 2013 and am no longer, so my cycles are now all mine again. I was too tired to write most of the time before.

Also, there are many more stories to be told now!

<comment><USER46> I am really looking forward to reading the new stories - I bought your collection of stories too. :)

</comment></comment></comment></comment><comment><USER47> I don't know. Where I work no discernible pattern can be found with the "what" that broke.

It's always the same f __*ing people that break it though!

<comment><USER48> It amuses me that the sibling comments appear unable to imagine the possibility that someone is incompetent.

Of course there are other possibilities - the people breaking things are doing the hard bits that no one else dare to.

<comment><USER49> But wouldn't that imply that the "daring, thing-breaking" people are actually incompetent to some degree? Otherwise they would mitigate the risk before performing any dangerous operations on a live system.

"Bravado is no excuse for lack of preparation." \- Leeroy Jenkins

</comment></comment></comment><comment><USER50> It makes sense for a logical perspective, but in practice that's not how it works.

In reality if something breaks, and you are stupid enough to mention it, then (a) you are considered an a-hole for blaming <responsible-person-for-topic> even if you didn't and (b) responsible for fixing it.

So your main job is somehow make your stuff work despite all the other stuff that doesn't work and all the other people that try to stop you, silently. The less you criticize the better. What you get in return is that if you fuck up, people will try to avoid blaming you as well. Also if you don't succeed at making anything happen you get a little arrogant smile from your manager and a mediocre feedback round. But otherwise nothing happens.

The only change to that pattern happens when you piss off your manager or your manager's manager. Then suddenly each and everyt activity you do will be scrutinized and if there's a problem it will be used against you. The best hope they have is that you go away by yourself.

<comment><USER51> "The best hope they have is that you go away by yourself."

I'd recommend you satisfy their hope maximally by running the hell away from that dumpster fire of bullshit office politics.</comment></comment>


"We Own You" – Confessions of an Anonymous Free to Play Producer - <AUTHOR> http://toucharcade.com/2015/09/16/we-own-you-confessions-of-a-free-to-play-producer/ <comment><USER3> This is disgusting. I've turned down job opportunities based solely on the feeling that it would compromise my values / principals. So whether you just need to pay the mortgage, your school loans, or for the booze and clothes you're going to wow all your friends with tonight, if you're one of the many people building these sort of companies and normalizing these type of practices, I say to you, this is wrong. And if you choose to keep on keepin' on, don't expect me to associate with you; expect me to do what I can to roll back the mess and harm you're producing. If you do this kind of work and, god bless you, you stop, then I say to you, thank you and please share your experiences / stories with us. This sort of stuff doesn't just mean I feel my privacy bubble is popped. This is the stuff that changes the way we live and who we become. We have more productive capacity now than in all of human history, let's do something beautiful and good with it.

<comment><USER4> I worked in mobile gaming and left it, so I'm hoping to give a nuanced response here.

Obviously virtual slot machines aren't good for players, for the gaming ecosystem or the software ecosystem. Virtual slot machines are proof positive that they exploit people psychologically, since there's absolutely no rational reason to play a zero-payout gambling game. More importantly, these apps make up 1/11th of the top 200 grossing on the App Store, sucking money and talent out of riskier and more rewarding pursuits.

It's unfair though to look at what the producer describes and say free to play gaming is this huge existential crisis of conscious. Anything near the end (i.e., end user) of the value chain is going to be dealing with people's demographics, their wants and needs, etc. Of course game developers are interested in their player's features, no more differently than stores use loyalty cards, magazines survey their readership, etc.

There's a consequence to what you're saying: The only honest work doesn't deal with the end user. Maybe if you're building database testing tools you're doing a total social positive. Well, we can't all work for infrastructure companies messing around with Haskell libraries all day.

Who do you think is using all those elegant hierarchies, those pickaxes in the app goldrush? The producer says they integrate forty SDKs! That's forty different tech startups, some of them with billion dollar valuations.

What created AWS? The intensive, pathological tracking of people's preferences in book buying. What created all of Google's server infrastructure? The intensive tracking of people's searches. I'm not saying forfeit your values or principals. But the alternatives to free to play gaming are just less obviously exploitative.

<comment><USER5> I see you've found a way to rationalize everything.

Honest work is software which doesn't violate the customer's rights and privacy. There's no bonus points for merely not breaking the law and I can guarantee you that this producer is breaking the law big time in the EU. There's always the choice of selling software for money, but you and many other producers have given up your morals a long time ago in exchange for IAP and ad dollars, so you're blind when it comes to recognizing them.

There are many companies in this world, some will succeed, a lot won't. If the alternative is having human beings treated like rats in a maze, it would be better for society that those startups creating SDKs would simply die.

<comment><USER6> Yup. That's why this "final thought" doesn't add up:

> You want to put a stop to this? Stop playing free games. Buy a game for 4.99 > or 9.99.

No. The only solution is to stop playing games that exploit people's privacy in such a way. No matter what you pay for them.

What about people who can't tell how bad they're being exploited? Well, for starters, paying 4.99 is not going to suddenly make them able to tell. Surely paying may make them _believe_ the game is more honourable, but that's really the same spiel all over again, is it not?

No it's much simpler. Just get your games from a company in a jurisdiction where this shit is illegal. Like in the EU.

Just like people are sometimes wary of certain foreign brand electronics having cheaper chips or whatnot in them, now you know what US-based game companies are legally allowed to do to their users. And the lengths they will go to do it.

> We don't want to be making games like this, and we don't want another > meeting about retention, cohorts or churn.

And please. "Look at what you _made_ us do!", have some personal responsibility.

</comment></comment></comment></comment><comment><USER7> " I remember we had a whale in one game that loved American Football despite living in Saudi Arabia. We built several custom virtual items in both his favorite team colors and their opponents, just to sell to this one guy. You better believe he bought them. "

That answers one question I had. How to target the whales. I remember one free-to-play pay-to-win game I played where they had a promotion to get a random chance of getting a new OP character. On the first day, one player had 9 maxed out. The forums calculated the player likely spent somewhere between $30-50K to get them. I then realized how big a deal "whales" are in games. A big enough whale can employ a dev for a year.

<comment><USER8> "Whales" are critical to the revenue of many industries. gambling, alcohol, gaming, fashion, etc. all make a large chunk of their revenue from a small(ish) number of whales. Obviously the percentages vary by industry, but there's a reason when you go to Vegas and drop 10k at the craps table that you can get a "free" luxury suite from the hotel.

</comment></comment><comment><USER9> In 2014, Ben Thompson at Stratechery explained how F2P "whale" targeting helped Facebook's valuation, [https://stratechery.com/2014/dependent-digital- whales/](https://stratechery.com/2014/dependent-digital-whales/)

 _" Facebook is going gangbusters because of ads for free-to-play games, developers are excited about the chance to cash in via Facebook ads, Google and Twitter are trying to mimic Facebook's success, and Google and especially Apple are hanging their app store hats on the amount of revenue generated by in-app purchases.

In other words, billions of dollars in cold hard cash, and 20x that in valuations are ultimately dependent on a relatively small number of people who just can't stop playing Candy Crush Saga."_

</comment><comment><USER10> >It is almost certain you have or are playing a game I have produced or worked on in a major capacity.

Maybe for a few minutes. I like to think I'm good at analysing game mechanics, as a long time gamer and sometimes amateur game designer. So I mostly avoid F2P games. The tactics are repulsive to my tastes, and I can smell them from a mile away. When there's a choice between struggling to meet a challenge by improving my skill, or paying my way though, my inclination is to take a 3rd choice: stop playing this and do something else. So I much prefer paying up front for a game. I'm old-school that way.

Maybe this option is viable, as a 'serious' gaming hobbyist, only temporarily. But right now, the best games (in my genres of choice) are sold on the traditional purchase model. They are PC and console games.

Generally, I don't like 'endless' games; I prefer a game to have an ending: I play it, experience it 'fully', finish it, then move on to something else.

(But... just to undermine everything I've stated above, I am playing Pac Man 256. It has good gamefeel. I'll play it until I get all the powerups, perhaps. No interest in high-scores...)

tl;dr: IMO F2P games are inferior instances of the artform. Be cool like me and play superior PC and console games.

Also, Jonathan Blow has some interesting points to make on how the payment form of games (and entertainment in general) affects their structure/quality. This is the one where he talks about addictive mobile Skinner box games [x]

[x]: [https://youtu.be/AxFzf6yIfcc](https://youtu.be/AxFzf6yIfcc)

<comment><USER11> As someone that's into the classic AAA $60 games, I'm _happy_ that F2P is sucking all of the casual gamers out of the market - I think the overflow of smart, challenging, deep games coming out owes a lot to the fact that the market is efficiently segmented.

There may be benefits for AAA gamers to these games that collect/analyze massive amounts of data - I wouldn't be surprised if some of this analysis leads studios to stumble across really engaging/fun patterns that are applicable to AAA games. As an example, I've heard discussion of how analytics has raised game "shininess" (basically making every screen tap/game interaction viscerally satisfying) to the level of an artform - I'm assuming that this has led to knowhow that EA/Blizzard/Rockstar have gone on to apply to some degree in $60 box games.

<comment><USER12> Huh. This is an interesting consideration, that by pulling casual gamers out of the AAA market, your dollar/vote has more weight wherever you put it, which means a much more selective and competitive market for those titles.

</comment></comment></comment><comment><USER13> Having worked in mobile games for a few years, it's frightening how confident he is in his data. Demographic data is notoriously hard to acquire and validate within mobile apps. Yes, you collect everything you can (like every other company) but you absolutely do not own anyone. You beg and plead and issue content updates to keep them in the game.

<comment><USER14> I guess it's the same story as with "targetted" advertisement. I'm still to see any advert that'd offer me something I'd like. Don't remember one, ever.

In all those years - none. Not even close. Best notifications from Google Now is occasional weather reminders (because, duh, after an year they noticed I check them almost daily), which is very far from being useful. Steam - <USER2> platform that should know my gaming habits - had almost never offered me games that I was interested in (although "item from your wishlist is on sale now" surely worked). Music stores don't have a single clue of what I like and what I don't and all they do is some awfully rough genre matching which is nearly disappointing.

So, companies - gaming or else - surely have tons of data but I somewhat doubt they can use it any meaningfully, at least from consumer perspective (but hey, If they don't make me open the wallet and don't advertise them - it doesn't work for them too, right?) Wonder if the companies are somewhat hyping themselves on importance of this data and how it helps them, than it really does.

<comment><USER15> Or maybe they know precisely that you aren't worth the effort?

<comment><USER16> Exactly.

We are not the targets. I would doubt someone here ever spent $10k-$50k on a free to play game. And I believe they know it.

</comment></comment></comment></comment><comment><USER17> Every single industry that can will do this, especially those that make most of its money from a small number of its users.

The interesting part of the article was where they specifically targeted one of their whales. They found out which American football teams he liked and introduced in app items that matched those colors so he would buy them.

Casinos are well known to get as much information about their players as possible, and to get their high rollers to keep coming back.

Retail stores have done the same. (See How target figured out a girl was pregnant [1]).

With technology providing more and more information and indirect insight into our lives, it's only a matter of time until everybody does the same. The only way to prevent it (as best as possible) is simply to not play/not link to facebook/etc.

[1] [http://www.forbes.com/sites/kashmirhill/2012/02/16/how- targe...](http://www.forbes.com/sites/kashmirhill/2012/02/16/how-target- figured-out-a-teen-girl-was-pregnant-before-her-father-did/)

<comment><USER18> I've often theorized that casinos could have highly accurate scales in the chairs to keep track of people.

Hypothetically (but I've seen it in action): I don't necessarily sign up for the players club yet, I walk in and walk up to 3 machines and put a dollar in. Lose -> lose -> minor win. Then I say "oooo I'm going to keep playing with this money!" then I end up losing more than I originally had on hand.

I guess it could be as simple as they're watching you but it's got to be fairly easy to automate. "Hmm this guy weighed 215.3lbs when he came in, that's guy id 1528." then just have a small window. I'm sure there are other 215lb people there but it's not that vital... lol Anyone have any insight as to whether or not I'm just insane?

<comment><USER19> Honestly, it's far simpler than that. Most casinos these days have player cards that every machine accepts that from the players perspective can store money on, but is really just giving them the ability to keep perfect tabs on player habits. Combined with fully networked machines, it's seems futile to move between machines just to try and throw the odds around, as they're most likely tracked and adjusted in real time.

<comment><USER20> They log every single button press you do, but they don't change odds on the machines in real time; that's illegal. When you setup a slot machine you have guards and cameras watching your every move. Software is validated with checksums before it is put into service. The exact settings you put in are in some states pre-approved by the local jursdiction for that machine for a certain time period (X years).

Changing the odds of the machine is a ton of work.

<comment><USER6> > they don't change odds on the machines in real time; that's illegal.

Oh, _that_ 's illegal :-)

</comment></comment></comment></comment></comment><comment><USER21> I'm probably not well enough informed, but this struck me as weird:

" _And if you are a whale, we take Facebook stalking to a whole new level. You spend enough money, we will friend you. Not officially, but with a fake account. Maybe it's a hot girl who shows too much cleavage?_ "

Why would people friend random accounts of people they don't know?

<comment><USER22> Doesn't matter as long as enough people do it.

</comment></comment><comment><USER23> I doubt only F2P games hoover up the data. Ever read a EULA, end-to-end, and understood everything? Neither have I. But I will offer as a hypothesis that the phrase "we collect user data to enhance the gameplay experience" has a level of semantic elasticity unrivaled outside of politics.

</comment><comment><USER10> This sort of behaviour suggests to me that it would be desirable to have tracker-blocking software for phones/tablets. A user-configurable firewall.

We have browser ad-blockers; I want something that works system-wide.

<comment><USER24> I think on Android this is like an ad-blocker for mobile:

[https://disconnect.me](https://disconnect.me)

I think it routes traffic through their servers, so you have to trust them with your traffic.

<comment><USER25> I think generally you're better off using AdAway which is more like a "traditional" hosts-file-based adblocker. I'd be more concerned with using some third party proxy for all data than some sleazy marketers trying to figure out how to sell me virtual gold or whatever.

</comment></comment></comment><comment><USER26> I don't really understand the 'whale' strategy.

I'm assuming the reference is to literally targeting a single person, but how much money can they make selling the 'whale' these additional IAP items, compared to the effort involved in having to research him and create them?

<comment><USER27> My wife and I spent $10,000 on a video game once. It wasn't F2P; it was a kickstarter prequel of our favorite vintage game [0], which we've been playing for 20 years. But the same principle applies.

There are people out there who have a lot more money than us, and are willing to spend it to be entertained. For a lot of games, their idea of a "whale" is someone who spends a couple hundred bucks a month on swag; at that level it's not worth trying to target individual buyers. For some games, though, it's someone who they can get to spend $50,000 on a set of vanity items. If someone is already dropping thousands of dollars on your game, that suggests it might be profitable to have someone gather info on them and see if they have a passion you can target. And often, you can create a whole class of "premium" items for very little work, just slapping a custom skin and a +5% bonus on top of a pre-existing game object.

[0] Descent. [http://descentchampions.org/new_player.php](http://descentchampions.org/new_player.php) to set up the originals; [http://descendentstudios.com/](http://descendentstudios.com/) for the upcoming prequel

</comment></comment><comment><USER28> Is "Producer" the right word for his job title? Or is psychopath closer to reality?

Talking about other humans in such a disassociated way. At least one armed bandits in vegas don't create fake facebook profiles for some scheme to extract more money from you.

<comment><USER29> I've always preferred "heroin dealer".

(A few years ago, someone said that social game developers are like heroin dealers and regular game developers are like weed dealers. It's a very apt comparison)</comment></comment>


What I Believe - <AUTHOR> http://digitalcasserole.blogspot.com/2005/05/what-i-believe.html <comment><USER2> I have no idea how appropriate or inappropriate to Hacker News this is, but it is awesome so I'm upvoting it. I especially like that it is from May 2005.

<comment><USER3> _Ultimately, people don't want drills. They want holes._

Yep, that's going into my quotes file.

</comment></comment><comment><USER4> I believe I've seen enough slam poetry already.

</comment><comment><USER5> _I...believe you're either pro life or pro death._

Bleh. Black and white thinking. Bleh.</comment>


From PHP to JavaScript with Node.js - <AUTHOR> https://blog.matters.tech/migrating-from-php-to-javascript-with-node-js-155534498b58 <comment><USER2> Really cool!

</comment><comment><USER3> Neat !

</comment><comment><USER4> Using js for anything other than in browser work still makes me cringe.</comment>


Tri, Tri Again for Aptera 3-Wheeler Loan From Feds | Autopia from Wired.com - <AUTHOR> http://blog.wired.com/cars/2009/03/aptera-legislat.html <comment><AUTHOR> This is really interesting at the level of sketchily navigating regulations.

I believe that the Aptera (which, in full disclosure, I lust after) was clearly set up as a 3-wheeler to qualify as a motorcycle to avoid a whole lot of regs -- safety and otherwise.

Whether or not they made it safer than a regular car is questionable.

But I really don't buy the argument that "if only it had four wheels". I think you could just double up that back wheel and be done. I believe there was even a land-speed record car that did exactly this.</comment>


Another Flipping Puzzle - <AUTHOR> http://www.solipsys.co.uk/FlippingPuzzle/AnotherFlippingPuzzle.html <comment><USER2> A more thorough explanation can be found here: [http://www.datagenetics.com/blog/december12014/index.html](http://www.datagenetics.com/blog/december12014/index.html)

<comment><AUTHOR> If you look at the linked submission you'll see that the DataGenetics blog post is referenced. Personally, I found that to be too detailed in some parts, and not detailed enough in others - I felt it got the balance wrong. Of course, everyone's mileage will vary, but this intended audience for the item will tend to be more interested in the "NIM sum" than the XOR, even though they are the same thing. The "NIM sum" is what's used in mathematical games and puzzles, and will be familiar to the intended audience.

But again, YMMV, so you may prefer the DataGenetics version.

</comment></comment><comment><USER3> I enjoy both math and magic, and I especially enjoy puzzles like this that have an element of both. I wonder whether there happens to be any sort of positive correlation between the two disciplines. Are people who enjoy math more likely than the average person to also enjoy magic?

</comment><comment><USER4> This is a nice lay-person explanation of hamming codes and how they're useful.

Interesting tidbit - it appears the universe uses them to preserve quantum state information. Make of that what you will.

<comment><USER5> > Interesting tidbit - it appears the universe uses them to preserve quantum > state information. Make of that what you will

Huhwhat? I don't think that's true at all. Quantum states are continuous while Hamming codes are inherently discrete.

<comment><USER4> Have a read - it's interesting stuff - this is from _Physics World_ \- [http://www.onbeing.org/program/uncovering-codes- reality/feat...](http://www.onbeing.org/program/uncovering-codes- reality/feature/symbols-power-adinkras-and-nature-reality/1460)

<comment><USER5> Ah, SUSY rather than QM. I think it's a bit much to say the universe appears to follow SUSY; it's been... not great at generating experimental predictions, and to the extent that there are results they are negative.

</comment></comment></comment></comment><comment><USER6> You just need such a interpretation for 16 bits, that swapping one out of 16 bits will be able to generate any number 0-15 for x % 16. Trivial really.

</comment><comment><USER7> This puzzle is "flipping" awesome</comment>


Assange: Google's just an arm of US government - <AUTHOR> http://www.theregister.co.uk/2013/06/17/assange_googles_just_an_arm_of_the_scary_us_government/ <comment><USER2> I wonder why he is referred to as "The blond hacker" in the article.</comment>


Delay-gradient congestion control - <AUTHOR> http://lwn.net/Articles/645115/

<comment><USER2> This is useful only for long-lived connections. One of the big problems with web connections is that they're so short-lived. TCP never sees enough data to construct a good bandwidth/delay/jitter model of the channel. (Video is a different case entirely - long connections, delay isn't a big problem but loss and delay jitter are.)

HTTP2 forces long TCP connections, which gives TCP a better chance to characterize the channel. HTTP2 only helps if all the traffic is to one site, though. This delay-gradient congestion control will work best in that case. They should pitch this to Google.

(The optimal case for HTTP2 is a world where every URL looks like "[https://cloud.google.com/6e0790d661f75c65b10dc95293f79630"](https://cloud.google.com/6e0790d661f75c65b10dc95293f79630"). One CDN to rule them all. I hope that's not the endgame for the Web.)

<comment><USER3> It's an interesting and potentially useful tool, but it definitely isn't a solution to anything. In addition to not being effective when used under HTTP as deployed on the current web, it doesn't engage its smarter bits on networks with effective AQM, it doesn't compete well in a mixed environment with some traffic being generated by traditional TCP, and LEDBAT already exists. Every situation that this could help with still needs a real fix elsewhere in the stack (AQM below, HTTP2 above).</comment></comment>


Pangolins found to carry viruses related to Covid-19 - <AUTHOR> https://www.bbc.com/news/science-environment-52048195 <comment><USER2> Good luck telling the rich and powerful they shouldn't eat this what they believed is the most tonic and upscale meat of late.

Remember that girl who paid 6.5 million dollars to get into Stanford last year? Her dad's listed company sells billions of dollars of TCM every year that claims to cure thrombus because the ingredients used (earthworm, scorpion and leech) are adept at digging things. Yes TCMs don't need to go through any FDA-like process or trial to prove anything, coz it's national treasure.

Pangolin meat and scales are prized in TCM coz you know, it dig rocks.

<comment><USER3> This is kind of an off-the-wall idea, but... what about creating artificial meat substitutes for these prized exotic animals?

Couldn't Beyond Meat create a pretty close facsimile to pangolin or bat or snake or whatever? Obviously this wouldn't eliminate 100% of demand. Particularly among those eating the animals for their magical properties, instead of their taste. But even if artificial versions of exotic meats could cut consumption by 20-30%, the corresponding risk of zoonotic virus transmission should fall linearly along with that.

<comment><USER2> It's valueded because it's wild and natural, they don't care about the costs, many of the eaters show off this dish on social media coz they are rich and powerful, and won't be punished for eating endangered animals.

And it's not that exotic meats are all delicious so people prize them, what flavor do shark fins/cubilose have? It's the supposed power they got.

</comment></comment></comment><comment> jorge-d Emphasis should be put on the fact that it's both an endangered and internationally protected specie (from which China is a signatory [1]). It had nothing to do in those markets in the first place.

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

<comment><USER4> So does that mean that the sale of pangolins at the market in Wuhan was entirely illegal? If so this seems like a huge enforcement issue if endangered animals could be openly sold at a market.

<comment><USER5> It was entirely illegal and remains so. It is a huge enforcement issue, and hopefully this encourages the Chinese Gov't to crack down on these wildlife markets, but it didn't happen after SARS-CoV-1 (which IIRC also came out of a wildlife meat market in China) so I don't hold out a lot of hope.

<comment><USER6> The wildlife markets are permanently banned now, as I understand it

<comment><USER7> They also did this after SARS for a short bit. Let's see how long it lasts.

</comment></comment></comment></comment></comment><comment><USER8> This article actually says nothing new. It does not draw a direct Covid-19 evolution path from pangolins to humans. That pangolins and bats carry coronaviruses is well known. That these viruses are related is well known, but it's still not clear that pangolins are the source for Covid-19. Very misleading headline on no new information.

</comment><comment><USER9> Since we already know the virus shared up to 96% of the same DNA as horseshoe bat virus collected by Wuhan Institute of Virology in 2003 from a cave 600 miles away ... why are researchers still agonizing over all these alternative theories? The only place near Wuhan the virus existed prior to the outbreak was at the institute of virology. And the first places the outbreak occurred were in the immediate neighborhood of the institute. I'm really genuinely curious why bigtime news outlets keep talking about Vietnamese pangolins.

[1] E.g., [https://metro.co.uk/2020/02/17/coronavirus-start-chinese- lab...](https://metro.co.uk/2020/02/17/coronavirus-start-chinese-lab-bats- attacked-scientists-peed-12252873/)

<comment><USER10> isn't 4% difference in DNA pretty significant? that's comparable to the genetic difference between a human and a mouse, iirc.

<comment><USER11> It's not DNA, it's an RNA virus. More changes happen with them.

<comment><USER12> There's also a lot less genetic information in a typical virus than in a human, so each mutation represents a much larger percentage change.

For context: The entire SARS-COV-2 genome is 29,811 nucleotides long. The human genome is around 3 billion base pairs.

</comment></comment></comment></comment><comment><USER13> Michael Osterholm called this out during his episode on the Joe Rogan podcast back on 3/10, presumably from prior research - [https://www.youtube.com/watch?v=E3URhJx0NSw&t=1180](https://www.youtube.com/watch?v=E3URhJx0NSw&t=1180)

</comment><comment><USER14> I wish we could direct focus on those responsible, the smuggles and illegal (or legal) markets that enable this kinda of stuff - but without getting into heated "that's racist" arguments, because certain places traditionally value these animals so high.

</comment><comment><USER15> There's actually a really nice documentary on Netflix about pangolins. It's mostly a black market for being able to eat them. They are mostly being poached/smuggled/etc.

</comment><comment><USER16> "The presence of a large reservoir of SARS-CoV-like viruses in horseshoe bats, together with the culture of eating exotic mammals in southern China, is a time bomb. The possibility of the reemergence of SARS and other novel viruses from animals or laboratories and therefore the need for preparedness should not be ignored."

[https://cmr.asm.org/content/20/4/660.abstract](https://cmr.asm.org/content/20/4/660.abstract)

A paper from 2007.

</comment><comment><USER17> I bet PETA & Co will take this once in a life time opportunity to put pressure on all governments (shaming and pressure campaigns) so they put pressure on China to ban wild life and some crazy wet markets ([https://en.wikipedia.org/wiki/Wet_market](https://en.wikipedia.org/wiki/Wet_market)).

Having visited many markets like this in Asia. I will not miss most of them as long as they are so unregulated/dirty.

</comment><comment><USER18> Vice had a nice report from the Ebola outbreak in Liberia 2014. Showing how people can just buy bush meat from the markets: monkey, bats etc. Worth a watch.

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

<comment><USER19> At the start of this outbreak, people were blaming Africans for eating bushmeat from wetmarkets using less than civil rhetoric, then later scientists traced the source of the outbreak to kids playing in an hallow tree where bats roosted. Wetmarkets do need to be either modernized or eliminated, but that doesn't mean initial speculation is correct.

</comment></comment><comment><USER20> Anyone have a link to the actual paper?

<comment><USER21> From top comment.

[https://www.cell.com/pb-assets/journals/research/current- bio...](https://www.cell.com/pb-assets/journals/research/current- biology/CURBIO_CURRENT-BIOLOGY-D-20-00299-compressed.pdf)

</comment></comment><comment><USER22> People of China, please step up and protest the government to stop the sale of wild animals such as this to prevent future outbreaks and protect humanity from animal-borne illnesses.

<comment><USER23> What makes pangolins more dangerous than pigs or ducks which have been a similar source of human diseases? Because I can't tell if pangolins are a greater threat or if they are just an easy target because the practice of eating them is not as widespread as eating other common disease carriers.

<comment><USER24> > _What makes pangolins more dangerous than pigs or ducks which have been a > similar source of human diseases?_

It's less the species than the wet markets.

Putting lots of species in close proximity, particularly ones that don't naturally co-exist, facilitates host jumping. Its only comparison is with medieval European cities, where people, sewage and livestock had constant and close proximity to one another.

<comment><USER25> > Putting lots of species in close proximity

Live ones at that.

<comment><USER26> "Close proximity" does it a disservice when there are cages of animals stacked on top of one another such that the animals in the bottom cages may be covered in the feces of those above them.

</comment></comment></comment></comment></comment><comment><USER27> More like BANgolins now amirite

</comment><comment><USER28> I wish Chinese medicine would just die already. An absolute pile of horseshit invented by Mao etc because he'd killed the actual doctors in his cultural revolution [1] It's main purpose now seems to be to claim that the rarer the animal you eat, the harder it makes your dick.

[1] [https://slate.com/technology/2013/10/traditional-chinese- med...](https://slate.com/technology/2013/10/traditional-chinese-medicine- origins-mao-invented-it-but-didnt-believe-in-it.html)

</comment><comment><USER29> [https://www.nytimes.com/2020/02/20/opinion/sunday/coronaviru...](https://www.nytimes.com/2020/02/20/opinion/sunday/coronavirus- china-cause.html)

> A second cultural factor behind the epidemic are traditional Chinese beliefs > about the powers of certain foods, which have encouraged some hazardous > habits. There is, in particular, the aspect of Chinese eating culture known > as "jinbu," (進補) meaning, roughly, to fill the void. Some of its practices > are folklorish or esoteric, but even among Chinese people who don't follow > them, the concept is pervasive.

<comment><USER30> People having been practicing these for centuries, what has changed recently that it has become a global pandemic ?

<comment><USER31> It's possible that these viruses jumped to humans all the time in the past and killed a particular village, town, city. Now we have global travel enabled by planes/cruises/cars. The spread is what's killing us with this latest pandemic.</comment></comment></comment>


ForerunnerDB – Lightweight JavaScript Database with Persistence and Data-Binding - <AUTHOR> http://www.forerunnerdb.com

<comment><USER2> While I've not dug into ForerunnerDB, it sounds like it is playing in the same space as PouchDB[1]. PouchDB is a JS database that works in the browser or in Node with various back-ends for data storage, syncs with CouchDB (or compatible, such as PouchDB Server) on the back-end, and currently uses map- reduce queries, though there is work in-progress to implement a MongoDB-like query language[2]. (This will match the Mango query language soon to be seen in CouchDB [3].)

Plus I've been really impressed with the development team—responsive to issues, consistent releases, high code-quality. It's a great project!

[1] [http://pouchdb.com/](http://pouchdb.com/) [2] [https://github.com/nolanlawson/pouchdb- find](https://github.com/nolanlawson/pouchdb-find) [3] [https://github.com/cloudant/mango](https://github.com/cloudant/mango)

<comment><AUTHOR> It is similar to pouch yes, but is more mongo query friendly right now. Also ForerunnerDB includes data-binding which is a pretty useful thing for web app devs.

</comment></comment><comment><USER3> in one sense it's cool. So congrats on that. I wonder though - if it's not as good at updating the DOM as other libraries - what is it's real "place" in the ecosystem?

Is it doing more than wrapping over IndexedDB / LocalStorage?

I'd say, a nice wrapper for IndexedDB is a welcome thing (looks like minimongo already does that). And there's a lot of space to grow in that (providing change events, etc).

Maybe I just don't get the value prop?

Maybe the value prop only really shows up when you integrate the data binding? So it's sort of like reactive programming but based on a structured data store, instead of raw JS objects?

<comment><AUTHOR> > if it's not as good at updating the DOM as other libraries

ForerunnerDB is actually very efficient at updating the DOM, only making changes to the parts of the DOM that link to altered sections of an object / document.

> Is it doing more than wrapping over IndexedDB / LocalStorage?

Yes much more... it includes views, triggers / change events, transforms, collection joins and the obvious big one - data binding.

> Maybe the value prop only really shows up when you integrate the data > binding? So it's sort of like reactive programming but based on a structured > data store, instead of raw JS objects?

This is correct and because we've been using it in production for some time we would definitely say it makes web app development a lot simpler!

</comment></comment><comment><USER4> > LOVED BY 41169 DEVELOPERS

Where does this statistic come from? I only see 196 stars on github at [https://github.com/Irrelon/ForerunnerDB](https://github.com/Irrelon/ForerunnerDB)

<comment><USER5> Seems made up. It's 1 to 1 same number as here: [http://bitcommand.com/](http://bitcommand.com/) which uses same template.

</comment></comment><comment><USER6> Is this similar to Meteor.js' minimongo[1]?

[1] [https://www.meteor.com/mini-databases](https://www.meteor.com/mini- databases)

</comment><comment><USER7> Under the hood, it seems [1] to be based on the excellent LocalForage project from Mozilla [2]. It would be nice to acknowledge that on the website somewhere.

[1]: [https://github.com/Irrelon/ForerunnerDB/blob/master/package....](https://github.com/Irrelon/ForerunnerDB/blob/master/package.json#L26)

[2]: [https://github.com/mozilla/localForage](https://github.com/mozilla/localForage)

<comment><AUTHOR> Not sure I get that... localforage is a minor part of ForerunnerDB, it's certainly not "based" on it! In fact you can use ForerunnerDB entirely without localforage.

Imagine if we had to acknowledge every different module we pulled in on NPM for every project we wrote... do you do that?

<comment><USER7> LocalForage has great cross-browser support (automatically switches between IndexedDB/WebSQL/LocalStorage), not to mention workarounds for browser bugs and the ability to store more data than what LocalStorage allows (~5-10MB). It seems like a fairly non-trivial component.

I just think it's nice to give a little credit where credit is due. :) I do see that you mention LocalForage in the changelog, but a shout-out on the site would be cool as well.

For my own part, PouchDB is pretty heavily based on LevelUP (in Node.js anyway), so we're sure to document it on the website: [http://pouchdb.com/adapters.html#pouchdb_in_node_js](http://pouchdb.com/adapters.html#pouchdb_in_node_js)

</comment></comment></comment><comment><USER8> I'm always tripped up by 'persistent'. Initially I'm super happy, then I realize it is yet another place-oriented thing :(

<comment><USER9> It doesn't help that persistent collections are now popular...but aren't persistent at all.

</comment></comment><comment><USER10> Any transaction support? That's one of the big features of IndexedDB, but I don't see anything about it here. Are you doing each command in its own transaction? That's going to be pretty slow for large amounts of data, and you lose the ability to group multiple queries into a single atomic operation.

</comment><comment><USER11> View source on this page has some lovely commented out insights...

"Plaid fingerstache craft beer" is probably my favourite.

<comment><USER12> It's just a template they used. Take a look at this site: [http://bitcommand.com/](http://bitcommand.com/)

<comment><USER13> Would you look at that, lol.

</comment></comment></comment><comment><USER14> * WebSQL: [http://en.wikipedia.org/wiki/WebSQL](http://en.wikipedia.org/wiki/WebSQL) (works almost everywhere)

* For NoSQL, ForerunnerDB sounds interesting. As IndexedDB has a flawed API and slow (using SQLite!) and buggy implementations - without a shim useless.

<comment><USER10> "Almost everywhere" doesn't include IE and Firefox?

</comment></comment><comment><USER15> So usually the point in a database is a central location to keep data, so you don't pass various excels around. Or you might want the rich querying ability of SQL to produce detailed reports.

What is the point in a browser based NoSQL database? Browser persistence?

<comment><AUTHOR> > Or you might want the rich querying ability of SQL to produce detailed > reports.

That is one of the best reasons for a browser based database. Imagine that your web application needs to show a list of users and then allow that list to be filtered with search or by user type or age or whatever. Instead of having to write complex logic to loop your array of user objects that you got back from your server, or ask the server directly, you can instead apply a query to the list you already have on screen and it instantly updates to reflect the query you specified...

This allows you to use an MVC pattern when creating your web applications instead of littering your code with complex locked-in logic that will suffer instant code rot and be generally a pain to maintain after a month or two of development.

<comment><USER15> Its is a NoSQL style database from what I see, so you won't get especially complex queries from it without a fair bit of app level complexity.

<comment><AUTHOR> Should probably check the query syntax and capabilities before making a judgement?

<comment><USER15> It said it was based on Mongo DB.

</comment></comment></comment></comment></comment><comment><USER16> While it's usable in node, the only persistence strategies seem to be based on local forage which doesn't seem to support node. So can't save data in node.

<comment><AUTHOR> We've built it to be compatible with Node but have focussed on browser usage for this version. Our plans (see roadmap in readme) include all the node goodness you'd expect :)

</comment></comment><comment><USER17> I think a lot of projects use sqlite for client side persistence. I know mega ([https://mega.co.nz/](https://mega.co.nz/)) did.

<comment><AUTHOR> Does sqlite run in a browser via JavaScript? I didn't think they had a JavaScript version...

<comment><USER18> WebSQL: [http://en.wikipedia.org/wiki/Web_SQL_Database](http://en.wikipedia.org/wiki/Web_SQL_Database) ; IndexedDB in Firefox is based on SQLite.

</comment></comment></comment><comment><USER19> So it's like PouchDB, but doesn't sync?

<comment><AUTHOR> Primarily I've been focussed on getting the browser side solid and reliable in production, sync is definitely on the way though. Don't forget that PouchDB is designed to work with CouchDB and not MongoDB so Mongo lovers are somewhat in the cold right now with client-side counterparts.

<comment><USER20> For MongoDB lovers, PouchDB supports MongoDB-style querying via [https://github.com/nolanlawson/pouchdb- find](https://github.com/nolanlawson/pouchdb-find). MongoDB doesn't have the fundamental sync primitives that CouchDB has so I wouldn't expect a similar solution which supports MongoDB on the server.

</comment></comment></comment><comment><USER21> What does is offer significantly more than the browser built-in IndexedDB?

<comment><AUTHOR> It includes views, triggers / change events, transforms, collection joins and data binding. Also this allows you to spend more time on interacting with data than worrying about what browser supports what storage. It is also useful even for apps that have no use for storage because looping over JS objects for specific matches in a number of areas of an app will get dirty pretty quickly.

<comment><USER21> I thought all browsers support IndexedDB?

However, I think it would be helpful to communicate this as a wrapper around IndexedDB instead of positioning it as another new DB.

<comment><AUTHOR> It's really not a wrapper around indexeddb at all. It doesn't even communicate with indexeddb except to save and load data for storage and that is optional. The main use here is for allowing web app developers to be able to load a dataset from a server and then query it dynamically on the client-side, as well as display that data automatically via data-binding.

<comment><USER21> But at the end you _have_ to store it somehow and thus you employ the underlying browser DBs for that (like IndexedDB or WebSQL) => wrapper

<comment><AUTHOR> But that is the point... you don't have to store it in an underlying browser db. It runs as an in-memory store if you don't use an underlying engine. The persistence module is an optional extra and doesn't even need to be included in the library.

<comment><USER21> > The persistence module is an optional extra

But a DB offers usually persistency and you called your product Forerunner _DB_

I still think that the communication/positioning/branding of ForerunnerDB could be improved since it's misleading.</comment></comment></comment></comment></comment></comment></comment>


Bill Gates' 1976 Open Letter to Hobbyists: "Most of you steal your software." [JPG] - <AUTHOR> http://www.digibarn.com/collections/newsletters/homebrew/V2_01/homebrew_V2_01_p2.jpg

<comment><USER2> The thing that strikes me most about this letter is that the business was initially flagging. A few decades later, it is the 800 pound gorilla of the software industry.

I don't agree with everything Micro-soft has done and they have certainly had some luck. However, Bill Gates had an impressive perseverance to take the business from the days of this letter to what it is today.

</comment><comment><USER3> Thing is-- if it wasn't free then most hobbyists probably wouldn't bother.

Many people, when they aren't able to obtain the tools they need to do what they really want, settle for what they've got. At least, until they can afford it, if that ever happens and assuming someone doesn't come along and offer a free version in the meantime.

</comment><comment><USER4> The interesting thing is that Gates didn't stop at this horrible business opportunity.

That's clearly a hypocritical stance. I wonder why he took it at the time if he was so outraged.

</comment><comment><USER5> In many ways, it's still an issue today: most users (especially for web applications) have come to expect software to be free, but not every business can generate cash from advertising.</comment>


Ask HN: Is the 15" Mac Book Pro (Retina) worth it? - <AUTHOR>

Hi,
Ruby developer here, still working on my mid 2008 Mac Book Pro which just keeps going, although is starting to show a lot of wear & the fan noise is driving me insane, also the screen looks very fussy compared to its modern counterparts & I don't even mean those with the a Retina display.
Just wondering if any other developers here have purchased the new 15" Mac Book Pro - are you happy with it? Do you think its worth a cool $2k post-purchase? Have you experienced any problems? <comment><USER2> IMHO both of the current incarnations of retina Macbooks are underpowered compared to the massive number of pixels they need to push. This is especially true for the 15" while running on the integrated GPU, and the 13" all the time. HD Graphics 4000 just doesn't perform adequately for OS X on that resolution in a high end machine.

The cooling solutions are among the best in terms of noise per cooled watt, they both pack a lot of battery and the latest Intel CPUs are very powerful. But if the GT-650M is needed as soon as you scroll a webpage I think that the advantage of the Retina display diminish.

If you work mostly stationary the integrated GPU will face a great challenge driving both the internal retina display at the same time as an external 27" 2560x1440 display. That translates to a lot of noise and dust in your precious machine as the nVidia chip is needed all the time.

I opted for delaying my upgrade to retina until the Haswell GT3 GPUs start shipping. When that might be is anybody's guess.

</comment><comment><USER3> I am using latest 15" Mac Book Pro right now.

I have been using it two months and during this time it worked fluently and I didn't run into any problems so far.

HD Graphics 4000 does its job and Retina display shows great pictures and texts on supported apps (Chrome, IDEs, iTerm2 and Pocket support it, that's all I need!).

Same on setup of built-in display(2560x1440) + 2*ViewSonic(1980x1080).

The only drawing lag I noticed was with app Kickoff. Moving window of this app between Retina/non-Retina display is a bit laggy. But notice that mentioned app uses a lot of drawings, animations and probably heavily relies on "fast and light-weight" CALayers.

Everything else (SSD, CPU, RAM, cooling) is as high and fast as on PC with same price.

Is it worth that money? Don't think that any Mac Book is.

</comment><comment><USER4> My mid 2009 MBP died a few weeks ago and I bought a Retina to replace it. My battery life was pretty nonexistent. It feels wonderful to have a battery again. I do a bit of CUDA programming, so having the bigger graphics card is nice. Also having a SSD instead of a hard drive is great. I don't have to worry about shaking my laptop when I use it in bed. I was really reluctant to spend the money since I was waiting for the next Intel chip revision in June. There will always be a better laptop in the future.

I haven't had any problem with not having a DVD drive. I did buy a Thunderbolt Gigabit Ethernet adapter though.

I am happy with my purchase, but it really hurt the wallet.

</comment><comment><USER5> Just like you are considering, I recently upgraded from a 2007 MBP to the current retina one.

The biggest changes for me:

\- the retina screen really looks gorgeous, makes text look great

\- the ability to switch effective resolution between normal/web browsing and high-res/small icons/coding mode is really useful

\- since it has no hard drive, it runs really quiet, which is nice. unless, of course, the fans kick in - they are fairly loud, but the fan really sounds different in a less-annoying way, less like a jet engine and more like white noise

\- the keyboard feels different, since the keys are very flat with little travel. Not sure yet if better or worse than my previous macbook's non-chiclet keyboard.

\- the power-to-weight ratio is great - but it's not the lightest notebook, so if you don't need all that much power but need to carry it with you a lot, you'd probably be served better by a macbook air or zenbook prime.

\- I need an optical drive surprisingly often, so I got the external usb superdrive. Also, needing to carry extra cables to get ethernet or more than 2 usb ports is annoying

So far I'm really happy with it, especially the retina screen is something that I really enjoy, and that you can't get with any other manufacturer or model.

Is it worth the money? For me, yes, since I use my computer a lot, and tend to keep it for many years. But you could probably get a computer that's 80% as good for half the price...

</comment><comment><USER6> I've had mine for about two weeks. The extra screen real space is nice if you run at the 'looks like' 1920x1200 resolution. The downside is the integrated graphics can seem borderline for driving the display at times. Some apps have issues. Fullscreen flash video is choppy in Chrome though works fine from both FF and Safari. The fans are dead quiet at low RPM, so if you run on integrated graphics with low cpu use (editing text, web browsing w/o flash heavy sites) you will hear nothing. On dedicated graphics and moderate cpu (flash video), it gets warm/hot and you'll hear the fans, but it is not bad. At high cpu use system can be really loud. I think I'm going to return it and wait for the next rev.

PS. I also have a 2008 MacBook Pro. It was running hot and loud until I blew it out good with a can of compressed air. Now nice and quiet.

</comment><comment><USER7> I love my Retina 15" MBP (i7, 8GB) - would recommend it _if_ you can get one with the LCD panel that doesn't have severe light-to-dark persistence problems (I forget which manufacturer it is but it's easy to test: open a white terminal on a black desktop, put some text on it, wait 2 minutes, close the terminal.)

The integrated graphics suffice for most of my work - only Pinball Arcade (and the Flash plugin) tend to activate the nVidia chip.

The main downside is that it can run warm when you have a lot going on (e.g. multiple VMs + Firefox + iTunes + Safari + Movist).</comment>


Pure Javascript Gameboy Advance Emulator - <AUTHOR> http://dl.dropbox.com/u/20328726/vbamjs/index.html

<comment><AUTHOR> In pure javascript, uses HTML5/WebGL runs almost every game. Video of a development version from before I released it: <http://www.youtube.com/watch?v=pjCuM6pnI54></comment>