An IT migration corrupted 1.3B customer records - <AUTHOR> https://increment.com/testing/what-broke-the-bank/ <comment><USER2> [https://www.tsb.co.uk/news-releases/slaughter-and- may/](https://www.tsb.co.uk/news-releases/slaughter-and-may/) \- The bank has commissioned an independent report

[https://www.tsb.co.uk/news-releases/slaughter-and- may/slaugh...](https://www.tsb.co.uk/news-releases/slaughter-and- may/slaughter-and-may-report.pdf) \- the report itself

Interesting notes from the summary:

* Functional testing took 17 months, and began very late due to project delays.

* The board was told that there were only 800 bugs, and yet the independent review found that there were more like 2000

* Non-functional testing seems to be rushed

* the Sabadell COO reported SABIS, one of its child companies and major IT contractor in the migration doesn't have the capacity to respond and solve incidents after go-live

And the TSB board decided to Go Live anyway.

Looks like a classic IT failure story - project is late, save costs on operations, get tired of testing and fixing and decide that it is good enough to be released. But also some very weird incentives - SABIS was apparently not the best vendor for the job, but they are a part of Sabadell, the bank that bough TSB.

Looking at the "Integrated Master Plan" Gantt chart of the project on page 44 is Waterfall as hell and they still failed to plan for Non-functional testing.

These some first impressions, it looks like a interesting read.

<comment><USER3> In UK/EU banking the way to get promoted is to be a yes man. Business has complete control and abhors IT. Impossible deadlines and hands-off approach make atrocious code bases. And this becomes a never ending feedback loop going on for decades. There's never time to pay for technical debt. And now with the replacement of commercial staff for IT staff there's a growing divide. Stay away.

<comment><USER4> I have experience of this and can confirm. Banking is not a sector for young smart people because it will wear you down. It's a constant battle of change approval boards, fighting their risk adverse fear of causing service distribution while at the same time expecting things to be delivered. Save these types of roles for when you are old and want a boring job.

<comment><USER5> It's the same in the US Federal government IT space, especially when dealing with archaic legacy systems. Innovation is nearly impossible and change approval boards reign. Everyone is risk-averse because of previous breaches, even to the point where engineers are not allowed to run the code they wrote themselves. You heard that right. We can write code, but we can't run it ourselves.

<comment><USER6> Had similar experience talking to ... someone at fidelity. I can't remember his title, but we were trying to negotiate some data exchange with them. He asked for our development workflow/process, and balked when he saw that a "developer" would also be the same person who had "access" to the database with customer information.

"Developers can not touch the database"

Umm... someone needs to, and we're a small team.

"Developers can not touch the database"

"Why not?"

"They can exfiltrate data".

"So could someone else who has access to the database"

"Developers can not touch the database"

"If we give a non-developer access to the database, by definition, they have access, and therefore the ability to exfiltrate data"

"Developers can not touch the database"

"Can you provide some examples of how other companies who've passed your inspection are making any sort of database changes/upgrades without someone having access to the database?"

"Developers can not touch the database"

And that ended it apparently.

<comment><USER7> This is a pretty normal requirement. I believe what they are saying is that you should not be able to access sensitive customer data by virtue of "just" being a developer, and you should audit who has access to such data and why. And by "touch" they mean unfiltered access, not "you cannot do anything with the database and therefore cannot work".

This is pretty basic information hygiene, and if you don't have enough care to implement even that then why should they partner with you? Sounds like a liability waiting to happen.

<comment><USER6> > This is pretty basic information hygiene

They would not give us any indication of what they expected.

> I believe what they are saying is that you should not be able to access > sensitive customer data by virtue of "just" being a developer, and you > should audit who has access to such data and why.

It should be pretty straightforward for them to provide a "here's our initial base minimum requirements guidelines" and work from there.

The parameters they laid out were similar to "anyone who would be capable of running any code on the database should not have access to any data". Every clarifying question about "what about X? what about Y?" was met with basically, "no, that person could exfiltrate the data". Which, yes, anyone who has access to the data could, theoretically, exfiltrate the data.

I showed a demonstration (from laptop) and the guy got really upset that I had 'customer data' on the screen and in my database. It took several minutes of back and forth to explain to him that it was "faked" data.

<comment><USER7> It sounds like your team has no clue how to approach these discussions and lost out on the partnership. Fidelity don't know you from Adam, and you seemingly gave no impressions that you had any idea what they wanted or how this process works.

They shouldn't have to spell out how to protect data to you, and simply by asking "what about X" as if you are the only one to ever say this to them or notice that there are of course ways data could be exfiltrated betrayed your ignorance, not theirs.

Did you expect them to say "my god! Of course! Why didn't I see this before? This regulation we are legally and contractually bound to obey is not perfect, so hey why don't you just ignore it."?

And to top it off you started showing realistic looking data without being upfront and clear to them that it was synthetic? Come on.

<comment><USER6> Not the same as "we're doing this and... " being cut off and being told "this is 100% wrong, and we will not tell you any scenarios that will bring you in to compliance with our view of secure".

We had plenty of secure process in place. The moment he heard the word "developer" and "database", he basically shut down and refused any meaningful engagement.

It is not his job to educate on secure practices. It was his job to inspect what we had in place, and he stopped doing that the moment he heard those two words.

"Would having a non-developer administrator connect and process the changes?"

"Developers can not have any access to any production data".

That's not a meaningful response to the question.

> And to top it off you started showing realistic looking data without being > upfront and clear to them that it was synthetic? Come on.

I'm not sure how much more 'up front' you can be besides saying "we develop with faked sample data, this is faked and unrelated to or connected with the production system" at the start of that walkthrough. Perhaps if we'd opened up a Northwind database it might have looked more plausible?

No one was expecting them to ignore anything. We were expecting someone to ask "are you doing X? how are you doing Y?", then followup with "you need to remediate these aspects of your system before we proceed further". That's what I would expect.

<comment><USER8> That's because the person you talked to probably did not know, either. They were basically reading off a checklist.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> "making individuals within a company responsible for what goes wrong within that company's IT systems" seems patently ridiculous, especially without "paying individuals in proportion to value generated by IT systems". Otherwise, you have an unlimited downside, and a hard capped upside, which, personally, means I quit IT and start serving coffee for a living.

It gets a bit murkier with executive positions, in my opinion, since the unlimited upside does start coming in to play.

<comment><USER10> If companies want to hold engineers resposible to that extend, they would also need to give them a way out. Meaning that if a developer, regardless of deadlines, do not believe that his code is production ready, then you either delay launch or the responsibility now shifts to the manager who choose to ignore the developers concern.

As developers and engineers we're responsible for letting management know if a project is not on track. What they choose to do with that information is their problem.

<comment><USER11> Individuals do get the stick, and it does make me uncomfortable. For example, here's an Etsy engineer on how a bunch of people were fired for fudging the scale-out: [https://mobile.twitter.com/mcfunley/status/11947137113378529...](https://mobile.twitter.com/mcfunley/status/1194713711337852928)

Discussion: [https://news.ycombinator.com/item?id=21849977](https://news.ycombinator.com/item?id=21849977) (but not many folks discussing the layoffs).

</comment></comment></comment><comment><USER12> > _Perhaps the easiest way to avoid outages is to simply to make fewer > changes_

Sure, here's another option: hire good engineers and pay them the market rate for good engineering.

We all know what _really_ happened here: difficult engineering work was outsourced to a cost leader.

Even if they had better "regression testing" (as the author laughably says was missing) this project was doomed with this leadership.

<comment><USER13> Outsourcing to save money is a straw man.

There are countless stories of large scale failures involving non-consultants as well as very well paid consultants.

Software is hard and most developers aren't very good. As the complexity of software increases, the number of developers and teams that can manage it becomes vanishingly small; to a point where no amount of money can help.

The best chance for a project like this to succeed is to break it down and migrate over the course of years (which might not always be possible).

<comment><USER14> I witnessed the outsourcing of 3000 IT in a large company in the mid 2000. The contract was great for the outsourcing company and signed off by a bunch of bozos who had no idea how IT runs.

The idea was to have tickets for everything and "golden" ones vichy cost a fortune but are super high priority.

IT was mad at being outsourced and played the game. "super important" thing coming? Ticket. "just a cable, man"? Ticket.

What the idiots in management discovered, is how THEIR company actually works. How important the human relationship is.

One of my colleagues in IT had the pleasure to tell a board member who came to be serviced right oway to fuck off (his words) and to open a ticket, if he knows what this is Then he picked up the phone as someone was calling and turned away.

<comment><USER15> _> IT was mad at being outsourced and played the game._

This is called "work to rule", and anybody who doesn't know the risk and repercussions of such an event happening, should not be in business management in the XXI century. Unfortunately, a lot of people try to pretend that trade unions never existed, and in so doing they lose an excellent occasion to learn how workers actually think and act.

</comment></comment></comment></comment><comment><USER16> Apart from the opening paragraphs, there is zero information what actually went wrong here.

I'm super curious how customers ended up seeing other people's accounts. That seems like a massive major flaw in logic somewhere.

Sadly, the article goes into "general history and commentary"-mode way too quick.

<comment><USER17> _> I'm super curious how customers ended up seeing other people's accounts._

I don't know anything about this particular case, but the usual cause of this is over-zealous caching (usually by an intermediate load balancer or the like) that returns cached pages while ignoring the session data. The result is that one person logs in and gets their account info, and then everyone else who tries to view the same page gets _that_ person's info instead of their own. For example, this happened to Steam in 2015: [https://arstechnica.com/gaming/2015/12/valve-explains- ddos-i...](https://arstechnica.com/gaming/2015/12/valve-explains-ddos-induced- caching-problem-led-to-xmas-day-steam-data-leaks-and-downtime/)

Of course, there are also other possibilities, but this is the most likely. Alternatives that come to mind (though I've never seen any of these actually happen):

\- A bad RNG creating the same session token for multiple users

\- Concurrency bug in the web server returning results to the wrong connection

\- Messed-up migration causing account IDs to be associated with the wrong credentials (maybe IDs from the old and new systems got mixed up)

<comment><USER18> > Messed-up migration causing account IDs to be associated with the wrong > credentials (maybe IDs from the old and new systems got mixed up)

I would put money on this one.

</comment></comment></comment><comment><USER19> > The paper also suggests a potential change to regulation—making individuals > within a company responsible for what goes wrong within that company's IT > systems. "When you personally are liable, and you can be made bankrupt or > sent to prison, it changes [the situation] a great deal, including the > amount of attention paid to it," Warren says. "You treat it very seriously, > because it's your personal wealth and your personal liberty at stake."

Being sent to prison for buggy code... that's quite extreme. Are people even fired for buggy code? If we want to get more extreme than firing, how about losing 1 year's compensation in addition to being fired.

<comment><USER20> I'm non payed enough to be legally liable for the code I do at my job.

...and moreover, what about the usage of third party software? (worse if it's free software...)

<comment><USER21> Look it in another way. Almost every worker in the not software world is legally liable for his work. For the chef in the kitchen (no poison in food) to construction worker (the building should not falling apart) or electricians (proper insulation and ground, etc). I work in industry automation and I really would see if software would be simple again. Todays software depend on so many external things.

<comment><USER22> In Germany, and I guess in most countries, almost no worker is legally liable, as long as they are not actively ignoring the safety regulations applying to their work. So to make a software developer legally liable, you first have to set up a clear framework of "safety regulations" by which they can be judged.

<comment><USER21> Yes every job has it regulations, except for pure software. Just software guys seems to have no rules at all.

<comment><USER23> I assume you never saw a 'workmanlike manner' clause in an independent contractor contract?

Any industry, including ours, has best practices.

</comment></comment></comment></comment></comment></comment><comment><USER24> > The culprit was insufficient testing

The culprit was _not_ insufficient testing!

The culprit was insufficient testing, _plus_ lacks of restorable backups, on multiple levels.

Last level of backup: there's 5 million records, use a few dozen reams of paper and print out the account totals for every single account.

For all of the complex systems you can think of (planes, living organisms, etc), the reason things usually go so well is that there are multiple levels of checks and balances. Everything is usually veering towards entropy, and fail-safe systems try to ensure when things go wrong that they fail safely.

<comment><USER25> It's not possible to restore from backup when the transaction is between your bank and a different bank.

You might restore from backup, but the other bank won't.

The issues here are far more complex than just keeping track of the current balance: a first year CS student could do that part.

<comment><USER26> Wait. I don't understand. If you have the opening balance and have all the transaction logs, what are you missing?

I don't see why it shouldn't be possible to feed data to both the new system and the old system for a while...

<comment><USER27> But that requires forethought, planning, and a dedication to testing.

</comment></comment></comment></comment><comment><USER28> Working as a test automation engineer, I'm not surprised at all. There is small to no investment in testing in most companies because it's just considered a cost. I cannot count the times where I asked for better servers for testing, put more time and people in creating a better testing infrastructure, but the answers was always "we will do it! We definitely need to get better at testing!". Still waiting for any action. Most of managers I met just want to meet the deadline they set and ask: "can't you test it in another way? How is possible that it takes so much time?". They don't give a damn about testing, they just want a pat on the shoulder that everything is fine and give the responsibility to someone else if something goes wrong.

<comment><USER29> Scientist: "I've created [new medicine]!"

Manager: "Perfect. Let's sell it!"

Scientist: "Well, we'll need to test it first. We should run some trials —"

Manager: "We definitely need to test more often! But I already agreed to have it out by next Tuesday, so maybe we can just release it and aim for more testing next time."

<comment><USER30> I call these "real scientists", because they only exist in books and movies.

In reality, the scientist will say "let's publish! who cares about testing, publish or perish!".

<comment><USER28> Publish or you'll be the trouble maker that will never have a career, that's what you mean?

</comment></comment></comment></comment><comment><USER31> > "Perhaps the easiest way to avoid outages is to simply to make fewer > changes."

The exact opposite is true. When a process happens infrequently, it's more likely that the people involved will make mistakes and overlook steps. The correct answer is to make changes more often, and to develop robust processes and automation around those changes.

<comment><USER32> I think you are implicitly referring to change size too here: smaller changes are better. Can probably be included in "robust processes".

</comment></comment><comment><USER33> Ah, the classic Enterpise big bang migration.

Enterprise tend to favor big bang migrations on a specific date because somebody higher on up set a particular date and everything falls into place with a Gantt chart running waterfall. The reality is that it falls onto a few technical folks to triage a large amount of teams, including the ones from the company they're trying to break away from (which introduces friction). This includes significant risk to the project.

"TSB chose April 22 for the migration because it was a quiet Sunday evening in mid-spring."

This might've gone better if TSB chose months prior to April 22nd for the long duration migration and testing to be completed, and a period of weeks or months for going live post migration. The F5 load balancer (hardware commodity) could've slowly cut over the traffic 10% at a time to the new migration site to get a feel for user experience. Coordination with the TSB network team would be necessary to accomplish that.

It is a tough spot though, I hope the team learned something from that.

<comment><USER34> > The F5 load balancer (hardware commodity) could've slowly cut over the > traffic 10% at a time to the new migration site to get a feel for user > experience.

I doubt an F5 load balancer would work in this specific case. But there definitely should've been a software router-adapter that routed requests to two systems and converted their replies to a single format. This would've let them migrate their customers in batches instead of a big bang cutover.

That's what I've always done when migrating data to a new banking system.

<comment><USER35> What I've seen work well, for multiple migrations, (at an admittedly smaller scale) is using shadow writes/reads and a source-of-truth toggle.

The API layer made requests to both the old DB and a new DB that had been populated during a small window of scheduled downtime.

We spent a couple weeks/months running checks in production that the old DB and new DB were returning identical results, though still returning the old DB's results as source of truth. Eventually, we flipped the source of truth to the new DB, and some time later decomissioned the old DB.

<comment><USER36> Great approach imo. Once you get flipped over to the new source of truth you have to make sure the business prioritizes decommissioning the old DB, though. I've seen certain departments (looking at you, BI) treat the old database as a permanent backwards compatibility layer.

<comment><USER37> when the old database stops getting writes, it stops being useful pretty quickly

</comment></comment></comment></comment></comment><comment><USER38> The lack of testing is a symptom of a deeper root cause: cost cutting. The audacious thinking that you can just shuffle around developers that have been on the project for multiple years, outsource them to cheaper countries, count that as a win because the balance sheet looks better for that year, and then don't expect this to happen. Honestly, there is a lot of hidden knowledge that NEVER gets fully transferred in these kind of knowledge transfers and you'll only notice it once shit really starts hitting the fan.

</comment><comment><USER39> I have been out of big bank IT for eight years now. Clearly I don't miss it. For one programme we had to produce upfront estimates. Clearly anything we produced would be wildly inaccurate. But we tried. The IT director then cut the estimate in half and added another hundred people to it. Cue complete chaos and a massive delay. That was the calibre of senior management back then. I doubt it's much better today.

<comment><USER40> A classic: "Adding manpower to a late software project makes it later". Fred Brooks - The Mythical Man-Month.

</comment></comment><comment><USER41> I didn't read everything, but their erronous mistake is the resemblance in "The Phoenix project" book[0], it's awful but realistically can happen at many corporates.

0 - [https://www.goodreads.com/book/show/17255186-the-phoenix- pro...](https://www.goodreads.com/book/show/17255186-the-phoenix-project)

</comment><comment><USER42> Having done a large data migration for medical records, I would be sweating bullets doing this with presumably fluctuating transactional bank data. Out of curiosity, does anyone have recommendations for their favorite data migration tool?

<comment><USER43> IMHO it is unreasonable to expect these sorts of things to be possible to do using a big bang approach. The complexity exceeds cognitive capabilities and disaster strikes. Therefore, it is not optimal to see these projects as data migration but functionality migration ones. You move some customers to another set of functionality. Thus, my recommended tool is to use none

<comment><USER32> 100% - what I always do is start the new logic/system so it processes in parallel with the old one and at the same time backfill the old data into the new system. When everything is proven working, feature flag to switch the new system as the main one, old one keeps running. After a period of quarantine, switch off the old system.

I don't understand the requirement of doing the "nuclear button" migration, except maybe a shortsighted way of trying to save costs.

<comment><USER44> We do this too and I think it's a great approach. One thing I will say is you should try and decommission the old system as soon as feasible - running both has additional testing and development costs, particularly if for some reason you need to add new features to both.

We generally aim to leave the old system toggled off for a release or two (allowing us to switch back in the case of a serious defect) and then rip all that old code out in the subsequent release.

</comment></comment></comment></comment><comment><USER45> The article lacks substance, it just repeat « it's a very complex system, it was not tested enough » 10 times. I was hoping some details.

</comment><comment><USER46> There's not a lot of details in that article. But it seems that they were dealing with a moderate amount of data (about 100 GB ?), which is trivial to backup many times. They do not explain what's the big deal with that.

</comment><comment><USER47> Very interesting article. But I miss a story about what happened in the days after the disastrous migration. Could customers find a correct balance on their accounts eventually?

</comment><comment><USER48> Potentially dumb question: I've done front-end (iOS) my entire career. If I wanted to go from 0 to being able to do a SQL DB migration in production without disaster, what should I do?

I saw [https://www.masterywithsql.com/](https://www.masterywithsql.com/) posted on HN a few months ago, and I'm planning to finally start it over break. But what do I use after that?

<comment><USER49> \- pick a relational database (ie: mysql or postgres)

\- learn how to backup the database (I suggest via the official documentation)

\- restore that backup (on a different environment)

\- validate the restore is complete (compare the data)

\- if the backup and restore are good, now you can start learning how to migrate without the stress that you'll lose historical data

<comment><USER50> You're absolutely right, but we all can be talking about different subjects here:

\- database restore \- database migration (your case) \- data migration to a different platform and presumably different data model (the bank's case, or my answer here)

Not sure which case the question was reffering to, though...

<comment><USER48> How about all 3 :)

</comment></comment></comment></comment><comment><USER51> A bank fails at risk management. Hmm.

Commonly-held factoid statistic says they have a 50% chance of going out-of- business within 6 months since they lost so much vital customer data. I hope they made backups and didn't just rely on snapshots, database transactions or journaling.

IT professional prime directive #0: don't lose vital data.

</comment><comment><USER52> This ought to be an object lesson in not cheaping out on hiring good developers and architects to run sensitive projects like this.

Alas instead it's seen as an opportunity to push the risk on to developers.

With this kind of response and IR35 coming up I can foresee more TSBs happening.

<comment><USER23> Management was doing all right: the project was late and over budget. So, money was there.

But I suspect money never reached the developers. Until the late panic stages when it was too late to correct course.

</comment></comment><comment><USER53> I have bad dreams about this very thing, I cant even read the article

<comment><USER54> Don't worry, there aren't any interesting details in it.

<comment><USER55> Such a weak article with so much filler. The first several paragraphs were interesting and then he goes on to say in the 60s only employees used the bank computers, but nowadays (to paraphrase) "there's this thing called online banking".

You don't say... (Insert Nic Cage meme here)

<comment><USER56> I admit feeling bewildered at that random flashback and scrolling endlessly just to get back to the point of the article

</comment></comment></comment></comment><comment><USER57> Article quoted 2500 person years, over a period of a couple of years, to move from a Lloyds system to a clone of an existing Banco Sabadell system.

Does that seem like a lot of effort for 5 million accounts? Maybe worth it since they were already paying EUR 100 million per year to license the old Lloyds system.

I'd bet they moved from one big honking RDBMS to another. Curious if old and new were different DB vendors, if anyone here has insight.

<comment><USER58> > Does that seem like a lot of effort for 5 million accounts?

It's… close to a person-hour per account… At that point you might as well migrate each account by hand.

</comment></comment><comment><USER59> Git 'blame' would take on a whole new meaning.

</comment><comment><USER60> Important safety tip. If you hear any vendor executive brag about the large number of people it took to do an IT project, seek out a different vendor.

I don't get how small-value transactions could turn into large-value transactions on migration, though. Hollerith cards? Wrong column numbers in the COBOL program? Decimal point / comma confusion? Whisky Tango Foxtrot?

<comment><USER61> There was a recent post about in-flight entertainment/information systems on the front page (clickbaited with "widewine" in the title), which showed a (presumably _somewhat_ recently designed) JSON object containing flight data information.

I think the date was "00YYMMDD" or something like that, time zone offsets were represented as a float-respresented-as-string, but to indicate a negative offset they added 80000 or so...

So if that's what happens to systems designed today, imagine how legacy cruft from decades ago must look. I would not be surprised if the answer to "Hollerith cards? Wrong column numbers in the COBOL program? Decimal point / comma confusion?" was "all of the above, and then some".

<comment><USER60> Oh, terrific, some ancient program in C, where somebody cobbled in a poorly designed and untested C version of JSON.stringify(). That is 21st century craniorectal inversion, not decades-old tech debt.

I started out working in that era (no COBOL, but all the rest of it). At least some of us were suspicious of data-in-a-few-characters and character column- number based records (ummm, punchcards). Some of us checked all kinds of things on input to try to reject garbage. Spaces in the middle of numbers? BOOM. Something unexpected in the "record type" letter? BOOM. The card reader actually had a diversion output tray where we could spit out the rejected cards.

But, still, lots of bad stuff got through.

</comment></comment></comment><comment><USER62>
      Then, in 1967, the world's first automated teller machine (ATM) was installed outside a bank in north London

I wonder how much rework was needed when decimalisation came a few years later.

</comment><comment><USER63> Best software practices for safety critical systems seem essential, I don't think it's crazy to think that some sort of regulation or licensing would help enforce those practices.

<comment><USER64> Is banking "safety critical" in a legal sense, though?

</comment></comment><comment><USER65> It is not specific to finance, I would say the majority of IT operations are like this. Why? Because this is a new profession and ignorance.

</comment><comment><USER66> This article reads like a dystopian, horror version of the rollout of "Phoenix" in the book The Phoenix project.

</comment><comment><USER67> seems like consultants are aiming right for the three 9s, but it's the cloud, so I guess 2 nines are ok eventually.</comment>


From High Frequency Trading to Silicon Valley - <AUTHOR> http://nancyhua.com/2014/03/20/high-frequency-trading-vs-silicon-valley-startup/

<comment><USER2> I wish Nancy Hua all the best, but as an entrepreneur-quant-algo-trader I have to wonder why, if she was so great at trading, she isn't still pursing it?

<comment><AUTHOR> I've thought and blogged about this question a lot. [http://nancyhua.com/2013/12/23/waste- life/](http://nancyhua.com/2013/12/23/waste-life/)</comment></comment>


Facebook's Project Titan: A Full Featured Webmail Product - <AUTHOR> http://www.techcrunch.com/2010/02/05/facebooks-project-titan-a-full-featured-webmail-product/ <comment><USER2> Ah! Who else is better than Gmail creator to kill Gmail? Provided Paul Buchheit is still with Facebook after their acquisition of FriendFeed.</comment>


HP Spectre x360 review: the best Windows laptop of 2016 - <AUTHOR> http://www.theverge.com/2016/12/12/13914962/hp-spectre-x360-review-2016-laptop <comment><USER2> I'm pretty happy with my Lenovo X1 Carbon 4th gen that I bought back in May. it seems to be about the same price as the HP when you beef up the SSD drive and the RAM. My Lenovo is 1440p at 14", but I'm typically scaling the display to 125%.

But that battery life the reviewer claims he's getting on that HP is pretty incredible. I forget what Lenovo claimed mine was, but Chrome is a battery drainer from hell, and I'm sure Visual Studio is too.</comment>


Application Bundles for Linux (drag&drop installer) - <AUTHOR> http://www.appbundles.org/ <comment><USER2> I think <http://0install.net> is a better solution as it handles updates and works on multiple platforms.

Regardless, unless a couple of major distributions support one of these alternative install systems they're ultimately a futile effort. This is something that's unlikely to change since from a distributions standpoint they don't offer significant advantages over the status quo.

As an aside, to anyone considering an alternative install system, please take heed of the PC-BSD folks and bootstrap your package system by generating packages from an existing system.

</comment><comment><USER3> This is awesome. I am a big Portable Apps fan (on windows anyway), I've got a folder with most of the apps I use regularly and I just copy it to any new Windows based computer and I'm up and running. It includes: OpenOffice Firefox Opera Putty WinSCP VirtualBox Portable with a WindowsXP development VM (Visual Studio and SQL Server) A ton of other apps that rock

But I love Linux and hate that I have to reinstall a ton of stuff every time I setup (or reimage) a workstation.</comment>


Show HN: Readable-HN Chrome extension - <AUTHOR> https://chrome.google.com/webstore/detail/jpnbjaechgbbpokepgmdkhgjfmkmjecn/

<comment><USER2> I am sorry, but I find the original HN to be more readable than after applying the extension. Maybe that's just me, but I don't consider the bigger gaps between lines to be more readable. Also the original font looks better to me.

</comment><comment><USER3> I actually think the colours and fonts on Hacker News is pretty good.

The only big design problem with Hacker News is the measure (width of the text blocks), which sizes according to the browser. Resizing measure without resizing font-size is just crazy IMHO. Actually, adding a max-width to Hacker News wrapper (which oddly enough seems to be a table) would go a long way.

(I know I should stop complaining, and start building an extension myself.)

</comment><comment><AUTHOR> I put together a custom CSS for HackerNews to make it little easier to read discussions. I know that there are some available but this is modeled after Readability bookmarklet and the code is available at:

<https://github.com/jorde/readable-hn>

It's not perfect so feel free to fork and submit patches (or create variants with your own font preferences).

<comment><USER4> could you put a small settings screen to adjust font size for lazy users like me. love the clean look :)

<comment><AUTHOR> I guess that could be done easily by injecting JS. I have to take a look at it later (not high priority as fonts are adjusted to my personal preferences already :)

</comment></comment></comment><comment><USER5> I prefer the flexibility of Stylebot (on Chrome, or Stylish in firefox).

Right now the style I have applied is this one: <http://stylebot.me/styles/223>

I would like to do something with the comments tree, but since they are not nested but padded its not possible to show a hierarchy on them :S

It would be nice to see other peoples styles to take ideas :D

<comment><AUTHOR> I have been using Stylebot but prefer CSS extensions as there's a small lag when applying styles with SB on load. I still use Stylebot for creating styles but I the results ends up in a custom extension (with !important).

</comment></comment><comment><USER6> This is an amazing experiment I actually liked the new design but I prefer the original one more, maybe due to a habit.

I second that the whitespace between the 2 articles is more than I personally feel comfortable with. Also, a bigger font and a darker font color for the number of comments would be awesome.

Great work, nonetheless!

</comment><comment><USER7> Just posted a screenshot today of what I was going to upload tonight! <http://twitpic.com/4h5a5d>

Will submit it anyways in case you all feel the need.

<comment><USER8> It looks very nice. Would you port it to greasemonkey script so that it can work on Firefox.

<comment><USER7> Just submitted the app in the Chrome Store. Here is the HN link: <http://news.ycombinator.com/item?id=2410195>

Will do a port for Safari and Firefox soon! Hope you guys like it!

<comment><USER9> I am going to slug it out and try get use to this app because I do hate the old hacker news but I'm use to it out of habit.

What I don't like about this one is how small the upvote button is and how small the points and usernames are.

</comment></comment></comment></comment><comment><USER10> Would you be willing to open source this?

It'd be cool to play around with styles myself, or modify for other websites.

<comment><AUTHOR> It's open source: <https://github.com/jorde/readable-hn>

It's actually rather easy to create custom CSS styles using Chrome Extensions. This is my second.

</comment></comment><comment><USER11> I think it takes a bit more getting used to, but I do genuinely like it. Good job, I love the white space.

</comment><comment><USER12> Ctrl+MousewheelUp is all I need</comment>


Peter Thiel Pledges to Support Trump's 2020 Campaign - <AUTHOR> https://www.bloomberg.com/news/articles/2018-11-01/peter-thiel-praises-trump-pledges-to-support-his-2020-campaign <comment><USER2> I find it a bit humorous that Peter Thiel is "bullish" on life-extension research while fervently backing a party that is doing everything in its power to make Earth uninhabitable in the near future.

<comment><USER3> A common misconception. I think the average conservative definitely believes that we need to take measures to protect this planet. We just don't necessarily believe that government should be the method of action. Traditionally the market is vastly more efficient at solving these hard problems...

<comment><USER4> I'd appreciate hearing a conservative history of markets correcting unpriced externalities.

<comment><USER5> Here you go:

</comment></comment></comment></comment><comment><USER6> I've talked to some people who I think are smart, in tech and finance, about why they like Trump (two of which also love Thiel, and I myself think Peter Thiel is underrated). If you sincerely want to understand where they are coming from, I have some reading for you.

One of them gave me this article: [https://www.claremont.org/crb/basicpage/the- flight-93-electi...](https://www.claremont.org/crb/basicpage/the- flight-93-election/)

Another penned this one recently: [https://sovereignexceptions.wordpress.com/2018/10/22/team- tr...](https://sovereignexceptions.wordpress.com/2018/10/22/team-trump- trumpism-and-trump/)

None of my acquaintances in tech are public about supporting Trump. Finance is a bit different. And this is not at all true of my blue-collar friends (also note I live in New Hampshire, not SV). Unfortunately I find it is getting harder to talk politics, at all, with my very liberal friends. And it is very easy to discuss (and even disagree) with my conservative friends.

</comment><comment><USER7> It makes sense. In 2016, the slogan was Make America Great Again. His 2020 slogan is Keep America Great.

He has delivered on his promises, America is now great again, why would you want to go back?

<comment> ng-user What metrics do you guys (Americans) use to measure how 'great' the country is? From the start this has puzzled me.

Or rather is it a simple slogan one can confidently spew knowing it's impossible to prove?

(edit: I get that this is probably sarcasm, but it seems at least _SOME_ Americans believe it to be true)

<comment><USER8> It really depends on who you ask. Stereotypical democrats nowadays primarily measure racial and gender inequality primarily, with economics and wealth inequality coming second and rural incomes and quality of life coming far behind. Stereotypical republicans primarily measure GDP, economic freedom, and total power of the country.

Politicans like Sanders and Trump are rising because they focus more on issues like income inequality and declining quality of life for the lower and middle classes. Both address globalization and labor leverage, though they address it differently. While they are culturally diametrically opposed, they are still remaining popular because they are addressing these issues that other politicans don't address, seemingly because big money has caused them to ignore those issues.

<comment><USER9> Okay. I am a Republican, but I do not understand how our party can have leading candidates who are hereditary billionaires or multimilillionaires, yet trumpet that it is not corrupted by "big money".

I do not think money corrupts, if it did, then Republicans would be the first to suffer.

</comment></comment></comment></comment><comment><USER10> What I've found interesting is that there is a formal term "histrionic reoccurrence", and amazingly an important writer on the subject is named G.W. Trompf.

[https://en.m.wikipedia.org/wiki/Historic_recurrence](https://en.m.wikipedia.org/wiki/Historic_recurrence)

</comment><comment><USER11> If history can teach us anything, Trump's chance of winning are not as low as people think.

[https://medium.com/simone-brunozzi/donald-trump-has- won-b0b6...](https://medium.com/simone-brunozzi/donald-trump-has- won-b0b6d60c32ab)

<comment><USER12> His favorability ratings are comparable to Obama's, Clinton's and Reagan's at this point in their presidency. He could easily get re-elected if the economy is still going strong.

[https://projects.fivethirtyeight.com/trump-approval- ratings/...](https://projects.fivethirtyeight.com/trump-approval- ratings/?ex_cid=rrpromo)

<comment><AUTHOR> And it's not just unemployment that's down. Latest numbers are showing an uptick in actual wages. Combine that with people taking a look at their pay stubs and you've got a recipe for succcess in 2020.

<comment><USER13> Can you provide evidence that real inflation adjusted wages are going up? It's my understanding that wages for the bottom 60% of the country have fallen or stagnated since the 70's and have only gone up in terms of non-inflation adjusted, or have actually gone down.

The wealthy/elite classes are doing absolutely fantastic under Trump though, and are getting tax cuts and wage increases. Those don't represent America, though.

Edit: Simple Google search shows my thoughts to be true [1]. Wages aren't rising quicker than inflation/cost of living, so saying wages are increasing or are "up" is a bit inaccurate.

[https://www.forbes.com/sites/patrickwwatson/2018/09/25/real-...](https://www.forbes.com/sites/patrickwwatson/2018/09/25/real- wage-growth-is-actually-falling/#11c2a8587284)

<comment><AUTHOR> Well there is this report from yesterday: [https://www.cnbc.com/2018/10/31/wages-and-salaries-jump- by-3...](https://www.cnbc.com/2018/10/31/wages-and-salaries-jump- by-3point1percent-highest-level-in-a-decade.html)

A 3.1% jump in wages should beat inflation at least for _this_ year.

<comment><USER13> Less than 0.5% increase then. Not too great!

Does this also take into account wage increases of the top 10%? If so, that article would be wildly misleading.

</comment></comment></comment></comment></comment></comment><comment><USER14> It's no secret that Thiel has particular ideas about human behaviour and about how the world should progress.

He is very clear in describing what he considers the issues, and it would appear that Trump's ideas in some way or other align with his own.

</comment><comment><USER15> Peter, what are you doing? I loved your book 0 to 1 and your rogue style but this makes it seem like you're (even more?) a jerk and out of touch with your peers.

<comment><USER16> When it comes to Trump support, look no further than the fear of Brown People. It's just that simple. There is nothing else he is consistent on.

Generally, the more intellect, the less that sort of thing is likely, but racism traps some people that are not quite dumb. It's what's in their heart that matters.

</comment></comment><comment><USER17> So a rich white man born into privilege and complicit with America's domestic racism, wealth inequalities, and staunch disregard for climate change, supports a candidate with the same ideals?

</comment><comment><USER18> Peter Thiel is no fan of democracy, so I'm not surprised he's cozying up to the Trump administration

<comment><USER19> Interesting. Any proof that he's not a fan of democracy?

<comment> village-idiot > I no longer believe that freedom and democracy are compatible

From the article linked below.

Honestly, reading that over, his political ideology is a hot mess of inconsistency. I'm not exactly sure _what_ the hell Peter Thiel stands for, other than his own pocket book.

[https://www.cato-unbound.org/2009/04/13/peter- thiel/educatio...](https://www.cato-unbound.org/2009/04/13/peter- thiel/education-libertarian)

<comment><USER20> > his political ideology is a hot mess of inconsistency

That's what happens when you treat "libertarianism" as the immutable word of God. Doesn't translate to the way human society works.

<comment> village-idiot I think the funniest thing is this idea that you can escape to space or wherever and enjoy a free society, as if all the problems didn't come from humans in the first place.

</comment></comment></comment></comment></comment><comment><USER21> He's very wealthy so he can insulate himself from Trump's attacks on the LGBT community which he is a part of. Too bad many people will suffer because of this.

</comment><comment><USER22> I really enjoy hearing the minds here on their opinion of why Peter Thiel is backing Trump. I don't quite get the motivation and if there are any insights to this, please fire away.

<comment><USER20> 1) He's rich and directly benefits from the tax cuts.

2) The cuts to social services don't affect people in his pay grade.

3) He lives in a gated community and wouldn't be targeted for harm by the sort of people that are now emboldened to say the quiet part out loud.

4) He founded Palantir and wants to secure more government contracts

5) His experience with being outed by Gawker (completely unethical IMO) probably also led to him viewing "the media" as a monolithic force out to get him.

<comment><USER23> Everyone who has a job directly benefits from the tax cuts.

<comment><USER24> Untrue, because the tax cuts aren't unilateral cuts and inclide increases,and even the cuts alone don't affect all people with jobs.

</comment></comment></comment></comment><comment><USER25> > Questions about Trump's name-calling and lack of civility were brushed > aside. "I don't think Trump's nicknames are that nasty," Thiel said. > "They're powerfully accurate."

I wish people would stop asking about this crap and ask Trump supporters how they feel about detaining asylum seekers, kidnapping, drugging and abusing their children, or how they feel about Trump kowtowing to Putin, or MBS, or about the corruption and nepotism. About the fact that we don't have a fucking ambassador to Turkey or Saudi Arabia because JARED is supposed to be handling it.

Stop asking people about if they think the Tweets are too mean...

Lots of downvoting going on in this thread. Care to comment?</comment>


Electronic components that dissolve in the body - <AUTHOR> http://www.nature.com/news/biodegradable-electronics-here-today-gone-tomorrow-1.11497

<comment><AUTHOR> Ref and link to the abstract of the paper Hwang, S.-W. et al. Science 337, 1640–1644 (2012). <http://www.sciencemag.org/content/337/6102/1640.abstract>

</comment><comment><USER2> Wow. That is pretty fascinating.</comment>


What the Supreme Court's Amazon Decision Means - <AUTHOR> http://op-talk.blogs.nytimes.com/2014/12/11/what-the-supreme-courts-amazon-decision-means

<comment><USER2> What this means is that people on the lowest end of the income pole will be punished with unpaid work. And if you want your job, you'll deal with unpaid work.

I'd like to know what other things I could have workers do without recourse. How far does 'not work' extend?</comment>


Show HN: The Mac Index – Compare prices of Apple products in different countries - <AUTHOR> https://themacindex.com <comment><USER2> Do Canada and Japan charge taxes on consumer products? And why does the author rank the countries by before-tax prices rather than after-tax costs? (He/she lists some after-tax costs in grey, though.)

</comment><comment><USER3> India missing?</comment>


Ask HN: Ask new users for email, or email and pw, or email, username, and pw? - <AUTHOR> Currently trying to launch a new web app.  I'm a bit torn between the 3 examples.
Basecamp asks for just email, then if you abandon during the next step they send you a email with your account url that replaces your name with email.
DigitalOcean asks for email and password
Github asks for email, username, and password.
I know the answer is "it depends" but I'm more so looking for general explanations on which would be best and why. <comment><USER2> Do you need to publish a user handle? If not, you do not need a username, just a meaningless identifier. If yes, do not assume that e-mail address is intended to be public (Github e-mail is in commits anyway, SO e-mail is not).

Do you provide a method for adding/changing/removing an e-mail address? (They're mutable and impermanent, e.g. work/school provided ones)</comment>


Stealth startup seeking Xamarin developers - <AUTHOR>

If you're a top notch Tamarin developer with solid C# skills, a good mix of native iOS and Android development, with a flair for aggressiveness, get in touch with me.<p>Kapil Aggarwal. email@example.com <comment><USER2> stealth mode is retarded. If your idea is so easy to steal that it needs to be hidden then it's not a great idea to begin with.

<comment><USER3> No need for ableism, dogg.</comment></comment>


Spiffy: A Combinatorial-Probabilistic Analysis of Bitcoin Attacks - <AUTHOR> https://arxiv.org/abs/1808.05255 <comment><USER2> hmmm. grrrrrr some bit beyond me but my favorite part is.

At last, despite the inherent theoretical limitations of consensus in distributed computing as illustrated in [FLP], bitcoin's 'consensus' computes at a market capitalization of >100 billion USD

<comment><USER3> Don't think that's the main highlight of the paper but sounds good i guess.

It's about soccer matches played by androids as far as i can see

<comment><USER4> hahaha too funny. These guys are hilarious. Androids team playing soccer equates to the double spending problem. Nice .</comment></comment></comment>


Startup Tips From the Father of Gmail and FriendFeed - <AUTHOR> http://mashable.com/2009/02/24/paul-buchheit-startup-tips/

<comment><USER2> Paul surely is responsible for a large part of what FriendFeed is today, but the parents who were there at birth are Bret and Jim: <http://friendfeed.com/about/team>

</comment><comment><USER3> Not really very insightful. And the don't need virality if your product is good bit really hasn't been proven out.

There are many superior products out there that have lost to the competition (especially in the social network space) because they never gained enough early traction.

<comment><USER4> I didn't really say that you "don't need" virality, but that the best kind is a product that people love so much that they want to tell everyone about it (which is a kind of virality).

Obviously, the need for virality also differs based on what you are building. For social networks, having your friends there is a big part of what makes it a "good product". For a search engine, that's less important.

What bothers me is the focus on virality over actual value creation. The best examples are some of the "zombie" type facebook apps that are pretty much just pure virality.

<comment><USER3> I agree w/r/t to the facebook apps - I don't think they have any lasting value.

And I think any product that completely revolutionizes a domain doesn't need to "go viral" to succeed - ultimately the excellence or game changing experience will cause these apps to succeed, Amazon, and the iPod are two great examples. Google was a success because they created a game changing search product - it was (and still is) vastly better then anything else out there.

I think however that while everyone tries to create a game changing product, the vast majority of products are really incremental improvements and in these cases going viral helps. Twitter being a great case in point - really just an iteration somewhere between IM/Email/Blogging - but went viral enough to be important, over some better platforms such as Jaiku.

</comment></comment></comment><comment><USER5> Weird to see a "Top 5" list from the same guy who said "Limited Life Experiences + Overgeneralization = Advice"

<comment><USER6> To be fair to Paul, I should say that the list of 5 isn't his top ideas. It's just 5 ideas that he told me in when we talked.

</comment></comment><comment><USER7> Oh my gosh, how annoying is the video at the bottom? I was hoping to just see the interview with Paul, not a sliced and diced version that screetches like he's pulling a needle over a record..

<comment><USER6> Yikes! Alex, I'm still trying to figure out how to sum up long interviews in short videos. I'll keep at it.

<comment><USER7> Sorry I was a bit harsh there. I had really hoped to see the full interview and got a little frustrated.

Curious.. do you have the original (full-length) interview video? Would you mind posting it somewhere?

<comment><USER6> Nah. I appreciate the feedback. I'm uploading the full video to Vimeo. Will post a link here when it's done.

</comment></comment></comment></comment><comment><USER8> The hardest part about his first point, "launch a scaled back version first" is determining what, _exactly_ , that means to your product. For me, it's not at all a challenge to think of 20 incredible features that would completely blow away the competition. Does that mean I should only pick 10? What if I'd though of 50... should I now only pick 25?

I wish he'd talked more about the purpose of scaling back. I'd presume that it's to save time, and to have something working with which you can improve. If that's the case, I'd much rather heed the advice of "launch early, launch often" then "scale back." The most difficult decisions to make, for me at least, are what features to spend time on. _I consider every version of what I make scaled back,_ because to me, it's never done.

About his argument for scaling back: "there are people in their garages building an electric car." What does this prove? It doesn't convince me that these people in garages are on a better track than Tesla. If, however, one of these people manages to build a better company than Tesla, based on their garage-built prototype, then maybe I'd take his point more to heart.

<comment><USER6> Sam, I think whether you want to launch 20 or 50 or 20,050 features, ideally, you should launch with just 1.

The questions I have are: how practical is that? and how can you decide with 1 feature to launch first?

I tried asking Paul that in the interview, but it's a tough concept to teach in an impromptu interview like the one I did.

If anyone has any suggestions for people I can interview about this concept, I'd love the help.

<comment><USER9> Very cool to see somebody from Mashable writing here - I like when a writer follows their discussion places.

In writing you get told to focus on a single core idea: a central theme that you revolve everything else around. It works similarly for web design (or at least that's the model my cofounder and I are using): you find out what lies at the heart of your system, what everything else revolves around. Every idea has one, even complex ideas. You figure out how to create that idea, and in theory every feature you add should revolve around that central concept.

Sam: your idea is based around commenting, right? What you need to do is figure out exactly what your big idea is. It's never something vacuous: it's one specific thing that you think places you above the people who are out there now. Everything else you do revolves around that core.

(As for people to interview: you could always try the 37signals people, and I'd also recommend the contrast.ie team: They have a very good sense of how to focus a concept.)

<comment><USER6> I live on this site. I've done several interviews on Mixergy.com because of what I've read here. Thanks for the feedback.

</comment></comment></comment></comment><comment><USER6> Here's the whole (unedited) interview: <http://www.vimeo.com/3368761></comment>


Build a Docker-compatible replacement for Dockerfile using buildkit - <AUTHOR> https://matt-rickard.com/building-a-new-dockerfile-frontend/ <comment><USER2> Author here - thanks for submitting.

Happy to answer any questions. I have some more ideas on more useful frontends, but I thought I'd publish a simple implementation that others could follow along with and use it to build their own.</comment>


Life and How to Survive It (2008) - <AUTHOR> http://mrwangsaysso.blogspot.com/2008/08/life-and-how-to-survive-it.html

<comment><USER2> "And so I want to start by giving one piece of advice to the men: when you've already won her heart, you don't need to win every argument."

I am absolutely in love with this speech. The message is so clear and succinct, while he also manages to inject relevant, yet not terribly offensive humor into it and still stay on topic.

I also love that he can cover so many different points without making any one point take priority over others. Meanwhile the quantity of topics covered also doesn't dilute the strength of each. I find that really remarkable.

He sums it up so nicely right in the middle:

"I have told you that your life is over, that you should not work, and that you should avoid telling the truth. I now say this to you: be hated."

</comment><comment><USER3> I clicked, expecting it to be an audio/video clip that I'd maybe, possibly get around to listening to/watching. Pleasantly surprised to find it was a transcript of the speech instead.

I still put it into Instapaper, though.

<comment><USER4> No, read it _now_.

</comment></comment><comment><USER5> Great line from the article: "So, I became a litigator...If I didn't do that, I would've been in some other type of work that still involved writing fiction"

<comment><USER6> "... probably a sports journalist."

</comment></comment><comment><USER7> This speech is the perfect blend of humor and sound advice:

"I'm here to tell you this. Forget about your life expectancy.

After all, it's calculated based on an average. And you never, ever want to expect being average."

<comment><USER8> I actually take issue with this line. Unless given evidence to the contrary, don't you _have_ to expect being average at any particular thing?

Of course I'm nitpicking though. His point is that you shouldn't _aspire_ to averageness, and overall it's a great speech.

</comment></comment><comment><USER9> "Be Hated."

I always thought being liked by everyone should be my goal. After reading this, I realized that being hated is is even better.

<comment><USER10> My interpretation of him saying be hated is to speak and do the things you believe in even if they dont quite resemble with the audience you are in. So I think it's not in searching of people to hate you but in having the guts to speak your mind and do the things you believe in no matter what others think of it. And hatred of other people because of you doing it and them not having guts to do it sometimes comes along with it.

<comment><USER11> "Any child can blurt out the truth, without thought to the consequences. It takes great maturity to appreciate the value of silence."

</comment></comment></comment><comment><USER12> The ability to be able to say this, and mock so many of his surrounding people and disciplines, probably highlights best the fact that he practices what he preaches.

A refreshing read indeed.

</comment><comment><USER13> Is a "litigation lawyer" kind of like a "balancing tightrope walker?"

</comment><comment><USER14> "Do not waste the vast majority of your life doing something you hate so that you can spend the small remainder sliver of your life in modest comfort. You may never reach that end anyway."

Always loved a similar quote by Thoreau:

"This spending of the best part of one's life earning money in order to enjoy a questionable liberty during the least valuable part of it reminds me of the Englishman who went to India to make a fortune first, in order that he might return to England and live the life of a poet. He should have gone up the garret at once."

<comment><USER15> How about using 7 years for a life of not needing to work? Seems fair to me...

<comment><USER16> Except that you may die tomorrow.

<comment><USER17> Well, you can use that excuse never to do anything slightly unpleasant. Why do the dishes?

<comment><USER18> Because not doing the dishes is even more unpleasant.

</comment></comment></comment></comment></comment><comment><USER19> Fantastic read. One sample:

" It far easier to find a reason not to love someone, than otherwise. Rejection requires only one reason. Love requires complete acceptance. It is hard work – the only kind of work that I find palatable."

(The Anna Karenina principle, in other words.)

<comment><USER20> Just for completeness, in case someone doesn't know about it, the Anna Karenina principle (first time I've heard it called this) refers to the first line of the Tolstoy book of that same name:

[http://www.penguinclassics.co.uk/nf/shared/WebDisplay/0,,489...](http://www.penguinclassics.co.uk/nf/shared/WebDisplay/0,,48992_1_10,00.html)

 _'All happy families are alike; each unhappy family is unhappy in its own way.'_

<comment><USER21> From <http://en.wikipedia.org/wiki/Anna_Karenina_principle>:

The Anna Karenina principle was popularized by Jared Diamond in his book Guns, Germs and Steel to describe an endeavor in which a deficiency in any one of a number of factors dooms it to failure. Consequently, a successful endeavor (subject to this principle) is one in which every last one of the possible deficiencies has been avoided.

<comment><USER20> Thanks for this! I actually read the book, I should really have remembered this...</comment></comment></comment></comment>


A less cluttered whatismyip - <AUTHOR> http://internetaddress.me/ <comment><USER2> 4 hour old account. Silly web page that uses 1465 bytes to display an IP address and pull in Google analytics. I don't see why this is HN worthy.

<comment><USER3> > I don't see why this is HN worthy.

A 1027 day-old account really should know better than to post this sort of comment.

</comment></comment><comment><USER4> Just because I had to: <http://ip.webscript.io>

Complete source code:

        return request.remote_addr

</comment><comment><USER5> I use <http://www.google.com/search?q=ip>

Just search for IP in browser search bar.

<comment><USER6> That used to work here, but not anymore.

<comment><USER7> if it doesn't work, try googling: ip address (search for "ip" doesn't return my public ip but search for "ip address" does)

<comment><USER6> Oh nevermind, "ip" works. It used to be "ip address" I think, and that doesn't work anymore. Still gotta be on google.com, the .nl version doesn't do it. And of course, google.com redirects to .nl without /ncr...

<comment><USER7> for me, only "ip address" returned the public ip, search for "ip" didn't... on some national domains, both seem to work... YMMV :)

</comment></comment></comment></comment></comment><comment> X-Istence I wish a service would provide me with both my IPv4 and IPv6 address...

Google hands me back my IPv6/IPv4, internatddress.me hands me back my IPv4, ipchicken IPv4, jsonip IPv4, ip.webscript.io IPv4, ifconfig.me IPv4, wtfismyip IPv4/IPv6, DDG IPv4.

And some of them bounce between the two ... I know, I know, happy eyeballs and all that, but it would be handy sometimes to know both my IPv6 address and my IPv4 address.

<comment><USER8> Here: <http://test-ipv6.com/>

It's not possible to determine both your IPv4 and IPv6 address in a way that's compatible with curl or links, however. You need something like JavaScript to issue the second request.

<comment> X-Istence I really don't care about retrieving my IP address using curl ... it is in my browser that I care about.

Yes, test-ipv6.com works, but it is far some simple, running various other tests as well.

<comment><USER8> > test-ipv6.com works, but it is far some simple

How about <http://ip6.me/> and <http://ip4.me/> ?

</comment></comment></comment></comment><comment><USER9> I got <http://www.ipchicken.com/> stuck in my brain several years ago and I just go there on auto-pilot for some reason.

<comment><USER10> I've been using this for... Wow 8 years now. It's stuck in my head too ;)

</comment></comment><comment><USER11> Or, <http://jsonip.com>. Now serving over 10 million requests a month.

<comment><USER12> Love their "About" page linked from the homepage JSON: <http://jsonip.com/about>

Nice "Hire-me" true key in there.

<comment><USER11> Thanks nacs. I actually should make that false, since I recently started working with a new startup.

</comment></comment></comment><comment><USER13> If you have a command line and curl handy:

        curl http://ifconfig.me/

<comment><USER14> I tend to use ` curl -s <http://wtfismyip.com/text> ` mostly because it is easy for me to remember.

</comment></comment><comment><USER15> This is what I use

        https://www.google.com.au/?q=my%20ip

<comment><USER16> A while back, we were using zoneedit.com to keep track of changing DSL addresses at some of our offices. We had a little daemon running that checked the external IP every 15 minutes and shoulder-tapped zoneedit if there was a change. It started failing after a while, and we discovered the external server we were using to query our IP was wigging out.

So we googled for some alternatives. None were much good. So we wrote two of our own, one hosted at the company's main site and one at a free Google App Engine site. That was a good move, as both mostly outperform the various freebies out there.

Along the way, I wrote a little script to test a bunch of alternative IP sources. Just for fun, I added a version of your Google query to the mix, along with the OP's site, and just reran it, with the following results:

      $ ip all
          IP Address   Time  Bytes Server
      [cynwoody's IP] 0.217     58 dynamic.zoneedit.com/checkip.html
         192.168.1.1  0.197  25545 www.whatismyip.com/
      [cynwoody's IP] 0.497   7382 whatismyipaddress.com/
      [cynwoody's IP] 0.144  13010 www.hostip.info/
      [cynwoody's IP] 0.131   9007 www.ip-adress.com/
      [cynwoody's IP] 0.577  14706 ip-lookup.net/
      [cynwoody's IP] 0.426  20508 www.geobytes.com/IpLocator.htm?GetLocation
      [cynwoody's IP] 0.492  10054 www.melissadata.com/lookups/iplocation.asp
      [cynwoody's IP] 0.917  22058 www.dnsstuff.com/
        end of file   0.120      0 www.ipaddressworld.com/
             184.108.40.206  0.486  18427 www.ip2location.com/
      [cynwoody's IP] 0.191  34468 www.find-ip-address.org/
      [cynwoody's IP] 0.221  25019 www.iplocation.net/
      [cynwoody's IP] 1.040  10776 www.lawrencegoetz.com/programs/ipinfo/
                      0.272      0 www.ostrosoft.com/OIT/external_ip.asp
        126.96.36.199  0.576  32953 www.google.com/search?q=my+ip
      [cynwoody's IP] 0.074   1467 internetaddress.me
      [cynwoody's IP] 0.097     35 www.[cynwoody's company].com/ipaddress.php
      [cynwoody's IP] 0.110     35 [cynwoody's app].appspot.com/ipAddress
      $

The Google hack got the wrong IP. I assume the reason is that script is downloading the page and parsing out the first thing that looks like an IP address it comes across, but the part of the Google response that shows your IP bold and clear occurs further down in the result. So, it could be made to work, but would require a less trivial parse.

BTW, FWIW, www.[cynwoody's company].com is hosted at FutureQuest. Attaboy FutureQuest!

And internetaddress.me did best of all, responding in only 74 ms (I'm located in the Boston area), but one has to wonder what popularity will do.

</comment></comment><comment><USER17> FYI, if you use DuckDuckGo, just searching 'ip' will do the trick as well.

Much faster than remembering any other domain name for me.

<comment><USER18> This also works in Google.

</comment></comment><comment><USER19> <http://icanhazip.com>

</comment><comment><USER20> ifconfig.me is my personal best. The reason is: <http://ifconfig.me/#cli_table>

</comment><comment><USER21> I think whatismyip is popular due to the fact that the site has a very seo friendly name that's itself the question that the site answers.

While internetaddress.me makes sense, the name feels clunky.

</comment><comment><USER22> Why not: <http://checkip.dyndns.org> \- About as plain as you can get.

<comment><USER23> <http://whatismyip.akamai.com> \- slightly plainer :)

<comment><USER22> Touché

</comment></comment></comment><comment><USER24> There's a CSS issue that made me a bit irritated. The <body> element has a margin of 8px, change that to auto so you won't get an annoying horizontal scroll on webkit browsers.

</comment><comment><USER25> I use myip.dk because they also show IPv6 address if you have one...

</comment><comment><AUTHOR> It is open source and taking pull requests here - <https://github.com/brookemckim/internetaddress.me>

</comment><comment><USER26> I tend to use <http://myip.is/> because it's the shortest url for these things that I know of and an intuitive url at that too.

</comment><comment><USER27> Here's a nginx config and SSI page to do the same <https://gist.github.com/1678779>

even supports json and jsonp

</comment><comment><USER28> Seems everyone has written one, me included: <http://kill.porkrind.org:3141/>

</comment><comment><USER29> <http://whatismyip.io/> gives a nice sharable URL.. ps: I am one of the developers

<comment><USER30> You should collect the useragent and whatever else you can grab. A url to share just a IP seems useless.

</comment></comment><comment><USER31> From a shell, here's the shortest form that I can actually remember:

       curl ifconfig.me

</comment><comment><USER32> <http://uripis.com> is another good one.

<comment><USER32> Also there's <http://ipv4.uripis.com> and <http://ipv6.uripis.com> to force ipv4/6

</comment></comment><comment><AUTHOR> Now has json(p), XML, and text options.

</comment><comment><USER33> tango down.</comment>


Ask HN: Ad server recommendations? - <AUTHOR>

Anyone have recommendations for ad servers?  Particularly ones that are compatible with single-page JS web apps (e.g. page context changes, but not necessarily page refreshes)?<p>I know of two: Google DFP Small Business [1] and iSocket [2].  I'm fairly confident that Google DFP plays nice with AJAX sites<p>[1]http://www.google.com/dfp/info/sb/index.html [2]https://www.isocket.com/ <comment><USER2> Check out adzerk.com

<comment><AUTHOR> Looks pretty impressive, thanks for the link!</comment></comment>


Global Brands drop YouTube advertising over extremism - <AUTHOR> http://www.thetimes.co.uk/edition/news/global-brands-shun-google-p9zlr7bq7 <comment><AUTHOR> I have seen some very inappropriate ads on children's videos even with parental controls turned on.</comment>


What I've Learned After Three Months of Coding (Almost) Daily - <AUTHOR> https://dev.to/shnsbrn/what-ive-learned-after-three-months-of-coding-almost-daily <comment><USER2> The post is about coding as a social activity.</comment>


Self Driving Cars Still Don't Know How to See - <AUTHOR> https://www.theatlantic.com/technology/archive/2018/03/uber-self-driving-fatality-arizona/556001/?single_page=true <comment><USER2> The article starts off reasonable but then seems to veer off into unsupportable assertions about human reaction times when presented with danger and how self driving cars will kill more people.

And some of the comments about processing power seem at odds with Waymo videos showing it tracking all objects in the scene and making predictions, even non- moving ones, such as emergency vehicles on the side of the road.

</comment><comment><USER3> This shouldn't be shocking to anyone. Computers still can't consistently identify a banana when it's the only thing in the picture, despite the fact that a small child could with perfect accuracy.

While the human brain is rather slow on response time, it's pattern recognition is still far superior to even the best algorithms we have today.

<comment><USER4> It's actually been a few years since computers can outperform humans in image classification. Look into the imagenet competitions since 2015 for more details.

<comment><USER5> This may be true with large datasets, but with small datasets it's no contest. I don't have to show a kid a thousand slightly diffferent bananas in different environments to teach them what a banana is.

<comment><USER6> Maybe not a thousand, but the kid also has a wealth of understanding of greater concepts which the banana fits into even if never seen before. When there is such fundamentally different architecture of learning its kind of absurd to compare, at least to take such a comparison seriously. When AI can build a full world model then we'll be somewhere, I think reasoning is a dependency of that. We don't require thousands of examples of an object to be able to recognize it partially because we aren't learning from scratch. You're able to look at a banana for the first time ever and automatically fit it into many already known classes (object, edible, yellow, elongated shape) based on reasoning about it vs past experience, so the new information learned to make it permanently recognizable is very small.

</comment></comment></comment></comment><comment><USER7> It seems like the article is ignoring the countless pedestrians that have been killed by human drivers. Obviously self driving cars will make some mistakes, but I believe (correct me if I'm wrong) that self driving cars already have a much better safety record than human drivers even with the as yet unsolved problems.</comment>


CouchDB retrospective - <AUTHOR> https://groups.google.com/forum/?fromgroups=#!topic/tumbolia/Sl6O0s8GS3s <comment> grey-area _I love CouchDB, but I love the CouchDB community even more. I think we made the important decision to cultivate community right from the start. One of the key components in getting that right turns out to be the concept of a community gatekeeper, or steward. Someone to guide things back in the right direction when they get off-track. Someone to set an example. On the very few occasions someone has threatened the atmosphere on the lists and in the IRC channel, it has been nice to see people defend it with passion and with humility. When those people see how things work here, and how committed we are to keeping the grass green and not letting the project become mired by useless arguments and petty aggression, they either adjust or they leave._

Perhaps rather than producing wisdom, crowds encourage demagogy, regurgitation of home truths, and petty agression/pedantry unless they are encouraged to channel their energy in other directions. The contention is that they are never self-regulating (even if you give them the tools to do so), but require intervention and moderation to remain cohesive, productive communities.

Some interesting lessons in here for communities like HN/SO/Reddit/SD etc. which rely on crowd moderation and technical measures to try to guide a community. When dealing with a large enough community, that can break down as enough new members arrive to subsume the older culture completely in a small amount of time, and any technical measure you think of can be subverted by those willing to put in the time to do so. I think reddit's approach here of splitting the community up into smaller niche groups is really interesting, but IMO they arrived at it too late to save their community overall.

<comment><USER3> > _I think reddit's approach here of splitting the community up into smaller > niche groups is really interesting, but IMO they arrived at it too late to > save their community overall._

But does the "community overall" need any saving?

The only things that keep reddit together as a nominal community are the crappy, spammy, default subreddits. If not for those subreddits, there would be little overlap between those who subscribe to CS subreddits and those who subscribe to cooking or literature or photography subreddits. In other words, all the good stuff is already highly fragmented, and reddit as a whole is a "community" only in the sense that it's under the same domain name.

I wouldn't miss much if reddit's "community overall" simply disintegrated in favor of even more fragmentation. What's wrong with having a million and five communities instead of one, if small and mid-sized communities in fact work better than large ones? Crowdsourcing might work best at a certain size and level of engagement, and the optimal size might be smaller than what your company's CFO wants you to believe. Yeah, it's not easy for an online business nowadays to make a neat profit unless they command a humongous "community". But the sweet thing about ASF is that they don't depend on having a lot of people see ads on their website, so they can optimize for effective community governance.

<comment><USER4> I personally think one of the benefits of reddit is the fact that you have access to essentially unlimited forums with the same identity. Oftentimes I am working/pondering something and I'd like to ask someone involved in that specific community a question. Without a "reddit-style" identity system (I know there are "security concerns", etc) it looks like I need another username and password for this niche phpbb forum. I think the reddit community lowers the barrier of online discussion to a degree that if I wanted to I'm one post away from hopping to another niche community to ask a question.

<comment><USER3> Yep, I like the idea of reddit-style online identity. It's almost effortless to create dozens of them, you can use them in any subreddit, and you don't even need an e-mail address to sign up.

Hopefully, if & when everyone starts using Persona, it will be nearly as simple to start using a random website as it is to join a random subreddit, and we will finally be able to stop being members of excessively large "communities" like reddit and fb.

</comment></comment></comment></comment><comment><USER5> FWIW, this was written in July of 2010 (2+ years ago) -- CouchDB is in a very different place now than it was then.

Reading the mailing lists of CouchDB, Redis, MongoDB and Cassandra are _very_ different experiences.

CouchDB's list reads like 10 or so of the same people discussing very high level efforts like documentation and Windows builds, developing the DB at a glacial pace -- including merging in changes from all the spin-off CouchDB efforts that all seem to be defunct now (e.g. BigCouch and the sharding code).

Tangentially, MongoDB/Redis/Cassandra mailing lists are _NOTHING_ but "How do I..." questions, deployment questions, feature development questions, patch submissions, etc. (more-so Cassandra and MongoDB lists).

CouchDB to me has found this life that feels very academic to me which I think is a good thing in the long-term for the project. The principles are in no rush to get to features and have the motto "slow and consistent wins the race". I would be surprised at all if a few years go by and then CouchDB gets rediscovered suddenly as the panacea to everything (something akin to how Jetty suddenly became hot business in the Java server world after being mostly ignored for 10 years)

With the money behind Cassandra and Mongo it is probably not much of a surprise that there are much more new deployments going on and Redis has found a place somewhere between the two with what I would say is a Linus-like steward at the helm (props to Salvatorefor being everything that is right with open-source)

I wouldn't build a commercial product on CouchDB tomorrow, but I am eagerly waiting to see where it goes in the next year. It is wonderfully designed, but I'd like to see some of the nagging "table stakes" issues like replication failures fixed before caring about Feature XYZ and release 2.0

<comment><USER6> I'm not much of a CouchDB user (though I've played around with it a bit), but I would assume that at least part of the reason CouchDB's mailing list is so quiet is due to the rather public split of the community brought upon by the introduction of Couchbase.

Couchbase's forums have much the same sort of "How do I" questions you are talking about seeing on the other project's mailing lists.

</comment></comment><comment><USER7> Misleading headline, this is about CouchDB and only tangentially ASF.

<comment><AUTHOR> Couch is ASF project, ASF is sum of all its committers, so...

<comment><USER7> When submitting links in future you should probably just stick with the original blog title, which in this case was "CouchDB retrospective" - <USER2> succinct and accurate representation of the actual topic being blogged about.

<comment><AUTHOR> Alright, I intended to post this: <http://intertwingly.net/blog/2010/07/18/Community-over-Code>

which is about the link I posted, so...

<comment><USER8> Which has an unclosable popup ad for its onsite, covering most of the content.

</comment></comment></comment></comment></comment><comment><USER9> Well that was nice.

... um.

Now what?</comment>


Court limits liability for using tainted code (innocent customer absolved) - <AUTHOR> http://www.law.com/jsp/article.jsp?id=1202457477366&Intel_Off_Hook_for_Buying_Tainted_Software

<comment><USER2> Judge: "Seldom have so many trees died for so little."

</comment><comment><USER3> I was going to ask for your (grellas) opinion on the case, but I guess it's in the title ...

I remember a similar story with EDA software, back in 2000 or so, with Cadence's code in Avanti products. Silvaco is a smaller company.

I suppose the point of the suits is that the first baker wanted the customers to buy his pies, or be paid for the pies they should have bought from him.

The back story linked ( [http://www.law.com/jsp/lawtechnologynews/PubArticleLTN.jsp?i...](http://www.law.com/jsp/lawtechnologynews/PubArticleLTN.jsp?id=1202447616842) ) said that "Silvaco sued 12 semiconductor companies in 2003 and 2004 that bought CSI software" and seven settled. Don't know how harsh the terms asked were, but it might have gone the other way - apparently the big guys decided it was worth fighting.

<comment><AUTHOR> An odd footnote here: I incorporated Silvaco and represented them through about the mid-1990s, though I have not been connected with any of the lawsuit activity described in this article. The style of the company can accurately be described as "aggressive."</comment></comment>