Large-scale Amazon EC2 Outage - <AUTHOR> http://status.aws.amazon.com/

<comment><USER2> Two large, lengthy outages within a few months of each other? I hate to piggy- back on Amazon's follies, but it's times like these that make me love my Linode boxes. Total downtime over the last 5 years? 5 hours. I really couldn't ask for a better hosting company.

Edit: The 5 hours are what I've noticed from either personal servers or those of friends/acquaintances. YMMV.

<comment><USER3> I must have picked a bad time to become a Linode customer. My node in Fremont has been up for two days and has already seen two network outages.

<comment><USER4> Overall they have great service. Only their Fremont location has been a bit touchy this year. I've been with them since the days they used UML before Xen and if it's any consolation, I have experienced at least one downtime in each DC(but this was over the course of many years now). Unless you plan for distributed systems, expect some failures from time to time no matter who is the provider.

</comment></comment></comment><comment><USER5> It gets better - I hope nobody was relying on their AWS DB snapshots for backups - I just had a note from Amazon to say that one or more of EU-West database snapshots had missing blocks (due to an EBS software errors) and had been removed.

<comment><USER6> Yep just had the same email - I've lost all bar one EBS snapshot. Don't think I can trust them anymore, I wish I had more time to move our infrastructure elsewhere!

They've essentially swiss-cheesed all our backups.

Email copy follows....

Hello,

We've discovered an error in the Amazon EBS software that cleans up unused snapshots. This has affected at least one of your snapshots in the EU-West Region.

During a recent run of this EBS software in the EU-West Region, one or more blocks in a number of EBS snapshots were incorrectly deleted. The root cause was a software error that caused the snapshot references to a subset of blocks to be missed during the reference counting process. This process compares the blocks scheduled for deletion to the blocks referenced in customer snapshots. As a result of the software error, the EBS snapshot management system in the EU-West Region incorrectly thought some of the blocks were no longer being used and deleted them. We've addressed the error in the EBS snapshot system to prevent it from recurring.

We have now disabled all of your snapshots that contain these missing blocks. You can determine which of your snapshots were affected via the AWS Management Console or the DescribeSnapshots API call. The status for any affected snapshots will be shown as "error."

We have created copies of your affected snapshots where we've replaced the missing blocks with empty blocks. You can create a new volume from these snapshot copies and run a recovery tool on it (e.g. a file system recovery tool like fsck); in some cases this may restore normal volume operation. These snapshots can be identified via the snapshot Description field which you can see on the AWS Management Console or via the DescribeSnapshots API call. The Description field contains "Recovery Snapshot snap-xxxx" where snap-xxx is the id of the affected snapshot. Alternately, if you have any older or more recent snapshots that were unaffected, you will be able to create a volume from those snapshots without error. For additional questions, you may open a case in our Support Center: <https://aws.amazon.com/support/createCase>

We apologize for any potential impact this might have on your applications.

Sincerely, AWS Developer Support

<comment><USER7> are your backups too large to be elsewhere completely? i'm working on a site on appengine, and although i can't back up _all_ data, i can copy the critical stuff (the user accounts) to servers elsewhere.

[i realise this is a little off-topic, but what do other app-engine users do?]

