Steve Wozniak's floating point routines for the 6502 - <AUTHOR> https://tinyletter.com/jamesbowman/letters/i-have-found-an-excellent-programmer-named-steve-wozniac <comment><USER3> Woz was scary good at both hw and sw (author of Apple BASIC.) If you have time, go through his various Apple documents online.

I believe he was never the same after his small plane crashed. (Back then, wealthy people used small planes like ATVs, and had about the same safety record.)

I worked with another hw engineer of similar ability back in the 80s.

Mind-blowing watching him just pick up a pen and draw out a complete board schematic at lunch, then getting the working board back from mfg. the following week and launching it on the Space Shuttle.

<comment><USER4> I wonder why rich people have such a high urge to fly small airplanes. It seems to expose you to a lot of risk, which you could easily avoid (I've lived a considerable number of years without facing a single situation where I was likely to fly an airplane).

<comment><USER5> Airplanes are a great hobby for people who need to get out of the office, love traveling, and need a hobby that has a lot of little detailed things to stay on top of. Flying real IMC to minimums in a small plane is like solving a real-time fluid dynamics/trig problem, where if you fail, you die.

I guess there are people who do it for the danger, but the beauty of it is that you can get really down in the details and master things so it's not that risky. Once you really master the game, your biggest danger is yourself: get- there-itis, sloppy preflights, pushing things a little at a time, getting away with them, then pushing more, and so on.

I have done nothing in my life that I loved as much as flying. Mankind has been staring up into the sky for eons wishing we could fly. Now we can. Who wouldn't want to be part of that?

<comment><USER6> _Once you really master the game, your biggest danger is yourself: get-there- itis, sloppy preflights, pushing things a little at a time, getting away with them, then pushing more, and so on._

Normalization of deviance, for people interested in the literature.

<comment><USER5> This is a big killer, moreso than most pilots realize. The reason it's so deadly is that it turns up in a bunch of crashes where it's not identified. That VFR pilot who was scud-running and ended up in some culmulo granite? He probably did it and got away with it several times before the crash happened.

I don't fly anymore, but when I did? I used to get all the aviation safety magazines and read them cover-to-cover. I also knew some flight instructor instructors; people known for teaching safety in the industry.

A surprising number of well-trained pilots get in perfectly good airplanes and fly them until they run out of gas. Just because you pushed it those last dozen times doesn't mean you're going to get away with it this time.

EDIT: One of the more unusual crashes I will mention since this is HN happened out in the mountain states. A couple of thousand hour+ MEII pilots get into a multi-million dollar brand new jet. It's CAVU -- clear skies, visibility unlimited. They then proceed to fly the plane into the side of a mountain -- all the time trying to figure out the new switches and displays in the cockpit. I still think of that one when designing UX. Aviation is really complex, detailed, fun, and full of math like programming. But it is also a life-and-death endeavor if you take it too lightly. If you're safety paranoid, take up boating. It's much more forgiving than aviation.

<comment><USER7> John Denver ran out of gas while flying over a mountain pass. Exactly at the top - dropped and hit the tip of the peak while fumbling for the fuel switch.

<comment><USER5> Another good one. From what I've heard, he was a good pilot. The switch was mounted in an awkward and non-standard position. (Behind the pilot's seat, I think?)

Aside from the downdraft issue, running out of gas at altitude in VMC can be very interesting, but it doesn't have to be fatal. Even in heavily-forested areas, in a small plane you can put out the barn doors and decrease your horizontal speed quite bit, especially with a headwind.

We had a guy in Virginia in the 90s, I think. He was a student-ish pilot in a 150 that ended up in IMC (fog) in the heavily-wooded mountains while running out of gas.

He slowed the plane down as much he could, somehow kept the wings level, and ended up on somebody's back deck. Walked away. That's not guaranteed, of course, but in general planes are crash-rated based on flying directly into something. It's the failure to maintain control that kills many times more than the crash itself. Heck, they used to have shows where people crashed planes on purpose.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> I don't think many people realize that Woz's dad was an electrical engineer at Lockheed who would bring home computer manuals that Woz would read as a kid.

This seems to be a fairly effective way to create world-changing computer engineers.

<comment><USER9> If you gave computer manuals to kids today, they'd cry and beg for their phones back

<comment><USER10> What's your point? Most kids back then would have cried and begged for their comics back, or for the television to be switched back on.

<comment><USER9> I'm disagreeing with OP's suggestion that giving computer manuals to kids is a "fairly effective way to create world-changing computer engineers."

<comment><USER11> You could give computer manuals, but you have to:

a) praise achievement not intelligence

and

b) Create an interest first. Maybe make it seem like magic or show something that you can do with it.

</comment></comment></comment></comment></comment><comment><USER12> Steve Wozniak is one of the few people of note in the tech industry who, the more I learn about them, seems more and more worthy of my respect. When I hear others speak of their sense of humour, how they stuck by their friends even when those friends clearly took advantage of them, the work and exemplary engineering skill they so clearly poured into their projects, their financial success and, then after having enjoyed that success, their leaving that successful business behind to engage in improving things for the future - <USER2> invest in educating children - I feel a sense of loss. Steve Wozniak just seems like the kind of person one would be lucky to have the opportunity to have as a friend one could learn so much from. It's rare to feel that way about people one doesn't know first hand and, while it does feel like missing out, it's nice to have a prominent example of such a person, a financially successful person, within the tech industry - often a dark place indeed. A reminder that one doesn't have to be soulless in order to succeed in the valley - just skilled and, hopefully, lucky. "So shines a good deed in a weary world."

<comment><USER13> Maybe not in the same category (i.e. electronic design), but the other guy that I admire the hell outof is Adam Savage. The guy is just bloody brilliant at D-I-Y and, like Woz, a down-to-earth-nice-guy. I've had the great pleasure of meeting both men and they dispelled the myth about meeting your heroes.

</comment></comment><comment><USER14> See also his (probably better known) 16-bit VM, Sweet 16. Published in Byte November, 1977:

