Speed improvements in Python 3.7 - <AUTHOR> https://hackernoon.com/5-speed-improvements-in-python-3-7-1b39d1581d86 <comment><USER2> Since one of the mentioned improvements is performance of the builtin regular expression library... for anyone curious, there's a drop-in replacement, re2, that leverages a Google library to provide linear time guarantees for arbitrarily complex or user-provided regexes. (You lose lookahead assertions, but most use cases for them can just be handled in pre- or post-processing.) It's an incredibly handy tool that lets us confidently use complex regexes in production.

[https://pypi.python.org/pypi/re2/](https://pypi.python.org/pypi/re2/)

[https://github.com/google/re2/wiki/WhyRE2](https://github.com/google/re2/wiki/WhyRE2)

> RE2 was designed and implemented with an explicit goal of being able to > handle regular expressions from untrusted users without risk. One of its > primary guarantees is that the match time is linear in the length of the > input string. It was also written with production concerns in mind: the > parser, the compiler and the execution engines limit their memory usage by > working within a configurable budget – failing gracefully when exhausted – > and they avoid stack overflow by eschewing recursion.

Really interesting articles in the second link detailing how this works!

<comment><USER3> Great observation, but re2 does have tradeoffs to gain that performance. Backreferences, for example: [https://github.com/google/re2/issues/101](https://github.com/google/re2/issues/101)

<comment><USER2> Absolutely. But for most common uses of backreferences, this is largely mitigated by having a post-regex step that compares capturing groups for equality, which induces overhead also linear in the length of the string. Of course this falls short of true backreference support, but for tasks where we do not expect potential matches to overlap, it gets the job done.

<comment><USER3> Sure. I just object to the _" drop-in replacement"_ notion. Bad idea or not, many people have existing code dependant on backreferences.

</comment></comment></comment></comment><comment><USER4> Python is the best (as in most productive and happy) language for me bar none.

It feels great to know that speed, the only major drawback, is being seriously improved in each release. Here's to the future!

<comment><USER5> If your looking for a nice gui framework for python, check out my pyNuklear!

[https://github.com/billsix/pyNuklear](https://github.com/billsix/pyNuklear)

</comment></comment><comment><USER6> For the new 3.7 there's also gc.freeze ([https://bugs.python.org/issue31558](https://bugs.python.org/issue31558)) which will be great for many web projects.

<comment><AUTHOR> [https://docs.python.org/3.7/library/gc.html#gc.freeze](https://docs.python.org/3.7/library/gc.html#gc.freeze)

Documentation link for anyone that is interested

<comment><USER7> > Also collection before a POSIX fork() call may free pages for future > allocation which can cause copy-on-write too so it's advised to disable gc > in master process and freeze before fork and enable gc in child process.

I guess it would be nice to know if optimizations like this are already covered in the high-level libraries like `multiprocessing`.

<comment><USER6> They aren't / shouldn't be. This is something you need to opt into specifically because it changes behaviour. For example if you have done resource still open, calling gc.freeze will prevent it from ever cleaning up.

But web frameworks should implement it.

</comment></comment></comment></comment><comment><USER8> did they further improve backwards compatibility?

Neither trolling nor beating dead horses:

I recently wanted to do some screen capture and needed tkinter, which of course has different imports for py2 and py3. adding library aliases would help. I honestly wished people would use transitional deprecation warnings more often to educate about changed apis.

As long as 50% of tensorflow projects are still in Python 2 it is always a pain to encounter Python 3.

``` try: from urllib2 import urlopen from urllib import urlretrieve except ImportError: from urllib.request import urlopen, urlretrieve ```

<comment><USER9> Is 15 years to prepare still not long enough to migrate your code incrementally? You can get Py2 into a nearly-ready-for-Py3 state with just a little effort stretched over whatever horizon you desire. Beating a dead horse doesn't do anything about your stagnant code base.

<comment><USER10> No, because they did a bunch of things that make automated porting not work well and provides a ton of developer friction.

I'm willing to live with Python's space related insanity. Mandating that indenting is meaningful. Mandating a best practice of using spaces instead of tabs for indent* (which makes tab width matter). Mandating that a tab equals 4 spaces instead of 8. (Honestly, I REALLY hate this, most of the Windows developers are happy with the space usage koolaid, let us have a default of tab equals 8 spaces of indent.) Those are ALL, REALLY ANNOYING, but lint tools can save me.

What will bite me for as long as Python 3 exists, and maybe Python 4, is how they handle Unicode support and encoded outputs. Pretty much the ENTIRE rest of the computing world does one of two things.

1) Doesn't care what the encoding is, and flings around non-validated 8 bit sequences of data.

2) Does care, and defaults to assuming well formed UTF-8 data-streams for text data, BUT still doesn't do anything to enforce it UNLESS ASKED. Most importantly invalid data streams just continue flowing through the processing tools until they reach a point where a human has designated they're willing to care and /do/ something about it.

If Python 4 wants to 'fix' Unicode support:

        * Use a binary sequence base storage class with metadata tags.
        > Length (in bytes, in 'display length', and maybe in 'codepoint length')
        > encoding* (including if normalized and how so)
        > If the encoding has been validated.
        * Support automatic coercion between standard encodings
        * Allow user defined helpers for custom conversions
        * Make all input/output default to UTF-8**

__but permit raw output of such types without validation or re-encoding, just like every other UNIX tool that knows what an encoding is.

<comment><USER8> Yes, please make UTF-8 default! It's 2018

print(str(b'I DONT WANT TO add "UTF-8" everywhere!!','UTF-8'))

<comment><USER11> As a serialization and transmission format, UTF-8 is fine.

As the basis of a high-level language's string type, UTF-8 is objectively incorrect. Strings in a high-level language should be as clean an abstraction of Unicode as possible, and leaking implementation details of the particular byte-encoding scheme up to the programmer is not acceptable.

<comment><USER8> Ok, is it reasonable to ask for all string getter/setter file read/write ops to default to UTF-8?

also having different string methods .byte_length .char_length(?) .codepoint_length seems a good idea. or string.length(aspect=bytes) but what should be the default aspect?

<comment><USER11> I'm going to quote something I wrote a couple years ago[1]:

 _Now, I should point out here that I'm not really knocking the people who were writing, say, command-line and file-handling utilities in Python. For years, Python sort of accepted the status quo of the Unix world, which was mostly to stick its fingers in its ears and shout LA LA LA I CAN'T HEAR YOU I'M JUST GOING TO SET LC_CTYPE TO C AGAIN AND GO BACK TO MY HAPPY PLACE. A bit later on it changed to "just use UTF-8 everywhere, UTF-8 is perfectly safe", which really meant "just use UTF-8 everywhere because we can continue pretending it's ASCII up until the time someone gives us a non-ASCII or multi- byte character, at which point do the fingers-in-ears-can't-hear-you thing again"._

 _So a lot of what you'll see in terms of complaints about string handling are really complaints that Unix's pretend-everything-is-ASCII-until-it-breaks approach was never very good to begin with and just gets worse with every passing year._

I stand by this: we had a couple of decades of Python catering to this brokenness, and it made life miserable for everyone who didn't work in that particular domain. Python 3 changed that. Does it mean life got harder for some people? Yup. But life got a lot easier and more reliable for many more people, and it's a tradeoff I'm willing to accept.

[1] [https://www.b-list.org/weblog/2016/jun/10/python-3-again/](https://www.b-list.org/weblog/2016/jun/10/python-3-again/)

<comment><USER10> Can you answer what ways things got easier that are /not/ equal or better in the solution I proposed?

<comment><USER6> Currently in python you know that you're holding either raw bytes, or something that can be successfully serialised to utf8. With your proposed solution you'll find out which one it is when you try to encode it.

It's the difference between easier to debug: "you asked me to read a value here, but your assumptions about the encoding don't match reality" exception and the hard to debug: "I did a lot of processing; you thought this thing is a valid text, but it isn't; have fun tracking down how it got here in the first place" exception.

<comment><USER10> Python 3: We have two things that are ALMOST the same, and which if we'd done it correctly, could have been converted just by changing what we're willing to call it (in the "downgrade" direction; or also verifying if you want to achieve what I hate that Python 3 is forcing on programmers).

Proposed "string like" Object: __IF__ you want to turn on debugging, sure, force it to validate assumptions at runtime/compile time. Otherwise call verify() when you're willing to handle that being some result indicating "we have a problem".

Maybe the verify() call returns the byte-access-offset of the first non- conforming sequence.

<comment><USER6> > We have two things that are ALMOST the same,

I think we've got a fundamental disagreement here. I don't believe they're similar at all. They just happened to get confused a lot in the past when it didn't matter that much.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> Is it faster than 2.7 now?

<comment><USER11> Python 3.0 was slower than Python 2.7, largely because some new modules were initially implemented in pure Python in order to get the APIs out there for people to experiment with. They're since been replaced with implementations in C.

Python 3 passed Python 2 on performance years ago.

<comment><USER13> Except at interpreter startup.</comment></comment></comment>


ThinkPad 560E - <AUTHOR> https://pappp.net/?p=26440 <comment><USER3> >It didn't come with a cap on the TrackPoint, so I swiped a proper "classic dome" from the spares that came with my T60p to make everything period correct (aside: why are classic dome caps so expensive these days? The soft domes are cheap and everywhere). I still don't care for Trackpoints, but it has cachet.

[https://news.ycombinator.com/item?id=9438461](https://news.ycombinator.com/item?id=9438461)

>Ted Selker [1] is the amazing guy who invented and refined the Trackpoint [2] or "Joy Button" as he called it (but IBM refused to call it). He put years of research and development into the product, and I'm happy he's finally written up and published the story. [3]

>[...]

>Once I was sitting in a coffee shop in Mountain View hacking on my Thinkpad, and Ted and his wife Ellen rolled in, sat down, and started chatting. Ted noticed that my Thinkpad's Joy Button was all worn down, and he was mortified and quickly excused himself to go out to the car. Ellen rolled her eyes and shrugged, explaining that he was always like that. Then he came back with a big bag of red Joy Buttons, and replaced my worn-out one right there in the coffee shop, and gave me a few extras as spares!

>He's a brilliant inventor, and a really nice guy, who apparently always carries around a big bag of spare Joy Buttons in case anybody needs one.

<comment><USER4> > _why are classic dome caps so expensive these days? The soft domes are cheap > and everywhere_

The older sandpaper TrackPoint caps can scratch your display surface. Though some of the softer ones will also mark the display surface, but not as badly.

I have a small stockpile of caps of different kinds, including some originals (and in nonstandard colors), usually end up using the soft shallow concave or shallow convex ones.

Even if you mix up the colors, you can't escape the distinctive branding. Maybe several years ago, during an I-don't-wear-logos phase, I was using a ThinkPad T60 with black TrackPoint cap, and with black labelmaker tape carefully cut to obscure the branding. One day, I was sitting on the grass in front of the public library. Some group of kindergarteners is cutting across the grass, and one of them glances at my ThinkPad with the blacked-out branding, and immediately says, to no one in particular, "thassa IBM!" I would've gotten away with being branding-free, if it weren't for those meddling kids!

<comment><USER5> (Author's HN account) Hmm. Maybe I'll leave the cap off in storage, then. I do remember some of my more modern ThinkPads getting a screen dot from their TrackPoints, but those machines spent a lot of time in backpacks getting lugged around.

<comment><USER4> I don't recall whether the 560E was susceptible to TrackPoint marks, nor pressure marks. I definitely did get both on some of my ThinkPads of that era that saw lots of carrying in backpacks.

BTW, thank you for the writeup on the 560E. It's a good little laptop, and a lot of open source work was done on it, sitting in parks and cafes. :)

</comment></comment></comment></comment><comment><USER6> I'm surprised there hasn't been a spiritual successor of the original ThinkPads from a premium small-scale producer in Shenzhen (that I'm aware of), given the amount of niche mom & pop phone/PC producers over there.

(I know there's a company that puts new chips in old chassis, but it'd be great to see new chassis from scratch as well).

<comment><USER7> How I'd love to see something like classic ThinkPads again: completely self- serviceable and upgradeable with plenty of parts and lots of support available. So sick of glue and crazy proprietary chips and boards.

<comment><USER8> Modern ThinkPads are still best-in-breed for that (the T-series, at any rate). They still come with full service manuals and individually available spare parts, which can often be swapped between similar chassis. And the T480 is one of the last remaining holdouts against soldered-everything and razor-thin.

</comment></comment></comment><comment><USER9> I first heard of openstep from this brilliant post yesterday [https://news.ycombinator.com/item?id=24091588](https://news.ycombinator.com/item?id=24091588) ... and here it pops up again.

<comment><USER10> Not just OpenStep, but Rhapsody! It was Apple's original transition plan for Mac OS X, basically OpenStep/Mach 5.x with a Mac OS 8-style Platinum UI done in NeXT-style Display PostScript complete with draggable menus. It's my favorite Apple product of all time just for the "what could have been" factor, but the Adobes of the world balked at "rewrite your apps in Yellow Box" so we got Carbon and friends in the rebooted Mac OS X project. There was one retail release as "Mac OS X Server 1.0", but the "Premier" desktop-user-focused version was canceled. I like to run Rhapsody on my Power Mac G3 Blue&White because that particular machine shipped with Rhapsody (in a Server G3 configuration) and is extremely well supported: [https://cooltrainer.org/images/original/michiru- rhapsody-201...](https://cooltrainer.org/images/original/michiru- rhapsody-20130909.png)

And here are some good starting points for more info:

[http://www.roughlydrafted.com/RD/RDM.Tech.Q1.07/4B800F78-0F7...](http://www.roughlydrafted.com/RD/RDM.Tech.Q1.07/4B800F78-0F75-455A-9681-F186A4365805.html)

[https://en.wikipedia.org/wiki/Rhapsody_(operating_system)](https://en.wikipedia.org/wiki/Rhapsody_\(operating_system\))

[http://rhapsodyos.org/](http://rhapsodyos.org/)

<comment><USER11> I had no idea Rhapsody OS existed! I really want to give the Mac OS Server 1.0 a spin on a PPC machine!

</comment></comment></comment><comment><USER12> Five or six years ago, I bought a lot of three ThinkPad R40 Celerons sold for parts, hoping to get one useable machine. I did, ending up with a rather pedestrian LXDE Linux laptop.

Just this week I got a second one running with a whopping 256 MB of RAM, and put OS/2 (ArcaOS) on it. It's quite a snappy machine. Loads of fun.

<comment><USER13> I had an R40 run as a router / home server for 12 years, until this January. Lovely machines.

[https://snafuhall.com/home-lan-1-the- beginning.html#cracktop](https://snafuhall.com/home-lan-1-the- beginning.html#cracktop)

<comment><USER14> Its not quite low end but I use a T480 with ubuntu as a home server for plex etc.

I set it up to boot from the ACPI signal and run with lid closed so it boots from the wall switch.

<comment><USER8> "Not quite" is an understatement, that's a nearly brand new premium laptop. Isn't it a shocking waste to use such a thing for a server, and not - say - <USER2> Raspberry Pi 4? Like using a Porsche as a standing generator.

<comment><USER14> I actually used a raspberry Pi for a while as a Plex server but it's underpowered for transcoding.

I dont use that laptop at all these days so I put it to use there.

</comment></comment></comment></comment></comment><comment><USER4> I didn't imagine seeing a post about the 560E on HN, :) but here's some vintage Linux support and hardware notes: [https://www.neilvandyke.org/linux- thinkpad-560e/](https://www.neilvandyke.org/linux-thinkpad-560e/)

If you can't find replacement batteries, and you're willing to do the research to make sure you do it safely, you might be able to put new cells in an old battery.

Since (IIRC) you'll probably need PCMCIA for WiFi anyway, rather than getting past mini-PCIe allowlisting, there's less motivation to bring up Coreboot on it. But you could try. [https://www.neilvandyke.org/coreboot/](https://www.neilvandyke.org/coreboot/)

The 560E was a fine machine, and probably close to the last best ThinkPad. A few ThinkPad models later, when I moved to the T60, I didn't like the T60 as much, including the keyboard and fit&finish. Still, today I transplant original T60 keyboards into somewhat newer ThinkPads (since, in the generation after the T60, the keyboard backing started flexing too much, and also, the key action otherwise doesn't seem as reliable). Another reason to find original T60 keyboards is that a lot of the new replacement keyboard parts now are very low-quality counterfeits, e.g., bad key action, and requiring multiple presses of a TrackPoint button to get one to register, on a new unit. (So bad, that cleaning 20 years of strangers' crumbs and dandruff out of an original keyboard starts to seem like even more of an attractive idea.)

</comment><comment><USER15> I'd love to hear the modern "Be would have been better" case. Apple's purchase / reverse acquisition of NeXT seems so obviously correct in retrospect.

Didn't Steve Jobs carry around a ThinkPad running OpenStep (later Rhapsody?) the first few years he was back at Apple?

<comment><USER5> (Author chiming in, you've given me an opportunity for one of my favorite sport-arguments)

I'll admit that even Jean-Louis Gassée (Former Mac head, Be founder) later said NeXT+Steve was the right choice (see: [https://9to5mac.com/2011/11/11/gassee-thank-god-apple- chose-...](https://9to5mac.com/2011/11/11/gassee-thank-god-apple-chose-steve- jobss-next-over-my-beos/) ) - though he said it for personal reasons based on his contempt for Apple's management.

Some not-carefully-composed points of argument that Be might have been the right choice, because I like doing it for sport:

BeOS was truly a ground-up creation, OpenStep was a Display PostScript environment largely licensed from Adobe running on a hacked-up Mach with some BSD pieces pulled inside the kernel boundary to make performance acceptable (this is XNU, the kernel Apple still uses in everything). That had two points for Be - Apple had to replace the whole display layer, partly for licensing cost reasons and partly because developers weren't interested in dealing with the "Yellow Box" OpenStep API or being stuck in the "Blue Box" legacy compatibility jail. Equally or more important, BeOS was vastly more performant on the same hardware - doing the "the UI stays responsive while I'm playing a dozen media files back on this shitty Pentum MMX" stunt was always a blast around the turn of the century. BeOS was also naively SMP with a nifty and mostly pleasant thread model that has some advantages (and annoyances) over the dominant event loop way of things, but always remained responsive, while Apple inherited the spinning beach ball from NeXT.

For another big technical point that history actually agrees with me on, OpenStep used a passable UFS implementation (that Apple reverted to HFS+, which was already getting long in the tooth in the late 90s, apparently largely because Adobe wouldn't get their shit together to make their products run on a case-sensitive FS...), but BeFS was lovely in ways we're finally getting elsewhere 20+ years later - exactly so in fact, Apple eventually hired Dominic Giampaolo who designed BeFS to design APFS, and it really shows.

BeOS was also already suited for semi-embedded applications, both in various commercial multimedia gadgets, and also the BeIA internet appliance stuff. Since the bulk of modern NextStep-family devices are phones and tablets, there's no reason to think a Gasse/Be Apple wouldn't have thrived in this environment (I know, Palm borrowed Be parts for Palm OS Cobalt and didn't do well, but maybe they were already doomed by that time).

Also, Be was _profoundly_ personal, looking toward a "everyone has their own WebServer running their personal services" kind of future, rather than the "Everyone back into the ~~mainframe~~ major cloud provider" future we got, and I can't help but thinking having one of the big industry players not in the roach-motel platform game would have been good for society.

Jobs did in fact use a ThinkPad running OpenStep/Rhapsody builds around the time of the NeXT-buys-Apple-with-Apple's-Money situation. It was a 560 (not E), there is a NextComputers forum thread about it where Marc J. Driftmeyer who set up the machine Steve had at Macworld '97 talks about it [http://www.nextcomputers.org/forums/index.php?topic=457.0](http://www.nextcomputers.org/forums/index.php?topic=457.0) .

<comment><USER3> This is the first time I've heard of the "NeXT-buys-Apple-with-Apple's-Money" meme. That's hilarious! What's the back story behind that?

Reminds me of the old joke I heard years before I went to work at Kaleida, which then became my day-to-day reality:

Q: What do you get when you cross Apple and IBM?

A: IBM.

<comment><USER5> The short version is most of Apple's management was replaced with NeXT folks within a few years, and the combined company behaved more like NeXT than Apple.

The degree to which Apple in the 90s was dysfunctional is pretty legendary, they started trying to replace the creaking 68k, cooperative multitasking hacked in after the fact classic Mac OS before 1988 and were still shipping what were supposed to be short-term life support releases until 2001 (...and really until 2002 because 10.0 on available hardware was miserable). They kept losing their replacement plans to development hell. A/UX was a nifty Mac/UNIX hybrid that came out in '88, and it was going to be the future, but was expensive (real UNIX license), deeply tied to 68k hardware, and the 4.0 PowerPC port never came out because it collapsed under the weight of "Build a combined OSF platform out of A/UX and (IBM's) AIX that takes over from both and rules the whole computing market" ambitions. That joint project also included Taligent, an OOP-platform-thing that is basically the benchmark for failed software development. There was also Copland, which was a separate in- house microkernel-based OS that was supposed to be MacOS 8, developed between '94-96... that the Platinum theme was the only survivor from.

I think part of the reason they _did_ go with NeXT is OpenStep looked a lot like the Pink/Taligent platform plan, but not bungled.

...I have a draft of a few-page humorous telling of the "How Apple and IBM spent 15 years failing to write OSes" story but I keep tweaking it and need to dig up my copy of _Apple: The Inside Story of Intrigue, Egomania, and Business Blunders_ to add a few references, and find some better reference material for the OS/2 fiasco between IBM and Microsoft that is one of the core "all this 90s tech industry dysfunction fits together" points most of the tellings miss.

</comment></comment></comment></comment><comment><USER16> Wow. I had a 560Z, which was the same form factor but with different options. I'm completely unsurprised that some still exist in great shape, because those machines were insanely overengineered. Mine showed no real wear after 2.5 years of daily use including no small amount of travel, and by that point it had stopped being appealing as a work platform.

It was actually my last daily-driver Windows machine. I was working mostly in Office apps at the time, and Win95/98 was just GARBAGE on a laptop. You couldn't reliably sleep. It crashed all the time. Eventually, it drove me to buy a Mac, based on the experiences of one of my business partners. This was pre-OSX, so the OS was only about 30% more stable than Win95, but sleep worked EVERY TIME, and the whole system was more responsive.

Then the dot-com crash happened, and OS X happened, and I went back to coding as a solo act.

But I sure have fond memories of that 560Z.

</comment><comment><USER17> Imagine using a computer for, I don't know... Work or something. Typing a letter? Spreadsheets? Tax software, not taking. Seems like you could do all that and more on this.

<comment><USER18> Certainly with 80MB of memory you could do all that and more. This machine is more capable in most respects than the machine that was on my desk when that was supposedly a scientific workstation. With 80MB this laptop can easily run Pro/ENGINEER, AutoCAD, Maple, Mathematica, MATLAB, almost anything.

</comment></comment><comment><USER19> mSATA to IDE adapters in a '2.5" replacement' are widely available and I'd prefer those to a SD card adapter over concerns about wear leveling.

</comment><comment><USER20> I had one of those almost 20 years ago. It was already old by then so I install BeOS on it and used it for a while to play movies.

Now I regret that I got rid of it when it didn't boot. :(

</comment><comment><USER21> I operated a 570 for a few years, back around 2006. I don't remember how I decided to get one, but it could run Win2K, my preferred OS at the time, and had a USB port. At the time I was doing most of my work through SSH and X sessions... Firefox ran but it was slow. I remember sending the original battery pack off to get rebuilt -- they probably weren't expecting such an antique!

</comment><comment><USER22> Wow, I never thought of seeing the 560E on the frontpage of HN. I still have mine to play old win9x and DOS games. Runs Windows 98SE perfectly, on its original HDD and is still just a joy to use. Had to transfer most of my old games to it via IrDA, long before i finally bought a USB PCMCIA-Card. Never had the external floppy drive though...

</comment><comment><USER23> >"Initially the battery was reporting itself dead, as you would expect for a 23 year old battery. On a whim I tried the "briefly near-short the battery with a continuity tester in both directions and see if it will take a charge" thing while I was probing to see if it showed any potential (it did, around 6v) – I got lucky, not only did it not catch fire, the original battery now charges to "full" and holds a nontrivial charge, it claims an hour or two in the battery meter which isn't far from original claimed endurance."

Interesting! A technique for reviving (well, enough to boot and run!) apparently dead laptop batteries... I did not know this was possible!

<comment><USER5> It is neither reliable nor guaranteed safe. I have an MSEE and can't explain to my own satisfaction why it sometimes works. The only thing I've read that makes sense is that it resets the protection circuitry after an undervoltage or other lock-out event.

</comment></comment><comment><USER24> I had a 560X (233MHz Pentium MMX) that I loved. I was really into Squeak at the time and did a lot of hacking with it. The keyboard eventually fell apart, so I was surprised he found a usable one.

</comment><comment><USER25> On a slightly related note, fun tip. If you have a 'dead' laptop or mobile phone battery that's too dead to even recharge.. I have 'jumpstarted' some by connecting to a li-ion cordless drill battery for a few minutes.

I've managed to get a few old mobile phones back to life using this method.

Edit: as a safety note this is not recommended! Please read some of the comments below!

<comment><USER26> This is, in general, a bad idea.

Lithium battery charge circuits generally have a fully charged voltage (about 4.2v), a fully discharged voltage (about 3.2v), and a 'do not attempt to recharge below this' voltage (about 2.4v).

The reason circuits are designed not to recharge a cell below the 2.4v threshold is because when you recharge below that voltage, gasses are typically generated which eventually (many months later usually) burst the plastic envelope of the battery, and the battery electrolyte then evaporates as a highly flammable gas, killing the battery and potentially starting a fire if there is a nearby ignition source.

TL:DR:. 'dead' batteries refuse to charge for safety reasons, and tricks to bypass that safety mechanism might lead to a fire a few months down the line.

<comment><USER25> Appreciate the explanation, not information that's readily found when you search explanations on dead batteries.

</comment></comment></comment><comment><USER27> > _It was listed as "No HDD" which was visibly a lie because this thing still > has its screw cover stickers intact_

I'm trying to understand why anyone would lie about _not_ having a hard disk. Is there some rule on the auction website that hard disks must have been removed or wiped?

<comment><USER28> Seller not knowing combined with common approach of removing hard drives to either sell separately or because of data wiping. The CMOS battery error could have confused the final seller.

It's quite often that such finds come through multiple hands, and by the time it hits eBay/whatever the seller has no idea what they are selling except maybe for what's written on labels and can be decided in 5 minutes from looking at the wares :)

That's how I bought my (former now) AlphaStation 255/233, I noticed the case being sold as "old server case for use as HTPC" :)

<comment><USER5> This. Goodwill's policy is, AFIK, a "reasonable measures to wipe" so once they saw it fail to POST and no obvious HDD caddy they just listed.

</comment></comment></comment><comment><USER29> I had a 600E! It was my very first laptop, and I learned Flash 4 (of Macromedia era) on it. It stood out so much against its contemporaries and made me a ThinkPad fan to this day.

<comment><USER30> In high school I ran Plan 9 on a 600E I found on ebay. The specs were plenty fast enough to run the fourth edition of Plan 9, which hadn't gotten any slower since the early 90s... and Bell Labs had thoroughly worked out the driver kinks on that machine. I was even able to join wifi networks through the PCMCIA card, which was also supported by Plan 9. Pretty fun to be running a fully graphical Unix successor on native hardware with what probably is a fraction of SLOC compared to most stripped down embedded Linux systems you'll find today. When something went south you could just peak at the kernel source code, and even on a Pentium II it would compile the changed objects in less than a minute! And not even knowing C that well at the time, I made several functional changes to the system. I can't imagine being that cavalier on Linux today over a decade later....

To this day I'm not sure I've used a laptop that has as nice a form factor. Especially wonderful was the tactile feel of the keyboard.</comment></comment>


Offer HN dedicated thread - <AUTHOR>

I was thinking of making a Offer HN, but then I decided why not make it a thread where everyone can add their offer, maybe others are interested in posting. <comment><USER2> Offer HN: freelance full stack web development with Node.js (Express or Sails), Angular.js, and your choice of SQL/NoSQL DB (Postgres or Mongo by default).

Since I'm a student on vacation, I'll do it for a little less than you'd pay typically, I'm always willing to fit your budget unless its borderline exploitation ;)

Also, if it means anything, I was the winner for GoCode Denver, and thus a top 10 finalist for e overall GoCodeColorado competition- the top 3 won $25k plus a contract and opportunity for $250k more, so I think that's worth mentioning in terms of my ability to complete the work you need done.

[http://www.itskrish.co/#freelance](http://www.itskrish.co/#freelance)

<comment><USER2> A more detailed and updated page can be found at [http://www.itskrish.co/freelance](http://www.itskrish.co/freelance)

</comment></comment><comment><USER3> The tradition of Offer HN was that what was offered was free. There's already a monthly freelancer thread where people can race to the bottom on price.

</comment><comment><AUTHOR> Offer HN: Offering node.js, angular, php development in Dublin or London. I am travelling through Dublin and London next week and I am offering some cheap services and maybe I can help you with your app/startup and do some coding out of a coffee shop and meet new people along the way.

<comment><AUTHOR> cheap services = mostly free because all I need is coffee or a beer and I am good :)

</comment></comment><comment><USER4> System administration of remote hosts - automation, applying distro-updates, and related things.

(I used to be a remote sysadmin for a hosting company for seven years, and have all the expected experience at both the technical level, and at working remotely.)</comment>


Something Twice the Size of Earth Slammed into Uranus and Knocked It Over (2018) - <AUTHOR> https://www.technology.org/2018/12/31/something-twice-the-size-of-earth-slammed-into-uranus-and-knocked-it-over-on-its-side/ <comment><USER2> I've been alive for many, many decades. I wish I could say I've matured past Uranus double entendres, but I haven't.

<comment><USER3> I will freely admit that I had the same reaction to the headline. Ow! I think I'd remember something like that.

#forever12

<comment><USER4> Title is a bit click-bait-y :-)

</comment></comment></comment><comment><USER5> The simulation suggests it _could_ have happened that way. That doesn't translate well into that headline. (Given the domain name, a person might hope for better.)

Impact hypotheses are a popular type of explanation. Some may survive actual exposure to evidence, and eventually become theories. This is quite an old idea (as is the idea that the Moon impacted the Earth); maybe one day it'll pan out.

Until then, it'd be great to see fewer hypotheses in 'Science News' headlines ... and more evidence.

<comment><USER6> If the Moon impacted the Earth, why do both appear to still be here?

</comment></comment><comment><USER7> The author Zecharia Sitchin wrote about this in one or more of his books. His claim is that the Sumerians wrote about this exact thing.

</comment><comment><USER8> So Uranus is "tilted on its side relative to its fellow planets, by about 98 degrees." Why is that not an 82-degree rotation?

<comment><USER9> Axial tilt is sometimes defined such that 0° is when the orbital and rotational axes align, _including direction of rotation_ ; Venus has a tilt of 177° by this standard, because of its retrograde rotation compared to the majority of the planets.

</comment></comment><comment><USER10> In theory, would it be possible to look for the object by looking in the direction predicted by the model?

</comment><comment><USER11> if something is rotating clockwise with respect to surroundings. let us say, and we were to then turn the object 180 degrees in a plane perpendicular to its rotation, the result is an object that is now rotating COUNTERCLOCKWISE with respect to its surroundings.

In summary, an impact with a another rotating object and transfer of momentum is not the only way. the object could have undergone a pole flip.</comment>


Visual Studio Code with a Full IDE Using Safari in iOS 13 - <AUTHOR> https://twitter.com/ow/status/1135919541073014786 <comment><USER2> > This has the caveat that it only works entirely on iOS 13, which is in beta > right now, and you may have limited success on older versions.

I tried running Coder on a cloud server and using it on my 11" iPad Pro. The browser would never even render it. I assume then the version in iOS 13/iPadOS is a requirement.</comment>


A hedge fund for drug dealers? - <AUTHOR>

I am thinking of starting a hedge fund for all the drug money drug dealers make. I noticed that they make so much money but do not know what to do with it, so they buy a ton of clothes and sneakers. If i helped them make a million dollars each they would'nt sell drugs because they actually hate it and it is not fun. Thus eliminating the violence. <comment><USER2> What eip said, +1.

Side note, you know a few drug dealers who make a lot of money? I would think that's something that they wouldn't want advertised...

Also what proof do you have that if you made a drug dealer a million bucks that it would eliminate violence? It would likely result in the opposite as they have more resources, I mean depending on who you ask the drug cartels make 35-100BILLION a year.

<comment><AUTHOR> Yes the cartels do make huge sums of $$$$, but the street level guys aren't making millions/billions and hate dealing drugs. There are a ton of guys who sell drugs because they can't get jobs and feed themselves, so they turn to the street as a last resort, but when they start making some descent money they want to invest but don't know how. As far as eliminating the violence, if you look at the rap artist who were given huge record deals and a new way of thinking that have all turned they're lives around and are advocates against selling drugs... Nobody wins in the drug game.

</comment></comment><comment><USER3> I think HSBC already beat you to it. Probably all the other big banks too.

<comment><AUTHOR> You're absolutely right, but there is still room for someone.

</comment></comment><comment><USER4> better have good returns, though...;-)

<comment><AUTHOR> Haha, or die trying!</comment></comment>


Ask HN: How do you organize your code? - <AUTHOR>

I've always created a "Development" folder in my home directory where I put project-specific folders. For example: "Development/projectA", "Development/projectB" etc.<p>But this approach is getting messy and I'm about to reinstall my system so I'm curious how HN users organize their code. <comment><USER2> I have a similar setup to you and I agree, mine isn't optimal but it works (for now). Basically it's:

/dev

\- /dev/py

-+ /dev/py/projectA

-+ /dev/py/projectB

\- /dev/lisp

..etc

\- /dev/php

.. etc

And so forth. I like having all my code in one area but still separated enough that I can easily fetch what I need.

I also have some "global" folders for things like Javascript code, random HTML/CSS junk, and so forth

</comment><comment><USER3> I mirror all my code and projects between my home and work systems, so the layout is vaguely like this:

      ~/Projects/
        /work/
          /account-tools/
          /courseware/
          /system-mgmt/
        /personal/
          /blog/
          /throwaway/
        /org/
          /fundraising/
          /public-site/

(etc., etc.)

The meaning of the 'work' and 'personal' directories should be apparent, and 'org' is for non-profit volunteer work.

Each project is under some sort of version control, but it could be CVS, Subversion, or Git, depending on how many years ago I last worked on it.

</comment><comment><USER4> I guess my answer is a longer one than you would want, but I will put it out here anyway... I use Windows, and the first thing I do is move my home dir to C:\home\raju. This is where everything thats I will ever need to backup resides along with another directory, C:\projects.

To answer your question, my projects directory looks a lot like truebokso's, with sub-dirs language based (with does not work all the time) and sub- directories to individual projects.

Console on windows gives you the ability to wire up the console opening up in any directory, and so I use that to get to any project I am working on at a particular point in time.

I blogged about this arrangement a while back -

<http://looselytyped.com/2008/05/04/windows-reinstallation/>

Hope this helps.

</comment><comment><USER5> This is what I use at my office:

TPL (three letter code for client Tippingpoint Labs -> TPL)

-> ~Resources (global resource files)

-> ~Information (research for the client)

-> TPL08-01Website (client ID + last two digits of the year - job ID

\---> ~Resources(resources for the job)

\---> 080210 (date coded, 10th of February, 2008)

\---> 080220 (date coded, 20th of February, 2008)

\</comment><comment>> actual stuff inside

-> TPL08-02CookieRecipe

..etc

-> TPL08-999_IT

..etc

At home, I just use three directories: /school, /work, /play. School has all of my school stuff in it (it's subdivided into year and class), work has all of my work stuff in it (a less intricate version of the above), and play is just a dump where I plop files.

</comment><comment><USER6> I used to have projects organized in a root, but I found that I spend so much time visiting specific ones that it's easier to have them directly in home.

So now I have, e.g. ~/ProjADev instead of ~/Development/ProjectA. It's much nicer for quickly reaching them in new shells.

Under the project I typically have one subdirectory ("svn") to represent the checkout, so there's "svn/trunk", etc. This allows me to easily add project- related scrap files that clearly aren't meant to be checked in.

As for organizing what is checked in, my approach is not typical. :) For instance, I don't believe in separating headers and source files...I find it extremely inconvenient to have them in different places, so I dump them in one place.

</comment><comment><USER7> I primarily like using console while working on a project. I have a centralized location which is connected to my "very-rudimentary" version system. I have written small scripts which run every single time I fire up console. At times, I have project specific console scripts all reside on my desktop. I have global key shortcuts to open up consoles for commonly used projects. Simple aliases and scripting trick is kinda abstraction over the actual code organized in folders. I find it eminently helpful since I use Linux and Windows both quite frequently, so it keeps everything consistent for me.

</comment><comment><USER8> OpenBSD + dwm + vnc here

alt+1: my main coding using vim (no mouse, no arrow key) alt+2: vncviewer to my mac mini for safari, ff3 (mouse) alt+3 ... alt+9: almost never used

i 1-1-map ~/www/pages/webapp{1,...,n) to my OpenBSD colo hg push/pull/update

i'm reconsidering attach/detach screen session between servers, but i can't stand emacs/GNU key-binding (even after xmodmap my caps to ctrl) ... anyone knows screen-like program that uses vi-keybinding?

</comment><comment><USER9> Throw everything in ~/work/my_awesome_hack .. you really need a lot of projects before that gets unorganized. Deprecated code that I never touch is in ~/work/_oldies.

</comment><comment><USER10> my main projects go in /home/myusername/

and the rest go in /home/myusername/projects/

and stuff that I'll delete soon goes in

/home/myusername/test</comment>


Are the feature requests checked anymore? - <AUTHOR>

<comment><AUTHOR> I haven't seen a pg reply to a feature request in about 3 weeks, so I just wanted to give a gentle reminder. I understand that he is probably busy right now, so there is no rush, really.

I have given 2 suggestions (shortcut icon and new display order for threads page) and 1 bug-fix/suggestion (regarding < and >), in addition to adding a simple suggestion to a feature request proposed regarding allowing descriptions for submissions (by using the title property of <a> elements). I think that at least 3 of these issues would be somewhat trivial to implement (everything except changing display order of threads page).

<comment><USER2> Suggestion: Time the gentle reminder _after_ the decision is due on which of the 421 applications to fly in for interviews. Lisp does make development faster, but everybody needs to sleep sometimes.

<comment><AUTHOR> Good point. I considered that after making the submission, but I didn't think that there was any good reason to delete it. It turns out that I had homework due today, so late last night I was making suggestions and being pretty active on this site as a diversion. You know... :-)

</comment></comment></comment><comment><USER3> after I'm done reading applications

</comment><comment><USER4> OT: How does the point system work? I don't seem to understand.... I have a -1 on a post :-D</comment>


Crypto Tokens: A Breakthrough in Open Network Design - <AUTHOR> https://medium.com/@cdixon/crypto-tokens-a-breakthrough-in-open-network-design-e600975be2ef <comment><USER2> Large networks "create" value and cryto tokens are an excellent way to overcome some of the key barriers of network building, and potentially to allocate value to members (users, developers, infrastructure providers) in a better way than traditional centralized networks. Very exciting from all those perspectives; not to mention the innovation that will be unshackled by lowering the cost of entry.

That said, I am trying to understand if there is enough value to go around when the network is smaller than (n) nodes? What if the application is not one that will benefit greatly from network effect, doesn't have need for the security/auth model and doesn't need massive compute/resources? What if it will never grow beyond a certain number of nodes (for whatever reason)? Note: those are NOT my opinions expressed in question form...they are pure questions that I want to brainstorm and hope that the responses are along the lines of "here's how those types of apps can benefit".

Also, at mass adoption levels (while understanding we are nowhere near that, but for the sake of the thought experiment), do we end up with millions of micro-networks, rather than the relatively small number of networks we have today? If so, does the crypto token model still hold up? My gut is it would for the infrastructure providers because they can support (n) networks. I am not sure about the rest of the ecosystem or what constructs need to be built/added if that model is to thrive?

<comment><USER3> You raise a very valid point. If you break down a public blockchain by resources used you find those transacting on the network are getting a phenominal deal on storage and compute resources. In the case of bitcoin your data is being backed up and verified on thousands of machines forever for just a few cents. The economics of this are not sustainable which can be verified by a simple comparison to any other storage cost such as s3 or even just the raw spinning disk cost.

We at present are seeing the Bitcoin network saturate and the average cost per transaction has climbed as it should continue to if it is moving towards optimal economics. Ethereum's scaling problem is even more conplex than Bitcoin's considering the state information held in the chain and scripting capabilities.

There are a few approaches being built to handle these issues. One is payment channels like lightning where the public chain is only used for settlement. Another is private blockchains like consortiums which would allow limited access and abuse of the ledger. Yet another factor is sidechains that could create a way to keep information off of the main public chain.

<comment><USER4> If you break down the necessary costs (storage, bandwidth, CPU cycles for verification), it's actually very low, at about $0.001 (a tenth of a cent) a transaction:

[https://bitcointalk.org/index.php?topic=3332.0](https://bitcointalk.org/index.php?topic=3332.0)

The only reason Bitcoin transactions cost so much is artificial scarcity of block space, which increases the proof of work generated per transaction. The absence of a static limit in Ethereum is one of its major advantages over Bitcoin.

<comment><USER5> That kind of napkin math is both dangerous and misleading. The block size limit is a security parameter, and the math above assumed that nobody was trying to attack the network. In attack situations, a larger block size is more expensive and more dangerous.

Also, the resource requirements for running a node are a lot higher than most people are willing to tolerate even at 1mb blocks. Huge portions of the incentives, security, and decentralization of the network depend on people running full validating nodes. A big misconception in cryptocurrency is that miners can set the rules of the network. That's only true if you aren't running a full node.

The dynamic block size in ethereum is an easy attack vector that can be exploited by a large miner. The miner simply increases the blocksize as much as possible, and fills blocks with autogenerated transactions to make verification more expensive for small nodes. Once you get it high enough, your competition will start dropping off the network. If home users stop running full nodes too, now it's a lot easier to change the rules of the network - instead of convincing everyone, you only need to convince everyone willing to pay for a full node. And if that's tens of thousands per month, it's not going to be many people.

<comment><USER4> >That kind of napkin math is both dangerous and misleading. The block size limit is a security parameter, and the math above assumed that nobody was trying to attack the network. In attack situations, a larger block size is more expensive and more dangerous.

The costs under an attack scenario were not what the parent comment was making a claim about. The defence costs per transaction actually decrease with each marginal increase in the number of transactions, because the number of parties worldwide with the resources capable of attacking a blockchain diminishes as the cost of a successful attack increases.

>Also, the resource requirements for running a node are a lot higher than most people are willing to tolerate even at 1mb blocks.

Again, not relevant to the issue at hand, which is the cost of the computing resources used per transaction in a distributed network.

>The dynamic block size in ethereum is an easy attack vector that can be exploited by a large miner.

Ridiculous scaremongering.

</comment></comment></comment></comment></comment><comment><USER6> I think even if Etherium/Crypto Tokens or likewise are the best idea since the typewriter, humans have a staggering way of choosing the worst solutions to problems.

I have a bet on for £1000 with a futurist friend that he say with 10 years half of humanity will have made a transaction on a blockchain and I say not.

My only regret at this stage is that I didn't make the bet in Bitcoin...

<comment><USER7> How would you even measure that to tell who won the bet?

These tokens might have great potential in third world countries where confidence in central government and justice is low, so your friend has a chance.

<comment><USER8> I mean, it can't be _too_ difficult to roughly guesstimate the number of individuals using blockchain tech, and if that is greater than half the population your bet is sorted.

</comment></comment></comment><comment><USER9> The only thing that makes blockchains better than privately owned databases is that you don't have to trust a private party. They are otherwise hugely inefficient. For the life of me, the only "application" I can think of that they are clearly better at is if you use them to replace the investment and trading of precious metals.

That's a huge thing, but in the long run, I think that will be the only thing.

<comment><USER10> The top dozen or so players (I think it was 13, last I checked) own over 75% of the hashrate.

There are 6 large banks in the US, with at least another 2 dozen managing upwards of $100 billion in assets.

No one has really explained to me why I'm better off trusting a cartel of unregulated miners to a cartel of regulated banks, especially when there's several dozen banks who have assets equal to the total value of cryptocurrencies just in the US.

<comment><USER11> You don't have to trust the miners if they don't follow the rules their blocks are automatically discarded. The interesting thing with Bitcoin is you don't have to trust anyone else. It's also a push model vs the pull model of traditional banking.

<comment><USER10> You have to trust those miners in aggregate -- they have the power to change the rules, effectively, since the vast majority of network users will follow the majority of hashing power.

Similarly, if any one bank doesn't follow the rules, they get kicked out of the financial network, to similar effect. You don't have to trust _a_ bank, you trust the banking (and legal) system.

<comment><USER12> If these malicious miners you speak of "change the rules", it creates a fork in the blockchain. Even if they have a majority hash rate, if the economy does not support their decision, the market value of that forked chain will be low while the unchanged fork will keep the market. A group of malicious miners can do very little to destroy bitcoin.

<comment><USER10> In what way does the same logic not apply to banks?

<comment><USER13> Banks can position themselves to benefit from a depreciation of any given currency, miners are tied to the success of the one they've chosen.

<comment><USER10> Can a miner not distribute their effort and holdings?

<comment><USER14> Miner hardware is tied to the specific proof-of-work algorithm used in the cryptocurrency they mine. They make extensive capital investments that are, at least in the case of Bitcoin, useless for any other purpose.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> Blockchain-based contracts seem like a useful thing in the abstract, but I've always had two questions that no one has really been able to satisfactorily answer. These might have been answered, though, because it's been awhile since I looked into it:

1\. What about blockchain length? The article kind of alludes to this, but there seems to be this "we'll deal with that problem later" idea, even though it seems critical. The answer I always got that chains would fork or be stored distributively but then that suggested the primary use would be in small networks, or that there would be critical problems to solve sooner rather than later.

2\. Isn't a guaranteed decrease in monetary supply a problem? I was kind of under the impression that ideally a currency experiences a small amount of increase monetary supply, to avoid things becoming prohibitively expensive. The process of generating coin seems kind of backward to me in many ways, although I'm not an expert in the area.

<comment><USER16> 1\. Not sure what your question with. I'm assuming you're thinking the blockchain length could get long enough that it's hard to store or verify completely? The size of Bitcoin's blockchain is currently around 115 GBs. Unless you're a miner or working with a sensitive transaction, you don't need the whole blockchain to operate. If I remember correctly, you could just 'ask' several reliable parties of whether or not your partial copy of the ledger is legitimate [1].

2\. No, as the cost of the token or cryptocurrency goes up, the nominal price of service goes down. For example, Siacoin is currently around $0.015; let's assume it costs a dollar a month to store 1 TB. You would pay around 67 siacoin. However, as the value of siacoin goes up to $.02, you would only need to pay 50 siacoins instead (assuming the cost of storage is constant).

[1] [https://www.stellar.org/stories/adventures-in-galactic- conse...](https://www.stellar.org/stories/adventures-in-galactic-consensus- chapter-1/)

</comment></comment><comment><USER17> Can someone please explain this to me like I'm 5? I get what tokens are but I still don't understand it.

Traditionally say I have a php/mysql site, that's on a server, say Digital Ocean and files are uploaded to Amazon storage.

How does that translate to Etheruem? What about private messages? If everything is public on the block chain, isn't that an issue? Does Etheruem run code?

Can anyone point me to some reading on this? And how to create a 'decentralized' social network?

This is the future and I'd like to get a handle on it, thanks!

<comment><USER18> I write this from my phone, so I can't find the links to docs in an easy manner. I'll try to explain this as easy as possible: blockchains are distributed ledgers that can store information that can't be altered. They're mostly used now to store transactions info, but they can store anything. In a distributed app the blockchain would be the db. In order to store info on the blockchain one has to pay a transaction fee to the network. This transaction fee goes to the miners that validate the transaction. The ethereum network (and some others) can execute smart contracts: each node is able to execute such a contract. On the ethereum network, smart contracts are written in a language called solidity, which is similar to js. Having a smart contract executed also require a small amount to be paid. Smart contracts can interact with the blockchain: store and retrieve info from it, so the smart contract would be your PHP equivalent. The front end part is done on ethereum using their own, open source client, called mist. Mist is basically an electron app which can interact with an ethereum node. In order to use a distributed app, one has to use a smart contract, which resides at an address in the blockchain, using mist.

Of course, having all the dbs of all the apps replicated in every node is not really optimal and that will be solved using sidechains.

<comment><USER19> The part about the private messages and huge media files is not clear. If I want to share some message with my friends only should I encrypt the message using their public keys and publish the result on blockchain? Would those be $number_of_friends messages or is there a way to publish it just once? How expensive that would be? Should I use IPFS for media files? Has anybody ever implemented these parts in practice?

How can I convince people to use my Facebook killer app instead of Facebook if they have to pay for every action (update profile, send message, post something, etc.), the price is not clear in advance (who knows how much "gas" every action would cost), and the process of publishing is not instant (IIRC Facebook has 2 billions of active users, can Ethereum handle that scale? It's supposed to be used by thousands of different projects, right?).

What's sidechain? Is it something I have to develop myself (i.e. something Ethereum does not provide out of the box)? If that's the case why do I need Ethereum at all?

<comment><USER20> Ethereum is building out a p2p messaging system called Whisper: [https://github.com/ethereum/wiki/wiki/Whisper](https://github.com/ethereum/wiki/wiki/Whisper)

This doesn't use the ether gas as payment, but a PoW to encrypt the message locally then sent.

Ethereum's data store will come from Swarm: [https://github.com/ethersphere/swarm](https://github.com/ethersphere/swarm)

With these two additional pieces it is trivial to build and conduct a social network on ethereum's blockchain.

</comment></comment></comment></comment><comment><USER21> Whenever it says "breakthrough" I get very, very cautious. Hype? Or really innovative? I'll stick to hype for the moment.

<comment><USER14> Ethereum is definitely in a strong hype-cycle right now. It _is_ an interesting crypto, but much remains to be seen about how it will actually be used. I'd take a look at e.g. Augur to see the direction it might take, but realize that the applications it promises aren't yet in wide use.

</comment></comment><comment><USER22> Etherium has serious potential as a distributed network, and as a networked means of greatly enhancing transaction and contract efficiency. I think we are seeing just the tip of the tip of its iceberg.

Bitcoin concerns me. If/when BTC is makes its appearance in the every day lives of ordinary people, its anonymity value will have eroded significantly. Traditional currencies have not yet started to compete with BTC, but they can and they will if necessary. Try getting a mortgage, car loan, business loan with BTC as collateral as one example of where my concerns rest. Look at the grossly inverted price of BTC and gold prices (artificially assuming 1BTC = 1Oz).

Before BTC there was growing dissatisfaction with money center currencies that persists today. BTC 'took the edge off' for many in those circles and may have relieved pressure on gold prices.

I don't necessarily believe this, but I've read in economic revisionist circles that BTC would be means for certain central banks to redirect some demand and attention for precious metals away from their vaults and toward an asset class they, better than anyone, are capable of mining with their existing computing infrastructure. So, by invention or acquiescence, BTC serves money center interests, for now, but not indefinitely.

BTC remains a highly speculative and risky asset/network in my mind.

<comment><USER12> Ethereum's biggest failure is its name. It sounds like a kid came up with it for a syfy video game. How can an investor or new user take it seriously? "Send me some Ethereum honey, I'm going to the grocery store". Nope.

<comment><USER23> Ethereum is the network and technology, the actual currency is called Ether.

</comment></comment></comment><comment><USER24> lets assume for the sake of argument some of these platforms aren't scams/bullshit hype and actually add value in some way. like the prediction platforms augur or gnosis.

the main problem, i then see is that if these tokens are required to use the platform, wouldnt their cost be prohibitive? and the platform wont be useful?

these tokens are going up in value just like bitcoin which always had actual use (mostly on blackmarket) so their incentives are aligned with the token being used as a currency, but not as an app token that is required for the product.

so in effect, these are just over hyped quasi securities offerings and trading.

<comment><USER25> Even Augur and Gnosis are overhyped IMO, their proponents don't seem to realise that these prediction markets already exist outside of the US. Their only differentiator is that they sidestep existing regulations.

<comment><USER13> Eh, it's like saying bitcoin has no value because electronic payment systems exist. And while I understand some would indeed argue that's the case, to me _trustless_ prediction markets have great value, enabling eg autonomous AI enterprises, self settling smart contracts linked to the "off chain" world.

</comment></comment></comment><comment><USER26> I think that token networks in general have potential. While its impressive that cryptotokens have proven to be a store of value, as they exist now don't offer any significant advantages to cash, except for black market transactions.

What i'm interested in is the ability of token networks to be useful for legitimate transactions between entities. I think in particular there's potential for token networks to increase the trust and liquidity of virtual goods. Right now cryptocoins are basically only useful for traditional transactions that cash is already very efficient at. What I want to see more of is using the logging and trust ideas of token network to develop transactions between virtual goods, that normally exist in siloed ecosystems.

</comment><comment><USER27> There is a lot of talking and linking here that doesn't lead to technical resources.

Does anyone have a more formal explanation of how blockchain is being used here?</comment>


Alligator Eggs - <AUTHOR> http://worrydream.com/AlligatorEggs/ <comment><USER3> Serious question: Has anyone tried this out on actual children? How did it go? Maybe children can more easily accommodate the number of arbitrary elements and rules the game requires, because as an adult, I find the alligator motif actively confusing.

Using concrete names, people, chocolates rather than abstractions usually helps a lot in teaching, because it leverages existing mental models and reduces the cognitive burden of tracking abstract tokens and behaviours. In this case, the alligators and their eggs behave so differently from anything familiar (egg hatching to whatever the parent ate?!) that I find the cognitive burden increases to the point of giving up. IMHO, for adults, a straight-up explanation with abstract symbols would actually be easier to comprehend.

<comment><USER4> > In this case, the alligators and their eggs behave so differently from > anything familiar (egg hatching to whatever the parent ate?!) that I find > the cognitive burden increases to the point of giving up.

I imagine, in this case, it's because us adults are (a) trying to figure out what exactly (what computing concept) Bret is trying to explain while we come across each rule and (b) trying to find logical explanations for everything. Children are not burdened with these things, and I'm guessing would have no problem going along with eggs that hatch into whatever their parent ate.

Personally, I think it's really cool. Real-life play-testing definitely required though!

<comment><USER5> I think I agree with the GP. I just tried to explain this to my 5 y/o (admittedly she is possibly too young).

Questions I faced:

"Which alligator is the mummy?"

"Why does the alligator want to eat the other one? Don't alligators eat people?"

"Where is the pink alligator?"

"When the egg hatches will it be a boy or a girl? Because I don't like boy alligators."

We had a lot of fun, but it didn't come anywhere close to achieving any kind of stealth learning outcomes, which seems to be its intention.

</comment></comment></comment><comment><USER6> I don't like this alligator analogy because it relies on magic. Whenever an alligator eats it transforms its eggs by no obvious mechanism. If some abstract mechanism is unintuitive then I don't see how decorating it with superficial real life analogies makes it any easier to understand. The unintuitive behavior is still there. At least draw attention to it by making the alligators wizards or something.

</comment><comment><USER7> Good idea: express complex concepts in simple forms that children understand: multicoloured alligators that die when they eat other alligators or alligator eggs and then the eggs that they previously laid hatch, resulting in alligators that are the same color as the...

Wait I'll start again...

</comment><comment><USER8> Seems fairly complex still. Not completely sure this makes it more understandable. But maybe that wasn't the point?

<comment><USER9> I, too, did not find this very understandable when I was trying to learn Lambda Calculus for the first time. Even now, it is still quite baffling how alligators eating aligators makes more intuitive sense than the regular notation (well, at least it's recursive). In the end, I was only really able to grasp Lambda Calculus from reading a hard book.

<comment><USER10> Frankly, I think the best way to learn lambda calculus is by writing code in Scheme or Common Lisp or some other language with a nearly one-to-one mapping between the language's syntax and semantics and what lambda calculus has. Learn by doing, in other words, and introduce hard concepts using code.

Yes, that's SICP. It's pretty much inevitable that book would get mentioned here, because there's a whole group of people (not everyone) who learn best when they learn by doing, and SICP is the paradigmatic contribution of the learn-by-doing school to this topic.

My point is, maybe this alligator stuff could be made into a game and people could learn by playing. That's a well-verified method.

</comment></comment></comment><comment><USER11> "Do some arbitrary stuff, that doesn't make any sense as an analogy. Oh, look! You just learned the lambda calculus!"

Is this an art project satirising computer science?

</comment><comment><USER12> Previous discussions (I wish HN did this automatically):

[https://news.ycombinator.com/item?id=4586692](https://news.ycombinator.com/item?id=4586692) [https://news.ycombinator.com/item?id=600736](https://news.ycombinator.com/item?id=600736)

Related: "To Dissect a Mockingbird" [http://dkeenan.com/Lambda/index.htm](http://dkeenan.com/Lambda/index.htm)

(also previously discussed on HN: [https://news.ycombinator.com/item?id=7684210](https://news.ycombinator.com/item?id=7684210))

</comment><comment><USER13> When I first discovered this, I found all this bafflegab about alligators and eggs only served to confuse the issue. If you understand that a lambda expression is a rule for generating expressions which, when applied to a value, substitutes the value for the lambda variable, that is sufficient to have an intuitive grasp of what LC is all about.

</comment><comment><USER14> I'm left wondering if anyone has made an app out of this, to obviate the need to print things and as well provide an onboard means of educating the user how the game works. This is still quite a complicated concept and I can't say I understand it better just because I've got toy alligators all over the place .. but with an app it could be a bit more intuitive. That in itself might be an interesting exercise ..

<comment><USER15> Yep, see [http://teamcroggle.github.io/](http://teamcroggle.github.io/) also available in the Google Play store: [https://play.google.com/store/apps/details?id=de.croggle](https://play.google.com/store/apps/details?id=de.croggle)

<comment><USER16> Play store says it is not compatible with any devices

</comment></comment></comment><comment><USER17> What is the purpose of learning/teaching lambda calculus? I get that it's cool. In what ways it is an important or useful concept?

<comment><USER18> It's a simplified version of, basically[0], programming, in which it's easier to prove things. The same as any other piece of abstract math, really.

[0] I'm waffling because I'm not 100% sure of the exact relationship or whether it's well-defined, but it's a close enough comparison.

<comment><USER19> Rather a simplified version of computing. Programming to me necessarily includes making machines _do_ things.

</comment></comment></comment><comment> guard-of-terra Somehow lambda calculus/fp community has no end of embarrassing produce - <USER2> it books, pictures and now images.

Something about pure lack of self-criticism perhaps.</comment>


Ask HN: How to accept payments globally as a business in Sub Saharan Africa? - <AUTHOR> I have worked over a year on a small side project and I'm ready to launch it. Only thing blocking is I can't use Stripe or even Paypal to accept payments. I was aware of this obstacle when I started but I was hoping that by the time I would be done, Stripe would open in my region.
So my question is, did anybody (not necessarily from Africa) find the same difficulty in launching their business ? How did you go about it ?
PS : My customers will be mostly from the US and Europe.
Thanks <comment><USER2> if nothing works, you can try bitcoin.</comment>


SEC ABS comment on Python, request for editing before I submit to the SEC - <AUTHOR> http://jaekwon.posterous.com/sec-abs-comment-on-python

<comment><USER2> Comments were due by August 2nd. Did they extend that?</comment>


Google Analytics Problems? - <AUTHOR>

Has anyone else been experiencing load problems with Google Analytics? My account doesn't load the main settings page and it has been slow for the last few days. My settings page has "Loading page..." showing and nothing else happens.<p>Thanks <comment><USER2> Seems a little bit slower, but things are working as they should here.</comment>


The Talent Shortage Myth and Why HR Should Get Out of the Hiring Business - <AUTHOR> http://www.pbs.org/newshour/businessdesk/2013/04/ask-the-headhunter-the-talent.html <comment><USER2> Reminds me of a comment I had a while ago regarding HR below. Some context - the company had been having problems with hiring good people and was trying to figure out what the problem was - because they never had the problem in the past. So they figured it was related to the HR department and they tested it as below:

\---

I can't remember which company this story was from (I think it was Lotus Software).

Basically the HR team of a multi-billion dollar startup were given the anonymised resumes of the first 10-20 founding team members.

HR rejected them all. Not one founding team member was accepted even for a short interview.

Tells you something about HR doesn't it?

\---

Source: <https://news.ycombinator.com/item?id=4699673>

Same problem as found here: <https://news.ycombinator.com/item?id=5470941>

<comment><USER3> This anecdote might seem incredible to much of the HN community, who look upon successful founders as some sort of demigods.

But could it be conceivable that they're really nothing special?

Perhaps HR was right after all.

<comment><USER4> _But could it be conceivable that they're really nothing special?_

Affable but averagely talented guys with a few rich pals, most of them.

</comment></comment></comment><comment><USER5> I find it disturbing that Ask the Recruiter tacitly assumes that 12 million unemployed versus 3.7 million vacant jobs implies there isn't a talent shortage.

If we have 3.7 million job openings for rocket scientists and 12 million unemployed brain surgeons, then surely we have a talent shortage, no?

<comment><USER6> This might be a purely semantic argument, but I'd say in the example you provided, you have a skill shortage, not a talent shortage. If you provided training, I'm sure you could find enough brain-surgeons willing to train to be rocket scientists. Of course, that would require you to pay for their training and allow for months of lower productivity while they come up to speed, but that's still a better situation than 3.7 million openings and 0 unemployed.

<comment><USER7> The problem isn't filling the rocket scientist shortage with brain surgeon retrains. It's finding the unemployed shelf stacker who's really just 6 months of good training from being you rocket scientist. Otherwise you're just creating a shortage of brain surgeons.

It's VERY hard to find quality developers. I agree with the article that HR is a huge problem, but I'm a hiring manager and I still don't see a great deal of quality.

While it's not as extreme as shifting industry, I recently took the advice from a few HN threads I'd spoken up on and while I'm looking for a PHP developer, I didn't insist that PHP be one of the languages you already know.

Did that work? No. I still didn't get an influx of quality applicants.

I also said in the ad that I was more interested in a cover letter than a resume that shows where you've worked or gone to school, and I'm interested in your Stack Overflow or HN profile. In other words: I'd love to hire a hobbyist.

But none of the 5% of this country's unemployed applied.

<comment><USER8> It might also be that you're looking for a PHP developer. Quality people tend to stay away from PHP.

<comment><USER7> Unfortunately, I suspect you're correct.

</comment></comment></comment></comment></comment><comment><USER9> I generally agree with the suggestion that the line managers who know the work rather than whatever HR department a company has should have the lead role in hiring. The supposed rationale for an HR department is that hiring and firing are hemmed in by various laws that not everyone understands, and a capable HR person can prevent a company from doing something illegal that exposes the company to a lawsuit or criminal penalties. But most of the time, HR departments really keep companies from hiring capable workers.

Definitely learn the law, and don't do anything illegal, but help managers learn how to develop work-sample tests for hiring,

<https://news.ycombinator.com/item?id=5227923>

and make sure that the main focus of hiring is getting each job done right by new hires who have a capacity to grow into more responsible positions in the company over the next few years.

<comment><USER10> I think HR can be useful at "managing" the talent once the hiring is complete, but agree that their involvement in the actual hiring process should be limited to compliance issues. HR can also be good at helping to identify the roots of any turnover issues. Line managers may be too close to the problem and/or too busy tending to the business to be useful in that area.

</comment></comment><comment><USER11> I'm sorry, but the talent shortage is a real thing.

We don't have any HR filtering in place - resumes come directly to managers - but we still have a really difficult time filling our open positions.

<comment><USER12> If you're in California, it's because no American from outside California improves her/his economic outlook by coming to California, where cost of living is easily several times higher than in many other thriving parts of the country.

<comment><USER13> Moving to California from the East Coast nearly doubled my salary. Cost of living went up, but by around a factor of 15-20%.

Of course, since lots of people are really fucking rich in the Bay Area, it's easy to get caught in the conspicuous consumption game (the biggest part of which is probably housing and location). But if you can avoid that, moving to California can easily mean a whole lot more money, even with taxes + cost of living.

<comment><USER14> I'm an infrastructure guy. I interviewed with a fairly well known startup in Mountain View. I was making $120K in Chicago, and was offered $110K to move to Mountain View/San Jose.

In what world is that an intelligent choice, when you can make $ITMONIES somewhere where the cost of living isn't going to eat you alive.

<comment><USER15> $110k plus equity, right? If you got an offer from an established public company, the salary portion of the compensation package would likely be much higher.

<comment><USER14> Very little equity. Not worth the salary differential.

</comment></comment></comment></comment></comment></comment><comment><USER16> Good article a while ago I was at a meeting to discuss the grading / job role system at BT for the Systems engineering division (where 90% of the techies are)

It was a disaster as my colleague commented the only thing they decided was the grade of the hr person who fetches the coffee and biscuits at the Industrial relations meetings with the union.

HR does have a role in making sure the rules are followed though this should be delivered as training to the actual line managers.

</comment><comment><USER17> I do think there is a talent shortage, but I also think tech companies could learn a few things from other industries that have figured out how to recruit at scale. E.g. at my company hiring is not done by HR. A recruiting department handles the planning and logistics, but evaluations are done by lawyers. A potential recruit will be evaluated by associates at say a cocktail reception, interviewed by an associate or sometimes a partner in a screening interview, interviewed by several associates and partners at a callback, and will be hired or not based on the judgment of a hiring committee of partners. At no point does a candidate answer to someone who hasn't been in exactly that same seat before (even the recruiting people are often lawyers who left active practice). As I understand it, finance, consulting, and accounting work the same way, even in huge organizations.

The downside of this is that it's very time-consuming, and very expensive. But you get what you pay for.

<comment><USER18> I'm not sure I've ever known of a tech company that had a centralized HR department making hiring decisions. Mind you, I've _worked for_ tech companies that had HR departments that thought they had a say in hiring, but that was a self-serving delusion on their part.

I think the tech industry, like most industries, does do hiring by having domain experts evaluate candidates. That's why hoary old books like "What Color Is Your Parachute" focus so intently on getting you to identify the real hiring managers at companies.

I definitely don't think the tech industry does hiring _well_. I think that's one of the huge, open, lucrative "meta-problems" in the tech industry.

<comment><USER17> One place I worked had HR do screening interviews. It was like a resume-grep, except in person. They asked me if I knew SQL. I said no, other than the briefest exposure in class. Ultimately got hired anyway, but never came close to working on any SQL. I'm not sure we even had any SQL running anywhere in the company at the time.

</comment></comment></comment><comment><USER19> Yep. A buddy of mine and a DAMN good Android developer (and overall highly intelligent man) is not getting hired on at my job (a CS research arm of the University) because HR can't accept the fact he doesn't have a Bachelors. He's literally 2 months away from it, and his contract with Tek Systems is up in a couple weeks. It's absolutely fucking stupid.

<comment><USER14> He in the Chicago area by chance? We're hiring, and need an Android developer. We don't care about education whatsoever, just if you can do the job.</comment></comment>


Ask HN: Have we reached the point where sites need a mobile AND tablet version? - <AUTHOR>

We finally launched the mobile version of LinkUp this week, and since then we've heard nothing but requests of "when will the tablet version be ready?"
Asking this question on SO, you hear nothing but mantras about "responsive design" and "go where the users are." Great points given infinite resources, but if we had those we wouldn't be on HN on a weekend. I had thought that the point of tablet was to make the desktop-experience more portable, but the cries of the masses are leading me to think I was misled.
So to the Hacker News community - are tablet-oriented websites really something in our future? <comment><USER2> The reason you're getting requests for a "tablet version" may be because (when I tested it out) you're redirecting tablets to the m. version of the site. As you said, a tablet can handle much of what a desktop can, so tablet users tend to be a little annoyed when they are forced onto a version of the site that is clearly made for smaller devices.

I think if you alter your redirection rules to allow tablets to go to the main version of the site, that may satisfy most of your users until you can get a responsive design going.

<comment><AUTHOR> You'd think - except it was the iPad users that were the first ones asking why we didn't have a mobile version:-) I suppose you can't win them all, right?

<comment><USER2> Yeah, unfortunately "can't win them all" has been part of the developer platform since the dawn of the internet.

I didn't drill down deep into the UX on the site, but the m. version isn't _that_ bad on a tablet - it's just quite obviously more fitting to a screen 300-400 pixels wide.

If you had iPad users previously saying they wanted a "mobile" version, see if you can figure out what specifically it was about the desktop version of the site that was bugging them. Do the same for the people asking about a "tablet version", and then find a happy medium of the two to start working towards.

Of course you can already predict that a desktop AND mobile AND tablet version is approaching silly, which is why the feedback you got before was a resounding "responsive design". At the moment, that's the closest you can get to "winning them all".

</comment></comment></comment><comment><USER3> > I had thought that the point of tablet was to make the desktop-experience > more portable

Desktops and tablets are designed around two completely different principles. Interaction on desktop is about clicking and typing; tablets are all about multitouch - dragging, pinching, swiping, etc.

As a general point, it saddens me that even tablet app developers seem to forget that tablets have a) bigger screens and b) multitouch. Clearly, new UI metaphors have to be invented for multitouch devices.</comment>


Giving Shit Away is not a Business Strategy - <AUTHOR> http://www.25hoursaday.com/weblog/2008/07/12/GivingShtAwayIsNotABusinessStrategy.aspx

<comment><USER2> Yeah! The author is damn right about Google. Until I read this post I was a diehard G fan. Anything G was cool to me. It just took me a few seconds to realize the situation. Most who hate Microsoft's expensive products say that they like Google since its more open. Many ditch MS products and go for Google's. Even I ditched MS office and use Google Docs. But only now realize that I am becoming increasingly dependant on Google. I accept that they build really cool and simple products. But every cool G prod seems to come with an visibly invisible string. Example: they introduced appengine. And they have a Users API which makes a devs job easy but it only works with G accounts. So if u want to have your own accounts system, you have to build it yourself. If Google was really open, they would have had a 'more' general Users API, or atleast the current one with the option of OpenID.

They make their buck when you read a mail in the inbox. And most feel that the strip on top of the inbox is to show news. Well how many times do u see news? I often see 'sponsored link'.

Their vision of "making everything web-based" means what it reads to us. But to G it means having a Google Accounts login for everything and then making money from the ads or using the userdata as stats to build more prods with the G login.

Why talk about open-Bigtable or open-Google Docs? They haven't even made the WYSIWYG editor that's used in Gmail as Opensource. They build most of their apps by modding some other opensource software. Google Mashup Editor uses Codepress. Google Video Player was built on VLC media player.

We fail to understand that Google is like any other company(infact a worse demon). The only difference is that they try to slit your throat politely instead of rudely slaughtering you with ads. I am shifting to OpenOffice. :)

Atleast MS and Apple are being honest and gutsy by 'selling' their software/hardware without much visibly 'invisible' strings like having you to login to Windows with your LiveID or having to use sync an iPhone with Mac OS only or even worse... restricting calls by allowing only iphone-to-iphone calls.

Now its a serious 'Hero Wanted!!!' situation. We need someone who can stop G's monopoly game, a MS-Y! combo will not do much damage to G! And the hero to crush G will have to do it for everyone's good and not to start his monopoly.

One simple and collective method of doing it is mass adoption of OpenID. We have OpenID sites. But they have alternative login. Getting OpenID into mainstream as the 'only' login system for most sites. My pledge: my next site will use OpenID.

<comment><USER3> "They haven't even made the WYSIWYG editor that's used in Gmail as Opensource."

There is a WYSIWYG editor included as part of Google Web Toolkit, which is released as open source. I don't know if it is the exact same one as in Gmail but it does the job.

I would also say that my distaste for MS products doesn't really have anything to do with them being closed source. It has to do with the fact that Microsoft documentation is super crappy and it makes their stuff a pain to work with. Where as the GNU/Linux man pages are very well written and easy to get the information you need.

<comment><USER2> U've got a point there.

Extensive customisability is also confusing. Linux distros are great(i started running slackware to get rid of the virus problems that I had on windows). For non-superuser distros, the developer should remove the extensive customisability. The desktop environment for example, u get a lot options from fluxbox to kde to TabWindow Manager. Those kind of too confusing options should be removed in non-superuser distros. The procedure of installation of additional software, windows wins hands down. There aren't too many types. All a user has to do is to click on the setup file of most software. In linux, if a distro doesn't have a package manager, then learning how to install different packages from rpms to tar.gz to whatever, takes time. And even worse, some apps come with the tag "compile it yourself".

</comment></comment></comment><comment><USER4> This is depressing. The author doesn't seem to understand that free software and/or open source software does not mean no price.

Sometimes, release software under a free license does make a lot of business sense. Sun is a hardware company, and by releasing some of their software under a free license, they are hoping for more developers to adopt their platforms.

Remember the "developers, developers, developers"...Microsoft is trying to do the same thing. The express editions of visual studio, which are proprietary, are meant to do that. I would expect an MS employee to know that.

Now whether any of these companies succeed in increasing adoption by releasing software under an open license depends entirely on how good a job they do.

<comment><USER5> The difference is SUN doesn't have a business model anymore. Hardware is now a commodity. What business do you want to be in? One where the price of your product has to decrease (and every tech web site is trumpeting the benefits of cheap commodity hardware) OR the one where you can charge MORE each year for a little bit different version of your software (and you have a built in monopoly (like Microsoft and Google)?

</comment></comment><comment><USER6> While I am bearish on SUN oops, JAVA, try to imagine what would have happened if Sun hadn't realeased Java for free. I suggest that the Internet boom would have created three families of tools fo rbuilding web applications:

Scripting (Perl, PHP, &c.), C++, and Microsoft.

Which one do you think most corporations would be using?

I agree that giving shit away isn't a source of revenue, but it can be a good way to play defense. In Sun's case, Java seriously hampered Microsoft's vision of the Internet future. If there was no Java, I believe Sun wouldn't exist today, because Microsoft would have taken 100% of the market for corporations creating public-facing web applications.

Sure, Sun's in rough shape. But at least they have a chance.

</comment><comment><USER7> Giving things away can make sense. Microsoft gives away compilers and crippled versions of Visual Studio, but such things help sell Windows. Sun giving the world a set of platform-independent dev tools doesn't exactly encourage people to buy _their_ platform.

</comment><comment><USER8> excellent excellent article.

dare has a fantastic way of deciphering through any amount of hype, and talking about the real situation!</comment>


Have a profile pic, lets black it with this to protest against SOPA - <AUTHOR> http://www.isingh.info/blog/2012/01/18/have-a-profile-pic-lets-black-it-out-this-week/ <comment><USER2> I'm using this version: <http://bayimg.com/CalNEAaDP></comment>


Ask HN: Resources on writing specifications - <AUTHOR> What resources do you use to help non-technical staff learn how to write requirements and specifications documents? <comment><USER2> While there's no one right way, here's a well-documented approach that works for its author:

[https://goberoi.com/on-writing-product- specs-5ca697b992fd](https://goberoi.com/on-writing-product-specs-5ca697b992fd)

[https://goberoi.com/on-writing-product- roadmaps-a4d72f96326c](https://goberoi.com/on-writing-product- roadmaps-a4d72f96326c)

<comment><AUTHOR> Thanks, this is a great start for me.</comment></comment>


Writing things right - <AUTHOR> http://www.drmaciver.com/2009/01/writing-things-right/?

<comment><USER2> This only works well if every verb acts on only one noun. After that, the single-dispatch dot-notation breaks down because you have to pass arguments. There are more sensible ways to write a function call with multiple arguments.

In stack-based languages like Factor, you (very basically) write the arguments in front of the function that operates on them. This works out neatly if things are well-factored. Take the REPL for instance, which in Factor is written as "[ read eval print ] loop", as opposed to "(loop (print (eval (read))))" in Lisp.

But this isn't perfect either. A lot of things just look awkward, possibly more so than with prefix notation. I think there should be some kind of hybrid pre-/in-/postfix notation, where you can write the same function call in multiple ways. You could even split up the function name, for example, "if- then-else(condition, foo, bar)" could be written as "if (condition) then (foo) else (bar)", and under the hood this would be the same thing. I can't think of a better example, but I've done this kind of thing often enough with named arguments.

Of course, all this presupposes that "reading like English" is something to strive for. I think it is, though most efforts have been misguided (Cobol, Visual Basic, replacing punctuation with English keywords).

(By the way, I think the single-dispatch dot-notation that you celebrate as one of OO's foremost innovations to programming, is really broken. I seriously consider it writing things the _wrong_ way :-)</comment>


Ask HN: Traffic in Bay Area? - <AUTHOR>

I'm planning on relocating to the Bay Area this summer and would like to get a feel for the traffic from/to the San Francisco Bay Area from neighboring areas such as Oakland Hills (15.3 miles).<p>Any suggestions, tips, caveats? <comment><USER2> Mention your planned commute endpoints and times for better responses. Mention urban driving experience locations for comparisons.

Traffic over the Bay Bridge (I-80W) and its northern approaches (I-80W & I-580E) is quite heavy at typical morning drive times. The rest of the Bay Area is merely very heavy at those times. BART is popular, but parking at BART stations fills early.

Useful traffic resources include Google Maps typical traffic: [http://email@example.com,-122.26,11z/data=!5m1!1e1](http://firstname.lastname@example.com,-122.26,11z/data=!5m1!1e1) [http://www.sigalert.com/](http://www.sigalert.com/) [http://traffic.511.org/index](http://traffic.511.org/index) [http://www.mercurynews.com/mr-roadshow](http://www.mercurynews.com/mr- roadshow) [http://www.reddit.com/r/bayarea/](http://www.reddit.com/r/bayarea/)

</comment><comment><AUTHOR> Edit: approximate commute end points Morning departure times: 8am, 10am Evening departure times: 2pm, 6pm, 8pm From Braemar Rd, Oakland, CA 94602, USA To North Point St San Francisco, CA 94109

My urban driving experience locations are: In/out of Washington DC 395N from Northern VA 459N Beltway Richmond/VA Beach I-64 Baltimore Pittsburgh

</comment><comment><USER3> You might want to get a FasTrak (if you haven't already), if you are driving. It sure beats digging for change for the toll. :) Or if you carpool during certain commute hours, you can be in the toll-free lane.</comment>