Ethereum is a next-generation cryptocurrency platform - <AUTHOR> http://ethereum.org/ <comment><USER2> Apart from scripting, they came up with a new proof-of-work function, which takes exponentially more memory to compute compared to checking. It is probably of independent interest.

[http://wiki.ethereum.org/index.php/Dagger](http://wiki.ethereum.org/index.php/Dagger)

<comment><USER3> I'm interested in seeing a real explanation of the Dagger algorithm.

In brief: the only source I can find (that page) just contains a few sloppy lines of pseudocode. Where is real description and proof of its properties?

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

<comment> aaron-lebo There's been further discussion of Dagger.

[http://www.reddit.com/r/ethereum/comments/1vh94e/dagger_upda...](http://www.reddit.com/r/ethereum/comments/1vh94e/dagger_updates/)

Not just in this link but in another that I cannot find, the devs seem to be leaning towards a bybrid PoW/PoS system like Peercoin.

Edit:

Quote was, "We will switch our PoW from Dagger to a hybrid PoW/PoS system to be developed via a bountied competition conducted by our university partners and open to the general community for participation." from [https://bitcointalk.org/index.php?topic=428589.0;all](https://bitcointalk.org/index.php?topic=428589.0;all).

<comment><USER3> A hybrid system sounds reasonable, but I'm more interested in how they think that Dagger is ASIC-proof. I can't tell without a real description of the algorithm, but what is presented doesn't seem hard to parallelize.

<comment><USER4> Someone pointed that out to them, [https://bitslog.wordpress.com/2014/01/17/ethereum-dagger- pow...](https://bitslog.wordpress.com/2014/01/17/ethereum-dagger-pow-is- flawed/)

And now they've stated,

"We have made a preliminary decision that we likely will fund a contest, similar to that used to develop AES and SHA3, to determine the best ASIC-proof (ie. going beyond just "memory hard" as a heuristic) mining algorithm" [http://www.reddit.com/r/ethereum/comments/1vh94e/dagger_upda...](http://www.reddit.com/r/ethereum/comments/1vh94e/dagger_updates/)

</comment></comment></comment></comment></comment><comment><USER5> No, no a thousand times no... you are building weird machines[1] into the design of the money system.

[1] [https://www.usenix.org/system/files/login/articles/105516-Br...](https://www.usenix.org/system/files/login/articles/105516-Bratus.pdf)

<comment><USER6> It seems there's a nice economical limit on script execution. If the contract during its executing consumes more resources (ops + memory) than fees attached to it, the it's simply considered invalid. That computation is done _after_ the money is locked and the fee is attached, so if you do while(1){}, you are basically donating to a miner.

I haven't finished reading everything yet, so I maybe totally incorrect. But I doubt Vitalik didn't consider these issues.

<comment><USER5> I am less worried about while(1){} and more about viruses (either in-system or breaking out of it via exploits) roaming the blockchain semi-autonomously stealing or spying.

<comment><USER6> Ether scripts are not operating in unrestricted environment. They are turing- complete, but their environment and available memory are very restricted. A bug in the implementation may lead to denial-of-service attacks (just like similar bugs in Bitcoin), but it does not mean there will be ether viruses spreading through the network. At worst, it could be a global DoS issue that can be quickly fixed and the entire history reversed right before the problematic transaction.

<comment><USER5> I do not share your optimism. The worst case is autonomous viruses that steal to sustain their transaction fees and escape their jails to wreak havoc via buffer overruns or other similar exploits.

<comment><USER6> Those viruses would have to exploit some bug in implementation, right? Once the bug is found, all bad blocks will be thrown away. All valid transactions will be included in new blocks.

I don't think script complexity would be the biggest obstacle to adoption, but other factors. For one, advanced script upgrades to Bitcoin that preserve existing BTC distribution of wealth would be more welcome than something from scratch. It'd be safer alternative in the eyes of the bitcoin holders, who would not need to diversify into altcoin.

</comment></comment></comment></comment></comment></comment><comment><USER7> If the devs are reading--the quotes scroll too quickly to comfortably read, especially with no way to control them or go back. Otherwise this is a gorgeously designed site.

<comment><USER8> Also, I would do away with clichés like "the only limit is your imagination" et similia as well as all the techno-babble. Keep it simple, don't overdo it.

<comment><USER9> And fix the typo "advanced trasaction" too...

</comment></comment></comment><comment><USER10> I have to admit some of this sounds very powerful. I think the alternative block chain applications are more powerful than bitcoin.

Will the financial derivative portion mean it is a decentralized Intrade? You would create a contract which will depend on the results of a URL action at a certain point. A trusted neutral observer will give the results of an action at a certain date. Did XX party win an election. The transaction is then decided on that date.

So a third party would take some fixed payment and decide the blockchain event between two parties? Anyway I think it is exciting.

</comment><comment><USER11> I like that it is mildly inflationary over the long term, as opposed to deflationary.

<comment><USER6> Just like Bitcoin: [https://ip.bitcointalk.org/?u=http%3A%2F%2Fwww.mattwhitlock....](https://ip.bitcointalk.org/?u=http%3A%2F%2Fwww.mattwhitlock.com%2FBitcoin%2520Inflation.png&t=536&c=s0JhtJFgtzBT5Q)

<comment><USER12> In this context, inflation and deflation are commonly understood to be the ratio between supply and demand of the currency. Assuming significant adoption and any economic growth, demand for BTC will increase faster than supply, hence deflation.

</comment></comment></comment><comment><USER13> Honestly, I have yet to see a "meta-coin" that seemed viable. While ideas like creating virtual stocks and property ownership in a block chain are cool they all hinge on actually trusting the person backing those currencies/coins. The meta-programming layer here is nice it gives better transaction control, it does not let us do anything new.

<comment><USER14> Well a cryptocurrency which actually allowed you to pay for distributed computing, that did _useful_ computations - would be a very interesting thing.

"Miners" would have to buy generic hardware that did generic calculations, which actually would have "intrinsic" value since they wouldn't be busy-work to keep things secure, they'd be executing useful computation for a client.

<comment><USER15> > Well a cryptocurrency which actually allowed you to pay for distributed > computing, that did useful computations

This is a bit like saying, "I wish the computations in TLS/SSL did something useful besides securing the connection". The security IS useful!

<comment><USER13> Interesting that you pick that, it would be more meaningful if TLS/SSL was not vulnerable to man in the middle and certificate spoofing (respectively). The security is useful, but is it sufficient? Sure searching for hash collisions provides a use, but would it not be interesting to devise a way to provide proof of work for a problem that had more useful results. A good example would be solving satisfiability problems posed in previous blocks, it is easy to calculate the difficulty of the problem and the solving solution is not much better then trying random solutions and hoping and the results is instantly verifiable. It would let people encode meaningful problems to be used as proof of work.

</comment></comment></comment></comment><comment><USER16> Some friendly typo notifications to improve visitors' first impressions:

* Under [what], "trasaction".

* In a citation below the video, "crytpocurrency". It is of course important to cite correctly, but perhaps it's nicer without the typo.

* Under [why] a repetition, "years years".

Copy is important. :)

</comment><comment><USER17> I thought the problem with including loops (and other constructs) is that it makes the block chain too hard to protect against haxor trickery

</comment><comment><USER18> First we had cryptocurrencies, now we have generic cryptocurrency platforms. How long until we see cryptocurrency platform platforms?

<comment><USER19> Technical term is "Factory". :^)

<comment><USER18> Well, it depends on context. In Java, they're factories. The more general term seems to be "platform". For the world of cryptocurrencies, I'd propose "mint".

<comment><USER20> CryptoCurrencyFactoryFactory :-)

</comment></comment></comment></comment><comment><USER2> GitHub organization has codes: [https://github.com/ethereum](https://github.com/ethereum)

</comment><comment><USER21> Am I the only one that finds the resemblance with SteamOS page disturbing? I thought halfway that there will be controller shown.

My opinion is that we need some better generation currencies that are extremely hard to scale for mining before doing advanced stuff with them.

<comment><USER2> Ethereum is designed to be extremely hard to scale for mining. It does not use Bitcoin mining. Go read about it.

<comment><USER3> [http://wiki.ethereum.org/index.php/Dagger#Algorithm_specific...](http://wiki.ethereum.org/index.php/Dagger#Algorithm_specification):

You sound knowledgeable, so perhaps you could clean up their algorithm for me? There are a number of problems with their description that make it hard for me to evaluate. Having tried designing a memory-hard algorithm, I'd like to see what their key insight was, but there are a number of problems with their article. They use confusing operators, the wrong terms, and seemingly random constants.

How did they come up with the numbers 2, 3, 11, 2^21, and 2^22, for example? Is D the hash function or the underlying data? Or is 'data' the underlying data? Does + mean addition or string concatenation? What about "++"? They never even use "||", which they defined as string concatenation... Where does the nonce N come in? Is that actually supposed to be 'n'? How do they justify that the optimal algorithm is the naive one? There is essentially no proof of this claim in the article.

In short, I'm very suspicious of their "memory-hard" algorithm. It took a fairly dense, multi-page whitepaper to explain Scrypt, and yet their 'superior' version is just a couple of sloppy lines of pseudocode with no justification.

Here is what they wrote, for reference:

Let D be the underlying data (eg. in Bitcoin's case the block header), N be the nonce and || be the string concatenation operator (ie. 'foo' || 'bar' == 'foobar') . The entire code for the algorithm is as follows:

0: D(data,xn,0) = sha3(data)

1: D(data,xn,n) =

2: with v = sha3(data + xn + n)

3: L = 2 if n < 2^21 else 11 if n < 2^22 else 3

4: a[k] = floor(v/n^k) mod n for 0 <= k < 2

5: a[k] = floor(v/n^k) mod 2^22 for 2 <= k < L

6: sha3(v ++ D(data,xn,a[0]) ++ D(data,xn,a[1]) ++ ... ++ D(data,xn,a[L-1]))

<comment><USER22> Cuckoo Cycle at [https://github.com/tromp/cuckoo](https://github.com/tromp/cuckoo) seems like a better proof-of-work system and comes with a full implementation.

It has the following features:

1) proofs take the form of a length 42 cycle in the Cuckoo graph, so that verification only requires computing 42 hashes.

2) the graph size (number of nodes) can scale from 1x2^10 to 7x2^29 with 4 bytes needed per node, so memory use scales from 4KB to 14GB. Use of 4GB+ should make it somewhat resistent to botnets.

3) running time is roughly linear in memory, at under 1min/GB for the current implementation on high end x86.

4) no time-memory trade-off (TMTO) is known, and memory access patterns are the worst possible, making the algorithm constrained by memory latency.

5) it has a natural notion of difficulty, namely the number of edges in the graph; above about 60% of size, a 42-cycle is almost guaranteed, but below 50% the probability starts to fall sharply.

6) the choice of cycle length allows a tradoff between benefit (algorithmic hardness) and cost (proof size), similar to the choice of the number of rounds in a cryptographic hash or encryption function.

<comment><USER23> You should suggest that if you haven't already, unless you're saving it for the bounty.

</comment></comment></comment></comment></comment><comment><USER24> An implementation flaw was discovered a few days ago:[https://news.ycombinator.com/item?id=7115725](https://news.ycombinator.com/item?id=7115725)

<comment><USER2> This seems to be a design flaw, not an implementation flaw.

Summary: Ethereum's proof-of-work function(called Dagger) is designed to be memory-hard, but someone pointed out that it should be designed to be sequentially-memory-hard instead. Dagger is not, so you can parallelize the computation.

</comment></comment><comment><USER25> Another Bitcoin crypto-clone. Why does this need crowdfunding? Is the traditional mining and conversion to other cryptocurrencies not enough of a financial reward?

<comment><USER26> Crowdfunding = developers will be instead drinking beer at local pub instead of coding their ass off. Best way to make sure that no results.

<comment><USER27> I'm sure some crowdfunded projects have ended up being mis-managed but that isn't a very fair statement to leverage against these guys (if you don't know them).

</comment></comment></comment><comment><USER28> Is this a thing that can be mined today? Or is it still paper/brainstorming phase?

<comment> aaron-lebo The real network goes live in a few months. The test network is either already up or should be soon.

</comment></comment><comment><USER29> >No, Ethereum is not an altcoin. Ethereum is going to be 10,000 altcoins.

Oh boy! Exciting!

</comment><comment><USER30> Interesting, but why Turing?

<comment><USER31> Because OP doesn't understand why bitcoin "script" is limited in first place.

<comment><USER6> OP understands better than many of us why and how Bitcoin works. Script execution is limited by the fee (which is paid upfront). If the contract is paid to take 10 ops and 2 slots, if it uses more than that or takes longer than 10 ops to execute, it will be aborted and money will forever be locked.

<comment><USER32> But these fees are only paid to miners— not all the other nodes validating the transactions. If only miners validate, what will keep miners honest (e.g. from writing themselves a blank check for more coins).

<comment><USER6> That's the same argument about non-mining Bitcoin nodes. Those who choose maximum security have to perform thousands of ECDSA checks and store the whole blockchain. For everyone else there's Masterc... mobile app. Your argument is valid, but not (imho) specific to Ethereum.

<comment><USER32> The distinction for Bitcoin is that a smartphone can keep up with the maximum possible computation load from validation.

The design is very purposefully limited to keep the validation computation so cheap that it is effectively free, and no amount of fee paying can convince miners to allow more computation since the limits are a property of the system enforced by all nodes just as the supply of coin is limited.

I think it's a less useful mental model to think of what Bitcoin is doing as execution. What a Bitcoin script is really is a witness of an execution that the signer performed— proof that he executed it faithfully— rather than the computation itself. It's just a product of engineering that the simplest (to implement) way to verify execution is to perform it again, but its not intrinsic.

</comment></comment></comment></comment></comment></comment><comment><USER33> such innovate (C)

<comment><USER34> Turning complete you say? Hark the birth of currency viruses.

<comment><USER35> Only if they can break the sandboxing. (Which is unpleasantly probable, given how many sandboxes like Java applets have been broken in the past...)</comment></comment></comment>


Ask HN: How *hard* is Stanford CS? - <AUTHOR> I'm in the CS program at a university with a top-20 CS program. It's actually been quite easy, and I only have two CS classes left to graduate (along with a bunch of others).
I'm thinking hard about transferring to Stanford. And I'm worried.
How difficult is Stanford's CS curriculum, really? Will I be prepared for it with just my handful of (not so hard) C++ and Java classes? Am I smart enough?
And: if you've attended or are attending stanford, what's it like? <comment><USER2> A decade ago (sigh) I did a mix of EE and CS.

The CS program was a mix of interesting subject matter, fun and helpful TAs, and brutally long and/or theoretically complex projects. If you get in you're probably smart enough but you may not have the study habits. Most undergrads at Stanford were the big fish at their high school and have had a few years to have that beaten out of them. Sounds like you're coming from an environment where you're not working yourself too hard, and that will change. Don't expect time for electives. As a transfer you'll be proving yourself among an already- established cohort.

Most important advice I wish I'd gotten before my time there: Get to know your professors, and do what you can to be a TA for the intro courses.

<comment><USER3> Hi Nathan! You back in the US? I hope you had your phone off when you were abroad, because I set off the pager about 600 times last week...

(Nathan and I work together at PBworks. If Stanford is what made him so smart, then DROP EVERYTHING AND GO THERE RIGHT NOW. :)

</comment></comment><comment><USER3> I got a CS degree from Stanford in 2008, and I had the same worrys that you do. I didn't think I would be "smart enough" to keep up with the courses and the competition.

It turns out that Stanford's CS courses aren't that _hard_ \-- I was able to grasp the concepts quickly, and keep up with everything discussed in lectures and in books.

So what makes Stanford's CS program stand out? It's a lot of work. A _lot_ of work. The intensity is what made the program so successful for me. Once I finished a class, I knew the material for life, because I spent so much time studying it. This is a huge contrast to the whole "cram for a test and forget it the next day" experience from my undergrad.

(Footnote: I was in the master's program, but I took quite a few undergrad courses to make up for my non-CS undergrad. My undergrad was in Information Systems at George Washington University. IS was a bad choice because the courses weren't very deep, neither in technology nor in business. But once I figured that out, it was easier to just finish up and graduate than to switch majors.)

</comment><comment><USER4> With only two courses left, why bother transferring? You don't even know if all the courses will transfer correctly assuming you do get accepted. I don't get the logic behind this move?

<comment><USER5> I agree. If it's an option, go to Stanford for a masters.

</comment></comment><comment><USER6> The cool thing about Stanford is that they have a lot of lectures online. I find them a great source on either refreshing on material or learning new stuff altogether. Their iOS series is really good (and current)!

<http://see.stanford.edu/see/courses.aspx>

Edit: What I mean is, you can probably gauge from these lectures and assignments what you're in for.

<comment><USER4> Unfortunately that's not very representative. The stuff Stanford have listed are pretty intro courses and do not represent all types of CS courses you'd encounter</comment></comment>


100 donts from Paul Graham - <AUTHOR> http://www.ycombinator.search.xirium.com/cgi-bin/search.cgi?p=0&q=author:pg+don%27t

<comment><USER2> I was hoping for a bigger more button.

But really...why is it half my screen? :)

<comment><USER3> Maybe they just want you to really NOTICE how big, shiny, and Web 2.0 it is!</comment></comment>


Ask HN: Cheap Cloud storage for my app - <AUTHOR>

I am building an app which will allow a user to edit personal videos and upload,share with her friends. Users will be uploading videos to my servers. I am looking for some cheap options for hosting user videos...do you guys know of any cheap options? <comment><USER2> give a try www.digitalocean.com</comment>


Learning from Shogun [pdf] - <AUTHOR> http://www.columbia.edu/~hds2/learning/Learning_from_shogun_txt.pdf <comment><USER2> Shogun is really a great and influential book.

There is also this Reddit thread summarizing this document and others: [https://www.reddit.com/r/AskHistorians/comments/2af74z/how_a...](https://www.reddit.com/r/AskHistorians/comments/2af74z/how_accurate_is_james_clavells_shogun_in_terms_of/)</comment>


Web Startup: Living in Florida, incorporating in Delaware/Florida? - <AUTHOR>

I am running single owned web startup right now. Its not live yet so that is why I am posting this question. I am currently living in Florida for past 3 years and within next couple of months I will take my idea LIVE.
That being said, I would like to know that which state is better to incorporate (LLC/C-Corp)? Delaware/Nevada/California? Can I incorporate into other state even I am not residing there? I don't know anyone in Delaware, but I know some of my friend in California & Nevada.
Also, I will be asking for funds through Angel Investors/VCs, so C-Corp would be a good option to go for. But now I am confused with the state.
Note: I was reading somewhere that if I am residing in Florida and form my company in some other state, I still have to register in Florida as a Foreign Business Entity (something like this, can't think of the proper term here.) <comment><USER2> I would think Nevada or Delaware would be better.</comment>


Amiga Java - <AUTHOR> http://www.mikekohn.net/micro/amiga_java.php <comment><USER3> Seeing "Amiga" and "Java" together reminds me of Amiga Anywhere, a brilliant and completely misunderstood gaming/entertainment VM project twenty years ago:

[https://arstechnica.com/gadgets/2018/03/a-history-of-the- ami...](https://arstechnica.com/gadgets/2018/03/a-history-of-the-amiga- part-12-red-vs-blue/)

It didn't really have anything to do with the original Amiga. It was a rebranding of a strange high-performance VM designed by some very clever people in UK:

 _" Tao had created a product that was so innovative that few people understood what it actually was. Taos was an operating system that was coded in VP1, an advanced assembly language that used instructions for an imaginary, idealized RISC CPU. When Taos programs were loaded into memory, the system translated the VP1 opcodes into the equivalent ones for whatever CPU it happened to be running on. Taos could run on an x86, a MIPS, a PowerPC, or a transputer, and many more—or even different combinations running at the same time. Because VP1 instructions were more compact than most CPU's native opcodes, Taos programs would often load and run faster than native ones, even when you included the time it took to do the translation. Taos was a little bit like magic."_

Of course HN past has the details on this interesting bit of alternative software history:

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

<comment><USER4> Isn't it the case that the approach of using a VM to do games goes way back .. in the early 80's it was a common mechanism in games dev, and the tradition has endured such that VM's are often pushed hard, technology-horizon wise, by the game devs.

One of the reasons Lua is all over the place, is its VM code is very well written and easy to integrate in a code-base.

There is still room for VM's to solve a lot of the current platform-war problems.

<comment><USER5> _"the approach of using a VM to do games goes way back .. in the early 80 's it was a common mechanism in games dev"_

One reason that was done is that it made porting games between CPU architectures (OSes weren't that much of an issue, as games ran on bare metal) easier.

Zork had one in 1979 ([https://en.wikipedia.org/wiki/Z-machine](https://en.wikipedia.org/wiki/Z-machine)). I think that ended when games became truly interactive, as opposed to command- based, because, when that happened, performance became a bottleneck.

Another reason could have been is that it made programming easier, as 8-bit CPUs are so weak that running a virtual machine for the convenience of having such luxuries as 16-bit arithmetic sometimes made sense even then (e.g. [https://en.wikipedia.org/wiki/SWEET16](https://en.wikipedia.org/wiki/SWEET16))

And of course, there is Forth, the ultimate "give me a VM that is tailored to this specific program" language (every word you define can be seen as a new instruction for your virtual machine)

<comment><USER6> > I think that ended when games became truly interactive, as opposed to > command-based, because, when that happened, performance became a bottleneck.

Counterexample: the recently posted article series about Another World - a VM- based game released in 1991 that was very interactive and graphics-heavy.

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

</comment></comment></comment></comment><comment><USER7> It is so weird to see the cool computers of my teens put on a blanketed table. Makes them look like amcient artifacts, to be approached by wizards only. Kind of like how I felt seeing rackfuls of mainfrane hardware, back then. :)

<comment><USER8> Kinda like how I felt when the docent at the Computer History Museum in Mountain View passed around an ancient artifact from a bygone civilization for the guests to marvel at: a 5 1/4" floppy disk.

Recently I saw a talk from a twenty-something programmer who as a child didn't believe "real" computers (desktop PCs) could be programmed at all, that was something you could do only with "old" computers like the Apple II. He hacks lisp now for some networking company, so maybe the kids will be all right. :)

<comment><USER9> Or the 8" floppy disk which I saw when I was a middle school kid learning my first programming on a paper teletype!

<comment><USER10> I have an 8" floppy disk framed on the wall of my office.

When I retire and I have more time, I'm going to fill my house with Cromemco- era gear and do all the things I always wanted to do back then.

But first, I have to convince my wife that S-100 bus machines are mid-century modern, so she'll allow them in the door.

<comment><USER11> If you wait until you retire (unless retiring happens in 5-10 years maybe), you might not be able to afford the gear.

Stuff is pretty expensive even now, depending on what you want, what you can get, and such. Or, maybe you'll get lucky - several years ago I scored an Altair for $200 from a local electronics junkyard; later I went back and scoured it for a bunch of S-100 cards (as is, it came with a full complement).

Later I got some things off ebay, and even some free items from some other collectors - all I had to pay for was shipping. One strange beast was a 6502 cpu PCB (unpopulated) - I am not sure if it is compatible with the Altair's S-100 bus layout, or if it is meant for some other machine (the bus wasn't as standard as one would like, unfortunately).

Anyhow, good luck with your dream - just collecting the stuff can be fun enough!

</comment></comment></comment></comment></comment><comment><USER12> FWIW, you can even run the latest OpenJDK on m68k.

In fact, here's is my Amiga 4000 running it on Debian unstable:

      root@elgar:~> dmesg |head
      [    0.000000] Linux version 5.4.0-2-m68k (firstname.lastname@example.com) (gcc version 9.2.1 20191130 (Debian 9.2.1-21)) #1 Debian 5.4.8-1 (2020-01-05)
      [    0.000000] Enabling workaround for errata I14
      [    0.000000] Amiga hardware found: [A4000] VIDEO BLITTER AUDIO FLOPPY A4000_IDE KEYBOARD MOUSE SERIAL PARALLEL A3000_CLK CHIP_RAM PAULA LISA ALICE_PAL ZORRO3
      [    0.000000] On node 0 totalpages: 30720
      [    0.000000]   DMA zone: 300 pages used for memmap
      [    0.000000]   DMA zone: 0 pages reserved
      [    0.000000]   DMA zone: 30720 pages, LIFO batch:7
      [    0.000000] initrd: 06c412a3 - <USER2>
      [    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
      [    0.000000] pcpu-alloc: [0] 0
      root@elgar:~> cat /proc/cpuinfo
      CPU:            68060
      MMU:            68060
      FPU:            68060
      Clocking:       49.1MHz
      BogoMips:       98.20
      Calibration:    491008 loops
      root@elgar:~> uname -a
      Linux elgar 5.4.0-2-m68k #1 Debian 5.4.8-1 (2020-01-05) m68k GNU/Linux
      root@elgar:~> java --version
      openjdk 11.0.6-ea 2020-01-14
      OpenJDK Runtime Environment (build 11.0.6-ea+7-post-Debian-1)
      OpenJDK Zero VM (build 11.0.6-ea+7-post-Debian-1, interpreted mode)
      root@elgar:~>

OpenJDK is built as part of Debian unstable:

> > [https://buildd.debian.org/status/logs.php?pkg=openjdk-11&arc...](https://buildd.debian.org/status/logs.php?pkg=openjdk-11&arch=m68k)

> > [https://buildd.debian.org/status/logs.php?pkg=openjdk-12&arc...](https://buildd.debian.org/status/logs.php?pkg=openjdk-12&arch=m68k)

> > [https://buildd.debian.org/status/logs.php?pkg=openjdk-13&arc...](https://buildd.debian.org/status/logs.php?pkg=openjdk-13&arch=m68k)

> > [https://buildd.debian.org/status/logs.php?pkg=openjdk-14&arc...](https://buildd.debian.org/status/logs.php?pkg=openjdk-14&arch=m68k)

</comment><comment><USER13> What is it with Amiga that people keep tinkering with it and HN is full of Amiga articles? I once had an Amiga 1000 but for me that's just a sweet memory. Why is it different for other people, and why Amiga and not Spectrums or the like?

<comment><USER14> I have a Vampire 2 Card for My A600. I can do quite a lot of more modern tasks on the machine and connect it to a modern monitor. In my A1200 I have 16GB of storage on a CF card, VGA / DVI and a Music card (I can play back MP3s etc. So it like using a Pentium Era computer.

The OS is pretty decent considering its age and there are plenty of decent applications to use.

I don't find 8bit computers particularly interesting. I had a BBC Micro and a Tantung Einstein (hand me downs) and they are extremely primitive compared to the Amiga. The Amiga is very much like a modern computer.

I really wish there was Amiga OS for a PC computer (I believe MorphOS is being ported) as even the aging OS 3.1 with some extensions is in some ways better than Desktop Linux. But that is highly subjective.

<comment><USER15> > even the aging OS 3.1 with some extensions is in some ways better than > Desktop Linux.

What do you find better? I'm curious

<comment><USER16> I haven't used it myself, but I've read that many Amiga third-party desktop software exposed an API to be programmed via a scripting language (called ARexx). You could easily automate tasks that cross application boundaries this way.

</comment></comment></comment></comment><comment><USER17> Dug into Java grinder a bit, pretty crazy to see Java code pushing pixels at a decent (20 fps?) framerate on C64 and earlier hardware.

</comment><comment><USER18> It's funny that someone else on HN just managed to run a C# program on Windows 3.11. [https://news.ycombinator.com/item?id=22010159](https://news.ycombinator.com/item?id=22010159)

</comment><comment><USER19> Three Billion and One devices run Java.</comment>


The problem with software packaging - <AUTHOR> http://pkgfarm.tumblr.com/post/89383090906/the-problem-with-software-packaging

<comment><USER2> Or one could use guix [https://www.gnu.org/software/guix/](https://www.gnu.org/software/guix/)

<comment><AUTHOR> Interesting- and there's also [http://nixos.org/](http://nixos.org/)</comment></comment>


Man Scales Building to Save Dangling Child; Macron Offers Him Citizenship - happy-go-lucky https://www.npr.org/sections/thetwo-way/2018/05/28/614963176/spider-man-scales-building-to-save-dangling-child-macron-offers-him-citizenship <comment><AUTHOR> As a Frenchman, I've got to say I'm very bitter at this story. The guy sure deserves citizenship and deserves to be praised for what he did. The problem is how, every time some refugee/migrant/whatever you call them does something great, there's a huge media coverage about how the guy is cool and deserves citizenship, and our governments are kind of praised for doing so. Yet, in the mean time, the same government has ordered to cut refugee tents in order to prevent them from sleeping in some places, among other not-so-cool actions towards refugees. There's also a lot of coverage when one migrant or refugee does something bad (obviously).

What I fear is that it tends to reinforce the idea that to deserve citizenship, one needs to do heroic stuff, or at least something flashy, for starters. Secondly, that when one refugee does something heroic, HE has to be given some consideration, but when one refugee does something bad, the image of refugees as a whole does suffer.

<comment><USER2> I think you're taking it a bit to the extreme..

</comment></comment><comment><USER3> The previous president did that many times on purpose. The goal is to show immigrants positively to widen the gap with the far right (their main political enemy).

BTW this guy is a real hero and deserves to be recognized.</comment>


Leaving Microsoft: Lessons Learned - <AUTHOR> http://devnambi.com/archive/2012/03/leaving-microsoft/ <comment><USER2> Is this a list of issues the author had with Microsoft or am I reading too much into this?

<comment><USER3> +1</comment></comment>


DNC chairwoman will resign in aftermath of committee email controversy - <AUTHOR> https://www.washingtonpost.com/politics/hacked-emails-cast-doubt-on-hopes-for-party-unity-at-democratic-convention/2016/07/24/a446c260-51a9-11e6-b7de-dfe509430c39_story.html <comment><USER2> She is resigning so that she can be Hillary Clinton's fulltime "honorary chair of her campaigns 50 state program".

No, I am not making this up: [https://www.hillaryclinton.com/briefing/statements/2016/07/2...](https://www.hillaryclinton.com/briefing/statements/2016/07/24/hillary- clinton-statement-on-the-resignation-of-democratic-national-committee-chair- debbie-wasserman-schultz/)

</comment><comment><USER3> It is mind-boggling to me that the character of the DNC emails isn't basically under 24/7 _emphatic_ media coverage and on the minds of all citizens.

The only counter-argument I can imagine is basically what Bernie Sanders himself said -- that it's no surprise. lolwut ... who cares if it's a surprise.

The administration of the Democratic party: (i) conspired to push favor in the direction of a predetermined candidate long before any public preferences were known, (ii) made some outrageous and extremely, extremely, as-extreme-as- anything-you-want-to-say-about-the-Republican-platform bigoted remarks about homosexuals, often as _fucking jokes_ and (iii) kicks around the idea of finding an audience plant to question Sanders on whether he is an atheist to win votes.

And what's the Democrat response? _Russia 's trying to do it._ WTF!!!??? Don't believe expressly bigoted email data showing that popular opinion is ignored, mocked, and conceived as an opportunity for engineering. No. Discount that. Becuz Russia izzz 4 Trump. Jesus.

There's nothing further to say. It's not an excuse to vote for the equally train-wreck Republican ticket, but it's an overt and unequivocal confirmation that the parties, in every pragmatic sense, are identical, and that for the overwhelming majority of Americans, apparently even marginalized Americans in certain minority groups, _there is absolutely no fucking difference between the two parties, no justification for favoring one over the other, no impending immigration or terrorism or international relations crisis that 's going to drop like the sword of Damocles on us if one is elected over the other._

They. are. the. same. The. exact. same. There. is. 100%. zero. debate. about. it. any. more. So. just. fucking. stop.

The content of the email leak was one of the most depressing things I've experienced in my lifetime. Followed quickly by the equally depressing rationalizations basically trying to say "that's just politics" and downplay it. Vox immediately posts an article saying "they found no smoking guns" blah blah blah more of the same shit. It's just unbelievable the degree to which we are engineered.

Sorry. Had to vent.

<comment><USER4> I'm one of those who thinks there isn't much interesting about them. I'd note that most mainstream media outlets have covered them, but I guess you mean that it doesn't appear to be the main story or something?

What specifically do you find so outrageous?

I've had a bit of a look through them, and I don't see anything that seems out of place in any big company or organisation. Talking about advertising as propaganda, thinking of the public as a set of numbers and being disrespectful in discussing them, trying to help people they liked out over people they didn't. Isn't all of this just normal organisational stuff?

I think that Vox's assessment was pretty much correct.

(For context: Not a Hillary supporter, and think it is entirely appropriate that the DNC Chair resigns).

<comment><USER3> The reddit megathread [0] does a fine job summarizing. What do you personally make of the remarks about homosexuals, many of which are identified and linked in the reddit thread?

You say it is nothing that would be "out of place in any big company or organization" \-- it's hard for me to read that without gathering that you tacitly imply it's OK for big company or organizational leadership to banter about their own bigoted beliefs over email, and that since this is commonplace among companies, no one should feel outraged by it.

How does that follow? As far as I'm concerned, the fact that it's commonplace only makes it all the more outrageous. A lot of people doing an indisputably anti-human behavior doesn't somehow make it more human.

[0] < [https://www.reddit.com/r/politics/comments/4u5ztv/dnc_email_...](https://www.reddit.com/r/politics/comments/4u5ztv/dnc_email_leak_megathread/) >

<comment><USER4> I haven't seen any remarks about homosexuals until I searched that thread. I found one email[1]. I presume it means that the person they are discussing literally swims with/for the DC Gay and Lesbian Swimming Squad[2]. The reply was which was kinda creepy, but didn't seem to show any particular discriminatory behaviour. Is there something else I should be looking at?

 _You say it is nothing that would be "out of place in any big company or organization" \-- it's hard for me to read that without gathering that you tacitly imply it's OK for big company or organizational leadership to banter about their own bigoted beliefs over email, and that since this is commonplace among companies, no one should feel outraged by it._

I just aren't seeing anything that is bigoted. I'm very, very open to being persuaded otherwise.

People use email when they are gossiping. They shouldn't, and lots of what they talk about it dumb or rude. But isn't that just the nature of gossip?

To be clear - I'm not defending the DNC. They shouldn't have talked like this over email.

But show me some email that has something that is an actual, interesting, newsworthy story in itself, but "creepy" isn't really going to make the front page of the NY Times.

So far people do these big link dumps, I read a few, and my opinion gets more solidified - the Vox assessment of "no smoking gun" seems appropriate.

Like I said - very happy to be shown to be wrong about this. I think this story is flagged of the front page, so there aren't even imaginary internet points at stake.

[1] [https://wikileaks.org/dnc-emails/emailid/498](https://wikileaks.org/dnc- emails/emailid/498)

[2] [http://www.swimdcac.org/about.php](http://www.swimdcac.org/about.php)

<comment><USER3> > I just aren't seeing anything that is bigoted. I'm very, very open to being > persuaded otherwise.

See, I am starting to realize that you're not actually open, or at least you're not as open as you think you are and you're not acknowledging the way you're going out of the way to ignore or write off blatantly bigoted behavior.

Here's just one example [0] < [https://www.reddit.com/r/politics/comments/4u5ztv/dnc_email_...](https://www.reddit.com/r/politics/comments/4u5ztv/dnc_email_leak_megathread/d5n5e6r) >.

Since it seems like we have a disagreement even in kind, it might be best to just see what your thoughts are about that lone example. If we can't agree that it is egregiously, lose-your-job-on-the-spot bigoted, then it's doubtful we can agree on anything else.

<comment><USER4> I didn't see that example, sorry. (I did Ctrl-F and found the swim team example first.)

It's pretty bad stereotyping, I agree. But for the LGBT Finance Director to say that - why do you think it is _egregiously, lose-your-job-on-the-spot bigoted_?

The linked Reddit discussion has a pretty wide range of views, but even there I don't see anyone calling him bigoted. The closest is "It's an vicious joke. I don't care whether the joker is gay. He's a duplicitous prick.", and the author of that comment is getting quite a lot of push-back on it. They later qualified their comment to say:

       You missed my point which I approached a bit too indirectly, perhaps. I don't take offense to jokes. My point: the question of whether the joker is gay is irrelevant to the ethical status of making a joke about being gay

      It's relevant for PC bots, sure, but I'm not bound to their code.

      Edit: but, yeah, the guy is still a duplicitous prick

I don't really understand this explanation, but it doesn't really sound like an accusation of bigotry.

"Bigot" means "a person who is intolerant towards those holding different opinions". How do you get that from that particular comment?

I'd be disappointed if we couldn't find a position we can both understand. I completely respect your anger over these emails - they are nasty and unprofessional, and I'm not endorsing that or the behaviour they represent in any way.

But I'm not surprised they aren't "under 24/7 emphatic media coverage" \- like someone said in that Reddit thread - it's like a bunch of office gossip.

<comment><USER3> Tolerance extends to the understanding of a culture and abstaining from deriding someone based solely on that culture.

The joke, which reveals a deeper personal value judgement on behalf of the person telling it, speaks of a "good gay" as if to stereotype gay men by a particular behavior, denying the possibility that you can be a "good" gay man but have a different cultural outlook. That, to me, is unquestionably a form of intolerance. Making light of someone can be a form of intolerance, depending on what property it is by which you make light of them and whether or not it is based in a harmful generalization. Another way to say it is: you can't claim tolerance if you're happy to propagate harmful stereotypes or generalizations.

Emphatically, it is crucial to dive into the language deeply. The urge to say "it's just a joke" is precisely the kind of let's-sweep-this-frat-house- bigotry-under-the-rug-and-go-back-to-thinking-everything's-nice rationalization that allows such bigotry to perpetuate.

Re: your last line that it's like gossip:

Except that this is our political process. It happens rarely (once per four years) and is a matter of passion, contention, and deep moral conviction. We have every right to expect it to be held to far higher standard than some bullshit gossip.

Let me be clear that I do not believe it's merely gossip and I'm not offering any credibility to that stance. It's not mere gossip. It is harmful, derogatory language about gays, as well as at the very least an amazingly insensitive and offensive simplification of American religious beliefs (e.g., that some particular Christian people will see "a Jew" differently than "an atheist" and that could be worth a few polling points, and that all three belief groups are nothing whatsoever but sources of polling points, to be engineered and manipulated with audience plants, etc.)

But even if it was "mere gossip" [it isn't] it would still be outrageously flagrant that the primary administrators of one half of our most important political process essentially view their jobs as a frat party. That's not some kind of let's-roll-our-eyes-but-boys-will-be-boys-and-move-on kind of thing, as you seem to think it is, but rather it is a let's-eject-everyone-from-this- Neanderthal-administration-and-hire-people-who-actually-give-a-damn issue. It's not boring nightly news to be eye-rolled and skipped for the sports section. It's our goddamn political process. It's frankly shocking to me that someone would suggest it's just boring gossip to be unconcerned with. I cannot reconcile that with any notion of caring about even the tiniest component of civic duty.

<comment><USER4> _The joke, which reveals a deeper personal value judgement on behalf of the person telling it, speaks of a "good gay" as if to stereotype gay men by a particular behavior, denying the possibility that you can be a "good" gay man but have a different cultural outlook. That, to me, is unquestionably a form of intolerance. Making light of someone can be a form of intolerance, depending on what property it is by which you make light of them and whether or not it is based in a harmful generalization. Another way to say it is: you can't claim tolerance if you're happy to propagate harmful stereotypes or generalizations._

I think this is a fair point, and one I'm quite sympathetic to. I agree that it is all too easy to say "it's a joke, ha ha" when people say very offensive things.

I think you've persuaded me that it was pretty bad judgement to say that.

BTW, I think this one is inexcusable: [https://wikileaks.org/dnc- emails/emailid/7643](https://wikileaks.org/dnc-emails/emailid/7643)

 _It 's frankly shocking to me that someone would suggest it's just boring gossip to be unconcerned with. I cannot reconcile that with any notion of caring about even the tiniest component of civic duty_

I think that this is a great ideal to stand by, but I can't imagine finding any large group where this kind of behaviour doesn't occur.

Maybe I'm too old and cynical to fight that kind of fight any more. Maybe I shouldn't give up so easily, but I just don't see any possibility of an organisation existing with ideals as high as that and yet still be able to win elections.

Bismark said: _Politics is the art of the possible, the attainable — the art of the next best_.

<comment><USER3> I like David Deutsch's idea of an effective form of government too: how easy is it to eject the current one and try something new? Then, if we must be subordinate to the idea that we're just making small changes, aking to "the art of the next best" that you quote, at least we make it easy to displace bad ideas and try something else.

I think one way of ensuring no bad forms of government entrench themselves, thus making it impractically difficult to ever even try that next best thing, is to be vigilant when it comes to all of this.

Am I expecting zero gossip? Of course not. But do I think the opportunity of a massive email leak that exposes behavior that is, at minimum, inexcusably unprofessional, should go by without trumpets blaring? Absolutely not.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER5> Whether or not you have a problem with her sentiment or attitude, you can't deny that putting those words in an email caused a lot of damage to Hillary's campaign and the party.

One would think in the age of wikileaks and Snowden that politicians would have learned by now not to write anything they wouldn't want printed in the NY Times or the Washington Post.

<comment><USER6> Yes, because hiding the corruption is a better choice.

I'd argue that ALL government official communications must be recorded and made public.

<comment><USER7> We tried to do that, but they set up their own servers, create Gmail accounts to be off FOIA, or switch over to off the record instant messenger.

</comment></comment></comment><comment><USER8> Wow, just finished watching House of Cards S4 and can't help thinking it is somehow based on the Clintons... :D

</comment><comment><USER9> The democrats I feel have elected the 1 person that could loose to Trump and the Hillary campaign keep making things worse. At this point I feel any vanilla Democrat will do better than Hillary in the elections

</comment><comment><USER10> If only they'd been using encryption...

</comment><comment><USER11> Is the leaker in legal danger?</comment>


TorrentTunes – BitTorrent-Based Music Streaming - <AUTHOR> https://github.com/tchoulihan/torrenttunes-client <comment><USER2> Very cool. I started to do something like this with WebTorrent but hit limitations on the seeds available (especially if you go down the WebRTC seed path). What's your seeding set up like?

</comment><comment><USER3> Will this keep a cache of all files I listen to, essentially building up my local music library as I listen?

How is incorrect meta-data handled?</comment>


Firefox 4: CSS3 calc() - <AUTHOR> http://hacks.mozilla.org/2010/06/css3-calc/

<comment><USER2> Of course, the humor here lies in the fact that IE has had dynamic CSS calculations since IE 5, but is now in the process of removing them – just as they are being standardized in other browsers.

For example [1]:
Content

These expressions (or "dynamic properties") essentially evaluated JScript embedded inside a stylesheet and provided some handy hacks to get around otherwise-painful bugs. This included simple math calculations as described in the Mozilla post, but also more complex transformations such as varying the style of an element based on the current day (or other JS-retrievable information).

Funny to see Mozilla phasing this in just as Microsoft phases something similar out [2].

[1] [http://blogs.msdn.com/b/ie/archive/2008/10/16/ending- express...](http://blogs.msdn.com/b/ie/archive/2008/10/16/ending- expressions.aspx)

[2] [http://msdn.microsoft.com/en- us/library/ms537634(VS.85).aspx...](http://msdn.microsoft.com/en- us/library/ms537634\(VS.85\).aspx#Implement)

<comment><USER3> The problem with Microsoft's implementation is that it allowed _any_ Javascript to be executed -- so CSS became a vector for XSS attacks (one of the early MySpace worms was based on this feature). This implementation only allows very basic math, and is so is inherently a lot safer.

<comment><USER2> Completely agree - Mozilla's scaled-back implementation, which appears to be closer in line with the standards track - is much safer and marks a better approach anyway (several at MS have been openly recommending against using dynamic attributes for some time now).

It's moves like this among vendors that force us to think about that line between "experimentation and innovation" vs. implementing "proprietary features."

As NathanKP mentioned below, we'd all do well to push vendors to come back together toward standard implementations across all popular browsers. Here's hoping.

</comment></comment></comment><comment><AUTHOR> Life would be so much easier if this were standardized!

</comment><comment><USER4> While calc() is nice, I rather have vars or defs so I can declare a color once and use it everywhere so if I decide to change the color I just change it in one place at the top.

<comment><USER5> Fortunately, you can use a pre-processor like SASS for that -- however, calc() allows you to do calculations at runtime which cannot be done in a pre- processor.

<comment><USER6> or use any of the various scripting languages (php, python, perl etc) to serve the css. Problem solved. Just do this behind a cgi or similar for development, and then just run it and save the output as a static file for production.

It's not like variables in a plain text string are a hard thing, for goodness sake.

<comment><USER7> width: 100% - 2px cannot be done via PHP. That's why this is very interesting. 100% changes depending on your browser window size.

<comment><USER6> well yes, but I was responding to the following from the GP, rather than discussing the power of calc()

> I rather have vars or defs so I can declare a color once...

</comment></comment></comment></comment></comment><comment><USER8> Tell me again why Mozilla keeps using the -moz prefix when it implements features of CSS3?

<comment><USER9> The calc() function is part of the CSS3 /Values & Units/ module[1] which is currently in Last Call status[2]. Here[3] are the status definitions that apply to CSS3. It doesn't make sense to remove the moz prefix until the standard is (probably) done changing.

In addition, mozilla's implementation of it is still in flux (since it's not done) and using the non-extension terminology for an in-development feature is a great way to convince people to use it and then screw them over when you change it.

Also, I found out about all this because you asked. So thanks for causing me to learn something new today :)

1) <http://www.w3.org/TR/css3-values/#calc>

2) <http://www.css3.info/modules/>

3) [http://www.css3.info/css3-development-status-an- explanation-...](http://www.css3.info/css3-development-status-an-explanation- of-w3c-maturity-levels/)

<comment><USER8> That was really helpful; thanks!

(And now I feel guilty about being too lazy to look up the answer myself.)

</comment></comment></comment><comment><USER10> I'm glad the mod operator is included, to make it easy to divide a page into n equally-sized blocks depending on some other parameter. I wonder if calc() will integrate with counters or otherwise allow the use of variables, or if that will remain the domain of JavaScript (I like having my pages work 100% without JavaScript if it's possible, to avoid NoScript issues). I guess I'll have to read the spec.

</comment><comment><USER11> The features of LESS seem like much more obvious lacks in CSS than this to me. (<http://lesscss.org/>)

</comment><comment><USER12> While CSS 3 gives you some new cool features, but they be another performance killers, so use it wisely.

e.g.

[http://support.mozilla.com/tiki- view_forum_thread.php?commen...](http://support.mozilla.com/tiki- view_forum_thread.php?comments_parentId=638706&forumId=1)

</comment><comment><USER13> I've been hoping for something like this ever since I ran across <http://www.marcoslot.net/alm.htm> . GUIs need programming too.

</comment><comment><USER14> I'm just curious, but this is _not_ similar to IE css filters, right?

<comment><USER15> No, it's more like IE CSS expressions, except you can't run arbitrary javascript with it.</comment></comment>


iTunes 12.7 removes app backup and ringtone sync - <AUTHOR> https://www.macobserver.com/news/product-news/itunes-12-7/ <comment><AUTHOR> I am very glad to see that app backups will no longer hog my SSD.

I don't quite understand the ringtone move, which seems like some downside and not much upside. I don't use any custom ringtones now but have in the past. It sounds like there's no way to do this now.

<comment><USER2> I originally thought the same. However, manual transfers of custom tones to devices is still available. I have 12.7 and confirmed this. It is done the same way (see bottom part of article HT207955 from Apple [https://support.apple.com/en-us/HT207955](https://support.apple.com/en- us/HT207955)).

The part that was removed is the ringtone _store_ , not manual ringtone management.

A lot of tech headlines are getting this wrong, however.

Though, removing app backup might have a huge impact on backup/restore speed for even local iOS device backups which is very annoying. Especially if it doesn't remember the set of apps you had in the backup.

If I get a new device and have to manually download every single app again, to me that is a ridiculous change.

<comment><AUTHOR> Yeah, I'm hoping/assuming that iTunes still remembers which apps you had loaded on your iPhone and where they were on the home screens. Otherwise I'll have to manually select and arrange every single app, which would be a nightmare.

Thanks for the ringtone store correction.

<comment><USER2> Sure! I use custom ringtones too and was glad to find out I still can. I'm tempted to try out device backup with one of my iOS devices just for the heck of finding out first-hand how it is impacted.

</comment></comment></comment></comment><comment><USER3> This is great. ITunes should be about music, not apps.</comment>


Malaysian airplane is not missing Its exactly where somebody designed it to be - <AUTHOR> http://www.worthytoshare.net/malaysian-airliner-missing-much

<comment><USER2> "The Art Bell Connection"

Most unsurprising headline EVAR. Put another layer of tinfoil on those hats, kiddos.</comment>


Beyond the default Rails environments - <AUTHOR> http://37signals.com/svn/posts/3535-beyond-the-default-rails-environments

<comment><USER2> The authors of the 12 factor app methodology seem to disagree:

"Another aspect of config management is grouping. Sometimes apps batch config into named groups (often called "environments") named after specific deploys, such as the development, test, and production environments in Rails. This method does not scale cleanly: as more deploys of the app are created, new environment names are necessary, such as staging or qa. As the project grows further, developers may add their own special environments like joes-staging, resulting in a combinatorial explosion of config which makes managing deploys of the app very brittle." -[http://www.12factor.net/config](http://www.12factor.net/config)

<comment><USER3> I don't think the two approaches are as far apart as they appear at first glance. Later on in the article they talk about removing Rails.env.production? from their code.

The twelve factor app calls for strict separation of config from code. I suspect that 37 signals has that, or pretty close.

Actually storing the config in environment variables is a Heroku-ism. There are other ways of doing it; chef is another good way. What matters is the strict separation.

<comment><USER4> I think that this is right. I also think that storing configuration information in environment variables doesn't scale past a handful of settings. I'm also not sure that it's the best way of storing secrets. If you're working in a real SOA environment, you may have dozens of external services to talk to, and possibly secrets for each one. At that point, you probably can't use environment variables. And, even if you do -- you'll be managing them in some sort of persistent storage, probably with versioning.

<comment><USER5> Another advantage of using environment rather than a config file for configuration is not leaving a file full of secrets lying around in your environment. And why is loading your environment so difficult? If I can put foo=bar in a config file, I can put export FOO='bar' in a startup script, and delete the startup script once the application has started.

<comment><USER6> This is wrong and dangerous. From whom are you trying to keep these variables secret? Assuming a sane sysadmin, sensitive files would only be readable by the user which needs to run the application. And environment variables can be read from the procfs file system by the same user that launched them: [http://serverfault.com/questions/66363/environment- variables...](http://serverfault.com/questions/66363/environment-variables-of- a-running-process-on-unix)

Not to mention that if an attacker has shell access to your application user account, you're already owned. So again, who are you trying to hide these variables from? Because it seems like this is just security theater and additional inconvenience (why delete and recreate the file on each deploy?) for literally no benefit.

</comment></comment></comment></comment></comment><comment><USER7> The custom configuration part of that is the most interesting. Sadly, we have a lot of Rails.env.production? scattered everywhere. I'm not sure I understand the examples DHH provided though.

<comment><USER8> He provides a more complete example on the github page: [https://github.com/dhh/custom_configuration/](https://github.com/dhh/custom_configuration/)

</comment></comment><comment><USER9> Yes, that is nice and all, but could we please remove the assumption that there will only be one database.

Yes, it is _possible_ to work with several at once, but automating the setup of an environment that have several databases, each with migrations, is no fun at all.

What would be really nice would be to have one list of databases, and one map between environments and databases.

</comment><comment><USER10> Is anyone else deeply concerned that 37signals puts actual production data into their non-production environments (which are inherently insecure given the nature of those environments and who needs access to them)?

<comment><USER11> No. If your non-production environments are less secure than your production environment, then you're doing something wrong. In fact, non-production environments generally have a much smaller population of users and they are tend to be more security minded. Or should be.

<comment><USER10> You're missing the point. In non-production environments a large user base (eg developers, etc) have direct access to the database as needed for development.

In production environments, they do not.

This is exactly why data masking technologies exist. To mask/transform production data in non-production to that non-production has meaningful data but not REAL data

<comment><USER12> I'm certain all 37s employees have access to the production database anyway; they're still a fairly small company.

The only real additional risk here is running non-production code against live data; e.g. the risk of a feature branch sending extra email to customers. Given the nature of their products this is probably manageable, assuming they don't run batch jobs (via eg. resque)

</comment></comment></comment></comment><comment><USER13> IMO, the existance of code to configure more then one production-like environment is an anti-pattern. The remedy is using configuration management (Chef/Puppet/whatever) to put the correct environment specific configuration into place in a non-executable config file. Any other policy will lead to environmental drift.

<comment><USER14> I'm not sure there is a substantive difference between "code" and a "non- executable config file". The latter is something that is read by an executable and which results in specific execution that differs by the content of the file; the difference between this and interpreted code is semantic rather than substantive.

E.g., for any combination of a YAML configuration file and a Ruby function which reads and applies it, there is a corresponding Ruby function which achieves exactly the same result without the configuration file.

There are other reasons to prefer the config file approach, but a policy which deploys the correct _code_ to each environment will have exactly the same behavior with regard to environmental drift as one which deploys identical code the correct _config_ file.

</comment></comment><comment><USER15> Tried this and it didn't work for me. I found each additional RAILS_ENV value was an annoying point of divergence between environments that should be as like as possible.

Eg, the whole point of staging is to be as like to production as possible, and running the staging server in RAILS_ENV=production is a dead easy way to accomplish this goal. For the very few differences (eg database config), I further refine the production environment by consulting a SECONDARY_ENV variable that may be set to either production or staging.

Eg, ideally CI is as close to the developer's test environment as possible, so that tests that pass locally pass in CI and vice-versa, and running the CI jobs in RAILS_ENV=test is a dead easy way to accomplish this goal. For the very few differences (eg using xvfb in CI), I further refine the test environment by consulting a CI variable that may be set to either true or false.</comment>


Marissa Mayer Clarifies: Search Is Only 10% Done, Not 90%  - <AUTHOR> http://www.techcrunch.com/2008/09/10/marissa-mayer-clarifies-search-is-only-10-done-not-90/ <comment><USER2> Because 10% is actually 90%, but there is only a 50% chance of that.

... Either way, the position in this article seems to make a lot more sense.</comment>


MachineLabs – Run Machine Learning Code in the Browser - <AUTHOR> https://blog.machinelabs.ai/2017/05/11/introducing-machinelabs/ <comment><USER2> I understand that this is notebook where user can write ML script and execute? How are you going to handle data upload to your service? Which libraries will be available? Do you support R and python?

How do you compare to Kaggle kernels?

<comment><AUTHOR> That's correct! You'll be able to execute your machine learning code in our cloud + plus you can share it with others for easy exploration.

For uploading data sets we're working on a resolver strategy that lets you specify endpoints from where the data can be downloaded before the lab is executed.

We'll provide containers with all common libraries. In the future you'll be able to configure your own containers which will allow you to run pretty much whatever you want.

<comment><USER2> Do you have public code for containers as Floydhub has? What machines are you using in your cloud? Can I specify the machine CPUs and RAM size? Do you have time/memory limit for job execution?

Your idea can be very interesting! :)

<comment><USER3> Christoph from MachineLabs here.

>>Do you have public code for containers as Floydhub has?

Can you elaborate what you mean with that?

>What machines are you using in your cloud? Can I specify the >machine CPUs and RAM size?

We'll have different hardware type categories. At the end it boils down to VPS on Google Cloud Engine running Ubuntu. That said, thinking long-term we'd love to give people access to things like Nvidia Tesla V100.

>Do you have time/memory limit for job execution?

Your experiments can run for as long as you wish (but you'll pay for everything that goes beyond free hours). Memory limits will be defined by the hardware category you chose when you run your lab.

Do you have specific requirements regarding memory or CPU/GPU power? We'd love to learn from people like you what the community needs.

<comment><USER2> The dockerfiles from Floydhub are public [https://github.com/floydhub/dockerfiles](https://github.com/floydhub/dockerfiles) \- they are very useful.

I don't have any specific requirements regarding memory or CPU - just asking. It will be nice, if I can use your service to run some kaggle kernels which take too long on kaggle.

<comment><USER3> Ah gotcha! Yes, ours will be public, too! We are just too busy ramping lots of things up for the private beta. But we'll definitely have these public.

Would love to get your signup for the private beta to get detailed feedback. Especially given your experience with kaggle.

[https://blog.machinelabs.ai/2017/05/11/introducing- machinela...](https://blog.machinelabs.ai/2017/05/11/introducing-machinelabs/)</comment></comment></comment></comment></comment></comment>


Supply Chain Attacks and Secure Software Updates - <AUTHOR> https://paragonie.com/blog/2017/09/supply-chain-attacks-and-secure-software-updates <comment><USER2> Great!</comment>


Welcome to the Virtual Age - <AUTHOR> https://www.oculus.com/en-us/blog/welcome-to-the-virtual-age/ <comment><USER2> > In the long run, once virtual humans are as individually quirky and > recognizable as real humans, VR will be the most social experience ever

Ha, surely a conversation with another real human person is the most social experience ever.. this sounds incredibly creepy.

</comment><comment><USER3> I have a big problem of getting headaches when watching 3D tv. There is a physical reason for this. Your brain thinks that when you look far away your eyeballs should elongate to change focus. So when viewing 3D tv the brain is confused.

Do virtual headsets have this same problem?</comment>


Ask HN: Open source distributed transaction coordinators (ala MSDTC)? - <AUTHOR>

I'm looking for a Transaction monitor that carries out 2PC or 3PC and conforms to XA standards. Would appreciate any pointers. <comment><USER2> [http://jotm.ow2.org/xwiki/bin/view/Main/WebHome](http://jotm.ow2.org/xwiki/bin/view/Main/WebHome)

[http://narayana.jboss.org/](http://narayana.jboss.org/)</comment>


Doctrine switches from LGPL to MIT - <AUTHOR> http://www.whitewashing.de/2012/05/26/doctrine_goes_mit.html

<comment><USER2> > Maybe with enough experience you start to realize that it happens close to > never that a proprietary fork of an open source project ends up outpacing > the original project.

Apple's MacOS uses BSD code. Safari uses WebKit. In terms of audience outreach, I think both have obviously outpaced the original.

<comment><USER3> Except that Apple contributes back to both, so while Apple may have "outpaced" the originals, the originals also benefitted from that.

<comment><USER4> My understanding was that Apple's big code dump back to WebKit/KHTML was not useful for the KDE project. Apple is following the OSS spirit in a technical sense but is not succeeding in actually working with community contributions in a meaningful way. Feel free to refute me, I have no evidence, but this was my understanding.

<comment><USER5> That was the case for the first two releases. After that the KHTML guys complained vocally (it made Slashdot) and Apple started to release diffs, then completely opened the dev process.

<comment><USER6> Pardon my ignorence, but what does "completely opened the dev process" mean?

<comment><USER7> <http://trac.webkit.org/>

</comment></comment></comment></comment></comment></comment><comment><USER8> It is a pity that the article does not explain why the change. I assume that the MIT license is more permissive than an LGPL license but since LGPL allows use in closed source projects what else does MIT brings to the table?

<comment><USER9> LGPL doesn't allow use _in_ closed source projects, it allows use _with_ them. So you can use LGPL dynamically linked library with a closed program (that's what LGPL was made for), but you can't just embed LGPL library with no source and way to replace it like you can with more permissive licenses.

</comment></comment><comment><USER10> Since everyone loves tortured analogies, MIT/BSD is like handing out free pencil sharpeners. "Enjoy! Just don't misrepresent where you got it from." GPL is like handing out free pencil sharpeners but requiring that everyone share everything they write using any pencil that was sharpened with it.

<comment><USER11> The GPL doesn't restrict the products of tools.

I think a GPL-like extension of a pencil sharpener would be the following. You develop a new pencil sharpener that copies 90% of the original design but includes a sharper blade that makes nicer pencil tips; when you release that product, you must show everyone how your pencil sharpener is designed and definitely must not prevent anyone from seeing how the original (that you started with) was designed.</comment></comment>


Google+, the pseudonym banstick, and the netizen cultural schism. - <AUTHOR> http://point7.wordpress.com/2011/07/24/google-the-pseudonym-banstick-and-the-netizen-cultural-schism/

<comment><USER2> Good job. Truly wasn't expecting to feel as apprehensive about G+ as I do about FB.

</comment><comment><USER3> Great Article and The Author is Pretty Darned Smart to.

</comment><comment><USER4> Google will hear us on this if we just speak up.

</comment><comment><USER5> Hopefully Google will take a note sooner.

</comment><comment><USER6> this is salient, well written thoughtful piece.</comment>


Modern Ruby Development - <AUTHOR> http://ascarter.net/2011/09/25/modern-ruby-development.html <comment><USER2> Interesting guide, one thing I find lacking in ruby is longevity in projects. Too much cool new stuff, why not just work out the bugs in the existing projects instead? Of course it's easier to write a new half-assed implementation than getting the hard last percent done.

Interesting that he roots for homebrew over macports and rbenv over rvm while at the same time voting for capistrano. Of those 3 projects I find macports and rvm to do what I need from them perfectly and capistrano to be really lacking in both performance and complexity.

<comment><USER3> Capistrano is lacking, but has fewer good alternatives. What would you recommend over it?

<comment><USER4> Back when I was doing Ruby I was always fond of Vlad the Deployer: <http://rubyhitsquad.com/Vlad_the_Deployer.html> No idea if it's aged well.

<comment><USER3> Vlad's not bad. There's a similar project called Fezzik that I use extensively for non-Rails projects. Neither is as good as Capistrano _if_ you're deploying a Rails project.

</comment></comment></comment></comment><comment><USER5> Personally, I don't understand the hype of rubyenv. I really love rvm. I'm not sure why the author called rvm a "mess of bash scripts". I guess because rvm has a lot of features? If I did not care for gemsets and all of the other niceties that rvm has, I guess I would be on the market for another ruby manager. The fact that the author of this article was rubbed the wrong way by Wayne and rvm, rubbed me the wrong way.

<comment><USER6> He probably called it a "mess of bash scripts" because, uh, it is a mess of bash scripts. Have you looked at the implementation? RVM is amazing in the functionality it has, don't get me wrong, but it hacks into your shell in some nasty ways and when things go wrong good luck figuring out why without diving deep into the underlying bash.

<comment><USER7> When you have a new box, or when things go wrong, is probably the time to try out "rvm implode" and try rbenv. Reinstalling rubies takes some time and it looks like there might be some time required to configure/fix existing apps to use rbenv?

</comment></comment></comment><comment><USER8> Sorry guys, but this post is silly. What is modern on "ruby development" on mac? Why use zsh, xcode? "ruby development" doesn't mean you are doing rails.

<comment><USER9> There's nothing silly about a developer sharing his preferred development configuration.

Also, you glossed over the fact that he's not installing Xcode so that he can use its IDE; rather, he's installing to get LLVM/GCC easily. He makes it clear that ZSH is his preference and that he recommends it.

The vast majority of developers looking for a guide to set up their machine for Ruby development will be Rails developers. Denying that is silly.

<comment><USER8> You're right, there's nothing bad on sharing someone's preferred config.

Calling that "modern ruby development" is silly.

<comment><USER10> i m moved to gedit and redcar from netbeans on ubuntu for any ruby development. on ubuntu does anyone have any recommendations?

<comment><USER11> Try RubyMine from JetBrains, a very slick product, and worth paying for (I don't pay for much but JetBrains IDEs I make an exception for).

In true HN tradition, I must urge you to try Vim. I found this very helpful when I first start: [http://yannesposito.com/Scratch/en/blog/Learn-Vim- Progressiv...](http://yannesposito.com/Scratch/en/blog/Learn-Vim- Progressively/)

<comment><USER12> Sometime I don't understand people that use Vim for everything.

I used Vim casually so I'm not an expert. I understand that it'll take a while to master it. But compare to netbeans where you can navigate Ruby code quite fast (shortcut to method implementation, class implementation, project browse, auto-suggest, etc), why would I want to use Vim when I have to find the proper plugins (not just one, but a few) before I can be productive (assuming they can do what I mentioned above).

<comment><USER13> As a netbeans user but vim fanatic. I really like netbeans for project management, but vim is awesome for just manipulating text tons faster than you can with netbeans. Try the jVi plugin for netbeans to get that text editing power of vim with the project management features of netbeans.

<comment><USER12> In my line of duty, most of the time spent in reading code, not writing code.

Even when we were building version 1.0 of the software, there aren't too many text editing as opposed to navigating the code tree.

Isn't dynamic/scripting languages like Ruby and Python produced way less code than Java? (Hence, less typing again).

So this is why I don't quite get the group of people that swear by vim.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14>
      If you want to set your login shell to zsh, go to System
      Preferences -> Users and Groups. Right-click on your user
      account and select Advanced Options. Change the login shell
      dropdown to /bin/zsh.

You're better off using `chsh -s /bin/zsh` (or, better yet, `brew install zsh`, append `/usr/local/bin/zsh` to `/etc/shells`, and use that, instead).

</comment><comment><USER15> Software that lacks a good uninstaller is always suspect, to me. It makes me smile to know that this is all that's necessary to remove RVM:

      > rvm implode

How's rbenv for uninstallation? I'm familiar-enough with rvm that I know I can restore absolutely everything from scratch with a couple config options and a while for compilation - I'm more than happy to spend that to experiment as long as rbenv has a similar panic-button.

<comment><USER16> You just delete your clone of the git repo and remove the oneliner from your .bash_profile

</comment></comment><comment><USER17> This article tells me that i'm not modern because I don't use a Mac, I don't like zsh, I prefer Mercurial, and so on.

Why isn't it titled "My brand new Rails development stack on Mac"?

</comment><comment><USER18> I thought this post would be about Ruby, but instead it's about Rails. Sort of. :(

<comment><USER19> Alright, let's do ruby then. I use vim with Ri, Rdoc, and ack-grep plugins (<https://github.com/kristopolous/vimbuild>) and then use irb with a bunch of extensions ([http://stackoverflow.com/questions/2952793/anything-like- bpy...](http://stackoverflow.com/questions/2952793/anything-like-bpython-for- ruby)) but there is nothing out there that makes my life phenomenally easy yet (for instance, some really awesome code navigation tool). zsh has built-in autocomplete for ri; try running zsh then do "ri <tab>" (<http://qaa.ath.cx/ri.png>); that ought to win you to at least having it installed. And yes, you can do "ri XXX#<tab>" for the second level! (<http://qaa.ath.cx/ri-kernel.png>)

For the record, I do straight ruby; I don't even know how to deploy rails.

<comment><USER20> How are you getting this completion from ri ? I use zsh, and the rvm's ri (.rvm/rubies/ruby-1.9.2-head/bin/ri) gives _no_ completion at all (ri 2.5.8).

However, /usr/bin/ri (ri v1.0.1 - 20041108) does give completion but different from your list. ri K<tab> gives Classes and methods (e.g. Kconv\\#guess) and not just classes. So it's a huge list. Thx.

</comment></comment></comment><comment><USER21> It's always interesting to see differences in people's 'base' stacks. Where feasible I like to have the environment on my dev machine reflect production as closely as possible so I would go with Passenger over Pow, but this is a great little guide.

<comment><USER22> That's what I use Vagrant for: attempting to mimic production machines as close as possible. But that only happens as I'm testing before a release. Otherwise I use the easiest / best tool for the OS and machine that I'm developing on.

</comment></comment><comment><USER23> I actually miss vagrant/virtualbox in the stack. Why not use a virtual dev environment for every project you're working on. It seems silly to me to install all required components for each and every project on my dev machine, possibly with different/conflicting versions (think: multiple pg server versions etc.) instead of having a self contained environment for every project.

</comment><comment><USER24> I thought the ad-hominem-ish bit about rvm was disappointing. The Ruby landscape is a weird place where each project belongs to one and only one name. Instead of improving on projects, people prefer to invent their own, and then the drama race begins. Open your Gemfile and try to find a gem with a truck factor != 1.

I think it is natural and understandable because there are many Ruby freelancers around who desire to build a brand around their name. But the "competition" between rbenv and rvm was not constructive at all so far. It would be much more helpful if there was one .rubyversion file that both would respect, for starters.

</comment><comment><USER25> Interesting...still weighing whether I want to familiarise myself with Ruby/RoR or if I should continue to enhance my python skills and learn Django...I think the fact that more people are talking about Ruby development may sway me towards RoR

<comment><USER26> Depends, if I look at my local job listings where there's one ruby listing for every 10 python ones I'd say different but I'll admit that that ratio is abnormally high but indicates that the same trend governs most places bar Chicago. However, if I look at HN submissions, it's almost the other way around. Given that I've worked in three countries in the last 5 years and noticed the same trend in all of them, I am starting to think that Ruby developers are simply more evangelist.

</comment></comment><comment><USER27> you're probably better off not installing all of x-code when all you want is GCC. Try this instead: <https://github.com/kennethreitz/osx-gcc-installer>

</comment><comment><USER28> Any recommendations for a good beginner ruby/rails book? Coming from a PHP world, but want to learn something new.

<comment><USER29> For tutorial/walkthrough with lots of example small scripts _Beginning Ruby, 2nd ed_ by Peter Cooper. For a straight reference _The Ruby Programming Language_ by David Flanagan and Yukihiro Matsumoto. A middle-ground (tutorial first half; reference second half): _Programming Ruby 1.9_ (aka, the Pickaxe Book) by Dave Thomas.

A great second book (maybe even first if you're comfortable enough learning basic syntax on your own) is _Eloquent Ruby_ by Russ Olsen.

</comment></comment><comment><USER30> _A huge flaw of Mac OS X is the lack of a proper package manager._

Mac OS X does provide a package manager - the App Store.

<comment><USER20> I've been using macports for ages, nothing wrong with it. Okay, it does not check to see the stock installs of OSX, and installs its own ruby, perl, python etc. Apart from that it's been very reliable.

<comment><USER15> My main problem with macports has been that it occasionally does not play nicely with manual source-installs, or any other package manager. And damn near everything needs sudo.

Everything I've needed has been available in homebrew, and more up-to-date and better isolated and hasn't collided with anything yet. I haven't used it as long as I've used macports, but so far it has been a _far_ more pleasant experience. And _incomparably_ faster - I swear, macports has a sleep() call in every operation. Very much recommended if you haven't tried it, and it cleans up nicely too - you just delete its single folder.

</comment></comment></comment><comment><USER31>
        source "http://rubygems.org"

should be

        gem source "http://rubygems.org"

<comment><USER32> The bundler docs show the former: <http://gembundler.com/gemfile.html></comment></comment>