[https://archive.org/details/byte- magazine-1977-11/page/n147](https://archive.org/details/byte- magazine-1977-11/page/n147)

[http://amigan.1emu.net/kolsen/programming/sweet16.html](http://amigan.1emu.net/kolsen/programming/sweet16.html)

<comment><USER15> Woz says the article you linked in Byte is a followup to the OP. Good find.

</comment></comment><comment><USER16> I jumped into reading this note without looking at the url or author and near the end I was wondering who wrote it -- Then I saw the reference to the SPI driver which was a dead give away for James Bowman. I am continuously impressed with his work in the embedded scene after discovering the gameduino. It feels like even though there are thousands of voices on the web I actually only care about what perhaps 50 people are writing.

<comment><USER17> I have never heard of James Bowman before. I'll look into his writing some more.

Would you mind pointing me to some more of these interesting writers?

</comment></comment><comment><USER18> > _They took the limitations of their computers as a challenge, sat down, and > made these tiny machines do impressive things._

Poets knew from long ago that using pentameter and constraints fosters creativity. Here we see the same principle applied in computing.

<comment><USER19> This is what I love about the C256 project ([https://c256foenix.com/](https://c256foenix.com/)). From an interview with her:

 _By limiting its resources, future developers will have to be clever to find new ways to create amazing things that early on we thought we could never do. Memory is cheap, so I could easily spend the same amount of money on a single chip that could have given me the chance to fill the memory space with RAM. But instead, I am choosing to use many chips with much lower capacity. It's more limiting, but that's the point. "_

<comment><USER20> If you haven't, order a Rev C board and contribute!

[https://c256foenix.com/product/c256-foenix-rev-c-bare- board-...](https://c256foenix.com/product/c256-foenix-rev-c-bare-board-with- floppy/)

</comment></comment></comment><comment><USER21> Floating point can be tricky.

I competed in the first couple years of Sparkfun's autonomous vehicle competition. My robot had a keypad where you could enter GPS coordinates for waypoints. The microcontroller I was using had 32-bit soft floating point routines in its standard library, but I had to code my own string-to-float routine. (I think only float-to-string was provided, but not the inverse.)

Every year, the robot worked in Oklahoma but in Colorado would make a wild turn and head the wrong way. The morning of the last time I competed I realized the problem was in my string to floating point conversion code. I had made a programming assumption which was mathematically incorrect. It happened to work in Oklahoma because the fractional part of the GPS coordinates at home were in a range that didn't trigger the bug.

I also realized it meant the conversion algorithm was more subtle than I had assumed, and there was no way I was going to be able to figure out the correct algorithm in the field, under time pressure. In those years I either didn't yet have a smartphone, or I looked and couldn't find code on the web for my microcontroller.

(And I couldn't just drop in some C code - it was a Parallax Propeller and my robot's code was in the Spin language. Quirks of the chip made it unusually hard to port C to it and so C compilers for the Propeller were still what I would consider "experiemental" \- or were when I started the project.)

The incorrect floating point code had been one of the first things I'd written - it'd been responsible for my robot crashing every year, including that morning. (I'd blamed hardware, upgraded the GPS unit, improved sensors, etc.)

One year later to the day, this was all on my mind again because I couldn't make it to the competition that year, and I had a shower thought. I had had a KNOWN GOOD floating point conversion routine on my hard drive and running inside my microcontroller that whole time!! I was using a Propeller GPS library. GPS data comes in NEMA strings which are... strings! By necessity, there was a private routine in the GPS object which had to be doing the conversion. I went and looked - yes, all I would have had to do was change this private routine to "public" and I could have called it.

</comment><comment><USER22> Having written a lot of 8 bit assembler for the 6800 microprocessor for 2K eproms, I can attest it is a very different skill from writing modern software.

<comment><USER23> Would love to hear more about this - have you written on your experiences?

<comment><USER22> No, and sadly I've lost the code I wrote, I don't know what happened to it.

Anyhow, programming an 8 bit 6800 for an embedded controller means keeping track of 6 or more things going on at the same time, while modern software focuses on one thing at a time and isolating it from everything else.

Those things include the contents of each register, the stack level, the size of the code, interrupts going off, polling that has to be done, counting cycles, etc. Organizing code into functions is a luxury not usually affordable.

It sounds tedious, but it was fun. I attached my own hard disk drive to my LSI-11, meaning I had to build an interface board and write a device driver. To figure out how to write the device driver, I dumped the floppy driver code. It was a marvel of tight engineering. The bootstrap loader was executing code only an instruction or two behind it getting loaded. I was just in awe.

<comment><USER20> If you think about it, it's pretty crazy. Register allocation using graph colouring is an NP-complete problem. Writing assembler by hand, one is doing this constantly in one's head, and often with better results than a compiler would do.

</comment></comment></comment></comment><comment><USER24> I learned to program on a 6502 when I was younger - it's a little depressing that computers went and got so fast that there's no real justification for doing this sort of thing any more in almost any domain (except, I guess, if you manage to land a position developing embedded I2C drivers).

<comment><USER25> Join the ultra-low-power crowd! There are lots of fun things to make while trying to squeeze it in a couple of KB and a few kHz.

</comment></comment><comment><USER26> As a senior Java / CPP developer, reading what Wozniak had written, it might have been some incantation in a forgotten language.

I really wish I had done more embedded and assembly at school. I can't understand it or appreciate it.

Maybe SW and HW shouldn't mix, bar a few visionaries who bridge both worlds?

<comment><USER27> Why should SW and HW not mix?

<comment><USER26> Well, my day to day job is writing applications that will be managed at runtime by a JVM on a Linux distro which is in turn virualised.

I am so far away from the bits...

</comment></comment></comment><comment><USER28> How curious that there's a reference to Jef Raskin on the facing page (p.205). Raskin, of course, was a visionary at Apple who would go on to advocate for a version of Macintosh quite different from what Steve Jobs envisioned (but which later appeared as the Cannon Cat). (a standalone system, but also an Apple ][ expansion card: [https://en.wikipedia.org/wiki/Canon_Cat](https://en.wikipedia.org/wiki/Canon_Cat) )

And yes, Wozniak is one of the great engineers of our time. I cut my teeth on an Apple ][, and it was both amazing and mysterious to me then, as a child. Now, with 40 years of professional programming experience, the mystery is largely gone but my appreciation for the elegance of his design is only amplified.

On the off-chance he'll see this:

Mr. Wozniak, thank you for creating something that has give me a career and a lifetime of joy.

</comment><comment><USER29> The 8051 platform can present even more challenges for assembly language code developers than the 6502. It has been over 35 years since I wrote any 6502 code, and over 30 years since I wrote any 8051 code, but I remember the biggest issue on 8051 was the lack of RAM. You get a total of 384 bytes of RAM (256 bytes of normal RAM and 128 bytes of "zero page" RAM). When I needed to write floating point math functions for the 8051, I realized that fixed point decimal math would meet my requirements. I took advantage of the large ROM space to store a bunch of constants (powers of 10) and the code I wrote operated on decimal ASCII strings. Because of the limited memory, all of my operators would destroy the second argument and replace it with the result.

Code is available upon request.

<comment><USER30> Yeah, Intel is an odd bunch. If I had to program an 8-bit machine again, I think the 6809 is still my favorite.

<comment><USER29> The 6809 was a great 8-bit microprocessor. Any CPU with a SEX instruction is okay in my book.

</comment></comment></comment><comment><USER31> The title says "Wozniac" but it really should be with a final "k", as in "Wozniak".

<comment><USER32> As, curiously, it is spelt everywhere in the article itself _except_ the title.

</comment></comment><comment><USER33> I was always very impressed by the floating point routines in BBC Basic (also on the 6502). Anyone know who wrote those, and if they were derived from this work by Rankin and Wozniak?

BBC Basic is the best all-round Basic of its era that I know of, with rich control flow features, proper recursion and built-in assembler. But I don't know how much was original work from Acorn and how much was borrowed from elsewhere. Are there any other 8-bit Basics that are especially good?

<comment><USER34> Sophie Wilson apparently did most of the BBC Basic implementation, no idea if that also included the floating point routines.

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

</comment></comment><comment><USER35> He was 2nd author on the paper. No doubt, Woz has a well-deserved reputation for brilliance, but I wonder about the 1st author's contributions too. Anyone familiar with Roy Rankin of Stanford?

[https://archive.org/details/dr_dobbs_journal_vol_01/page/n20...](https://archive.org/details/dr_dobbs_journal_vol_01/page/n207)

<comment><USER36> Roy contributed the log/exp routines. The code in the Apple II ROM are missing the log/exp routines and it's copyright just credits Woz.

</comment></comment><comment><USER37> For the two people who might not have seen it yet, here's that fabulous joint interview to Steve Jobs _and_ Bill Gates, where they recount the story of the (missing) floating point routines in Woz's BASIC for the Apple, and how Microsoft came to rescue.

[https://www.youtube.com/watch?v=-LUGU0xprUo#t=14m20s](https://www.youtube.com/watch?v=-LUGU0xprUo#t=14m20s)

The whole interview is fantastic.

</comment><comment><USER38> A thread from 2014: [https://news.ycombinator.com/item?id=7768465](https://news.ycombinator.com/item?id=7768465)

</comment><comment><USER39> He also wrote a nifty article back in '81 about calculating e to 118,000 decimal places.

[https://downloads.reactivemicro.com/Users/Grant_Stockley/App...](https://downloads.reactivemicro.com/Users/Grant_Stockley/Apple%202%20Woz%20e%20Calc%201981.pdf)

</comment><comment><USER40> "They presume a four-byte floating point operand consisting of a one-byte exponent ranging from -218 through +127..." Is this a mistake on the magazine?

</comment><comment><USER41> There are a couple of famous books for reading Steve Jobs' biography. Are there similarly good books to read about Steve Wozniak's biography?

<comment><USER42> His autobiography?: [https://en.wikipedia.org/wiki/IWoz](https://en.wikipedia.org/wiki/IWoz)

<comment><USER43> Kept going until about a quarter of the way in but I just couldn't finish it. It is told very matter of factly — not, I'm afraid, conducive to keeping my interest. YMMV, of course.

</comment></comment></comment><comment><USER44> I need to confess. I am absolutely petrified by floating point. Is there a good resource I can learn it from.

</comment><comment><USER45> Woz ur the man.

</comment><comment><USER12> While I think Woz sets a good example, they're human - and I'm sure they've done and/or said things that are less than one might expect and which one probably wouldn't approve of or condone - or perhaps which one might even condemn. I'd caution against canonising people - it sets too high a standard; which no one real can meet.

<comment><USER46> Perhaps out of place but why are you consistently calling Woz "they"? I'm not a native speaker and it sounds very weird.

<comment><USER12> As I'm not aware of what pronouns they personally prefer, I fall back to using the singular, gender-neutral, "they/them/their". It's a fairly new usage in colloquial English but I find it to be common enough so as to not impair understanding.

<comment><USER47> completely off topic, but is this where we're at now ? Calling someone « they » and thus create confusion, just in case he doesn't belong to the 99.9% of the population who is just fine with his DNA, and eventhough he never expressed any kind of opinion leading you to think he isn't fine with his gender ?

<comment><USER48> There is no implication that "he isn't fine with his gender". The implication is that the speaker doesn't know, and it doesn't matter enough to find out or make a judgement call.

Personally I still use he/she most of the time unless I have a reason not to, but I also try to get into the habit of assuming less, not least because online in particular it is increasingly noticeable how often we assume someone's gender even in situations we have no reason to.

It's not unsurprising that some choose to carry that over into discussing people they don't know the preference of when it doesn't otherwise matter.

One reason to do so may be to explicitly normalise the usage so it doesn't imply a value judgement e.g based on appearance.

<comment><USER47> « One reason to do so may be to explicitly normalise the usage so it doesn't imply a value judgement »

That's some scary sentence here. so gender is now a « judgment ». Like, there's no reason to assume because steve wozniak has all the physical characteristics of a male, and has always been called « mister », using « he » (which is the grammatically correct way of designing a male human in the english language by default) is the expression of a value judgement... Seeing this kind of mental twist in a scientific forum (which believes there is something called nature, with laws and hard facts) makes me really scared.

<comment><USER49> It looks as though you're just looking for an excuse to go on a pre-packaged rant about gender and sex. I find it scary that an innocuous use of singular "they" (which has been in use as long as English as existed) would provoke such a thing.

<comment><USER47> I'm not native english, so it could be possible that i overestimate the change to the english language using "they" as a default pronoun implies.

I'm extremely sensitive to ideology wanting to change a language to better reflect its theory. It's the first step to totalitarism, and it's almost always done with perfectly good intentions (until we start to see the damaging side effects).

<comment><USER49> Singular 'they' has been in use for hundreds of years. See e.g. this article that I linked to elsewhere in the thread: [https://stroppyeditor.wordpress.com/2015/04/21/everything- yo...](https://stroppyeditor.wordpress.com/2015/04/21/everything-you-ever- wanted-to-know-about-singular-they/)

Note that many of the historical examples involve contexts where gender would not even have been in doubt (e.g. all students at Cambridge would have been men).

<comment><USER47> Thanks for link. So am i dreaming when i think using this term is (re)appearing recently following the whole gender neutral pronoun discussions ? Has it already been as common but i just didn't happen to notice it ?

<comment><USER49> I think you're conflating the issue of gender neutrality with more recent discussions of non-binary and trans gender identities. People have always needed gender neutral pronouns to say things like "Everyone has their flaws", or to talk about individuals whose gender is unknown or irrelevant. The only question has been whether it's 'he/him/his' or 'they/them/theirs'. If you speak a dialect of English where 'they' can function as a gender-neutral singular pronoun, then there's really no reason at all not to use that pronoun to refer to Steve Wozniak.

The use of singular 'they' has been common for (at least) several decades, long before any substantial number of people were worried about trans issues.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


Florida Keys Approves Trial of Genetically Modified Mosquitoes to Fight Zika - happy-go-lucky http://www.npr.org/sections/health-shots/2016/11/20/502717253/florida-keys-approves-trial-of-genetically-modified-mosquitoes-to-fight-zika <comment><AUTHOR> We live in the future.

This is amazing and I hope the tests go well so they can introduce genetically modified mosquitoes everywhere.

Mosquitoes add no value to the world, and the sooner we can make them extinct the better we will all be.

You can't measure or quantify suffering, but if you could I'm guessing that mosquitoes would be responsible for the lion share of it across the globe.</comment>


Ask HN: Best blogging platform at the current time? - <AUTHOR>

I don't partake of social networking. Odd since I work in digital marketing but none the less, these are the pale facts.
I wish to start a blog that contains photos and videos of things I like for no particular reason... it will not contain words.
What would be the best platform to post these media on as at the current time?
Thanks, M <comment><USER2> Hard question and I went myself through this process two weeks ago.

At the end I had Wordpress and Tumblr on the shortlist and went for Tumblr finally. At the end it heavily depends on your requirements. If want to self host and are heavily into SEO and customization then rather Wordpress, if you want built-in virality, a huge community and a social network touch then Tumblr is your friend. Both are quite powerful but I liked Tumblr a bit more because it feels/looks fresher and I needed it for a private blog and not for creating tons of traffic. Then I'd go for Wordpress with a custom domain and selfhosted.

<comment><USER3> Another nice feature: WP and Tumblr both have iOS and Android, which can be very handy when it comes to posting photos and videos.

</comment></comment><comment><USER4> For your specific use case, Tumblr is almost certainly the right call. It's a more capable platform than I think people sometimes see, even for long-form text, but "easily sharing photos and videos of things you like for no particular reason" could pretty much be Tumblr's corporate mission statement.

<comment><USER5> +1 for tumblr

</comment></comment><comment><USER6> Ghost ([https://ghost.org/](https://ghost.org/))

<comment><USER7> I really like Ghost too. It's nowhere near as feature-full as other platforns but it's frequently updated with new features.

</comment></comment><comment><USER8> If it is not to contain words, do you really need a blog? It seems as though Facebook and Twitter are quite well suited for sharing photos and videos, among a million other options.

</comment><comment><USER9> Hm, use Tumblr with a domain name and you're all set.

</comment><comment><USER10> Di you know git? Use jekyll

</comment><comment><USER11> Tumblr

</comment><comment><AUTHOR> Oh shit, I think it might know the answer and I think the answer might be Pinterest, how embarrassing - I'm a dude!

<comment><USER12> congratulations on your sexism

<comment><AUTHOR> OK, if it wasn't clear that that was me being facetious then let me make it clear - I was being facetious and poking fun at the fact that people think Pinterest is 'for girls' ...jeez guys.

Incidentally I started my sexist Pinterest board last night, I have enjoyed using the platform thus far - the Chrome P button plugin is super handy.</comment></comment></comment>


Elon Musk is dangerously wrong about the novel coronavirus - <AUTHOR> https://www.theverge.com/2020/4/29/21241180/elon-musk-coronavirus-conspiracy-misinformation-tesla <comment><USER2> It is simply in his financial interest to have everything back to normal as soon as possible...

It does not matter to him if he kills thousands of more people who would have otherwise lived due to over crowded hospitals, by spreading misinformation and convincing people to go back to their normal routines.

<comment><USER3> So people not being able to work and thus have money for food, shelter and medical care won't kill thousands?

Overcrowded hospitals? Hospital staff all over this country are being furloughed and many are approaching bankruptcy.

This is not a black and white situation. If you have only been watching the main stream media realize you are getting an extremely biased view from people who only care about servicing their political goals in the upcoming election - they have demonstrated with their reckless fear mongering they truly don't care who gets hurt as long as it helps with the Orange Man Bad narrative.

Your getting _a story_ , but not necessarily _the story_.</comment></comment>


Ask HN: What are the mystery drones in Colorado up to? - <AUTHOR> Over the past couple weeks many drones have been spotted over the plains of eastern Colorado at dark until about 10 PM. No one knows who they belong to or what they are doing. I am wondering if the HN community has any ideas.<p>More info: https://www.msn.com/en-us/news/us/its-creepy-unexplained-drones-are-swarming-by-night-over-colorado/ar-BBYwMD8 <comment><USER2> Related: [https://news.ycombinator.com/item?id=21876818](https://news.ycombinator.com/item?id=21876818)</comment>


Quirky but (mostly) useful software development rules - <AUTHOR> http://royal.pingdom.com/2009/07/06/quirky-but-mostly-useful-software-development-rules/

<comment><USER2> I can certainly relate to Hofstadter's law. It always takes me twice as long as I predict a software task is going to take and awareness of this flaw in my schedule estimating abilities has not improved my guesses.

</comment><comment><USER3> Are there any counter-examples to Gall's Law?

 _A complex system that works is invariably found to have evolved from a simple system that worked._</comment>


Show HN: Immerica - Find Green-card filing Employers near you - <AUTHOR> http://www.immerica.com

<comment><USER2> Interesting idea, is there any way we can find how many green cards filed by each company</comment>


Slow technology adoption = adoption nonetheless - <AUTHOR> http://www.16thletter.com/2008/05/27/slow-technology-adoption-adoption-nonetheless/

<comment><USER2> Everyone wants to go beyond early adoption to mass adoption. As the recent issues with Twitter are demonstrating, building a service (or site or company) that will scale is a challenge all to itself!</comment>


Hi Garrett, your Uber is en route! Note that your fare will be... - <AUTHOR>

WTF...I didn't order an Uber?!?!?
(Queue follow up email from Uber)
We're Sorry! A quick Clarification on Our Last Email:
Hey Garrett, Sorry about the confusion! No request has been made from your account. We were overly excited about our Memorial Day promotion, and should have put some more thought into that subject line. With this second email, we just want to clarify that everything is OK; a car will only be sent when you request it...
(I think Travis Kalanick is currently firing the head of marketing...)
https://www.dropbox.com/sh/8byop1vypw5mq7m/E1S64spcAF#f:Uber%20Email%201.png
https://www.dropbox.com/sh/8byop1vypw5mq7m/E1S64spcAF#f:Uber%20Email%202.png <comment><USER2> Some "growth hacker" is testing email addresses. Don't reply, that's what they want.

</comment><comment><AUTHOR> Maybe it was a marketing scheme getting people to actually READ the spam that gets sent to them.

<comment><USER3> It could be quite effective if most Email providers use open rates as a quality indicator.

</comment></comment><comment><USER4> Got that too. I had checked my email and saw the first one (that a car is on its way) and freaked out (it could mean someone jacked my account), then saw the "just kidding" email a few lines above.

My entire reply:

        That is not funny.

<comment><USER5> Yeah, I freaked out when I initially saw it and then responded to it as well. Probably the worst possible choice for an email blast title but hey, at least they won't make that mistake ever again.</comment></comment>


Tell HN: The problem with BangWithFriends - it's not anonymous - <AUTHOR>

Facebook Graph search allows you to search everyone who uses this app. Be it your friends, people who aren't your friends, just about anyone.<p>Example criteria:<p>"Single women I am not friends with who use BangWithFriends"<p>"My friends who use BangWithFriends" <comment><USER4> This is an interesting find. I don't necessarily care about "BangWithFriends", but I am curious if you still show up on those searches if you set the privacy to "Only me" when you signup in any app. Does that hide you from searches on the Open Graph (in respect to app usage)?

I ask this because I frequently signup with Facebook on some apps, and purposely put it to "Only me" privacy, to keep my activity hidden from my Facebook friends. I would hope that doing so, would keep me out of those types of Open Graph searches. Can anyone confirm/deny this ( _I don't have Open Graph Search, yet_ )?

<comment><USER5> By changing the app privacy to "Only me" it doesn't appear in Open Graph searches

<comment><AUTHOR> Now the app developers have to see if they can have that as the default privacy setting for anyone who uses the app and this should be truly private info after that.

<comment><USER4> You can set that default. See screenshot from <https://developers.facebook.com/apps/[APP_ID]/permissions>: <http://bluetide.pro/k6sP/2HAHipbX> \- Just change "Default Activity Privacy" to "Only me".

More info: [https://developers.facebook.com/docs/guides/appcenter/#autho...](https://developers.facebook.com/docs/guides/appcenter/#authorization)

</comment></comment></comment></comment><comment><USER6> Ask HN: What is BangWithFriends?

Edit: a Facebook app that where you can click on friends you want to sleep with. If they have the app, they are notified. I would think this would be more cool if both of you are only notified if you both signify that you want to sleep with each other. This could also be toned down to just signify romantic interest to get more engagement.

<comment><USER7> The fatal flaw in the model is "I'm going to click on all my friends to see who signals interest in me".

<comment><USER8> That's not the fatal flaw. The fatal flaw is that all the men in a social circle will click on every friend to see who signals interest. All the women will click on the same one or two individuals. In other words, the fatal flaw is that it will simply replicate the dynamics and frustrations of high school.

<comment><USER9> Yes, it gets tiring servicing so many fine ladies

</comment></comment></comment></comment><comment><USER10> This may also work, and won't require graph search:

[https://www.facebook.com/browse/friends_using_app/?app_id=17...](https://www.facebook.com/browse/friends_using_app/?app_id=178205172320915)

Replace the app_id with the id of any facebook app you want to use.

<comment><USER11> Nice find, it actually works for me too.

</comment></comment><comment><USER12> > "Single women I am not friends with who use BangWithFriends"

If I understand the current user base of BangWithFriends, this will return no results.

<comment><USER13> You are wise beyond your years.

</comment></comment><comment><USER14> Interesting. Here's another problem I just discovered:

"Men who live in Toronto, Ontario and who use BangWithFriends" - <USER2>

"Females who live in Toronto, Ontario and who use BangWithFriends" - <USER3>

<comment><USER15> Well, you have to do some refractory period math, but it's doable. The bigger problem is trying to partition the graph so everyone is willing to sleep with everyone in their partition, and the partitions are evenly sized. I'm willing to bet this is an NP-hard problem.

<comment><USER16> Reminds me of Stable Matching[1] but the groups aren't the same size. I guess if we can relax the "opposite sex" requirement then we reduce the problem to a Stable Roommates Problem[2] ;)

[1] <http://en.wikipedia.org/wiki/Stable_matching> [2] <http://en.wikipedia.org/wiki/Stable_roommates_problem>

</comment></comment></comment><comment><USER17> That's not the real problem with BangWithFriends.

That's just a symptom or side-effect of the real problem.

As the idiom goes, if you lie down with dogs, you will get up with fleas.

<comment><USER18> True, but doesn't this apply to Facebook in general? The graph search functionality wasn't created by BwF. It's been clear since the beginning of Facebook that they are eager to reshare any info you share with them.

</comment></comment><comment><USER19> For people who don't have access to Graph searches yet. Just do a BangWithFriends search in app and you will see something like "xxx, xxx, and xx Other friends are using this app." under the app description. It will return the same list at the Graph search.

</comment><comment><USER20> I don't see the problem here.

You can't find out who wants to bang who, right?

You only can find out that people want to bang. Which is true since the big bang 13.8 billion years ago. (well, humans evolved later, i know)

<comment><USER6> I don't see a problem if you are single and don't care what potential employers think. And sure, if you aren't single then you shouldn't have the app installed in the first place (preempting this argument). But it still makes Facebook more of a landmine for less scrupulous users and they do make up a significant part of the population.

<comment><USER21> Does the Graph API allow you to find all app's being used by a specific person?

This topic keeps coming up. If you can see all app's installed by someone then you might have the point.

If you can't then an employer would need to search for this specific app and find your account. I guess it is possible that some employers may have a blacklist of hundreds of app's but I would have thought it would be more trouble to maintain compared to the value of having it. Especially considering how tomorrow I could launch "BangWithBuddies" and this app would need to be found, flagged as not appropriate for employees and added to a search list.

If an employer is going to this much trouble to scan for what they believe is moral correctness then they probably aren't worth working for.

<comment><USER22> Looks like indeed, you can! Use the graph search for "Apps that _user_ uses", or it looks like you might be able to use this url (might have to have graph search access) <https://www.facebook.com/search/**userid**/apps-used>

</comment></comment></comment></comment><comment><USER23> "My friends who have searched 'My friends who use BangWithFriends'"

</comment><comment><USER24> I have graph search. Tried this, got four results, all male.

So yes, this seems to be true.

</comment><comment><USER25> Those crazy kids with their crazy ideas about how to love each other. Good for them.

I can imagine Version 2.0 being even more general (a craigslist of discreet hypothetical matching) for more than just sexual arrangements. But continuing the sexual theme, obviously the next logical step is N-way group hookups.

It occurs to me that something similar could also be implemented in a distributed manner (for use offline or with decentralized P2P networks, etc...) using asymmetric encryption and split keys.

<comment><USER26> Only on HN would sex involve asymmetric encryption and split keys.

I kid, but I'd wait to see if this 'crazy idea' is successful (top tip: it won't be) before planning the second iteration.

<comment><USER27> > (top tip: it won't be)

You seriously think so? Casual sex has been a major use of Facebook for quite a long time. This particular approach may not catch on, but I guarantee you that some variation of this idea eventually will work.

<comment><USER26> I don't think casual sex has been a major use of Facebook for a while- certainly during it's college-only days that could have been the case, but less so in a more social network aware world.

I think something like BangWithFriends is doomed to fail simply because of the visibility. People can see if you use the app, which would embarrass many. And like almost every single online dating/sexual site out there, the number of men dramatically outnumbers the number of women.

</comment></comment></comment></comment><comment><AUTHOR> This app is interesting however, users are signing up for this with the idea that no one among their friends get to know about it. Unfortunately, facebook enthusiastically shows everyone using various apps.

Not sure if facebook has a privacy setting to prevent others from knowing the apps I use but if they do then the developers of this app should inform this to their users.

If facebook does not have a way for me to hide from my friends the apps I use then IMO, facebook should have this option.

</comment><comment><USER28> And then there's this search, which returns lots of results: [http://f.cl.ly/items/1D3u380L3z3R2E0v101H/Married%20people%2...](http://f.cl.ly/items/1D3u380L3z3R2E0v101H/Married%20people%20who%20use%20BangWithFriends.jpg)

</comment><comment><USER29> No one I'm friends with is using it! That's so disappointing.

</comment><comment><USER30> Great find. I had a similar issue with a dumb app I built a long time ago that was more of a learning experiment / sick joke than anything real.

It was called Rubbed Out and the point was to list all of your friends you had thought about while masterbating.

With bad permissions, or a small sample size, it gets really scary.

</comment><comment><USER31> The problem with BangWithFriends is that there are no females on there that are down to bang. Every person I've ever seen login has a multitude of male friends "using this app" and little to no female friends using it.

This kind of app is completely fucked from the start bc of the gender disparity.

</comment><comment><USER32> I agree, it is not anonymous.

We created a version that is more suitable for Facebook - for people looking for serious relationships instead of casual encounters.

<http://www.PairBuddy.com>

We have got some good support in our beta launch.

</comment><comment><USER33> I have just tried to join <http://www.BangFriends.com> but it says i will receive an email shortly because they are still in BETA mode. Maybe they are adding the default privacy option so people cant monitor you on facebook via Open Graph?

</comment><comment><USER34> This was exactly the same problem when AirTime tried to use the Chat Roulette concept to create an app "to meet new people on your social graph".

Using FB connect killed all the fun in that. You can tell by the disclaimer they're now using on their landing page.

</comment><comment><USER35> I wonder what it would take to implement BangWithFriends with cryptographicly assured privacy.

When I have the chance, I'll break open my crypto book and see if this problem is less impossible to solve than it seems.

</comment><comment><USER36> lol yea thats the only problem with this app..

</comment><comment><USER37> Disgusting.

</comment><comment><USER38> Obviously, the answer is to have everyone sign up for BangWithFriends. Then anonymity is assured.

</comment><comment><USER39> Also, [http://blog.sefsar.com/post/42926069438/bangwithfriends- is-n...](http://blog.sefsar.com/post/42926069438/bangwithfriends-is-not- anonymous-at-all-the-one)</comment>


On 99designs - <AUTHOR> http://www.contrast.ie/blog/on-99designs/

<comment><USER3> Wow this person sounds really bitter.

99designs, Logoworks, etc - they are what they are. No need to get all elitist and snooty about it. Some people aren't looking for the whole package - <USER2> people can't AFFORD the whole package. Why look down on these people? I have yet to use any of these services but I have considered using them. I'm not looking to hire someone who can define a vision for me - I have something in mind already and I'm looking for someone with the ability to make my vision a reality. Maybe it's naive on my part to think I can do a serviceable job on my own but I'd rather put my money elsewhere at the moment.

From what I've seen it looks like a good value for the money.

I know, I know, they're cheapening your craft or something. Get over yourself.

</comment><comment><USER4> I have never used 99designs specifically but I got my site done for right about the same price point.

I have seem some work done on 99designs which, if it is Not Design (TM), then I heartily wish that every project I ever work on will be Not Design (TM) up to that caliber.

One of my favorite examples: a buddy of mine makes Perfect Table Plan, which does seating charts for weddings (among other things). He wanted an illustration of what could happen if you sat two wrong people next to each other, and provided directions similar to "I want a vicious biker dude sitting next to a little old lady."

[http://successfulsoftware.files.wordpress.com/2009/02/99desi...](http://successfulsoftware.files.wordpress.com/2009/02/99designs_winner.png?w=300&h=211)

Look at that and tell me it isn't professional.

</comment><comment><USER5> The title is "On 99designs" and the article contains no swear words.</comment>


Holding a Program in One's Head (2007) - <AUTHOR> http://paulgraham.com/head.html <comment><USER2> It's actually an indictment of our programming tools that they require one to hold so much of the design context in one's head. If they were better (more expressive, easier to interact with) they would help to solve the problems rather than require superhuman feats of endurance.

pg does mention that succinct programming languages help, which is true, but they don't go nearly as far as they could. Like him, I use Lisp for that very reason, but Common Lisp is 30 years old -- why hasn't the state of the art advanced since then? It's really quite shameful.

<comment><USER3> Sounds like you have a number of tangible, palpable, feasible ideas for such super-smarter next-gen programming tools -- care to share?

(Just hoping what you have in mind isn't UML + SOAP + some unintelligable über-abstracted-meta-code-gen...)

<comment><USER4> I have one: natural language programming.

I have some ideas about how it would work, and have looked a little into how it might be implemented and have some seemingly feasible ideas there too. But I'm not an expert in either NLP or programming language development, so what do I know.

A good first step in this direction is the natural programming language for creating interactive fiction, Inform 7. The problem is that it's not general purpose. But you can try reading about it if you think natural language is too ambiguous to ever possibly be a programming language.

I want to write down all my thoughts about this idea, but I thought I'd get some more meat on it before I do that. Also, I haven't mentioned here why I think natural language programming can help, but I'll leave that to your imagination for now.

<comment><USER5> _I have one: natural language programming._

This exists. It's "Write each step of an algorithm in comments before writing any code, and (only when you're finished writing each step in English in comments) fill in the code each comment represents".

But it's impossible to convince anyone to try that, though, even though it gives all the benefits you are imagining NLP would give.

The mentality "Don't repeat yourself under any circumstances, even if it adds no complexity and increases clarity!" is unfortunately why this is undiscovered. Also, people generally go overboard with the "commenting" part -- the purpose is to be pseudocode in the way Python is executable pseudocode, while retaining the ambiguity that is necessary for natural language to be natural. So it gets a bad reputation, and its power is hidden despite it being powerful.

<comment><USER6> The closest experience I've had to this is using RSpec and Capybara to do test-driven development.

Here's an actual snippet of a test I wrote before writing the corresponding code for an app that's now in production:

      describe "adding participants" do
        context "when user has created a new event" do
          before :each do
            visit root_path
            click_link 'Get Started'
            fill_in 'Name', :with => 'Tres'
            fill_in 'E-mail', :with => 'email@example.com'
            click_button 'Next'
          end

          it "should prompt for more participant info" do
            page.should have_field 'Name'
            page.should have_field 'E-mail'
            page.should have_button 'Add Participant'
          end

          it "shouldn't let you enter an invalid e-mail" do
            fill_in 'Name', :with => 'Tres'
            fill_in 'E-mail', :with => '#)(*)($*#)($*'
            click_button 'Add Participant'
            page.should have_content 'invalid'
          end
        end
      end

It's been an absolute joy to work this way. I'd love to see this level of abstraction make its way into the mainstream in other languages and environments.

</comment></comment></comment></comment></comment><comment><USER7> In my experience, this is PG's most helpful/ reassuring technical essay.

Recently I was working on/ creating pretty complex algorithms with gargantuan cobweb of edge cases. Not only did I had to work for 15+ straight hours, but in order to maintain productivity fasted (bar caffeine, few nuts & water) every alternate day to keep the steam going.

Incredible times, and rather close to reaping the fruits now, but there is a pretty good chance that I would not have been here had I not read and internalized this essay- was grappling with several decades of CS research though in much less theoretical setting.

<comment><USER8> i'm not bashing you - i've been there myself. but that same shared experience requires me to ask: dude, how are you going to maintain that?

you need to find a simpler way... if that's how you feel now, a year down the line you're going to hate that code.

<comment><USER9> Long stretches of uninterrupted thought are required to correctly partition the problem, which is a hard problem as the number of possible partitions is roughly exponential to the number of moving parts. Once the problem is optimally partitioned, understanding the solution is a linear effort. Hence, effort required to understand the problem is not indicative of the effort required to understand the solution. Now, for a new person to understand _why_ this partitioning was preferred to all others requires one to go all the way back, and I worry can never actually be replicated, which is why old software projects often stagnate after the original architects depart.

</comment></comment></comment><comment><USER10> Warning: controversy.

The text misses the point in that having to hold a program in one's mind is not required to begin with.

The real problem is complexity. There's just so much going on that it's difficult to remember. And complexity is solved through abstraction - separating the problem out into manageable components. That way the programmer works at a system level, at which components are composed into a solution, or at the component level, where one specific aspect is dealt with.

That minimizes the amount of stuff the programmer needs to hold in his head. If you find yourself oscillating between higher and lower levels of abstraction you should probably be revisiting your architecture.

It's called separation of concerns.

No tool improvement is going to solve that. Neither will a rethink of ways of working.

<comment><USER11> That's begging the question. To come up with the abstractions in the first place requires understanding the whole problem. There's no getting around this.

I can't tell you how many programs I've seen where the wrong abstraction is never perturbed, and as a result all feature development pays a huge cost in reliability and functionality.

To create or change an abstraction, you have to get your mind around all sides of it. That requires A LOT of context. You should always be "revisiting your architecture". It's basically never true that the first architecture works, unless you've written an extremely similar program before. The worst programs result when people are afraid to shift boundaries. That happens a lot in big company development that PG talks about -- each team just accumulates crud on their side of the abstraction boundary, but they never talk to each other so they can globally simplify.

It's true that abstraction reduces complexity, and thus is the only way you can build big programs, but it takes a lot of hard work to get there.

<comment><USER10> The "whole problem" is simply a process. Processes in the real world are composed of 1-* sub-processes, and ultimately distill down into transformations (input -> transformation -> output).

You don't need to understand every low-level process to make a start.

You raise two interesting points though. Yes, revisiting an architecture is required when you've not solved a similar problem before. Consider though that in this community 99.9% of the time others have solved your problem before. You could reinvent the wheel (which is arrogant), or you could do some research to see which architecture has been successful for others.

Sure, that means doing some work before writing code which seems decidedly unpopular these days. It's a free world.

You also say that it's a lot of hard work. Yes. Nothing worth doing is easy.

[Edit] There's a really good book (there always is) that describes complexity and problem solving better than any other I've found. <http://www.amazon.com/dp/0787967653>

<comment><USER12> > Consider though that in this community 99.9% of the time others have solved > your problem before. You could reinvent the wheel (which is arrogant), or > you could do some research to see which architecture has been successful for > others.

The best way to learn something is to come up with it yourself. If you base your architecture on what you read in books or elsewhere, you probably only have a limited understanding of it. And that's especially bad when you're talking about the _architecture_ of a program.

So maybe a better idea in terms of the end result is to first come up with your own solution, implement at least a functioning prototype, and _then_ do some research, to improve upon your idea based on what you have discovered (or throw it away, in the worst case, but of course keep what you've learned doing it).

<comment><USER10> _The best way to learn something is to come up with it yourself._

That's been bugging me, and it's been bugging me because it's not entirely right. It's not entirely wrong either, though.

Given an undirected graph, in which you need to calculate the shortest path between two vertices, would you slog it out or would you just find a shortest path algorithm?

Now move that up a level, from feature implementation to feature design -

If you had to federate identities between two directories, would you hack something together, or would you have a look to see if someone else has done that before? Assuming the latter, you'd probably discover OpenId, OAuth, WS- Federation, and SAML. Would you then use one of these or try to roll something that models their behaviour?

Take that up all the way until you reach the age-old build vs. buy debate, and the connected enterprise and so on. Building something just to understand it is not making much sense to me.

<comment><USER12> > Given an undirected graph, in which you need to calculate the shortest path > between two vertices, would you slog it out or would you just find a > shortest path algorithm?

Probably just find an algorithm. This is because my goal was _not_ to learn about shortest path algorithms, rather it was to find the shortest path. Whichever algorithm I chose and however I implemented it is of minimal concern - if it turns out to be bad, I can probably redo it without significantly affecting any other part of the program. I claim that, if, on the other hand, you wanted to _learn_ about shortest path algorithms, it would be better to first at least try to think of a solution or two, then go for the books.

Speaking of software architecture, given the profound impact a solution will have and how disastrous bad choices can get, it _should_ be your goal to learn about whatever you're dealing with.

</comment></comment></comment></comment></comment></comment><comment><USER13> Holding a large program in your head is like holding a city in your head. You can't entirely do it. What you can do is to know broad outlines and principles, so you can navigate to the relevant points and negotiate difficult parts. When you see the details at the relevant places, then you can deal with them. It's like being a cab driver. You don't memorize every cobblestone and pothole, but you know how to get where you need to go you can deal with them as you're driving.

<comment><USER14> You can visit the neighborhoods often enough that they are quickly familiar when you happen upon them again. That's called a domain expert.

In fact, London cab drivers DO hold the city in their head. They are required to, before they get their license.

<comment><USER13> Yes, I was thinking about what I read about London cabbies. However, they don't necessarily have recall of every pothole and cobblestone. They remember enough of a map so they can get to where they need to be, and deal with what's there on the way.

</comment></comment></comment><comment><USER15> For years now I have been arguing with other programmers on the merits of IDE features such as intellisense. My position has always been that they are completely unnecessary. Autocomplete is useful, sure, since it saves some typing, but that is it's primary goal - to save keystrokes, not to help you remember what a class is capable of doing.

Many programmers appear to get caught up in the small picture way of thinking, where all that they consider important is the code they are currently working on. The fact of the matter is that a piece of software is an ecosystem. Every part of it is directly or indirectly tied to every other part. It is only when we consider the system as a whole that we can create an elegant architecture. This is simply not possible if things are always seen as units and their relationships are an afterthought.

Thank you for this link. I shall be using it to add fuel to any future arguments along these lines.

EDIT:

Clearly, it takes a lot of effort and skill to pull this off. The bottleneck becomes the human. The logical question that follows is 'how do we make the human more efficient and capable of remembering more?'. The answer is diet, nootropics, meditation, exercise and knowledge of techniques (e.g. how to memorise facts rapidly). I won't go into specifics but suffice it to say that most people are undernourished and are mentally impaired because of it.

<comment><USER16> >>>> "The answer is diet, nootropics, meditation, exercise and knowledge of techniques (e.g. how to memorise facts rapidly). I won't go into specifics but suffice it to say that most people are undernourished and are mentally impaired because of it."

Dude, if you have some concrete insights in these areas, you _definitely_ should _go into specifics_. A lot of us would be very interested.

<comment><USER15> My apologies, I thought that it was outside of the context of the conversation.

A surprisingly high percentage of people have nutritional deficiencies. For example, an alarmingly high percentage of people in the US are deficient in Magnesium, an essential nutrient (meaning that your body cannot manufacture it).

[http://en.wikipedia.org/wiki/Magnesium_deficiency_%28medicin...](http://en.wikipedia.org/wiki/Magnesium_deficiency_%28medicine%29)

> 57% of the US population does not meet the US RDA for levels of magnesium

And we're talking about a first-world country here! Magnesium is essential for a healthy stress response, and, as we probably know from experience, many people struggle with the stresses of day to day life. Anybody who regularly consumes alcohol, tobacco or caffeine is likely to be deficient as those drugs rapidly deplete Mg reserves in the body.

That is just one example. Another is Calcium, which 75% of people have deficiency of ([http://www.livestrong.com/article/365193-heart-disease- cause...](http://www.livestrong.com/article/365193-heart-disease-caused-by- calcium-deficiency/)).

The body also becomes less efficient as time goes on. Have you ever wondered by old people tend to be more grumpy than everybody else? Because our serotonin (a neurotransmitter which is implicated in mood and irritability) levels fall as we age - <http://www.pslgroup.com/dg/4098E.htm>

One way to offset the brain's natural decline of neurotransmitters is to supplement with the precursor amino acids which are used to manufacture those neurotransmitters. For example, L-Tryptophan, an essential (again, meaning that you cannot make it) amino acid is rapidly absorbed by the body and is used to make more serotonin (among other things). The difference between protein and straight amino acids is that the latter are ready for use, whereas proteins, which are composed of amino acids, need to be broken down to their constituent parts before the body can use them.

Another age-related neurotransmitter decline - dopamine. A lot of older people have had some success with using D,L-Phenylalanine and L-Tyrosine to boost dopamine levels and reclaim their sex drive.

Healthy acetylcholine levels are also essential for cognition and can be boosted with things containing Choline (eggs are an excellent source).

GABA levels are very important for short term memory and focus. For example, anyone who drinks coffee will have experienced that overexcited state where you have a mountain of motivation but lack proper focus. Taking L-Theanine (Green Tea also contains this), an amino acid which causes increases GABA levels will restore the focus. I never drink coffee without L-Theanine for this reason.

Taking L-Glutamine prior to drinking alcohol will prevent a hangover. It will also stop alcohol and sugar cravings. This is because the body is capable of using L-Glutamine as a source of energy.

But the most important thing is how all of these neurotransmitters interact with each other. Some of them are polar opposites, some modulate the release/inhibition of others. The brain is always striving for balance (homeostasis). All of these neurotransmitters, nutrients and minerals are vectors which pull it in one direction or another. Keeping them in balance is the key to feeling good. Having a model of their interactions makes it considerably easier to debug problems and fix them. This comes with experimenting with your body and gaining an intuitive understanding of what's what. I think that it would be difficult to come up with a generalised approach due to people's baseline levels of each neurotransmitter being different.

Note that even popular multivitamin brands sometimes contain too little of a given nutrient. I recently bought a doctor-recommended one and it barely contains and magnesium or calcium. It pays to educate yourself and not to completely defer your health to someone else. It's your body and it's essentially your problem.

After addressing deficiencies, I found that I felt a lot better and that my rate of recovery from stress, a night of drinking or strenuous physical activity had improved considerably.

Another important factor is removing things which cause harm. E.g. alcohol, in sufficiently high doses (high enough to be drunk), is neurotoxic, meaning that it directly harms the brain. One of the primary mechanisms of alcoholism is that the damage caused by alcohol directly contributes to future alcohol cravings. A lot of people have problems with anxiety - they would be wise to discontinue caffeine intake altogether as it is a major risk factor in anxiety disorders.

Meditation has a host of benefits and structural changes have been observed in the brains of practitioners - [http://www.scientificamerican.com/podcast/episode.cfm?id=med...](http://www.scientificamerican.com/podcast/episode.cfm?id=mediation- correlated-with-structura-11-01-22)

Exercise is absolutely essential and, frankly, should be a first-line treatment for things such as depression.

There are also a few new and interesting nootropic substances such as Piracetam, Aniracetam and Noopept, the last one being the most effective for me personally.

All the wise folk say that the body should be treated like a temple. I completely agree with them since the mind and the body are but one and the same. Treat the body right and the mind will follow. Treat the mind right and you will feel right.

<comment><USER16> Interesting. Where have you learned this information? Are there some books / studies / other sources you can point to? (Not a demand for evidence ... just that I'm curious to look more into this).

<comment><USER15> I've mostly been googling for studies/information which explain things I do not understand. Most of the studies tend to be on Pubmed (www.ncbi.nlm.nih.gov). A lot of references can be found on wikipedia, which is a great resource in itself.

This is paired with playing with neurotransmitter levels using the methods described (and occasionally some less legal ones) and trying to relate feeling to thought. After a while, an intuitive understanding of the terrain that is the body, thought and emotion begins to emerge. Sometimes you feel something new, notice an interaction, make a prediction that neurotransmitter X has relationship Y with neurotransmitter Z, google for studies and are surprised that said relationship has been observed. Intuition is as accurate as the information it's working with - it can sometimes be trusted and other times cannot. I'm a programmer and to me this feels identical to debugging in a messy monolithic legacy codebase. I use the exact same techniques to try to figure my mind out.

I think that it is important to be picky about sources. I do not trust anything which cannot be backed up by a study, though less accurate information can sometimes point you somewhere interesting. I also find it important to tread away from the mainstream with caution, since I'm not an expert in this field. In other words stuff like Reiki is out of the question - it needs to at least be feasible.

</comment></comment></comment></comment></comment><comment><USER17> This is totally misleading, and may make people feel they are not good at programming.

To quote one of the masters of CS:

The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.

        Dijkstra (1972) The Humble Programmer (EWD340)

</comment><comment><USER18> To me, this goes back to the "single page program": all programs should have a top level that can be expressed as a single page of executable code and comprehensibly captures the essence of the program.

If our programming language(s) don't allow for this, see what's wrong and fix it. Lather, rinse, repeat.

</comment><comment><USER19> _So if you need to write a big, complex program, the best way to begin may not be to write a spec for it, but to write a prototype that solves a subset of the problem._

This is so true for me. And not just for big complex programs but also for anything not completely trivial.

The one (applicable to me) part of the joel test (<http://www.joelonsoftware.com/articles/fog0000000043.html>) that I never made any progress on was having a spec. I just couldn't do it whether through laziness, inability to concentrate or whatever. Actually it's been a bit of a guilty secret of mine.

Generally there'll be some part of the program that I'll be able to solve right away and while I'm doing that I'll be having ideas about how to do something else. Later it might become obvious that a certain part would have been better done another way and if there's a serious benefit to changing things I can do it at that stage.

It's only after a lot of work's already been done that I'd be able to produce some kind of spec for the program

Having a spec that lays everything out beforehand is to me analagous to a mathematician writing the final proof of a theorem before doing all the thinking.

</comment><comment><USER20> You should _never need to hold the entire program in your head_! (except when you actually begin coding it - for this early stage of development I agree with PG). Needing to hold a whole mature program in your head every time you work on it is a code smell that tells you your solution ended up in the shape of the most popular software architecture of all time: the "big ball of mud" (<http://www.laputan.org/mud/>). Now it's obvious why having a big working memory makes you a great programmer - everything usually starts as a BBOM or ends up as one, but the point is to fight this tendency...

Once a program grows, you should architecture it so that you only need to keep the piece that you're working on in your head, ie it should be a network of black-boxes and you should only need to open the one you're currently working at, and even when you do things like large scale refactoring, you should be able to selectively and partially open only some of the boxes to do your job - and this is what programming languages and patterns should help you do!

<comment><USER21> To avoid "memory overload", I have taken to literally ignoring parts of the system which I currently don't need. I.e., I don't even look at other classes' code before I don't need them. Else, I would have to spend 3 days of understanding it all. That's for very big programs, and of course I do look at the overall structure and what patterns have been used to couple classes together. But if a method promises something with a contract, I won't read through it, but treat it as a black box. My theory is that cognitive power is like money spent during the day. I can recharge it after a few hours by taking a nap of 20 minutes, but I better watch what I expend my cognitive credits for. And spending it all on reading other people's code (which has probably already been revised 10 times) is not worth it.

<comment><USER20> ...this is what we all try to do I guess. You said "I don't even look at other classes' code" but I always find it much easier to not look at a function's code or at the code of a method of an immutable object or a "predicatively mutable" objects than for classes of highly mutable objects.

...that's why I'm currently investigating functional programming as way to make it easier to hold larger parts of programs in your head.

</comment></comment></comment><comment><USER22> I agree with the power of holding a program in one's head, but I also consider this a (the?) serious bottleneck in the software engineering.

I hope we discover a scalable alternative to holding a program in one's head. It doesn't need to be as good as holding a program in one's head, it just needs to approximate it.

(Edit: see also Design Beyond Human Abilities by Richard P. Gabriel.)

<comment><USER23> I would argue TDD is a workaround which allows you to do meaningful work in a team context without holding a complete program in one's head.

It gets everyone to put their thoughts about what the program _should_ do in one place. Every time you run the test suite, you are outsourcing to the test suite the task of running through your mental model of the program and thinking "what did I break".

The limitation of TDD is that it blocks rapid iteration in what the program _should_ do. When you load the entire model of the program into your head, requirements change at the speed of thought. With TDD, they change at the speed of a lot of reading and typing.

<comment><USER16> >>> "The limitation of TDD is that it blocks rapid iteration in what the program should do. When you load the entire model of the program into your head, requirements change at the speed of thought. With TDD, they change at the speed of a lot of reading and typing."

I agree 1000% percent with that. You articulated very well what I see as the single biggest drawback of TDD.

It's as if you're still working with clay, but you put metal around it every 2 seconds, so you lose the benefit of working with clay.

</comment></comment></comment><comment><USER24> This is very similar to how a lot of writers that do split point-of-view write their stories. "Load" all the information needed for a particular point-of- view, write all of theirs chapters, unload, and repeat.

</comment><comment><USER25> Rings true...

I definitely work best in 4-10 hour focused sessions, can easily do a weeks worth of work in one go. I can't always make those sessions happen though. Coding block? I guess I should write. [1] :)

Around the time this was written, I was working somewhere you had to break all the rules to get anything accomplished. The un-sanctioned stuff was of much higher quality and function.

[1] [http://tommy.authpad.com/understanding-and-combatting- coder-...](http://tommy.authpad.com/understanding-and-combatting-coder-s- block)

</comment><comment><USER26> Peter Naur wrote on this subject in 85 and came to much the same conclusions.

Here is the paper for anyone interested [http://www.google.dk/url?sa=t&source=web&cd=1&ve...](http://www.google.dk/url?sa=t&source=web&cd=1&ved=0CCoQFjAA&url=http%3A%2F%2Fwww.itu.dk%2Fcourses%2FSASU%2FF2010%2Ffiles%2FNaur%2520from%2520Cockburn.pdf&ei=cEjDUJbyFsPj4QS4kYH4Ag&usg=AFQjCNGsZkpSqx_WTO7E-lm_bGSiv-L5Gg&sig2=bdpslbjKCzqdiIVEF262kA)

</comment><comment><USER27> I find it interesting to read this again after a few years only to realize that Paul is in direct contradiction of those who would have us take a break every 25 minutes with his second point. It's kinda refreshing to hear this point of view again. I worked 5 solid hours last night, starting that particular stretch around 7pm and got around 3-4 normal work days worth of work done.

<comment><USER28> Yesterday a friend explained the physiological reasons behind 25 minute breaks: basically the muscles (including eye muscles) go into a different state of relaxed-tension and its generally not good for them to be in that state while the body is sitting-looking.

There's also the issue of the effort required to concentrate on a task, which gives diminishing returns as you extend it beyond ~25 minutes without break.

However a mental flow state (what you seem to describe) requires little to no concentration effort and so can yield great returns over the time spent. The tradeoff is that the body is in a less-than-desirable muscular situation for a prolonged time - but I'm guessing the damage there is not so significant if 8 hour flow sessions are not a daily habit.

tl;dr: the 25 minute break thing is probably a good general guide, but shouldn't stop you pulling an 8 hour session if you are absorbed and productive

</comment></comment><comment><USER20> > Maybe we could define a new kind of organization that combined the efforts > of individuals without requiring them to be interchangeable.

...reread the whole thing and this thing got my imagination "high" ...I feel there's some deep wisdom in here ...maybe we do thing wrong in most of our organizations by requiring complex components like people to be interchangeable, instead of accepting the fact that they are not and that the "personality" of an organization should be allowed to radically change as people (or bigger "unique" subsystems) become part of it or leave it... maybe we could even end up with what Nassim Taleb calls "antifragile" organizations...

<comment><USER29> It's not just the "personality", though. It's also the idea that if your sysadmin gets hit by a bus, your site doesn't become unusable.

<comment><USER20> yep, the compromise is probably to separate _maintenance_ from _creative_ tasks, and accept that maintenance tasks need replaceable components, but then again, maybe it's ok to accept things like having a certain software component written by a "lone wolf eccentric genius" in a dialect of lisp he alone can understand (replace with your fav equivalent phrase) as the price for having really unique features and performance for that component that no competitor can match, and make contingencies for the risk of having to throw away that codebase and rewrite from scratch if he gets hit by a bus... maybe if the APIs and interfaces are properly designed (or processes or however else you may call then in peopleware land), you can accept working with unique and not easily replaceable components and somehow design systems that are architected to embrace the "hit by a bus" type of risks

...and if I think further along these line, the organization that can best afford these types of risks are big software corporations (think Google, Microsoft) that could afford to scrap entire codebases and projects (if they ever got over the "mind brakes" that make the managers consider such things insane), or start things in completely new directions when they bring new "genius visionaries" ...these types of innovation based on risky and irreplaceable components/people would be prohibitively expensive or impossible for start-ups, but may bring us new breakthroughs in things like general purpose AI or god know what

...maybe true progress really is the work of unique individuals and our whole focus on "team work" and "replaceable peopleware" is what suffocates and kills innovation

</comment></comment></comment><comment><USER30> Rich Hickey made some very similar points in his Strange Loop presentation "Simple Made Easy" <http://www.infoq.com/presentations/Simple-Made-Easy>

</comment><comment><USER31> I'm not so sure about the "don't touch other people's code, and don't allow them to touch yours" bit. What if someone gets hit by a truck? Or leaves the company? Or _shrug_ makes a promotion? I've been pretty comfortable about the "collective code ownership" approach, within small enough teams, in the last 4 years. You can talk issues over with a colleague and he knows what you're on about, code reviews become effective, and getting something important changed does not mean you have to wait for the 'owner' to have time for it. What's wrong with that?

<comment><USER32> Exactly what I thought - I only 'own' the code if it's a topic branch, once my peers reviewed it, they should know it as much as I do.

</comment></comment><comment><USER33> Not sure about working for long uninterrupted sessions(I tend to believe that short, self-scheduled breaks increase my productivity, as per the pomodoro technique), but I think the notion of loading a 'context' into your memory is spot-on. I know that, at least for me, it is difficult to even begin working on a problem unless I have that initial context in my head; without a full understanding of the problem at hand, I feel like I can't do anything well.

</comment><comment><USER34> Perhaps the key to a productive software industry is - paradoxically - to de- industrialize. Model the organization and communications patterns on a guild of independent workshops, each workshop comprising one artisan developer with one or two apprentice developers, with each workshop supplying hyper- specialized services based around a library of existing, re-deployable functionality.

</comment><comment><USER35> Are there any applications (mobile, web or whatever) whose sole purpose is to help a programmer capture the program that is in his/her head?

The first thing that comes to mind is UML based applications like Rational Rose. But those seem to have such high barriers of entry and are more geared towards communicating the program to other developers or different stakeholders.

</comment><comment><USER36> One good test for this is if you can explain in abstract terms, and preferably to a non programmer, how the program works.

</comment><comment><USER37> I just came across this article in a HN post last week that was discussing a similar theme. I think it does a great job explaining the challenges of beings programmer...

<http://alexthunder.livejournal.com/309815.html>

<comment><USER38> This is a fantastic summary, and I thank you for sharing.

</comment></comment><comment><USER39> I wonder what the most complex system is, to date, that has been made and that can all fit in one head.

A recent example, though not a program, is Mochizuki's proposed proof of the ABC conjecture. I wonder what program would be comparable to that in complexity.

</comment><comment><USER40> I do it. I build mockups in my mind, run through clicks and interactions and finally the code flows.

</comment><comment><USER41> Wow, this is particularly true when you're not rapid prototyping. An aha moment happens when one is able to reverse think a complete chain of events leading up to a catastrophic failure because you saw a tiny UI/UX bug on the surface.

Paul has written such splendid pieces that should resurface from time to time. This thread has happened [1] to YC community before.

[1] <http://news.ycombinator.com/item?id=2988835>

</comment><comment><USER42> _work in long stretches_

Nope, that idiotic open offices isn't conducive for that.</comment>


A Severed Head, Two Cops, and the Radical Future of Interrogation - <AUTHOR> http://www.wired.com/2016/05/how-to-interrogate-suspects/ <comment><USER2> Sounds like an episode of 24. Where's Jack Bauer when you need him?</comment>


It is less expensive to do it inefficiently - <AUTHOR> http://ayende.com/Blog/archive/2010/02/02/it-is-less-expensive-to-do-it-inefficiently.aspx?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+AyendeRahien+%28Ayende+%40+Rahien%29 <comment><USER2> I want to echo the "linear inefficiency, lol" meme.

But more importantly, the costs of inefficiency aren't clock cycles, it's the opportunity cost.

It depends on the situation, obviously, but inefficiencies can have a very real cost in terms of lost sales or customer dissatisfaction. The ROI will vary on a multitude of variables, but that's my point: these graphs simply don't reveal the complexity of costing models that really come in to play.

</comment><comment><USER3> Isn't this just a corollary of the "premature optimization is the root of all evil" quote?

</comment><comment><USER4> _It takes over 800 days for the more efficient solution to gain over the less efficient one. Think about this, 800 days in which the less efficient solution is less expensive. That is two years and two months.

Let us plug in more realistic numbers for the cost of labor, shall we? Let us say that the labor cost is 80$ per hour (which is still cheap). At that point, it would take close to 5 years._

This piece makes some excellent points that any start up needs to stop and take a minute to ponder.

<comment><USER5> I think he is assuming way too many things to be constant, and then using that to justify his thesis of addressing efficiency concerns only just-in-time.

The biggest concern I have is that he account nowhere for _growth_ of that new feature, and the increasing hosting costs as a result of that growth. Part of efficiency is how fast is it now; the other half of efficiency is how will the performance _change_ based upon an increased load.

Part of the risk of putting out a new feature is you don't entirely know what the uptake will be. It could fall flat, it could grow exponentially within the first week. Or, as this author assumes, it could enjoy a rapid uptake of a certain amount, and then level off just as quickly. I'd argue this last possibility is almost never the observed pattern.

The other part of the risk is that, if you go the inefficient route, you may not have the time later on to even build bad hacks within the inefficient code to make it speedier. This is a bad situation to be in, you end up getting screwed by your own unexpected success, and users get pissed because now your site is unreliable.

Yes, spending insane amounts of time on efficiencies probably aren't worth it. Yes, you need to do cost-benefit analysis to decide what amount of time is. My point is that there is a lot more to consider than the author gives credit for, and I don't think you are as likely as he believes to reach the same conclusion he did. Cash flow is important, but it is also important to remember that things don't remain flat or grow linearly just because you assert that they do.

<comment><USER6> There are many choices like this - put time in now to save time later.

Recently I decided to take the time to make our system configuration for a new user really easy (I was doing it by hand in a slow way before) because I know that once we have many users I won't have the time to fix the admin interface around the time demands of doing it by hand.

There are lots of decisions where you don't know up front the cost of an inefficient solution - perhaps the feature is underused and it doesn't matter - you've wasted time making it fast. Perhaps you become a success overnight because of the feature but now your server is fried. It is a tough call - either way, you should spend some time thinking about how you would throw more hardware at the problem should it arise.

Gridspy is still pretty tiny load wise, but I have put a lot of thought into scaling plans, keeping my options open.

</comment></comment></comment><comment><USER7> Growth in the modern age is rarely linear. The real risk in creating an "inefficient" solution is when you've done so at the cost of extensive technical debt not just mere inefficiencies, and this technical debt blocks your ability not only to switch to an efficient solution but to stretch your inefficient solution just enough to keep your business running during periods of growth. Failing to take advantage of an order of magnitude (or more) growth opportunity can leave your company at a competitive disadvantage or even kill it outright.

So build an inefficient system if you think it's a better solution in the short-term. But be careful that you know the difference between mere inefficiency and a horrible, grotty, dailywtf level hack-job that may seriously limit your company's future.

<comment><USER8> I agree with what you're getting at, but let's not equate inefficiency with a rush job.

<comment><USER7> That's my point. I think most developers appreciate the long-standing disease in this industry to wishfully imagine that a hacky rush job is no different than appropriate engineering that is merely inefficient compared to a solution that isn't currently necessary.

It's the difference between choosing not to use a steel beam for support and using a wooden beam on the one hand or using a step ladder sitting on top of a stack of half a dozen phone books. One is still sound engineering, but not suitable for higher loads in the future, the other is just a mistake waiting to come back to bite you in the future and isn't even suitable for the task at hand.

</comment></comment></comment><comment><USER9> "n is usually small"

<http://en.wikipedia.org/wiki/Unix_philosophy></comment>


Amsterdam taxi drivers plan an attack on Uber HQ - <AUTHOR> https://nltimes.nl/2018/03/05/dutch-taxi-drivers-planning-attack-uber-report <comment><USER2> The taxi sector in Amsterdam is very much like the mafia, so this isn't really surprising. Taxi drivers in Amsterdam are known for intimidating competitors and extorting tourists. See for instance: [http://www.at5.nl/artikelen/155696/taximaffia](http://www.at5.nl/artikelen/155696/taximaffia)</comment>


The Customer Is Not Always Right - Mint Blog - <AUTHOR> http://www.mint.com/blog/trends/customer-is-not-always-right-02032011/

<comment><USER2> The company isn't, either. I've been waiting for Mint to kick me off their site for ages, yet all I get are emails with a subject line of "ACTION REQUIRED" asking me to log in once in a while or update my bank info. I have not logged into Mint for at least a year but this has been going on for at least four months, so I'm thinking it's not actually required.

You may not think this is such a big deal in the grand scheme of things, and you'd be right, but when the company posts blogs like this and plays a "Garsh, we're just a little old banksite" card, I get the feeling they want to be trusted and taken at face value. However, my experience is that they're just using a basic customer retention act and that it has nothing to do with reality, just like their "ACTION REQUIRED" emails.</comment>


Facebook Asked to Stop Libra Implementation by US House of Representatives - <AUTHOR> https://www.iafrikan.com/2019/07/05/facebook-libra-currency-usa/ <comment><USER2> Not exactly an "order":

> "We write to request that Facebook and its partners immediately agree to a > moratorium ..."

That said, it's very telling that Libra isn't even released, and Bitcoin has been around for ten years, yet the lawmakers have never said this about Bitcoin:

> "It appears that those products may lend themselves to an entirely new > global financial system ... intended to rival US monetary policy and the > dollar"

<comment><USER3> "Ordered" makes for a more dramatic headline. Add the usual misunderstandings about the mechanisms of the legal system and it all looks the same to a lot of folks.

</comment></comment><comment><USER4> "These risks are even more glaring in light of Facebook's troubled past, where it did not always keep its users' information safe. For example, Cambridge Analytica..."

ouch!

<comment><AUTHOR> It stings and it is a valid concern.

</comment></comment><comment><USER5> Maybe the House of Representatives will have their attention drawn to crypto-"currencies" next because of this.

<comment><USER2> Libra may be cryptocurrencies' Pearl Harbor moment.

"I fear all we have done is to awaken a sleeping giant and fill him with a terrible resolve"

(yes, I know the veracity of the quote is questionable)</comment></comment>


Ask HN: Which are the most secure domain registrars, in your opinion? - <AUTHOR> Sounds like CloudFlare might be a good bet, considering this: https://blog.cloudflare.com/introducing-cloudflare-registrar/ <comment><USER2> Secure? That's broad. One tip: If you're an activist and scared of censorship better avoid any .tld related to verisign.</comment>


Show HN: Gowalli – A customer service agency for every developer - <AUTHOR> https://www.gowalli.com/

<comment><AUTHOR> Hey HN,

Developer here. I would certainly appreciate any and all feedback. As a consistent over-developer, I am trying a more minimal MVP approach to see if there is interest in where we're going from developers. We have seen significant interest from client service people.

When you sign up, there is a link to a 3-question survey which will help me determine where to go and what to build. Even if you don't sign up, I'd love to get the feedback and the form is available here:

[https://docs.google.com/forms/d/1PREar3pMWkPWK9nOT4UzVmD4vqA...](https://docs.google.com/forms/d/1PREar3pMWkPWK9nOT4UzVmD4vqAuV2mv6s5uXosy1Pw/viewform)</comment>


Ask HN: Recommend a dedicated server provider that doesn't mind port scanning - <AUTHOR> Hey HN,
As part of a research project I conduct internet-wide IPv4 scans (usually ports 80, 443 and ICMP). I also do DNS lookups across all .com/.net domains and reverse DNS lookups across all active IPv4s.
I'm building a daily timeseries for all of this, and I publish most of the raw data online, for example: https://mirrors.sorengard.com/zmap_scans (not a commercial link or service). It comes out to about 200GB/day. I also keep PTR records mapping each of my scanning IP addresses to a host that explains it's non-targeted research, it doesn't look for specific vulnerabilities or exploit them, etc.
Unfortunately after a couple of months of doing this my current hosting provider has asked me to stop the scans or leave the service. They're nice about it, they're just rebranding and no longer want to allow port scanning. So now I'm looking for (preferably dedicated) server providers that don't mind public scanning activity as long as it's non-threatening.
Thanks! <comment><USER2> [https://bestwest.host/](https://bestwest.host/) email@example.com has been acceptable. $220 a month, pushes over 1Mpps for weeks at a time. You should probably contact them over jabber if you want a scanning server.

Occasional downtimes, but not terrible for scan servers.

There are much better options available if you can bring your own IPs.

<comment><AUTHOR> Thanks for the suggestion. That might be especially useful if I decide to diversify regions too.

 _> There are much better options available if you can bring your own IPs._

Like what?

<comment><USER2> Like, almost anywhere. If you have your own IPs abuse emails will not reach your host, and your host most likely won't care at all. There are some places which are more vigilant, but that's far from the norm.

[https://www.nforce.com/](https://www.nforce.com/) is a popular destination.

edit: The jabber address I posted earlier was completely wrong, correct one is "firstname.lastname@example.com"

</comment></comment></comment><comment><USER3> Tip: buy some proxies and traceroute the IP addresses you get to find the rdns names of the providers who don't mind stuff like that.

</comment><comment><AUTHOR> I forgot these links: DNS and rDNS lookups on [https://mirrors.sorengard.com/dns_lookups](https://mirrors.sorengard.com/dns_lookups) and [https://mirrors.sorengard.com/rdns_lookups](https://mirrors.sorengard.com/rdns_lookups) respectively.

</comment><comment><USER4> does amazon, heroku, or google not allow this?

<comment><AUTHOR> Nope. It's stated in their acceptable use policies.</comment></comment>


Cloud-based service for video upload, real-time manipulation, optimized viewing - <AUTHOR> http://cloudinary.com/blog/introducing_cloud_based_service_for_video_upload_real_time_manipulation_and_optimized_viewing

<comment><AUTHOR> How to upload video clips to the cloud directly from the browser, server code or mobile apps, perform on-the-fly transcoding, manipulation and web optimization using CDN streaming delivery URLs. This cloud-based video management solution joins Cloudinary's image management service. Sample SDK integration code included for Ruby on Rails, PHP, jQuery, Node.js, .Net and other frameworks.</comment>


On therapy and intrusive thoughts - <AUTHOR> http://steveworsley.com/on/therapy <comment><USER2> > It's taken me a few weeks to write this post. Not that I was really afraid > of putting myself out there, but that I needed to write it in such a way > that it wouldn't scare people or make them worried.

This really is a major part, if not the biggest part, of the stigma associated with therapy now. It's hard to get mental help without it being a Big Deal. Which is stupid because everyone should go to therapy.

Therapy is great. It's like strength training for the mind. You don't have to have some kind of specific reason to go, you don't need to talk about that remark your parents made when you were 11, you don't need to be crazy. It just gives you a toolkit for understanding and dealing with every day emotions. It is expensive, but if you are an engineer you likely have a medical plan that covers some kind of mental health. Do yourself a favor and check, seriously the best decision I've ever made was going to therapy.

<comment><USER3> Would you mind elaborating a bit? I've heard the same sentiments as yours, but without any more elaboration.

What kind of tools does it provide you, for example?

<comment><USER4> I did therapy for around a year. Six moths with a Ph.D and another six months with a MFCC. The PH.D was charging a lot, but I really thought she would help me. I had a horrid case of anxiety, and panic attacks that came on during a holiday, and would go away.

I believed in Therapy, and really wanted it to work. It didn't work in the slightest. It actually made things worse. I didn't learn any fancy tools. I didn't find any out anything about myself, that I didn't already know.

I will say this though, if I didn't go through therapy; I would always wonder if I could have changed my destiny. In my case, I needed medication.

I found no difference between the PhD, and the MFCC. I did talk to a psychiatrist about my unsuccess in therapy, he said I didn't do it long enough. I will never know if he was right?

Because I was feeling so bad, for so long, and those Therapy sessions were expensive, I was completely honest in therapy. I devulged my innermost secrets, thoughts, warts, everything. In my case, it just didn't help my condition.

Drugs, time, and exercise helped my condition. I'm still not the person I used to be before the breakdown though. (I was told not to use word breakdown, but my brain just decided to breakdown. If I said anything different, I would be lying.)

I don't want to discourage anyone from seeking the help of a Therapist, but if you are a well adjusted individual, happy, going to school, or working, and don't have any real complaints, but one day your brain decides to bust a gasket--I would try to see a Psychiatrist. But even then a lot of them want you to go through therapy before they medicate you.

And if you decide to go through the medication route, realize you might be on the drugs a long time? Especially the benzodiazepines. I'm not sure if what I know now about addiction, I would have ever used them, but then again they are better than self medicating with booze?

It's a shame we still know so little about mental illness, or even how the brain works. I really thought we would have made huge strides in treating the mentally ill by now, but they haven't.

</comment></comment></comment><comment><USER5> Unfortunately it's not displaying for me in Firefox, even when i whitelist the domain in NoScript, and allow ajax.google.com as a cross-site destination.

EDIT: Here's the article text on Pastebin: [http://pastebin.com/apMGGHQs](http://pastebin.com/apMGGHQs)

<comment><USER6> The problem is from "body * { opacity: 0; }" in:

[http://steveworsley.com/assets/css/styles.css](http://steveworsley.com/assets/css/styles.css)

(It didn't display in Chromium without JS either; right click "inspect element" on the middle of the page, turn off opacity: 0)

<comment><AUTHOR> Thanks for spotting that! I'll sort it out.</comment></comment></comment>


Outsourcing login and over-reliance on Facebook - <AUTHOR> http://foundontheweb.posterous.com/outsourcing-login-and-over-reliance-of-facebo

<comment><USER2> This is exactly my point in this thread: <http://news.ycombinator.com/item?id=2295834>

There is no way I will sign up for an account on FB for content/to comment on content from other third party systems that are too stupid to have a site that is not sucking from the teat of FB to such a degree that they dont know how to allow either anon or registered commenting.</comment>