[edit: wasn't being critical, just trying to understand what others do and why]

<comment><USER6> They're not mission critical failures, but that's not the point to me - I pay a monthly fee to have those snapshots there, and they just carved holes in them. Disappointing to say the least, even though it's not actually taken down any of our instances.

<comment><USER8> I'm glad to hear that you didn't lose anything critical. But snapshotting EBS volumes are not backing them up. If, by definition, it's stored using the same service, and therefore susceptible to all the same catastrophes that might befall the service, then it's not a back up. I always set up a local read slave of the database server which has hot-swappable hard drives that get rotated out of a safe deposit box or fireproof safe. The only way I can properly trust that things are being backed up properly are to do it myself.

</comment></comment></comment></comment></comment><comment><USER9> My site (hosted on Heroku and RDS) was inaccessible, as was heroku.com ... but the AWS status website said everything was OK. Heroku status also said everything was OK.

What is the point of those status dashboards if they are not actually monitoring the health of the cloud in real time?

Google App Engine's status dashboard quickly returns to green the minute an outage goes away, hiding the overall unreliability from view.

<comment><AUTHOR> I've found <http://search.twitter.com> far more reliable than any status dashboard for finding out if there is an issue or not.

<comment><USER10> one should build a crowdsourced status checker to really know what happens.

<comment><USER11> <http://downrightnow.com/> monitors twitter, their own user reports, official status RSS feeds, etc for a probability calculation of if a site is down or not.

</comment></comment></comment></comment><comment><USER12> <http://status.aws.amazon.com/rss/EC2.rss>

[http://reports.panopta.com/cloudharmony- borderless/server/57...](http://reports.panopta.com/cloudharmony- borderless/server/57481)

various ec2 clients affected:

\- dotcloud

\- dropbox

\- engine yard

\- foursquare

\- heroku

\- hootsuite

\- instagram

\- kicksend

\- netflix

\- pagerduty

\- reddit

\- twilio

<comment><USER13> pagerduty down?! I don't know if I should be sarcastic here and laugh, or just worry...

<comment><USER14> Their website might have gone down but I'm told that their underlying service is redundant across multiple availability zones.

Perhaps they should do the same for the website just to instill extra confidence, though.

<comment><USER15> I didn't get any SMSes or calls from PagerDuty even though I see 4 incidents triggered in the PD web UI. Although that could be due to Twilio going down.

</comment></comment></comment></comment><comment><USER16> My business is on 15+ AWS instances and we are completely down and all hosts are unreachable.

<comment><USER16> as of 9:59 PM CST it appears we are back up. Additionally, all our instances are running normal. It appears to be a network connectivity issue for AWS.

</comment></comment><comment><USER17> I'm moderately embarrassed to admit that I learned about this outage when both the Facebook games I play went down at the same time. Both back up now though.

</comment><comment><USER18> I thought it was silly how everyone was going apeshit the last time this happened. Even here on HN people were falling over themselves proclaiming the end of the cloud. But you know what, I kind of like seeing outages like this because it means Amazon is (hopefully) going to reduce the risk of a bug like this ever happening again which in the end just makes the platform more reliable in the future.

<comment><USER19> To be fair the last one was a lot longer than a 1/2 hour and even though it was a small percentage there was permanent data loss. 0.06% of 100 PB is 60 TB which is still a lot of data. I have no idea how much data they store in one DC, maybe somebody could hazard a real guess.

<comment><USER20> _the last one was a lot longer than a 1/2 hour_

About 25% of EU west instances have been down for about 36 hours now...

<comment><USER19> Oh! I did not know that.

</comment></comment></comment></comment><comment><USER21> I would like to run my app on whatever AWS's status board is running on :-P

</comment><comment><USER22> Reddit gives: An error occurred while processing your request. Reference #97.374a7b5c.1312858006.1a17105

Must be this.

<comment><USER23> That's why I came here after I found out reddit was down :P

</comment></comment><comment><USER24> I wonder how many 9's Amazon is down to? It's really a shame because it's such a good service in theory.

But it really is time for Amazon to start thinking about some kind of automatic failover system.

</comment><comment><USER25> 3 out of 4 us-east-1 AZs are unavailable from the outside. The AZ that is working is the one that has chronic availability issues, so there is no way to recover service in that zone.

<comment><USER26> There's an AZ with "chronic" availability issues? Where do I find out more about this?

<comment><USER25> I should have been more specific, I was in a rush =)

The original us-east-1b has chronic _capacity_ issues, meaning that it is always at or near its capacity. AWS refuses to sell instance reservations for this AZ, and it's often difficult/impossible to launch new instances in this zone.

Keep in mind that AZs are remapped for all accounts newer than a certain point in time (say, 1 yr ago). Your 1b may not be my 1b.

</comment></comment></comment><comment><USER27> Why are these big name companies still relying on exactly ONE web host? These companies are centralizing failures to just one cloud host. They definitely need to abstract cloud deployment with something like libcloud and jcloud APIs and make use of multiple cloud deployments on a dime. As for storage, they should have replications set up on other cloud hosts as well.

<comment><USER28> And for rubyists:

<https://github.com/geemus/fog>

</comment></comment><comment><USER20> Remember there is large EC2 EU West Outage that isn't fully fixed. About 25% of EC2 instances have been down for about 36 hours now...

</comment><comment><USER29> It looks like the outage was only 30 minutes long. At least that is Pingdom's measurement of the downtime on my EC2 East 1 servers.

<comment><USER30> It depends on what you mean by outage. Instances with EBS volumes attached have problems even 24 hours later.

</comment></comment><comment><USER30> Please refrain from judging reliability of cloud providers unless you have a representative sample. By representative sample I mean several hundreds of instances.

That your instance runs 99.9% does not say anything, you are lucky. That your instance dies in two weeks does not day anything, you are unlucky.

</comment><comment><USER31> Why don't people just be redundant and use multiple locations, or have a backup server at your business that can at least somewhat take over? It seems silly all these people rely solely on Ec2 and not have their own hardware anymore.

<comment><USER32> They could get the same thing by simply reading Amazon's recommendations and having EC2 servers in multiple regions as well. Most people either don't need reliability or failed to plan for it - the only difference with EC2 is that it's easier to add redundancy when you don't have to deal with physical hardware, network connections, etc.

</comment></comment><comment><USER33> I hear all these things about the need to run in multiple regions, etc. Why do I have to worry about this? Why isn't there an easy off the self solution? Honestly, isn't there an easier way to have redundancy?

<comment><USER34> Data synchronization between data centers is tough. There's A LOT of data moving in those data centers all once--it isn't easy to mirror that across the country in real time.

<comment><USER35> That's why the good lord invented eventually consistent data synchronization models. If your use case can tolerate it, use it.

</comment></comment></comment><comment><USER36> Huh. My piddly little website hosted on a micro instance is down. This kind of sucks, not that I get a lot of hits, but I have a few things hosted there that local stuff depends on.

</comment><comment><USER37> I think amazon can fix this problem simply by raising us-east prices to be on par with us-west. At least then there would not be quite the incentive to make the foolish choice of running all your instaces out of one region. (I suppose they could lower prices in us-west to match as well)

But in any case, I expect the PAAS people like heroku to at least start to step up their game. My apps on Google App Engine are up and I can run clojure and ruby there too.

</comment><comment><USER38> My servers (on Engine Yard) were down for a few minutes but appear to be back up again.

</comment><comment><USER39> I pay the extra money for US-west which seems to have a much better track record.

</comment><comment><USER40> rtomayko: Everyone hates AWS when it fails in exactly the way they clearly state it will in the fine print. It's not free. You have to engineer for it.

</comment><comment><USER41> Looks like Pagerduty is hosted on ec2? Really?

</comment><comment><USER42> 100% green for me

<comment><USER43> scroll down.

</comment></comment><comment><USER44> Appears to be back up, at least for us.

<comment><USER45> Yes, my site is up now too.

</comment></comment><comment><USER46> US-East is the Big Lots of EC2 zones.

</comment><comment><USER47> Netflix also seems to be affected.

</comment><comment><USER48> Is this pure network issue (ie: strictly connectivity), or were instances rebooted?

<comment><USER49> Seems like network only. I have an instance that was unavailable via SSH. When things came back up I still had 81 days of uptime.

</comment></comment><comment><USER50> Is this why Reddit is down?

<comment><USER51> yup.

</comment></comment><comment><USER21> This will likely kick Heroku into high gear with jumping off EC2.

</comment><comment><USER52> Netflix is down as well.

</comment><comment><USER53> Looks like it is up now. (7:58 pacific). I can access netflix.

<comment><USER54> 11:17 pm EST - netflix.com does not work (though shows some minor signs of life).

</comment></comment><comment><USER55> is this related to the one from the other day?

DUH - doesn't seem to be - that was west coast, IIRC, and the only issue I see now is in Virginia.

</comment><comment><USER54> Netflix is down.

</comment><comment><USER56> We've been down for 3 days now.

</comment><comment><USER57> All my boxes just came back up

</comment><comment><USER58> Looks like we're back.

</comment><comment><USER59> Twilio is down. Bummer

<comment><USER60> damn, <http://status.twilio.com/> \- calls are still going through, just a few extra rings before my service receives the http request from twilio... gotta love twilio they rock - looks like no call recordings...

</comment></comment><comment><USER61> netflix down on my PC and their app is down on my TV.

</comment><comment><USER62> It's back up now.

</comment><comment><USER63> Dotcloud is down

</comment><comment><USER25> Back up now.

</comment><comment><USER64> Our minecraft server on linode is down.

<comment><USER58> Linode relys on amazon? My linode's still up...

<comment><USER64> I'm a fool, it's mojang's authentication.

</comment></comment></comment><comment><USER65> I'm sure Amazon will fix this issue, but the question it brings to my mind is- why are so many people using ECC? Most startups need hosting, not an elastic compute cloud. ECC makes sense for someone who needs to spin up 1,000 workers, pull data out of S3, process it, store the results in S3 and then spin down the workers when it is done.

But startups need hosts that are up 24/7. ECC doesn't give you any guarantee of uptime, and if it goes down the local (fast) disk is ephemeral. Yet, the EBS alternative which is backed up, is very slow.

The basic VPS offerings, that Linode, Rackspace, and just about everyone else offers, isn't available at all from Amazon (near as I can see.) Yet this is what startups need- local disks, a small monthly fee, and up all the time.

So, Amazon requires extra engineering--to account for nodes going down more often and to make ephemeral disks reliable or EBS performant. It also puts you on the path to lock-in, since so many of amazons services have their own unique APIs. It isn't exactly cheap, near as I can tell, when compared to, say, dedicated hosting in germany.

Its advantages exist elsewhere- if you need to spin up a bunch of machines with an API you can do this at rackspace cloud. And... that's about the only advantage I'm able to think of. Personally, I'm architecting to have some overcapacity built in and to survive a spike, because I use that excess capacity in the off hours for heavy lifting. I wouldn't try to bring up extra nodes in the morning and shut them down in the evening anyway... and I doubt that many startups are really doing that.

Possibly, I'm missing something. I tend to forget about features that aren't compelling to me, but are compelling to others. So maybe there's something that's important to these startups.

<comment><USER66> S3 is a big part of it. If you're storing lots of data, a "local disk" just isn't enough. Now you're spending your time solving problems Amazon already solved.

Occasional downtime just isn't that big of an issue for many startups, who are still looking for product-market fit.

<comment><USER65> I see what you're saying, and I failed to illuminate that I'm coming from the perspective of someone who is working with a cluster of riak nodes. Riak is a ring topology much inspired by the Amazon S3 design. I'd never trust anything to just one spinning rust device, sure. I was taking a distributed storage architecture (using whatever open source platform you prefer) for granted. But I recognize that S3 predates many of them.

</comment></comment></comment><comment><USER67> Imagine launching your startup on the day Amazon AWS goes down? On another note.. why don't these power outages ever affect Amazon.com from going down? Come'n, eat your own dog food!!!

<comment><USER68> Amazon specifically tells you to set up multiple servers in multiple availability zones. They probably follow their own advice, and, as a result, don't go down.

I've talked to some people about AWS about this, and the reason why they have availability zones is because they don't want to charge you the speed cost of syncing data between zones if your app doesn't need 100% uptime. Generalized replication slows down your app. AWS gives you the option of not having replication or bringing your own.

<comment><USER69> ...and only Amazon can afford to follow their own advice. Multiple AZ hosting ain't cheap. Most CEO/CIO/CTO types spit out their coffee when they see the costs of fully redundant hosting in the cloud at which point they decide "For that price we can afford to be down for 24 hours."

<comment><USER70> Very few businesses need 100% uptime. As long as you have good recovery strategies, and exercise them routinely, you should be set. When was the last time you ran a failover simulation? do your ops guys know what to do? are there clear lines of communication as to the status of the event?

Outages are hard to avoid, but the pain can be lessened if your customers are aware of the recovery progress and you can deliver on your recovery time goals. Nothing is worse than being down, and leaving customers in the dark to start rumors that your guys are not even aware of the problem.

</comment></comment></comment></comment><comment><USER71> Dropbox is up but stored content seems to be inaccessible. Yay for single points of failure!

<comment><USER52> Using dropbox is a bad idea overall in my opinion. They lied to their customers about what they can and cannot view in your account. They _lied_ to you. They intentionally told you that they could not view your files when in fact they can. If that's not enough, they had a critical security vulnerability (log in with no password) for four hours, proving that their systems fail open. Finally, if all this wasn't bad enough yet, they do not encrypt your files when they store them[1].

[1] _Technically_ they do encrypt the files, but the keys are right next to them on the same infrastructure. Doesn't do any more good than not encrypting them.

<comment><USER72> This really isn't a problem if you aren't storing anything sensitive, especially if you aren't even paying for it.

<comment><USER73> For the bits that need to be protected there is Tarsnap (<http://www.tarsnap.com/>). The client is open source, so you can check for yourself that things are encrypted before going on the wire.

</comment></comment></comment></comment><comment><USER74> My servers are down in east us.

</comment><comment><USER75> <http://i.imgur.com/ZIqmo.jpg>

<comment><USER76> This type of comment is not desired here. Take it to reddit.

<comment><USER77> This site is already, effectively, /r/technology combined with /r/politics.

I like this comment.</comment></comment></comment>


My Hardest Bug Ever (2013) - <AUTHOR> http://www.gamasutra.com/blogs/DaveBaggett/20131031/203788/My_Hardest_Bug_Ever.php <comment><USER2> Ah yes:

\- An OS would write the "please wake me up on the next interrupt" to a hardware register, then a shadow RAM location. Interrupt happened between the two writes, so the task scheduler wrote the wrong value to the register and stopped. Finding the problem: Two weeks. Fixing the problem: Swapped two instructions and rebuilt. Write-only registers are evil badness.

\- USB controller with a temperature problem: It would also work first thing in the morning, and after lunch. After maybe four days of correlating this the "Aha!" was visible on my face at lunch and I left the table rather abruptly. The initial fix was a bag of ice on the chip. Real fix took several weeks of increasingly loud conversations with the chip vendor.

\- Cache on a disk drive had a bad bit, occasionally corrupting file contents or (even more fun) directory structures. Memo: All the ECC in the world won't help you if your I/O system is flappin' in the breeze. End-to-end checksum anything you truly care about (in fact, we caught this one with a Merkle tree).

Never mind the heap corruptions by code you don't even have source for, the async callbacks that fire long after you've nuked the objects and assumed everything was dead, the DMAs that came from outer space because you set them up hours ago and they finally fired, wiping out something random every time, the incoherent cache coherency systems, the serial ports that drop bytes if you send too fast . . . it's amazing anything sufficiently complex actually works.

<comment><USER3> I think I would love your job. That's the kind of stuff I _love_ chasing down.

<comment><USER4> Agreed. Also, I usually blame the hardware quite fast... Have seen enough faulty gbics, or wrongly plugged cables. But then that's what you see as a sysadmin, not as a (game) developer...

<comment><USER5> Yep. If it was one thing a networking (the wires and cards kind) teacher drilled into me was to check wiring first and then work my way up the stack.

</comment></comment></comment></comment><comment><USER6> About a thousand years ago, I bought a new 286 motherboard from the local computer shop, and when I brought it home, DOS would boot on it, things like edlin and debug worked, but anything like a game (Lemmings!) would hang. I tore my hair out over this for a while until I noticed another symptom -- when I ran the 'date' command, the system time never changed. It turned out the clock on the motherboard was faulty, so it never fired the interrupt to tell the computer time was passing, so anything that depended on that interrupt for poor-man's threading would hang. But DOS booted up and ran like a champ.

<comment><USER7> Speaking of time..

I inherited a bug that only showed up the last 5 minutes of an hour. Except I didn't know that. The first time I worked on it, I reproduced the error but before I got the debugger started the time went by and the new hour caused the bug to go away...(why does this bug not show when the debugger is on?)

Eventually by hand tracing I figured it out.. Some weird time function was rounding the minutes to the nearest 10 minutes. When the time crept past 55 minutes rounded up to 60 and passed to a time function that didn't like...

Only bug that was harder was a serial cable with flipped wires. Which kinda worked, but gave out garbage. We figured that out with a scope.

</comment></comment><comment><USER8> This kind of hardware quirk is _really_ common in old consoles. In the NES and SNES era, not only were these kinds of issues passed around by tribal knowledge, but half of them were repurposed as features and used to push the hardware further. Not random save corruption issues, obviously, but many other hardware quirks became semi-documented "features" of the console, and years later, emulators would have to reproduce them faithfully or games wouldn't run correctly.

<comment><USER9> Got any examples of this? It seems interesting.

<comment><USER8> Super Mario Bros 3 did diagonal scrolling, which was not an intended feature of the hardware; it also used some careful timing to split the screen between the play area and the status area on the bottom.

 _Many_ console games reprogrammed or switched palettes partway through scanout to get more colors on the screen than normally possible; some did so with careful timing in the middle of horizontal scanlines. Emulators commonly don't implement this, because it adds significant overhead to the scanout fast-path. See the screenshot of Air Strike Patrol in [http://arstechnica.com/gaming/2011/08/accuracy-takes- power-o...](http://arstechnica.com/gaming/2011/08/accuracy-takes-power-one- mans-3ghz-quest-to-build-a-perfect-snes-emulator/) , where failing to emulate intra-scanline changes results in the plane's shadow disappearing, which is a critical gameplay component that makes it easier to aim.

</comment></comment></comment><comment><USER10> I chased a similar bug a lon time ago, we were putting Unix on a late '80s era platform (which I wont name), some system's keyboards failed if you used the floppy, but not others.

Turns out the floppy code sat in a tight loop polling the clock in a timer chip whenever it waited for sectors to pass by, when the hardware did this the clock to the keyboard controller changed (got faster) - turns out some keyboard chips had old firmware (they swore they didn't) that couldn't tolerate the faster clock.

A couple of no-ops in the floppy loop fixed it.

As someone point out above metastability issues are the real impossible bug - but the hardware guys (I wear both hats) should have got that right in the first place

</comment><comment><USER11> This reminds me of when I was a staff Consultant at an RDBMS company 25 years ago.

A major telecom company was getting crashes in the server because of alleged I/O errors (mostly writes) in the raw i/o version of the server (no filesystem)... just a few times per several hundred thousand (or million) transactions. Subsequent disk and controller diagnostics were always fine. (This was before any fault tolerance was programmed into the server... my code for this problem was the first ever.) Most failures were writes, a few were reads. No obvious pattern (time of day, load, transaction type, lunar phase, sunspots, strength of coffee, etc.) This was on a DEC with Unix System V and DEC disk hardware, so only one vendor to deal with.

Anyway, seeing nothing "wrong" with the related code (other than no tolerance for error codes from the raw i/o calls), I theorized that maybe the "errors" were spurious and no actual fault or corruption was resulting, so I wrapped the i/o calls in retry loops (with the number of retry attempts tunable by the user) and logged any "failures" and results of the retry attempts. So, I did a build with my changes, had the customer run from my directory, then wait and watch for the carnage...

Turns out that every retry was successful. In fact, all but one of the dozen or two per day was successful on first try, and none needed more than two. No actual flaw in data was ever found.

Anyway, it turned out to be some spurious error specific to a specific drive type with that specific controller running that specific firmware... and apparently their filesystems code knew to work around it.

Client site personnel were really nice to me, too.

</comment><comment><USER12> This was an awesome article. It's been up here before. For relevant discussion check [https://news.ycombinator.com/item?id=6654905](https://news.ycombinator.com/item?id=6654905)

</comment><comment><USER13> It's a little like a row hammer bug ([https://en.wikipedia.org/wiki/Row_hammer](https://en.wikipedia.org/wiki/Row_hammer)).

</comment><comment><USER14> Quantum mechanics? Just sounds like plain old induction to me.

<comment><USER15> The OP was originally published by Baggett on Quora, and then subsequently re- published on Gamasutra. The Quora posting has a few footnotes, including him admitting that "quantum mechanics" was mostly a flourish. What he meant was, that unlike other software bugs, _" the behavior was -- at least at the level of the source code -- non-deterministic"_

[http://www.quora.com/Whats-the-hardest-bug-youve- debugged](http://www.quora.com/Whats-the-hardest-bug-youve-debugged)

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

Footnotes for posterity:

A few people have pointed out that this bug really wasn't a product of quantum mechanical effects, any more than any other bug is. Of course I was being hyperbolic mentioning quantum mechanics. But this bug did feel different to me, in that the behavior was -- at least at the level of the source code -- non-deterministic.

Some people have said I should have taken more electronics classes. That is absolutely true; I consider myself a "full stack" programmer, but my stack really only goes down to hand-writing assembly code, not to playing with transistors. Perhaps some day I will learn more about the "bare metal"...

Finally, a few have questioned whether a better development methodology would have prevented this kind of bug in the first place. I don't think so, but it's possible. I use test-driven development for some coding tasks these days, but it's doubtful we could have usefully applied these techniques given the constraints of the systems and tools we were using.

</comment><comment><USER16> Reminds me of this 30-year-old hardware bug, related to metastability: [https://news.ycombinator.com/item?id=5314959](https://news.ycombinator.com/item?id=5314959)

(The article's location has changed, it's now at [http://www.pouet.net/prod.php?which=61024#c637759](http://www.pouet.net/prod.php?which=61024#c637759) )

More information at: [http://www.linusakesson.net/scene/safevsp/index.php](http://www.linusakesson.net/scene/safevsp/index.php)

</comment><comment><USER17> Debugged a (somewhat similar) problem a few months back on a USB device that would only happen when it was plugged in on non grounded computers (e.g. laptops running on battery). Working in hardware is fun.

</comment><comment><USER18> Yeah, I remember this being posted before. This reminds me of another article which I'm pretty sure was posted on HN as well about a single bit being randomly flipped on someone's `expr` binary as it was loaded in memory. The author, sort of jokingly, suggested that the bit flip was caused by a cosmic ray:

[https://blogs.oracle.com/ksplice/entry/attack_of_the_cosmic_...](https://blogs.oracle.com/ksplice/entry/attack_of_the_cosmic_rays1)

</comment><comment><USER19> I used to work at a hotel that ran a Nomadix gateway appliance to get around guests having static IPs configured from their office environments. Without it we were sure to get a call about them being unable to connect.

One year the hotel purchased another across the street and connected it via fiber. As our network infrastructure was somewhat old we used a converter on each end to take a standard patch cable from each switch and transmit the data stream over the fiber. Everything worked as expected except for one key part: computers attempting to access the guest network would never receive a DHCP- assigned IP address. Static IP addresses worked just fine.

After quite a bit of packet sniffing and digging into specs I found the problem: the packet size of the initial DHCP responses from the Nomadix gateway was smaller than the minimum packet size of the converters. The fix was to switch to a different model converter that operated at layer 2 instead of layer 3 and thus didn't have the packet size minimum.

</comment><comment><USER20> This has been reposted a few times now. Past discussion: [https://news.ycombinator.com/item?id=6654905](https://news.ycombinator.com/item?id=6654905)

</comment><comment><USER5> Got me thinking about a Bill Herd video about working on the C116.

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

Specifically the part where he talks about sorting out the joystick port.

More hardware than software but still...

</comment><comment><USER21> Lesson: make sure you can always (re)run your code in a fully deterministic environment.

<comment><USER22> Such as?

</comment></comment><comment><USER23> That is cool as hell.</comment>


I urge you to refund Arizona Sunshine - <AUTHOR> https://www.reddit.com/r/Vive/comments/5h2kwx/i_urge_you_to_refund_arizona_sunshine/ <comment><AUTHOR> The developer recanted swiftly: [http://steamcommunity.com/games/342180/announcements/detail/...](http://steamcommunity.com/games/342180/announcements/detail/289751074098300224)

</comment><comment><USER2> Maybe a better title would be "Game Developers Lock Games Modes for Players Not Using i7 Processors" or something in the same vein.

I went in expecting a rebuttal against anarcho-capitalism (pattern recognition is weird)

<comment><AUTHOR> Yes I agree but I've had posts modded back to the original titles several times so I tend to err on sticking to that unless it's awful. I think this piece will get picked up by the gaming press soon and someone can post a link to a proper article.</comment></comment>


NYT: The Future of Same Day Delivery Is Alcohol - <AUTHOR> http://www.nytimes.com/2015/02/19/business/smallbusiness/same-day-delivery-resurges-adding-alcohol.html

<comment><AUTHOR> Really compelling space loaded with interesting players and growing valuations. Article mentions Amazon, Thirstie, Ultra, Drizly and Klink as companies to watch, but not sure Amazon is cool enough to compete, or if it's a great fit marketing wise- could easily end up being another Kindle Fire for them.

Either way there's a great battle shaping up as on demand alcohol delivery matures.</comment>


How the Oil Pipeline Began - <AUTHOR> http://nautil.us/issue/50/emergence/how-the-oil-pipeline-began <comment><USER2> The history of oil and its influence in more-or-less singlehandedly creating the modern world (with a helping hand from coal) is pretty phenomenal.

Daniel Yergin's book _The Prize_ , and the BBC/PBS series of the same name, are absolutely epic. What's clear from both is how rapidly essentially modern concepts emerged: By 1865, six years after Colonel Drake's well was dug, railroad tank cars of welded iron looking much like today's DOT-111 cars existed. Similarly, oil pipelines.

[https://m.youtube.com/playlist?list=PLOr8q_slscQNSXOzbaEUUZf...](https://m.youtube.com/playlist?list=PLOr8q_slscQNSXOzbaEUUZf_83FeEyJZx)

[http://www.worldcat.org/title/prize-the-epic-quest-for- oil-m...](http://www.worldcat.org/title/prize-the-epic-quest-for-oil-money- power/oclc/797007104&referer=brief_results)

[https://en.m.wikipedia.org/wiki/DOT-111_tank_car](https://en.m.wikipedia.org/wiki/DOT-111_tank_car)

The Internet Archive has numerous contemporary accounts, many reading not like 1990s "get rich quick on the Internet" books, on the particulars of the 1860s Pennsylvania oil boom. For example:

[https://archive.org/details/oilregions00wrigrich](https://archive.org/details/oilregions00wrigrich)

[https://archive.org/stream/apracticaltreat01unkngoog#page/n1...](https://archive.org/stream/apracticaltreat01unkngoog#page/n10/mode/2up)

The travellogues are particularly poignant.

<comment><USER3> I second that recommendation for Daniel Yergin's pulitzer prize winning book "The Prize". Oil as an energy source changed mankind. In addition to the history of oil in the US, it gave insight into the rising importance of oil during WWII (Hilter diverting his troops to capture the Baku oil field instead of focusing on Stalingrad), the post-war division of the world oil fields between the British and Americans (U.S. took Saudi Arabia (aramco), the Brits took Iran and Kuwait (anglo-persion and kuwait oil).

<comment><USER4> i think you meant Hitler diverted troops intended for what he and his generals had agreed was their key objective, Baku, to battle over worthless Stalingrad.

Capturing Baku was the only chance the Nazis ever had of beating the russians.

<comment><USER5> So I started watching some of this series a few hours ago and the OP is correctly referencing the documentary.

Paraphrasing: the documentary says the german fieldmarshal in Stalingrad phoned Hitler and said they badly need more troops. Hitler responded 'what good is your army without the oil you need to use it.'

<comment><USER4> If course Paulus asked for more troops, Stalingrad was a meat grinder, exactly the type of battle the germans could ill afford.

I'm writing this from memory, but my memory is the only reason they were there was opportunism, they advanced faster than expected, and looked to take Stalingrad easily despite it not being a strategic target. Then when they got bogged down Hitler refused to allow retreat, he thought taking the city named for Stalin would dishearten the russian people, and a german retreat would inspire them. So he threw away a million man army he couldn't afford to lose.

And all while under-supplying the army in the Caucasus and dooming it to failure.

</comment></comment></comment></comment></comment><comment><USER6> What's so tricky about oil that it took so many attempts to make a pipeline? Other materials were flowing through pipelines for more than a hundred years at that point.

<comment><USER2> I'm sorry, but what major, high-flow, long-distance pipelines are you referring to having existed prior to 1859?

I'm not aware of any particularly significant examples.

The major exception would be water aqueducts, but these were _not_ generally pipelines.

No major city had a long-distance water conduit or sewerage system by that time. London was _just_ building its own sewerage system in 1860, and that comprised vaulted chambers of brick.

New York City's Catskills water system wasn't completed until 1915.

[http://www.nyc.gov/html/dep/html/drinking_water/history.shtm...](http://www.nyc.gov/html/dep/html/drinking_water/history.shtml)

What was difficult was that, fundamentally, industrial manufacturing did not exist. Other than a small number of powered looms and ironworks.

That's _cast_ and _wrought_ iron. Bessemer steel had only _just_ been patented (1856), but production wasn't scaled up for a number of years (initial attempts to license the method failed when licensees were unable to properly implement it).

Industrialisation is a rather significant bootstrapping process. Titusville Pennsylvania was a rural region, on the frontier, without access to viable transportation (that is, rivers or canals). Railroads existed, but with iron rather than steel rail, had limited tonnage capacity and were prone to splits rails.

<comment><USER7> China was piping natural gas over long distances in bamboo for many centuries before then. It would have been flowing for over a thousand years by 1859.

<comment><USER8> that is incredibly interesting. do you have a source for more reading?

<comment><USER2> If you want your mind blown on China and technology: Joseph Needham, _Science and Civilisation in China_.

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

</comment></comment></comment></comment></comment><comment><USER9> Nice article. Now I know the origin of the Teamsters. This scenario plays out time and time again as technological replaces workers. I suppose automated trucks will be no different.

<comment><USER10> automated trucks will be interesting but this works for loads that the driver personally does not have to handle. the numbers may be higher when you think of all the drivers displaced from taxi services, bus drivers, and such.

</comment></comment><comment><USER11> How can we stop it and replace it with saner, greener tech (or replace the use of fossil fuels altogether)? That's the better question once we know how it got here.

<comment><USER12> Oil is about 40% of the primary energy used in the USA and primarily for transportation. So fewer cars, trucks, ships, and airplanes would help. One transatlantic flight uses an astounding amount of oil. So take very few of those! And live close to work and close to places you want to be.

On the other hand, electric vehicles can help a huge amount for cars and trucks at least. Then we shift the primary fuel to whatever being used by the utility company. That's mostly natural gas, coal, nuclear, and hydro in the USA, followed by a percent and growing of wind and solar.

Of dispatchable options, nuclear, wind, and solar have tiny carbon footprints. Nuclear has very small physical and fuel footprints and runs 24/7, so that's my current favorite. It's also way safer statistically than almost anyone thinks, having saved 1.8 million lives net by displacing air pollution deaths by 2013. Its fuel is also renewable because uranium dissolved in seawater will replenish through erosion faster than we could ever use it for billions of years.

Wind and solar are kicking ass right now. going global scale requires large footprints of storage, land, magnets, coils, etc. I imagine a future of 50/50 nuclear + various forms of solar harvesting.

<comment><USER13> > Its fuel is also renewable because uranium dissolved in seawater will > replenish through erosion faster than we could ever use it for billions of > years.

It's been an hour and still no one's caught this but.. what exactly is this you're referring to? It'd be a fishy looking stoichiometric ratio if the fuel is produced from the seawater.

<comment><USER12> Good catch! This is a pretty epic idea but it is defensible. Here I quote from a paper linked below:

"One additional aspect of nuclear sustainability—noted long-since by Bernard Cohen—is that a significant fraction of the nuclear fission energy resource is in fact completely "renewable" in the same sense as wind and solar energy [32]. Wind and rain constantly erode the Earth's crust, which contains an average uranium concentration of 3 parts per million. Rivers then carry this dissolved uranium into the oceans, at a rate of approximately 10,000 MT per year [33]. In a breeder reactor energy system, this is a sufficient rate to supply the world's entire electricity demand at the present time more than five times over—or is roughly one quarter of what's needed to supply a continual 100 TW to a hypothetical global civilization of 10 billion persons which is energy supply-replete by any contemporary measure.

As the crust is being eroded by rivers, it is constantly replaced by new layers of rock being pushed upward by plate tectonic processes. The supply of uranium in the Earth's crust is effectively inexhaustible, on the order of 40 trillion metric tonnes, a factor of 10,000 more than is present in the oceans. At present erosion rates, this source of uranium would last on the order of 4 billion years, similar to the timespan over which the Sun will become a red giant.

Therefore, this assured source of "continually mined-by-Nature and oceanically presented" uranium will last as long as life on Earth does—even if burned at rates sufficient to supply a large fraction of a fully-developed human civilization—and represents an astronomical amount of nuclear energy, one that is in fact truly renewable and inexhaustible by any human measures."

[1] [http://www.mdpi.com/2071-1050/4/11/3088/htm](http://www.mdpi.com/2071-1050/4/11/3088/htm)

<comment><USER14> Note that uranium mined from seawater is about six times as expensive as conventional uranium: [https://en.wikipedia.org/wiki/Brine_mining#Uranium](https://en.wikipedia.org/wiki/Brine_mining#Uranium)

<comment><USER12> Indeed, which is why it's not done commercially today. Note also that total fuel cost is about 5% of the cost of a nuclear plant, and that includes mining, milling, enrichment, and fabrication. As seawater extraction becomes cheaper and uranium mines run low (no time soon), it will basically be a wash economically to switch to the renewable uranium. Also, breeder reactors don't need you to enrich the fuel, so that counterbalances any increased extraction cost. On the downside most (but not all) breeders require chemical reprocessing which so far has been very expensive. With development this too could go down.

The key point is that we would never run out of fuel as a species if we went big with nuclear.

</comment></comment></comment></comment></comment></comment><comment><USER15> Very interesting read. Thanks for sharing. Having started my career in Oil & Gas Pipelines, it made me nostalgic.</comment>


Startup War Story: When The Team Falls Apart (Profitably) - <AUTHOR> http://venturebeat.com/2012/03/23/exclusive-new-york-startup-profitably-loses-all-but-one-employee-ceo-adam-neary/2/

<comment><USER2> Taking a look at the timeline.

In November they fired a key employee, then the CEO demanded a loyalty oath of all remaining members that they would stay for 6 months or get out. They had 48 hours to accept the loyalty oath or leave. All accepted.

It seems it was then that they began the total rewrite of the front _and_ back end of the system.

On this last Monday, after 5 months of an unpaid overtime, they finished that complete rewrite death march. On Tuesday they had a token pizza party.

There is no other reward for completion of this death march or the roughly six months of loyalty.

On Wednesday they are back to the grind. A co-founder, having fulfilled his vow to stay through the six month rewrite, resigns. The rest of the employees are told by the CEO they must take another loyalty oath and this time be willing to work without pay because there is no income. This time they get 24 hours not 48 to answer. The entire team chooses to reject the new loyalty oath and thus "resigns", but it is also possible they were basically forced out for refusing the oath.

Even without the oath, mass resignations are quite common at the end of a death march. So far this story is straight predictable right out of Edward Yourdon. Yourdon is also correct that death marches are the rule not the exception with start ups. Given how many products and start ups are destroyed because of management driving death marches, they may in fact even be responsible for the largest waste of capital in the industry today. Business as usual though.

Now we get to the strange parts of the story.

During all this going on, the same CEO only the week before was emailing journalists and telling them that the company was doing well and picking up several hundred new customers per week.

The CEO then writes a letter to investors blaming the co-founder for not being loyal, doesn't mention the new loyalty oath, and goes on to say the company is in excellent shape with new customers coming in every day.

This is all quite strange with a number of unaddressed questions. Among them:

With all these new customers why was the team told to accept no pay or get out?

The team spent the last six months sacrificing their lives and successfully rebuilt the entire product. They succeeded. The CEO during that time period has successfully extracted only 50% of the loyalty oaths he demanded. This seems his major accomplishment. He completely failed to secure financing needed to keep the company afloat. What exactly has he been doing during this time while others sacrificed? It is clear what the developers have been doing, but him not so much.

<comment><USER3> They offer a free product and a $50 paid product. I don't think it was mentioned anywhere that those hundreds of new customers were paying customers. Maybe they just signed up to try the product then never came back.

</comment></comment><comment><USER4> That title made it sound like a startup profitably fell apart. As in, the team dissolved, but they all made a lot of money doing it.

<comment><USER5> Agreed. Can the mods change the title so its clear?

</comment></comment><comment> brown9-2 Seems to me like the last sentence explains it all:

 _The part that Neary left out in his letter? According to sources after Pugh departed he gave employees an ultimatum: 24 hours to decide if they were in or out for the long haul, even if that meant no more salary without a new fundraise, which seemed unlikely. Given that binary choice, they elected to abandon ship._

</comment><comment><USER6> Sounds like less of a war story and more of a fatal leadership mistake. There was no "war" - Rather than inspiring his team, he gave a frantic ultimatum.

Sadly ironic name, hopefully he can pull it together.

</comment><comment><USER7> It sounds like the CEO wasn't very good at communicating with his team OR his investors (or presumably customers), which was the fundamental problem.

However, when the money runs out, all sorts of bad things happen. Asking people to continue without pay, advancing expenses to the company, etc. are not things you'd do starting from the start, but it's at least understandable why people do this after investing a lot into a project, and why people feel some kind of personal betrayal when they are willing to go on and do that kind of thing but other people aren't.

The lesson is to not get to that point :)

</comment><comment><USER8> The link goes to page 2 of the article. The correct link is this one:

[http://venturebeat.com/2012/03/23/exclusive-new-york- startup...](http://venturebeat.com/2012/03/23/exclusive-new-york-startup- profitably-loses-all-but-one-employee-ceo-adam-neary/)

</comment><comment><USER9> He paints a bad picture of the fist guy who left but it looks like the first guy stuck around and help finish the re-write so he can't be the villain that he's portrayed to be.

</comment><comment><USER10> Its like when my pub raft-racing team called itself "In First Place" just to wind the commentators up.

Later we called our raft "two pints of lager and a packet of crisps please". Such is English humour.

</comment><comment><USER11> Sounds like there is more to this story. If they are adding hundreds of new clients, why are folks heading for the door?

<comment><USER12> not clients, free users.

<comment><USER13> Free users are still users, and 1k users per week is nothing to scoff at when you're dealing with the B2B arena.

<comment><USER14> Can you name a single profitable company in the "B2B arena" with only free users?

<comment><USER13> Mint started out as not profitable in any way, and I believe at their IPO (which was ~18 months later) they had an ARPU of something like 35-40$ per annum.

You need to reach a critical mass in users before you can take action on certain potential profit centers. It's different for every industry and every business, but there's some things that would be more trouble than they're worth at 25k users but start making you a lot of money at 100k users.

<comment><USER15> Mint was acquired by Intuit, they did not IPO: <https://www.mint.com/press/intuit-to-acquire-mint-com/>

<comment><USER13> Sorry, it has been a while. I remembered them as IPOing for ~190 million, but apparently that was not the case.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> _If Chad and Eric were out, we wouldn't be able to raise funds, and that's that._

On the other hand, he also said the company has a rebuilt product and is signing up hundreds of new companies every week. Is it entirely a lost cause?

<comment><USER13> I think he was trying to explain the other employee's reasoning for leaving, not conveying his own feelings.

</comment></comment><comment><USER17> Sounds like they lost one guy and ran the rest off.</comment>


Ask HN: Why my submissions and comments are not visible to others? - <AUTHOR>

I just found out that more than 10 of my latest submissions and few of the latest comments are not visible to others. I can see all of them after I login, but nobody else can see them.
For example, here are few latest submissions
http://news.ycombinator.com/item?id=2041737
http://news.ycombinator.com/item?id=2029729
http://news.ycombinator.com/item?id=2014711
Others can not even see a list of my submissions. Check this,
http://news.ycombinator.com/submitted?id=rahulchaudhary
What's going on here?
I created this throw away account just so that others can see this submission. <comment><USER2> I can see the listing fine, and it shows a lot of your submissions in [dead] status. _Why_ they are in dead status, I cannot say. The FAQ says that things go "dead" usually because they're either spam or duplicates. That or maybe you ticked off one of the editors? <shrug />

</comment><comment><USER3> rahulchaudhary, your recent submissions have all been marked as "dead". See <http://ycombinator.com/newsguidelines.html>, particularly:

If the original title begins with a number or number + gratuitous adjective, we'd appreciate it if you'd crop it. E.g. translate "10 Ways To Do X" to "How To Do X," and "14 Amazing Ys" to "Ys." Exception: when the number is meaningful, e.g. "The 5 Platonic Solids."

There is also a list of websites that are considered to be mainly "fluff", and postings of links to them are automatically killed.

<comment><AUTHOR> Thanks for the reply. That explains about the submissions.

What happened to my latest comments on the following threads which are not showing up for others?

<http://news.ycombinator.com/item?id=2041547>

<http://news.ycombinator.com/item?id=2038590>

<http://news.ycombinator.com/item?id=2038732>

<http://news.ycombinator.com/item?id=2038079>

</comment></comment><comment><USER3> Here's a link to the list of banned sites: <http://news.ycombinator.com/item?id=499044></comment>


Blog, redesigned, comments and feedback wanted - <AUTHOR> http://www.wildhives.co.uk/blog

<comment><USER2> Rather pretty, but I see two big problems. First, [http://validator.w3.org/](http://validator.w3.org/) points out some coding errors. Markup that doesn't validate can have unpredictable behavior. Second, the flower.jpg that you use as a background image is over a megabyte in size. I'm sure you can easily compress this further, especially as you scale it down anyway. This causes a large and entirely unnecessary delay in your initial page load.</comment>


Scalable Machine Learning - A. Smola's course at Berkeley (video) - <AUTHOR> http://alex.smola.org/teaching/berkeley2012/

<comment><USER2> For other dull-eyed clickers, the video lectures are on the left.</comment>


The Smartest Unknown Indian Entrepreneur (2008) - <AUTHOR> http://www.forbes.com/2008/02/22/mitra-zoho-india-tech-inter-cx_sm_0222mitra.html

<comment><USER2> I've thought about one of those ideas for a while: promise 6 months to highly motivated high school kids and for an exchange of working for two years at lower wages, you'd train them. Then, you could have them working for 20 hours a week fairly quickly on QA, automated testing, and other positions as they learn your system. Then, place them in a mentorship system with good senior engineers and keep the good ones.

</comment><comment><USER3> Folks, Sridhar Vembu was unknown, or certainly lesser known in 2007 when I first interviewed him :-)

Since then, and especially after this Forbes story, he was in the Economist.

So no, he is no longer unknown.

</comment><comment><USER4> The page is trying to render something from my LAN in an IFRAME.

It does not look malicious, just a silly mistake. Boy, how I love thee, NoScript!

(the url: [http://192.168.0.164:8581/feeds/PopularSciencehtml/PopularSc...](http://192.168.0.164:8581/feeds/PopularSciencehtml/PopularScience.html))

</comment><comment><USER5> Sridhar Vembu is a fellow hacker here :)

<http://news.ycombinator.com/user?id=sridharvembu>

</comment><comment><USER6> This article made me give Zoho a try. We use Google Apps/37Signals, but wanted to kick the tires and see what's up at Zoho.

First impression is that they need UI polish, but overall the individual Zoho apps are astonishingly fast. I don't know how they'll hold up after loading data into them, but try out some of the Zoho Business apps in Chrome on OS X (use your OpenID so you don't have to sign in).

Is it just me? Performance seems so amazingly fast for just clicking around that I want to do a side-by-side benchmark with Selenium and some real data just to make sure my eyes aren't deceiving me.

</comment><comment><USER7> Any thoughts on what other products can be done with this model? or in other words, what other SaaS products currently have fat margins that can be undercut?

<comment><USER8> not necessarily SaaS products, but I'm thinking of software for professionals:

\- software for lawyers, accountants

\- software for the health industry

\- graphic software such as photoshop, 3DSMax or Final Cut pro

the overall market is smaller, but you can sell the software for more. Also might need a little bit more topical knowledge, but imho it's the same quantity of work as doing a Microsoft Office clone

another market with fat margins is MMO video games. I'm sure there are lots of niche markets out there wanting their own game

</comment></comment><comment><USER9> Not really unknown - wasn't there a mention by Google of Zoho sometime back and that article was linked here as well.</comment>


Dafny: verification-aware programming language - <AUTHOR> https://github.com/Microsoft/dafny <comment><USER2> Meta: I think the genius of GitHub was showing the README.md, nicely formatted, front-and-center. (I find it baffling that they crop it on mobile, in favor of "Pulse" and "Notifications" and other junk I've never once wanted.) Today even when projects have proper webpages, we link to the GitHub page, because the README has more/better/easier-to-digest information.

The Dafny webpage at microsoft.com appears to have some formatting errors (perhaps auto-converted from some other format, with no proofreading), and I can't tell if it's been updated at all in the past 10 years.

Similarly, I think Wikipedia and StackOverflow are much more likely than the average webpage to be able to provide me the information I want, with no fuss. HN is the most usable forum, followed by (old) Reddit.

As developers and designers, we say we want more features and flexibility. As users, we eschew any webpages that use this flexibility. We just want plain webpages with information. Webpages which are a trivial pretty-printing of some plain text (wiki/markdown) are by far my favorites.

<comment><USER3> And the files. Other VCS UIs show other things first. I don't care about commits or branches first. I care about the README and the top-level files (e.g., LICENSE).

<comment><USER4> If you are a contributor your priorities might shift, but there are probably ways to handle that.

I suspect the real problem is trying to use the same landing page for both an intro and a project management tool. Create two pages and tune them accordingly.

<comment><USER3> I am a contributor to many repos.

</comment></comment></comment></comment><comment><USER5> Good answer to "What's the difference between LEAN, F* and Dafny?" [https://stackoverflow.com/questions/46010923/whats-the- diffe...](https://stackoverflow.com/questions/46010923/whats-the-difference- between-lean-f-and-dafny)

<comment><USER6> Excellent comment as the first thing I thought after seeing the submission was exactly "how does it compare to f* and lean"?

Thank you!

</comment></comment><comment><USER7> Discussed in 2016: [https://news.ycombinator.com/item?id=10842714](https://news.ycombinator.com/item?id=10842714)

and in 2017: [https://news.ycombinator.com/item?id=13440324](https://news.ycombinator.com/item?id=13440324)

</comment><comment><USER8> What is up with that logo?

<comment><USER9> I kind of like it, looks like a beach

</comment></comment><comment><USER10> Can I specify a regular expression as an argument to a string type or demand an integer or a real argument to be a solution of a certain equation with this? Can it also handle validation of certain data against other data in runtime (e.g. load a list of available options from a database and make sure no value that is not in that list gets is allowed as a parameter to a certain function)?

<comment><USER11> It's backed by z3, an SMT solver. There are theories in SMT for strings that can sometimes answer questions of your first flavor, but I don't know if they're in z3.

Solvers can also answer questions of your second variety, but again, sometimes they can't, and they can't be guaranteed to in general. For an example, consider this example: [https://rise4fun.com/Dafny/Cube](https://rise4fun.com/Dafny/Cube) where the "ensures" on the return value enforces exactly that.

You also should be able to write set-inclusion style queries like your second clause, i.e. a function that takes an element and a list of elements as an input and only returns true if the element is contained within the list of elements. I think? I'm not sure why you couldn't.

Of course, whether or not that does what you think it does or not depends on how something can get written to that database - if there was a path to write something new to your exclusion list from elsewhere in your application, then the "verified" code would return true when you would think it would return false but it was doing exactly what you told it to do. Is this a problem with your design, or the verification? I'd argue the design, but verification- nihilists would probably say it's a problem with the verification.

<comment><USER10> I see. Thanks.

</comment></comment></comment><comment><USER12> I have become interested in Dafny after reading about how they are making an effort to reduce annotations[0].

[0]: [https://arxiv.org/abs/1706.04023](https://arxiv.org/abs/1706.04023)

</comment><comment><USER13> What does it have for a standard library?</comment>


Monkeyboard: iOS keyboard for writing in Ook esoteric language, or just for fun - <AUTHOR> http://itunes.apple.com/app/id928901259

<comment><AUTHOR> For those non familiar to Ook! [http://www.dangermouse.net/esoteric/ook.html](http://www.dangermouse.net/esoteric/ook.html)</comment>


Asynchronous Task Queue with Django, Celery and AWS SQS - <AUTHOR> https://cheesecakelabs.com/blog/asynchronous-task-queue-django-celery-aws-sqs/ <comment><USER2> I think it's worth sharing this repo as well: [https://github.com/rodolfolottin/django-sqs-celery- template](https://github.com/rodolfolottin/django-sqs-celery-template)

</comment><comment><USER3> Great content, simple and useful. Loved!

</comment><comment><USER4> Very interesting!</comment>


Ask HN: How to find an IT temp job abroad? - <AUTHOR> I was wondering if there are any websites, forums, job boards etc. for IT or software engineering job roles that explicitly hire for a limited timeframe like 3/6/9/12 months (freelancer or "temp. permanent") and explicitly hire international, with english as project language (Think USA, Canada, Australia but open to all other Countries).
Background: I've been a freelance software engineer for 5 years in Germany and Switzerland, hopping between companies every 3-12 months. Most of the time I was on-site, living in hotels, short-term rentals etc. and returning back home every or every other weekend. Remote jobs, at least in Germany, are very scarce or pay a lot less in contrast to on-site. I really liked to discover the Cities and the surrounding areas in my spare time past working hours, and I wonder if there is a way to do this in an international context.
Now, I found some websites like jobbatical.com which seem to promote these kind of job adverts, but in detail it is just regular job adverts of companies looking for permanent placements. I'm rather looking for a mutual agreement where both sides - employer and employee - agree beforehand on the temporary nature of the arrangement. Given a certain seniority/expert level, I am pretty convinced these kinds of short term employments are benefical to the hiring company (thats also why at least in Germany we have a very vivid freelancer on-site market).
TLDR: Do you know any jobboards, websites, forums where companies explicitly look for (senior) level IT experts (software engineering etc.) and are open to temporary employment, or do you have any suggestion of how to look for these kind of jobs? <comment><USER2> Regular employment on-site requires foreigners have a work permit/work visa, not something companies want to hassle with for a short-term employee.

You can freelance without a work permit but you generally can't work on site for a company as a freelancer without proper documents that allow you to work in the country. Remote freelancing gets around most of that problem.

</comment><comment><USER3> You can check on [https://swissdevjobs.ch](https://swissdevjobs.ch) -> filters -> Job Type: Contract

There are a few offers but not too many, to be honest.</comment>


Why Does Backspace Go Back A Page? - <AUTHOR> http://ux.stackexchange.com/questions/53176/why-does-backspace-go-back-a-page-this-behavior-is-so-frustrating <comment><USER3> It's just terrible UI design on so many levels.

* It uses a text-input key in a modal way, when no other unmodified text keys are used modally in a web browser.

* Shifting between modes can happen inexplicitly and unintentionally.

* It's potentially destructive.

Add this all up and you have a recipe for users unintentionally and unexpectedly losing data. That's bad enough on its own.

The fact that the justification for it appears to be "because somebody made a poor UI decision 20 years ago and people don't like change" is inexcusable.

<comment><USER4> > "because somebody made a poor UI decision 20 years ago and people don't like > change"

And now they did a poor UI decision by making a swipe gesture go back

Which would be ok if it wasn't for the fact that sometimes when scrolling (on anything that has 2 dimensions) you will accidentally swipe back.

<comment><USER5> I use it all the time in Safari and love it. In Chrome it's less obvious when it is being triggered though.

<comment><USER4> Yes, in Safari there's a more obvious visual indication.

I suspect that back and forth in Safari may be non-destructive as well (though I can't confirm this right now)

One of the things that makes it easy to swipe back by mistake is the apple trackpad, so I suspect Safari developers are aware of this and added the indication

<comment><USER6> > I suspect that back and forth in Safari may be non-destructive as well > (though I can't confirm this right now)

I just tried swiping back and forth with this text in the Hacker News comment box and it didn't lose the content. I'm pretty sure I've had issues before, I think in relation to pages loaded by POST.

</comment></comment></comment></comment></comment><comment><USER7> This was particularly infuriating back when browsers would commonly lose input state when going back then forward. For years, long after that was resolved, I still wrote anything longer than a single sentence in notepad.

Even if this is kept for inertial reasons (I do make use of it on a trackpad myself), I think as soon as you interact with any kind of text input it should be disabled for the page.

<comment><USER8> Stack (Overflow|Exchange) put up a modal dialog if you started writing something and then change the page. Which is annoying when you just want to navigate away because you're not going to answer anymore, but in most cases solves this problem quite nicely.

Disabling the key under certain circumstances is usually a support nightmare when trying to explain people that »Backspace goes back to the previous page, except there is text in any input field on the page that you entered, in which case it does nothing. Oh, but the back button in the toolbar still works, as does the side button on your mouse.« (The same problem with disabled UI controls that usually do not say _why_ they are disabled. Some things, e.g. Copy being disabled when there is no selection, are easy enough to figure out but others not so much at times.)

</comment></comment><comment><USER9> On Firefox:

      Go to about:config
      Search for browser.backspace_action
      Set it to 2

All fixed. It is disabled by default in Linux, but someone surely made a mistake and forgot to turn it off by default in Windows in some misunderstood concept of 'compatibility'.

<comment><USER10> Firefox follows conventions of the various platforms, even for things like menus. In Linux, "Options" is under the "Preferences" menu, while on Windows it's under "Tools".

<comment><USER11> In Linux, "Options" is called "Preferences" and is under the "Edit" menu, while on Windows it's under "Tools".

</comment></comment></comment><comment><USER12> The whole premise is focusing on a symptom rather than the real issue. I happen to love backspace, because having to press a chord, half of which is requires my hand to move the arrow keys, is a major cache-miss for an action as common as navigating back.

But none of that even matters. The real question is:

Why do browsers not have an interface for configuring keyboard shortcuts yet?

And while they're at it, add an interface to customize whether or not JavaScript in web pages can override certain shortcuts. Not being able to rebind C-w, C-t, C-S-t, space, backspace, etc. has been a huge frustration for ages. One of the reasons I use Firefox is that it has a robust enough extension mechanism to support add-ons like KeySnail, but the fact the key rebinding isn't core functionality is just embarrassing.

<comment><USER13> Yeah I think it's a huge problem that javascript/the DOM allow a page to _have_ shortcuts and control over page navigation. This is so wrong IMO; the user agent should be in control. Because I am in control of my user agent.

<comment><USER8> Then it gets really hard to implement your own text box, if you cannot catch things like Backspace, etc. I think those things are relics because the web evolved rather haphazardly from a document display environment to an application development environment.

<comment><USER13> That "evolution" should not have happened. Maybe there's no sense in lamenting it now, except I think it's worth recognizing that we're still very much in need of both a reasonable web-like document display environment _and_ a reasonable cross-platform untrusted-application-sandbox-VM environment.

As for implementing your own textbox that catches backspace, that's a great example of the type of thing that web pages should not be doing. User agents should be responsible for the existence of text-entry fields, that way they can serve the text-entry needs of the user. Different users construct text differently. Also the consistency of UI of allowing users to know how a textbox works (because it's not redefined for each site) is a UI achievement that we have now lost.

</comment></comment></comment></comment><comment><USER14> I like this feature actually, because I'm used to it. It's simpler and quicker than using Alt + ←. I'm kinda pissed when this behavior is overridden (ie. Google Search). To be honest, this:

"On some pages (but not all) when I want to erase the last few characters I just typed, I tap Backspace several times. Tap tap tap. And then, lo-and- behold, my browser is leaving the page I was on and going back in the tab history."

never happened to me, and I'm really wondering how the asker manages to lose the focus on a text field while he types.

<comment><USER15> I'm the asker. You must be one of those cursor focus savants. Do you actually get any work done? If so, are you a super genius whose brain always has extra clock cycles to check that the cursor is blinking next to where you're intending to erase? Or are you a very slow user? Or do you not bother fixing your mistakes when you type?

<comment><USER14> It wasn't a rhetorical question and I didn't want to sound aggressive, I'm sorry you took it that way. I didn't even think of the touchpad issue for example.

</comment></comment></comment><comment><USER16> For disabled users backspace to go back is tremendously useful. On keyboards with Alt Gr, pressing Alt + Left Arrow requires pressing down keys with both the left and right hand simultaneously. It's not possible if one of your arms is paralyzed. Targetting the back button (which btw, is getting smaller and smaller i newer browsers) with the mouse to click can also be a very time consuming task if you are suffering from involuntary shakes.

Some people actually surf using tab to focus links, then click with return and goes back with backspace. For them removing the backspace as back function is a big step backwards (haha) in usability. Yes, one could argue that they should just install vimperator and some other addons to make the browser usable with their particular disability. But most handicapped users are just as clueless as normal ones and have no idea how to customize their software.

<comment><USER17> I agree that backspace is useful as a back button (I use it that way), and also that there should be an option to change the setting (although, on which the default should be, I cannot decide).

But wasn't StickyKeys (and other assistance-related settings) created to fix the keyboard modifier problem for users with low mobility?

</comment></comment><comment><USER18> On the plus side, it's a large key that does not require simultaneous key presses: holding down multiple keys at the same time is not user friendly, especially for noobs.

The backspace frequently has a backwards arrow printed on it, so symbolically it feels right.

Personally I find web pages that break common shortcuts, and navigation paradigms more irritating. Google+ changes the behaviour of CTRL+PGUP/PGDOWN, some sites hijack the spacebar (normally I use for paging), some sites hijack CTRL+CLICK that I use to open links in new tabs.

I never hear people bemoaning the use of the Home key to go to the home page, and its different behaviour in text input areas. But I can appreciate some people don't like it how the controls appear to change, depending on what you are doing, it's far from obvious for some people.

I find The issue with text controls in browsers, is one of focus, thinking that you are in text area, when you aren't etc. The browsers could really help here, by making it really obvious which form element has the focus. It's doubly annoying when you are have focus on a flash component, and none of your keyboard shortcuts feel like they work. I'm a keyboard fan, but really without having some exotic setup, you are reliant upon the mouse with the mainstream OSs because of irritations like these. Which is really irritating for me when I'm trying to do simple things with just the keyboard sitting on the sofa with a computer connected to the TV.

<comment><USER19> > _holding down multiple keys at the same time is not user friendly, > especially for noobs._

The problem is that "noobs" generally don't care about keyboard shortcuts at all, especially if there's already a large button in the top left of the screen (or the bottom of the device) that does exactly what they want to do. The only keyboard shortcuts my father remembers, for example, are Ctrl+C and Ctrl+V, and he's been using computers for 25 years.

Keyboard shortcuts need to be simple enough to be memorable, but also not too simple so that you don't press it unintentionally. A single key that is also commonly used for a different purpose doesn't seem to fit that criterion.

<comment><USER18> I"d hardly say hitting one key with your finger is a keyboard shortcut. Some noobs, hate the pointer when they first encounter it, and will avoid it if possible.

</comment></comment></comment><comment><USER20> To avoid loss of form input, there are several auto-save-to-localstorage solutions like [http://garlicjs.org/](http://garlicjs.org/). Just add data- persist="garlic" to the form tag and everything is saved until successfully submitted.

<comment><USER21> Which is also potentially annoying behaviour - often you don't want the state to be saved. We could solve it adding a 'reset' button to our forms. Haha - <USER2> browsers still support those?

<comment><USER22> Has it actually annoyed you or have you heard of someone being annoyed by it? Because I can't imagine it being annoying. Most of the time, saving form input is desired. The few times where it's not, it's easily solved by one of the many ways to remove all the text.

<comment><USER21> It has, yeah. Wasn't it behaviour added to Firefox once some years ago? I recall a situation where my less technical other half was struggling to submit a form because of this behaviour. Granted, it was due to a poor implemention that didn't support two dropdowns where one depended on the other, but it was confusing and annoying.

As a developer it's annoying because it slows down testing - again edge case, but I've seen it before, and it annoyed me.

If it was the standard behaviour and all controls were sensitive to it, that would probably be different.

There's also the security aspect to keep in mind. So now when someone comes back to a page on your machine, might they see something you didn't want them to see?

</comment></comment></comment></comment><comment><USER23> Gotta disagree here. I never have a problem with this useful long-standing feature.

<comment><USER24> As another one who uses this feature often, I can remember how I discovered it a _long_ time ago: accidentally pressing it once on a page and thinking "oh, that's useful", then regularly using it after that.

On the other hand, I'd rather Alt+Left be disabled inside text inputs, as I have quite a few times accidentally went back while trying to move the cursor.

The odd thing is that this shortcut is not mentioned in the Back button's tooltip of neither Firefox, IE, Opera, nor Chrome.

</comment></comment><comment><USER25> I get really frustrated with the comments that say "but backspace doesn't do that when you're in a text control". To me thats completely missing the point. Can anyone explain why anyobe would make such a comment? Is it just pedantism with a lack of understanding of the bigger picture? These type of comments drive me crazy, and I only ever see them in programmer fora.

<comment><USER26> > Can anyone explain why anyobe would make such a comment?

Because the original story doesn't add up. If you're typing and press backspace to delete some characters you _just_ typed, without some additional tab pressing, mouse clicking, or Javascript shenanigans on behalf of the website, the browser won't go back in history. That's just a cold hard fact.

<comment><USER27> If people are getting mad at going back a page by accident, then they are going back a page by accident. It's happened to me, and while I'm still not entirely sure why, I really don't _care_ why. The "Self Destruct" button shouldn't be next to the "Make Phone Call" button.

</comment></comment></comment><comment><USER28> Backspace in some browsers goes to the previous page because that used to be the standard.

Nowadays we enter a lot of data in a web page and having to explain to an end user that the browser works differently depending on where the cursor is might be confusing for them.

A decade ago most people just used the internet for consuming the page (browsing), sometimes entering a few lines of data. Having the back button go back in your navigation makes sense in that respect as you are "browsing", not creating.

Re: "it's totally destructive", actually it is not destructive, you can hit backspace in the middle of your edits, go to the previous page, then go to the forward arrow in your browser and voila.. the text you entered is still there!

Of course that isn't true on every website as quite often the site developer is trying to do "smart" things. It is however a standard html feature and I just did that here while typing my text and it works fine on hacker news.

Personally I like the back button in my browser to go back in my browsing history, as mentioned by others, this is configurable in firefox.

</comment><comment><USER29> I think the biggest problem here is a context one. When you use a shortcut inside a software, you don't (usually) think about the field focused. As I, like most of us here, use an IDE or a code editor every day, I think best context-free shortcuts involve more than one special key.

Even the alt + arrow shortcut is a bad idea because it mean "go to the beginning of the word" in Mac OS. I had very bad issue with the CMD + Arrow in my Chrome, because when I type I don't use the mouse.

Ctrl + CMD + Arrow is the perfect shortcut for me (and I think, for every XCode users).

</comment><comment><USER15> Consider how most users interact with a page. I personally click to highlight text, use my mouse wheel to set the page just so, and I type. A lot. And I'm a fast typer. And I hit backspace. A lot. Why should I lose all my work because I'm not a cursor focus savant, or someone who never types? Because if you're a typer, this affects you. This happened to me at my job, causing me to lose hours of search and fill-in information, information that is necessary for me to keep my job. And it loses a lot of productivity for a lot of other people as well. Learn to use [Alt]+[←]. I do it one-handed all day long. And if your needs are so specialized that you require a single-button solution, you should be able to get that by changing a setting from the default, and not forcing everyone else to live with the ejector seat button doubling as the turn- signal.

</comment><comment><USER19> PSA for anyone who is tempted to copy and paste the jQuery example posted by 'pathfinder': Make sure you account for "radio" and "checkbox" input types. They don't handle the backspace key the same way an <input type="text"> or <textarea> would.

</comment><comment><USER30> "Back in 9/26/95, the Backspace key was mapped for go up one directory in Windows Explorer. This could be the reason why Microsoft also used the Backspace key on their IE for back/up a page. Of course, this is pure speculation on my part :)"

So this is leftover damage from Microsoft's bizarre campaign to fuse Internet Explorer with Windows Explorer? Why do I suddenly want to hurt someone?

<comment><USER8> Consistency across applications isn't a bad thing per se. Ask all those who argue that emacs or vi keybindings should be available everywhere ;-)

</comment></comment><comment><USER31> Safari removed that "feature" a while ago.

</comment><comment><USER32> I wanted to add that I use the backspace quite a lot, and have found the opposite situation which might shed light on why Google likes it. When I hit a google search in my history, hoogle quickly puts the text focus in their main box so my backspace now starts erasing what I wrote rather than going further in the history, and I consider doing another search

</comment><comment><USER33> Opera remembers text inputs (and caches pages) so going back and forth is instanteous and doesn't lose your inputs

</comment><comment><USER34> Ironically I've become so custom to using backspace for navigating back that I constantly end up swearing when I use it on sites that hijack text-input like Google for instance, where pressing backspace will focus on the search-field, delete the last character and immediately perform a new search.

</comment><comment><USER35> I suppose if you want to answer a question you have to understand the context, and as with reproducing bugs, you have to know the steps to recreate the problem.

It's not like they're being purposefully obnoxious - no more than when people answer with, 'why would you want do that?'

</comment><comment><USER36> Does backspace go back a page? It doesn't on my setup (Firefox 28.0 on Ubuntu 12.04).

<comment><USER10> Firefox on Linux doesn't by default. You can change it in about:config by setting browser.backspace_action to 0. [http://kb.mozillazine.org/Browser.backspace_action](http://kb.mozillazine.org/Browser.backspace_action)

</comment></comment><comment><USER37> My laptops have different keyboard layouts which leads me to often press backspace in error when attempting to press page up/down keys.

I don't really care if it's the default or not, I would just want the option to turn it off in Chrome.

</comment><comment><USER38> I've only just noticed that Safari doesn't do this. I'm almost certain I used to extensively use backspace for navigation; since starting to use a trackpad almost exclusively, I've replaced that with swiping.

<comment><USER39> I prefer the swiping too. It's also unlikely that I would swipe two fingers over the trackpad on accident where as the backspace not being in a text- area's focus happens too often to be considered useful.

</comment></comment><comment><USER40> It doesn't in Linux' Firefox by default and that's bloody annoying.

</comment><comment><USER41> Isn't the number of occurrences of this behaviour directly proportional to the amount of already-filled-in form fields?

\- "Murphy's Law"

</comment><comment><USER42> It doesn't?

<comment><USER43> Chrome[1] and Firefox[?] and probably others on Linux do not have this behavior enabled by default.

[1] [https://code.google.com/p/chromium/issues/detail?id=144832](https://code.google.com/p/chromium/issues/detail?id=144832)

</comment></comment><comment><USER44> Of course it had to be Microsoft's fault... they used to have no clue about UX design.

</comment><comment><USER45> other shortcuts:

go back: alt+left arrow go forward: alt+right arrow

</comment><comment> bjourne</comment>


Show HN: List of all (427) startups that got funded last month - <AUTHOR> https://hauniv.com/april/ <comment><USER2> Great value .. But I specially see a lack of startups listed in Asian market apart from India.

</comment><comment><USER3> Super valuable. Is this a one-off or something you hope to do monthly?</comment>


Types Can Be Like Tests - <AUTHOR> https://ahuth.github.io/articles/types-can-be-like-tests.html <comment><USER2> Agda and GHC Haskell have a feature called "typed holes" that can enhance the workflow that you describe in the article. If you're not sure how to finish a definition, you can leave a "hole" in the expression where you are stuck, and the compiler will tell you what type you need to fulfill and list variables that might be helpful. Then, you can "fill" the typed hole with an expression, while possibly creating new holes. Thus, types can guide you as you incrementally build up an implementation.

Types let you to have a "dialogue" with the compiler. Programming in Agda is very much intended to be an interactive experience, via its Emacs mode.

Typed holes in GHC: [https://wiki.haskell.org/GHC/Typed_holes](https://wiki.haskell.org/GHC/Typed_holes)

Agda Emacs mode: [https://agda.readthedocs.io/en/v18.104.22.168/tools/emacs- mode.htm...](https://agda.readthedocs.io/en/v22.214.171.124/tools/emacs-mode.html)

In the article, you compare the usage of types to guide you with test-driven development. There is actually a book called Type-Driven Development about using dependent types in the Idris language, although I have not read it. It is written by Edwin Brady, the creator of Idris. [https://www.manning.com/books/type-driven-development- with-i...](https://www.manning.com/books/type-driven-development-with-idris)

<comment><AUTHOR> The idea of a type hole sounds really nice! Also, I hadn't thought of Idris, but it makes sense that the more advanced a type system, the more they can take over for tests.

<comment><USER2> Have you heard of the Curry-Howard correspondence [0]? This states that a type system is actually a logical system. The types are propositions (logical statements) and their terms (the expressions of that type) are proofs. It's a straightforward syntactic correspondence:

\- A -> B (Function type) and A => B (Logical implication)

\- A * B (Product/Tuple type) and A /\ B (Logical conjunction)

\- A + B (Sum/Tagged union type) and A \/ B (Logical disjunction)

Proving that A implies B is the same thing as writing a function that takes a proof of A and returns a proof of B. Proving the logical conjunction of A and B is the same thing as pairing together a proof of A and a proof of B.

So writing a definition that has a certain type is the same thing as proving a theorem.

Dependent types [1], which Coq, Agda, and Idris have, further the Curry-Howard correspondence. With dependent types, you can mention programs inside types and therefore express theorems about programs. You have:

\- The dependent function type (x : A) -> B(x), where the return type B(x) is a function of the input x.

This is the same thing as universal quantification, "for all x of type A, B(x) holds."

\- The dependent tuple type (x : A) B(x), where the type of the second element is a function of the first element x.

This is the same thing as existential quantification, "there exists an x of type A where B(x) holds."

So with dependent types, you can write mathematical proofs about programs. For example, you can show that a binary operation is commutative. Another good example is the "vector" type [2], which is like the functional-style linked list type, but parameterized over a length. Thus, you can prove that an index out-of-bounds error cannot happen. If you want to learn more about the theory, keywords to search up are "constructive math/proof," "intuitionalistic logic," and "Martin-Lof/intuitionalistic type theory."

[0] [https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspon...](https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence)

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

[2] [https://github.com/idris-lang/Idris- dev/blob/master/libs/bas...](https://github.com/idris-lang/Idris- dev/blob/master/libs/base/Data/Vect.idr)

<comment><AUTHOR> Very interesting, and I'd never heard of Curry-Howard correspondence. I've also always wondered how dependent types worked conceptually (as in, what's going on there, what are we proving, etc).

Thanks for the insights and the links!

</comment></comment></comment></comment><comment><AUTHOR> Author here. I do practice TDD, which is where I think this thought came from. Types aren't exactly like tests, but we can use them for some of the same goals, such as constraining and influencing our implementations.

The example here may also be an example of development by "wishful thinking" (writing our implementations as if we had certain abstractions available), that is talked about in the SICP lectures.</comment>


The Hazards of Nerd Supremacy: The Case of WikiLeaks  - <AUTHOR> http://www.theatlantic.com/technology/archive/2010/12/the-hazards-of-nerd-supremacy-the-case-of-wikileaks/68217/2/ <comment><USER2> "You need to have a private sphere to be a person, or for that matter for anything creative to happen in any domain."

And yet, governments everywhere are encroaching on privacy, while erecting a wall of secrecy around them. This wall has to come down. It's not about privacy in general, nor about openness as a principle, but about a growing power disparity between the government and the individual.</comment>