Steve Klabnik Quits Job to Work on Hackety Hack - <AUTHOR> http://blog.steveklabnik.com/the-hardest-decision-ive-ever-made <comment><USER2> "Quits Job" is really misleading. Steve didn't work for Cisco or Apple. He was the technical side of a 2-man team which became the doll of AlphaLab and earned the respect (and money) of one of Pittsburgh's most admired angels.

Most of HN will see the net win for Hackety Hack, and that's fair enough, but I'm sorry he won't be on the front lines of CloudFab's campaign to disrupt rapid prototyping. I loved the wild-eyed way he talked about upending the industry, and he and cofounder Nick Pinkston formed exactly the mad-scientist- meets-cunning-business-guy pair you could see pulling it off. So while I know this move had to happen and I support his decision, I also think another (admittedly very different) cause will suffer for its loss of an important contributor/activist.

</comment><comment><USER3> Hackety Hack is a perfect example of what's wrong with the Ruby community. Yes, I know Hackety was created by _why, and everyone here loves _why, and the goal of teaching children to program is undeniably laudable, but that doesn't change the fact that this is not the right way to go about it.

The Ruby community is both ahistorical and insular. Most Ruby programmers came to Ruby from Java, PHP or some other mainstream language and have an uninformed opinion about Ruby's merit as a language and its place in the wider world of programming languages. The proof of this is their tendency to excessively tout features that Ruby borrowed from Lisp, Smalltalk and Perl, often with an implication that these features are unique or somehow special to Ruby when they have sometimes existed in other languages for decades (e.g., blocks, metaprogramming or flexible, TIMTOWTDI syntax) and often in a better form. (Compare Smalltalk's blocks, which are always real objects, to Ruby's, which need to be converted into Procs if you wish to treat them like objects).

The main issue I have with Hackety Hack is the existence of a mature, Smalltalk-based alternative named Squeak. Smalltalk is a much, much simpler language than Ruby and has a history of being used to tech children programming dating back to the 1970s. Squeak also has Scratch, EToys and Morphic. What exactly does Ruby bring to the table, other than nicer looking websites, bigger egos and curly braces? Would it kill Rubyists to learn a little bit about the languages that influenced Ruby and other non-mainstream or academic languages, to at see what they might be missing out on?

<comment><USER4> I can't say much about the broader Ruby community, but I personally am really interested in languages, and have made it a point to be as much of a polyglot as possible.

While I understand what you're trying to say, here's my perspective: even though many parts of Ruby have come from other languages, it's about the tradeoffs that were made. Blocks are actually a great example: what matz did was realize that often, you're only passing one anonymous function to another, and so he added special syntax to make it nicer. Procs aren't some conversion tool to upgrade blocks, Procs are the general case, and blocks are just a special one. That said, I can't remember the last time I actually needed to type Proc.new. With that said, you may disagree, but you can see where I'm getting at. Just because something did it _first_ doesn't mean they did it best. But that really comes down to taste, right?

> The main issue I have with Hackety Hack is the existence of a mature, > Smalltalk-based alternative named Squeak.

The main issue I have with Squeak is that it's Smalltalk. ;) Smalltalk is a fine language, but I can't get into the whole image thing. I really have nothing new to add to this; my arguments are old and tired.

> What exactly does Ruby bring to the table, other than nicer looking > websites, bigger egos and curly braces?

While we're on this whole "educate others about language features" kick, Rubyists almost never use curly braces. One-line blocks are the only time. ;)

> Squeak also has Scratch, EToys and Morphic.

What Ruby brings to the table is being an actual programming language, rather than a bunch of blocks you put together. I don't mean to demean Scratch, it's done a lot of good, and is a great project in its own way. However, I don't think that 'teaching programming' is a zero-sum, winner take all market. Hackety and Scratch can coexist just fine.

<comment><USER3> "Blocks are actually a great example: what matz did was realize that often, you're only passing one anonymous function to another, and so he added special syntax to make it nicer."

This argument, that you almost never need to pass in more than one block to a method, is true, only because Ruby doesn't as elegantly support the alternative. If it did, then you'd probably have plenty of multiblock methods like do:separatedBy: as you do in Smalltalk.

"With that said, you may disagree, but you can see where I'm getting at. Just because something did it _first_ doesn't mean they did it best."

So Smalltalk's blocks, which are versatile enough to be the basis for the language's control structures, are inferior to the block, proc, lambda trifecta of Ruby? Are you seriously telling me that you wouldn't prefer Ruby just have procs (real objects) with the block syntactic sugar and maybe also lamdbas, for their different return behavior?

"Smalltalk is a fine language, but I can't get into the whole image thing."

I used to feel the same way, but that was because I didn't understand the image. To me it was some digital blob with code and program state in it; I was always scared of breaking it or losing code. Then I learned how to actually use it, thanks to Squeak/Pharo by Example. Now I wouldn't have it any other way.

"While we're on this whole "educate others about language features" kick, Rubyists almost never use curly braces. One-line blocks are the only time. ;)"

Ruby is a curly brace language even if Rubyists opt not to use them; syntactically it belongs to the C family of languages, which are the "curly brace" languages.

<comment><USER4> We're just going to have to agree to disagree over preferences here. Enjoy Smalltalk, it's great.

</comment></comment></comment></comment><comment><USER5> Steve, like many here, is one of those people who seems to be good at whatever he tries. So he finds himself caught between the worlds of science and humanities. No big surprise in a kingdom of hackers and painters.

Having met Steve both here and IRL, I have little doubt he'll be successful.

Best wishes, Steve, and keep us posted. I'm sure many of us here in similar situations are looking forward to learning something from your journey.

</comment><comment><USER6> I have a double-major in Computer Science and Latin, and the history/rhetoric/linguistics that you learn from studying humanities is mind- opening. (Paul Graham compared Latin and Lisp in this way.)

And if you manage to do a literary analysis with NTLK or something, combining the two, your professors will realize that that's pretty cool.

</comment><comment><USER7> Godspeed. Get out there and teach some kids how to care about something other than Call of Grand Theft Warcraft.

</comment><comment><USER8> I love HN. I am learning Python right now but trudging through phonebooks of manuals isn't exactly the most fun I've ever had. This looks like a completely different approach and I never would have known about it if not for HN. Thanks to YC for this fantastic resource.

<comment><USER4> Thanks daimyoyo. If you're learning Python, have you checked out Zed Shaw's <http://learnpythonthehardway.org/> ? It's a solid resource for people with no prior programming experience.

That said... please feel free to get a hold of me with any thoughts, criticisms, problems, or praise with Hackety. There's a reason it's not 1.0 yet, and feedback is the only way I can make it better.

</comment></comment><comment><USER9> Good luck!

This is a momentous leap, but Hackety Hack is an amazing project, and totally worth it.

<comment><USER4> Thanks. I think so too. There's a lot of things I want to do with it... but one foot in front of the other!

</comment></comment><comment><USER10> "Do what you love and the money will follow" -my Mom

Best of luck Steve. Props to you for living the life _you_ want to lead. Now that's a great way to inspire children in and of itself.

<comment><USER4> Thanks. Your mom isn't my mom, is she? ;) Sounds familiar.

</comment></comment><comment><USER11> Sweet! Steve: will we see a major rewrite of Hackety Hack now that you have all day to think about it?

<comment><USER4> First of all, I don't quite have all day: I'm still doing some other stuff to make rent. But more of the day. :)

As for a re-write, Hackety (for the most part) is actually in a really good place. It's already undergone one huge reorganization in the last few months, I don't see it as being time for another yet. Most of the work it needs now is polish.

That said, there is something that's undergoing a total re-write, and has been taking up more of my time: Shoes. Shoes is part of Hackety, as far as I'm concerned, and so I've been putting a lot of effort into it as well. But if you haven't heard about that... you will soon. Lots of good things coming there, and making Shoes better makes Hackety better by association.

<comment><USER11> Sounds awesome. Looking forward to the upgrades.

[If you're planning on a web-based version of shoes and want feedback, I'd love to help however I can. My e-mail is in my profile.]

</comment></comment></comment><comment><USER12> so weird that hackety continues without _why, considering it is such an obvious outpouring of _why's brain.

<comment><USER4> I think it's his most important work. I really identify with the Little Coder's Predicament: I was that exact kid, playing around with BASIC when I was 7, making little games. I wouldn't be here if it wasn't for that.</comment></comment>


How Blockchain Will Change Your Life - <AUTHOR> http://www.wsj.com/articles/how-blockchain-will-change-your-life-1478564751 <comment><USER2> First off, when did "blockchain" become an uncountable noun? "blockchains" or "blockchain technology" sounds much more natural.

Anyways, I wish more people in the media would differentiate between the Merkel tree, providing the immutable ledger part, and the proof-of-work distributed consensus algorithm, which provides some degree of trust through burning an ever-increasing amount of power. Most of the benefits the author lists would be true of just the Merkel tree without needing the wasteful proof-of-work consensus system, if it's used between trusted parties. Also, even if there's not complete trust, it would still provide an audit trail so that appropriate actions could be taken against bad actors.

When the author later talks about governance boards, that just underscores the incongruity even more. While I'm sure governance boards could be shoehorned into some DAO-like system over distributed consensus, it seems a lot easier to just get rid of the whole distributed consensus altogether and give some digital signatures to the governance board that can sign/bless the Merkel tree.

<comment><USER3> _Most of the benefits the author lists would be true of just the Merkel tree without needing the wasteful proof-of-work consensus system, if it 's used between trusted parties._

The parties don't have to be trusted. It's the opposite. A good blockchain needs mutually mistrustful parties who are not anonymous. If somebody tries to tamper with the ledger, all the other parties can easily tell who did it. It takes collusion of all parties to change history invisibly. Thus, you want parties who are not entirely cooperative.

<comment><USER4> > The parties don't have to be trusted.

Actually, zwenger was right. Without a proof of work, they do.

What's a blockchain? It's a data structure with a cryptographically strong CRC mechanism. But there's nothing stopping me from writing a new set of data into a new chain and passing it off as the original.

Sure, you may notice, but you can't prove my new chain is forged. I'll say the backup chain you're using as proof is the forgery...

It takes a proof of work to make the chain effectively uneditable. (Uneditable without paying for the work, which has been selected to be too expensive to be practical.)

<comment><USER5> > Sure, you may notice, but you can't prove my new chain is forged. I'll say > the backup chain you're using as proof is the forgery...

If the items in the chain have digital signatures, you can prove that the people they're signed by contradicted themselves (or lost control of their signing keys). In Bitcoin people have felt that this wasn't good enough by itself, perhaps because there's not necessarily recourse against a counterparty who double-spends money, but you can still show that the double- spend attempt _happened_ and who (in the sense of a signing key/address) was responsible for it.

<comment><USER4> If the signatures are enough, you don't need the chain. If the signatures aren't enough, you need the chain _and_ a proof of work.

<comment><USER6> You can use a "blockchain", an enforcer of security deposit against double spending rather than as the raw double spend prevention mechanism.[0]

[0] [https://eprint.iacr.org/2016/1033](https://eprint.iacr.org/2016/1033)

<comment><USER5> "Soothly we live in mighty years!"

It looks like the underlying mechanism that they use for this was described in

[https://dl.acm.org/citation.cfm?doid=2810103.2813686](https://dl.acm.org/citation.cfm?doid=2810103.2813686)

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> I can't help but plug my take on why enterprise blockchains are almost entirely bullshit: [https://medium.com/@qertoip/enterprise-blockchains-are-a- hug...](https://medium.com/@qertoip/enterprise-blockchains-are-a-huge- overpromise-7ca2d19324b3)

<comment><USER8> Before I founded a company[1] in this space I investigated blockchain applications for JPM and I agree with your take on bitcoin-style blockchains being mostly BS for industry. I'd take it a step further to note that mining is incompatible with private blockchains of any form because the new coins+fees incentive structure doesn't exist.

Permissioned/Private Blockchains don't need to look like Bitcoin, they just need to offer many of the same features plus a few more. What we're really talking about is a database that competitors can share, which is largely inspired by Bitcoin's system. Some things it needs to actually work:

\- Vastly increased performance: 5-15 transactions per second is useless for industrial use.

\- Smart Contract languages designed for safety over generality: more of an empowered SQL than a C/Go. Tokenization doesn't provide enough of a benefit over traditional approaches and generalized computation is too dangerous.

\- Deterministic BFT Consensus: this is to replace mining + remove anonymous participation, it needs to be fast and scale.

\- Confidential transaction support: the trickiest of the lot, as we cannot currently hit performance + double-spend protection at once.

In case you're curious what our approach is: BFT Raft-like for consensus (8k-12k trans/sec), soon to be open sourced smart contract language, signal protocol over the chain for confidential stuff.

[1]: [http://kadena.io](http://kadena.io)

<comment><USER9> >What we're really talking about is a database that competitors can share

>BFT Raft-like for consensus

exactly. Blockchain right now is just the most "simple" and open format of sharable append-only-log-structured database and consensus protocol for it.

<comment><USER10> It's still a blockchain though. Bitcoin is also a database-backed BFT consensus, with a fixed transaction batch size, a fixed data schema, and a probabilistic consensus/BFT algorithm.

Deterministic BFT consensus systems that maintain linear, incrementally-hashed logs are blockchains with a block size of 1. Since they are so much faster, the block concept is unnecessary.

<comment><USER11> If the block size is 1, is it still a chain?

<comment><USER8> Of course. If Bitcoin dropped the number of transactions per block to 1 tomorrow would it stop being a blockchain?

<comment><USER11> I must have misinterpreted the statement. It felt like block count rather than size in the context of the sentence.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> I still love the fact that in this age of social sharing and selfies we don't really know who invented this revolutionary technology.

<comment><USER13> That's not particularly surprising. If you're smart enough to implement and seed a distributed Merkle tree ledger you're smart enough to extrapolate the implications of indiscriminately offering yourself as an indefinitely persisted data feed.

<comment><USER14> That's a nice rationalization of the situation, but history shows that being smart enough to do one thing has almost no correlation with being smart enough to do any other specific thing that wasn't already necessary to do the first. I doubt the ability to implement blockchains has anything to do with such socio-political analysis, and so should you.

<comment><USER15> I would say expertise in cryptography correlates with expertise in keeping your information private, no?

<comment><USER16> Expertise yes, but not necessarily desire to keep your information private. There are many expert cryptographers who are much more public than Satoshi.

<comment><USER15> It wasn't a question of motive, but of skill.

<comment><USER17> That's a good way of putting it. Many other people in a similar position may have chosen to be public. Many other people would have chosen to remain private but failed at. It takes skill to chose to remain private about something like this in a way the remains (at least so far) resistant to at least som concerted skilled effort to find you.

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> I am literally writing a book about this. And boy am I read up on the hype. [http://davidgerard.co.uk/bitcoin/](http://davidgerard.co.uk/bitcoin/)

Everything in this article is content-free BS.

"80% of banks are working on blockchain projects" \- this means they've told someone to "investigate", which doesn't in any way mean a product is in the offing.

And so on with all the other claimed examples.

The product here is the Hyperledger initiative, run by IBM. The "IBM Blockchain – What is Blockchain?" page is a good example of content-free Blockchain hype:

[http://www.ibm.com/blockchain/what_is_blockchain.html](http://www.ibm.com/blockchain/what_is_blockchain.html)

Almost every "is" on that page is a "might" or "could" – no blockchain does all the things it describes in present-day terms, and particularly not any of the code dumps at Hyperledger.org.

Hyperledger.org is a corporate open source Potemkin village of the sort IBM has long favoured: the illusion of an open project, with no "there" there. I spent half an hour dredging the site and could not find one clear statement of _what this software is actually intended to do_ , let alone differences from and similarities to existing blockchains. Even Bitcoin blog CoinDesk noted: "Among the doubts facing Hyperledger is a perceived lack of clarity on what might be ultimately produced by the initiative."

If you click long enough, you'll find a page where the participating companies have dumped their unfinished blockchain experiments. The main code contributor is Digital Asset Holdings, who dumped Hyperledger Fabric there; their joining announcement (on their own site, not hyperledger.org) gives as technical details only that Hyperledger is an append-only ledger and has an actual Bitcoin-style blockchain in it.

(This makes it more "blockchain" than others. e.g., R3 Corda is a "Blockchain Product" that doesn't include a blockchain in its default configuration. The key factor to "Business Blockchain" is that any examples that work, aren't actually a blockchain. You get Merkle trees just shoving your transactions into a git repo.)

As Hyperledger found out, all manner of businesses – financial institutions, beef industry, shoe brands, confectioners – don't want to share data even with all participants in their blockchain, but only with the people the specific deal is actually with, funnily enough:

[https://lists.hyperledger.org/pipermail/hyperledger- requirem...](https://lists.hyperledger.org/pipermail/hyperledger-requirements- wg/2016-September/000012.html)

[https://lists.hyperledger.org/pipermail/hyperledger- technica...](https://lists.hyperledger.org/pipermail/hyperledger-technical- discuss/2016-September/000391.html)

This was apparently news to them. It turns out that IBM set up an elaborate hammer design consortium without first finding out if there are nails.

<comment><USER19> The lack of clarity is kind of a feature, as Hyperledger is intended to be a modular, completely general framework for building any possible blockchain you can imagine.

<comment><USER18> Also, airy promises are not only cheap - it's a dessert wax _and_ a floor topping! - but highly available and widely distributed in the Business Blockchain environment!

The other main code dump on hyperledger.org is Intel's. Their "Sawtooth Lake" replaces the blitheringly stupid and wasteful Proof of Work with something equally stupid but less wasteful, Proof of Elapsed Time, which might as well be called Proof of Buying An Intel CPU. Rather than have miners compete to produce the next block, a timer running in an environment secured by a DRM mechanism built into your Intel CPU picks if you get to do the next block. The white paper is an extended advertisement for Intel® Software Guard Extensions™ (SGX™). Also, they only have a simulated Proof of Buying An Intel CPU mechanism as yet.

[https://intelledger.github.io/introduction.html](https://intelledger.github.io/introduction.html)

This doesn't provide any security against malicious participants; the excuse is that private blockchains need speed over security. You might think that at that point you don't need a blockchain at all, but you're hardly going to sell any consultant hours with _that_ sort of thinking.

<comment><USER20> OK, now I want to buy your book!

<comment><USER18> There's a link on my site to go on the alerts mailing list :-) It's literally not finished yet. (21,284 words of body text at this moment and I have maybe 5k-10k to add. I was _targeting_ 15k for a quickly dashed-off Kindle short, and I appear to have turned the project into a miniature Sistine chapel.) I have excerpts from the draft up at the site. Which I just moved to [http://davidgerard.co.uk/blockchain/](http://davidgerard.co.uk/blockchain/) .

</comment></comment></comment></comment></comment><comment><USER21> I didn't know that over 600 firms have applied to join the Hyperledger consortium. That seems like a large number.

</comment><comment><USER22> The article didn't mention tokenization of shares and token-based fund- raising. Presently, that is a far more disruptive and interesting use case for blockchains.

<comment><USER23> Do you have any examples?

<comment> TD-Linux The DAO. It was, indeed, pretty disruptive.

</comment></comment></comment><comment><USER24> This raises the question: what will blockchain mean for web?

<comment><USER25> Trusted deployments of SaaS like software on your own infrastructure, for one thing. Using the merkle tree plus some currency's consensus gives us a path to trusted software deployment models, done on trusted infrastructure.

<comment><USER26> Doubtful that it would involve a currency consensus, but the cryptographically-auditable log portion is right

</comment></comment></comment><comment><USER27> To Read the Full Story, Subscribe or Sign In

<comment><USER28> Click the "web" link under the title and then choose the article from the Google search results.

</comment></comment><comment><USER29> The article is behind a paywall so here is the article text -

 _How Blockchain Will Change Your Life

The technology's potential goes way beyond finance.

By GINNI ROMETTY Nov. 7, 2016 7:25 p.m. ET

Until the mid-1990s, the internet was little more than an arcane set of technical standards used by academics. Few predicted the profound effect it would have on society. Today, blockchain—the technology behind the digital currency bitcoin—might seem like a trinket for computer geeks. But once widely adopted, it will transform the world.

Blockchain offers a way to track items or transactions using a shared digital "ledger." Blocks of new transactions are added at the end of the chain, and encryption ensures that it remains unbroken—tamper-proof and error-free. This is significantly more efficient than the current methods for logging and sharing such information.

Consider the process of buying a house, a complex transaction involving banks, attorneys, title companies, insurers, regulators, tax agencies and inspectors. They all maintain separate records, and it's costly to verify and record each step. That's why the average closing takes roughly 50 days. Blockchain offers a solution: a trusted, immutable digital ledger, visible to all participants, that shows every element of the transaction.

Financial institutions are becoming early adopters: The World Economic Forum estimates that 80% of banks are working on blockchain projects. CLS, the world's largest multicurrency cash-settlement system, is implementing blockchain in the foreign-exchange market. The Bank of Tokyo-Mitsubishi UFJ has developed a smart-contract prototype for multiparty business transactions. China UnionPay is using blockchain for loyalty programs that operate across multiple banks.

But the potential goes beyond finance. We at IBM estimate that applying blockchain to global supply chains could generate more than $100 billion in annual efficiencies. Toyota and the U.S. Postal Service are exploring this already.

Visa and DocuSign are working on a blockchain system that enables a car buyer to sit in the driver's seat, configure the aspects of a lease on the dashboard, and drive away immediately. La'Zooz, an Israel startup, has a blockchain ride-sharing app that allows drivers to connect directly with customers, without needing a middleman like Uber or Lyft.

All of this is promising. But for blockchain to go beyond pilots, the technology needs a system of transparent governance. Remember what guided the development of the internet: not-for-profit groups like the Internet Engineering Task Force and the World Wide Web Consortium. Their involvement gave businesses confidence that the internet would be stable and based on open standards.

The same must be true for blockchain. More than 80 leading finance and technology organizations, including IBM, have joined the Linux Foundation Hyperledger, a project aimed at creating an enterprise-grade blockchain framework. More than 600 additional firms have already applied to join the consortium.

There's one more lesson to draw from the early days of the internet. If you had understood in 1995 the opportunities and threats it would ultimately present to your company or industry, what would you have done differently—to become the disrupter rather than the disrupted? That is where we are with blockchain today.

Ms. Rometty is the chairman, president and CEO of IBM._

<comment><USER30> "Blockchain" ... not even "the block chain"..

Already can tell this person is a PR manager and knows nothing about the technicalities and only about buzzwords used to entice investors.

This is like saying "How Internet Will Change Your Life" instead of "the internet".

<comment><USER18> It is consistently true that any writeup that says "Blockchain" (capital B, no article) will be somewhere between wrong and not-even-wrong.

I commend to you "Ignoring Blockchain Is Corporate Suicide: Why Blockchain is the biggest single threat to all CEOs for destroying corporate value" by Nick Ayton, in analyst newsletter Innovation Enterprise (7 July 2016). In the several years I've been following Bitcoin and blockchains, this is the single worst, stupidest and most incoherent piece of "Blockchain" hype I've seen; you definitely need to read it, to inoculate yourself against the worst excesses of this foolishness.

[https://channels.theinnovationenterprise.com/articles/ignori...](https://channels.theinnovationenterprise.com/articles/ignoring- blockchain-is-corporate-suicide)

first comment: "Did a Markov chain generate this horseshit?"

</comment></comment></comment><comment><USER31> Blockchains are a solution looking for a problem.

There's a very small niche problem that blockchain is actively solving and that is the enrichment of ICO founders.

Ethereum, Zcash, Ripple, Siacoin, Monero are all essentially the penny stock pump & dump scams of the early days of the internet.

Right now we got a lot of big movers courting blockchain companies but so far we see that it's a horrible ecosystem for building mission critical and scalable apps that is already being solved by AWS, GCE, Azure etc.

Ethereum especially is the biggest blunder out of the blockchain party. Can't scale (capped at low double digit transactions per second) due to it's overly distributed and trustless mechanisms with a huge security vulnerability surface thanks to a turing complete piece-of-crap language called Solidity.

I strongly suspect that we will see the demise of ICOs and blockchain bubble popping when regulators move in as they have previously done with fantasy sports betting startups.

To the adventurous and greedy individual thinking of launching blockchain ICOs: don't count on your coin != fiat because that won't matter when a bunch of people feel victimized enough and start courting the SEC.

disclaimer: I actually hold above cryptocoins but overall extremely pessimistic and feel pretty stupid buying into it.

<comment><USER18> I used to be the proud hodler of 6 dogecoins, until I reinstalled the laptop the wallet was on. Much sorry, very loss.</comment></comment>


AllAdvantage VP: "When the IPO market froze and CPM rates collapsed the burn rate was astronomical" - <AUTHOR> http://thestandard.com/news/2008/06/30/where-are-they-now-alladvantage-com <comment><USER2> I remember installing MyAdvantage on all my friend's machines in a dorm at UCLA. You got paid if the mouse was moving and you kept surfing. So someone made MyAdvantage, a program to move the mouse and auto refresh your brower. A made a few hundred dollars :)

<comment><USER3> That was me. When I wrote it, I didn't know millions of people would download it and would spawn the auto-surf genre of apps. It ended up making me ranked 15 on their pyramid with over 60,000 people underneath me. During the hey-day, I was getting great checks -- not bad for a 16 year old back then. I also ended up being a consultant for them. I still keep in contact with the guys there who have since moved on, but thanks for the good memories -- glad to know people still remember one of the things I wrote!

<comment><USER4> You're a legend. You're soley responsible for thousands of high schoolers (including me) carrying over $100 in their wallet for the first time in their lives. Thank you.

<comment><USER3> Haha, thanks! Some other projects I did was i2hub (largest college p2p), Lancraft (warcraft hack), Nestea2 (large scale security issue), scenereview (ranked higher than craigslist before I sold it), irc admin at the oldest efnet server irc.colorado.edu, and a bunch of others. MyAdvantage ("Get Paid to Sleep") was one of the projects that was most used, but never seen... ;-) I'm also involved in the dispute between ConnectU and Facebook, but that is coming to a head relatively shortly...

<comment><USER5> i2hub? Quite possibly the best service ever... God do I miss i2hub and my Internet 2 connection. The University of Pittsburgh basically owns the backbone for Pittsburgh, it really was a 100MB connection to the internet with no bandwidth caps.

A friend of mine was sued by the RIAA for having music available on i2hub about a week before it shut down... did they infiltrate it without your knowledge? Or did University administrators let them on? I'd be very curious to hear about the end of i2hub, by email if this forum isn't appropriate.

</comment></comment></comment></comment></comment><comment><USER6> I remember signing up for this as a kid, thinking I was going to make a few extra bucks each month. Little did I know that the pay didn't even cover the phone bills I racked up using dialup.

</comment><comment><USER7> These guys remind me of the iWon days. It's essentially the same idea. Click on links, win prizes and big money! Woo hoo! Um, no.

<comment><USER8> I never made any serious money with AllAdvantage (less than 40 or 50 dollars total) - but I was in pretty active on a message board with people that were earning serious cash. The people with several thousand referalls were sometimes pulling in several thousands of dollars in monthly checks (albeit, only about 6 months maybe.)

Say what you will, that's a hell of a return for basically putting an affliate link up on a busy website (one guy was running a basic wallpaper website.) AllAdvantage might have gone bankrupt, but it paid out $49 mil to a lot of small site owners in one year. That's pretty cool.

(Business model never had a prayer, though.)

</comment></comment><comment><USER9> Some skeletons should remain in their collective closets.</comment>


Corporate culture clashes: What does rocky P&G/Gillette merger teach? - <AUTHOR> http://www.slate.com/articles/business/the_enlightened_manager/2013/12/corporate_culture_clashes_what_managers_can_learn_from_the_rocky_first_days.html <comment><USER2> Perhaps it's just being nit picky, but I think the author misread the original WSJ [1] article that he quotes.

In the OP: _Gillette, for example, had a "memo culture"; P &G's "Proctoids" favored face-to-face meetings._

In the WSJ article: _Then there were culture clashes: Oral-B favored meetings while Crest liked memos_

Oral-B is Gilette, Crest is P&G.

It makes me wonder about his conclusions. They seem logical enough.

[1] [http://webcache.googleusercontent.com/search?q=cache:KItFlIl...](http://webcache.googleusercontent.com/search?q=cache:KItFlIl52VYJ:online.wsj.com/news/articles/SB117737878770779935+&cd=1&hl=en&ct=clnk&gl=us)

</comment><comment><USER3> Not a win for the consumer: these double and triple shaving blades are more expensive than ever.

<comment><USER2> Haven't they made it to the 5 razor yet? I don't think Warren Buffett was bragging about success for the consumer at the expense of the owner. :-)</comment></comment>


Looking Beyond the Internet of Things - <AUTHOR> http://www.nytimes.com/2016/01/02/technology/looking-beyond-the-internet-of-things.html?smprod=nytcore-ipad&smid=nytcore-ipad-share&_r=0 <comment><USER2> >>> "A home automatically turns up the heat ahead of cold weather moving in, or streetlights behave differently when traffic gets bad. Or imagine an insurance company instantly resolving who has to pay for what an instant after a fender-bender because it has been automatically fed information about the accident."

Honestly, I read statements like that and don't understand the mindset of some people. It smacks of a solution in desperate need of a problem. Turning the heat up before the cold? I could see preparing for the cold perhaps by storing energy (think smartgrid) but we have thermostats for a reason. They work. Pre- heating seems like a waste, or at least something nobody has ever thought necessary.

Streetlights behaving differently as traffic gets bad? Why? How? Do they get brighter or dimmer? Whenever traffic is gridlocked there seems to be plenty of light. Maybe ahead of bad weather? But why ahead? Cannot each light decide on its own based on local conditions ... as many do already today?

As for resolving traffic accident liability instantly, that cannot be allowed to be a thing. Even if the robots know all the traffic laws, nobody wants to submit to an automated judicial process. That's a nightmare scenario already explored by countless scifi writers. Drivers are mad enough already at red- light and speed cameras. I cannot see how they would be happy with robojudges assigning liability before first responders even arrive. Imagine having been in an accident, bleeding inside your car, and you get a text from your insurance company telling you they think you were at fault.

<comment><USER3> > It smacks of a solution in desperate need of a problem

That's because you're looking at it from the wrong perspective. This kind of junk makes sense when the problem is "how can we trick people into giving over their personal data".

It doesn't have to actually work (that is, save energy or offer some significant convenience) as long as it lets you generate a database of when people spend time in their home. It's telling that insurance companies are already mentioned - as if that was a _good_ thing.

Aral Balkan's observation[1] that a lot of modern business plans are based on surveillance ("it's about the data"), Al Jazeera recent investigation[2] of this _power grab_ is surprisingly detailed.

> that cannot be allowed to be a thing

I completely agree. I only hope this can be fought before we end up with one of the nastier end-games[3].

[1] [https://projectbullrun.org/surveillance/2015/video-2015.html...](https://projectbullrun.org/surveillance/2015/video-2015.html#balkan)

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

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

</comment></comment><comment><USER4> > And products that respond to their owner's tastes — something already seen > in smartphone upgrades, connected cars from BMW or Tesla, or entertainment > devices like the Amazon Echo — could change product design.

I don't want my computers to try to predict my intentions. Google tries to do it with things like Google Maps on Android, and it doesn't work. It makes user interfaces inconsistent, removes the ability to do things quickly with muscle memory, and adds to cognitive load as I have to find the buttons that are required to override the one bad option that the "AI" has decided to offer me. Changing interfaces based on user behavior goes in my list of "worst trends of 2015".

</comment><comment><USER5> What about the other 2 billion?</comment>


The Bad Old Days of Untargeted Advertising - <AUTHOR> https://hackernoon.com/enhance-your-penis-9d89b4a201a0 <comment><AUTHOR> Best part:

1\. We do not like to pay for content on a per-item basis. See Mental Transaction Costs. Similarly, we have only limited willingness to contribute to a patronage model.

2\. We do not like to pay subscription fees for content.

3\. We do not like having to wade through a lot of irrelevant, annoying advertisements.

4\. We do not like the feeling that we are being tracked in order to be served fewer, targeted advertisements.

5\. People and firms that supply content typically should be paid.

We cannot satisfy all five of these desires. We have to give up at least one of them. We have to compromise.</comment>


Bitcoin exchange owner gets 14 months in jail for lying about hack to SEC - <AUTHOR> https://decrypt.co/7861/bitcoin-exchange-owner-gets-14-months-jail-lying-about-hack-sec <comment><USER2> What's the incentive of lying that the hack didn't happen and he still had the funds? Just shame? I don't think it is very sensible to lie at that point. You will just get caught later and it will be more painful.

<comment><USER3> Fraud and embezzlement are fraudogenic because people often make the choice to continue the game rather than accept a punishment for X, which requires putting a discoverable lie on the record and then increasing the stakes (and the rate at which the shadow liability grows). This causes frauds to often expand until they implode.

This is covered at length in a great book, Lying for Money. Specific examples in Bitcoinland include Mt. Gox, which survived through fraud for 3 years after it needed to wind up, and Bitfinex/Tether, which has not yet collapsed from the billion dollar fraud they are perpetuating.

<comment><USER4> >Bitfinex/Tether, which has not yet collapsed from the billion dollar fraud they are perpetuating.

Citation very much needed.

</comment></comment></comment><comment><USER5> > Founder and operator of defunct bitcoin exchange Bitfunder gets 14 months > jail time for lying to regulators about the loss of more than 6,000 > bitcoins.

In the early days, it was common to see "bitcoin" used as a mass noun - without the plural. For example: "He lost 6,000 bitcoin." More recent usage seems to have switched to the countable noun version (e.g.: "He lost 6,000 bitcoins.").

I speculate that countable noun usage causes problems when users try to reason about how Bitcoin transactions work. Many think of Bitcoin as an account system, where a transaction debits from one account and credits to another account.

Not true.

A bitcoin transaction is much more like giving another user a specific mass of metal in the form of one or more ingots, each one measured to the nearest microgram. Only, this is done by melting/recasting enough metal on hand into one more more new ingots with some combination of masses exactly equal to the the asking price.

The merchant then can combine or split the ingots she receives in the same to make a purchase later. There is no concept of an "account," only splittable and combinable pieces of metal with masses measured to the nearest microgram.

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

> In English (and in many other languages), there is a tendency for nouns > referring to liquids (water, juice), powders (sugar, sand), or substances > (metal, wood) to be used in mass syntax, and for nouns referring to objects > or people to be count nouns. ...

Worse still, the use of the countable noun "bitcoins" encourages two misconceptions:

\- a full bitcoin must be transacted because the countable noun version conjures and integral entity

\- 21 million bitcoin(s) is too few to work as a world currency (no division)

Another currency with confusion around mass/countable noun status is the euro:

[https://english.stackexchange.com/questions/13551/€10-ten- eu...](https://english.stackexchange.com/questions/13551/€10-ten-euro-or-ten- euros)

(long story short, both forms are used)

I would argue that the case for mass noun usage in Bitcoin is even stronger than for the euro, given the way it neatly maps as a real-world analogy to the underlying protocol.

<comment><USER6> You make all of these claims, and yet when I say I gave someone "3 dollars" no one thinks "a full dollar must be transacted because the countable noun version conjures an integral entity", and it isn't because of the existence of "cents": one often says "three and a half dollars". Meanwhile, the word "dollar" was itself originally _a unit of weight_ that represented a quantity of silver (371 4/16th grains), and so was in point of fact "much more like giving another user a specific mass of metal in the form of on or more ingots"... at which point you hopefully realize that, in most English, units of weight use countable nouns: we don't talk about "3 gram", we say "3 grams". Essentially, this becomes some kind of semantic question about whether "Bitcoin" is the measure (like dollars) or the metal (like silver), but as that distinction has been blurred now for a long long time with common currencies (such as the US dollar, which is measured in dollars), it seems like a totally pointless argument that, in fact, causes no practical confusion to anyone.

</comment></comment><comment><USER7> Shame they didn't do anything like this in 2008.

</comment><comment><USER8> 14 months in jail in exchange for 70 million

<comment><USER9> Not really. Wall Street and its captured regulatory body, the SEC want to kill the viability of Bitcoin as an alternative to their dollar for everyday purchases and widespread adoption. Part of that means throwing the book at everyone who runs a legitimate Bitcoin bussness.

People in the politically connected traditional banking industry do much worse than this guy on a daily basis and are never charged with a crime.

<comment><USER10> Not sure why this guy is getting downvoted. The things you can get away with as part of the established power structures in society is incredible.

</comment></comment></comment><comment><USER9> How many years will John Corzine or Ken Lewis spend in jail?</comment>


Sparta: The Fall of the Empire - <AUTHOR> http://www.historynet.com/sparta-the-fall-of-the-empire.htm <comment><USER2> Great article, recommend watching Bettany Hughes's documentary on the Spartans[1]

[https://www.youtube.com/watch?v=oGHlp8g7I0M&list=PLb5MA_edV9...](https://www.youtube.com/watch?v=oGHlp8g7I0M&list=PLb5MA_edV9Ppp76MS0OmsdgJpFkMlmlFE)</comment>


Django 1.1 status update - <AUTHOR> http://www.djangoproject.com/weblog/2009/may/07/django-1-1-update/ <comment><USER2> "Putting out buggy code on time simply isn't an option"

This is why opensource is so nice. If you want buggy code, you download the trunk, its not forced on you.

<comment><USER3> AFAIK, the Django trunk is stable.

<comment><USER4> That's right: our policy ([http://docs.djangoproject.com/en/dev/internals/contributing/...](http://docs.djangoproject.com/en/dev/internals/contributing/#branch- policy)) is that, whenever possible, trunk be kept stable. "People should be able to run production sites against the trunk at any time." This isn't hyperbole: I have sites in production that run against trunk and are updated very frequently.

That said, like all software, Django has bugs. There's a handful (45 right now) left ([http://code.djangoproject.com/query?status=!closed&compo...](http://code.djangoproject.com/query?status=!closed&component=!Translations&component=!Documentation&milestone=1.1)) that are serious enough to prevent calling anything "final" right now.

<comment><USER5> I always run trunk as well, seeing as how it always has more kickass stuff than the release. The only bug I've ever had to directly work around is the "EmptyQuerySet sucks" bug (<http://code.djangoproject.com/ticket/7235>).

</comment></comment></comment></comment><comment><USER6> This is my favorite thing about using open source tools: they are driven by the "end of quarter" profits that put so much crap out in the the commercial environment.

Ideally, we could get that mindset to move upstream to customers so commercial software could have the same mindset, but I'm not holding my breath.

<comment><USER7> I risk being misunderstood as rude, but with all sincerity, I couldn't make out what your response is all about.

care to ellaborate?

<comment><USER8> I believe he meant to say "they are _not_ ". The quarterly profit incentive pushes companies to push products out to early or create unnecessary versions.</comment></comment></comment>


The Infinite Jukebox - <AUTHOR> http://labs.echonest.com/Uploader/index.html <comment><USER2> Here's the FAQ: [http://labs.echonest.com/Uploader/faq.html](http://labs.echonest.com/Uploader/faq.html)

Here's music appropriate for testing databases: [http://labs.echonest.com/Uploader/index.html?trid=TRORQWV137...](http://labs.echonest.com/Uploader/index.html?trid=TRORQWV13762CDDF4C)

</comment><comment><USER3> So awesome! I had no idea there was an API to analyze songs, this is really cool. Is the source for this available anywhere?</comment>


Time Series, the new shiny? - <AUTHOR> http://basho.com/posts/technical/time-series-the-new-shiny/ <comment><USER2> I don't know Riak, other than its a distributed NoSQL key-value data store.

Time series has always been prevalent in the fintec and quantitative finance, and other disciplines for decades. I read a book in the early 1990s on music as time series data, financial tickers, and so on.

How is Riak different, or more suited to use than Kdb + q, J with JDB (free), Jd (a commercial J database like Kdb/q)[2], or the new Kerf lang/db being developed by Kevin Lawler[3]?

Kevin also wrote kona, an opensource version of the "K programming language"[4].

Kdb is very fast at time series analysis on large datasets, and has many years of proven value in the financial industry.

[1] [https://kx.com/](https://kx.com/) [2] [http://www.jsoftware.com/jdhelp/overview.html](http://www.jsoftware.com/jdhelp/overview.html) [3] [https://github.com/kevinlawler/kerf](https://github.com/kevinlawler/kerf) [4] [https://github.com/kevinlawler/kona](https://github.com/kevinlawler/kona)

<comment><USER3> Minor quibble: the article is about RiakTS, their time-series enhanced version of riak_core.

riak_core's main strength is that it does key-value in a distributed/resilient manner, spreading values in multiple copies (at least 3) all over a cluster of servers. Kill one server, no problem. Need more capacity, add servers and it will rebalance itself.

The TS part is just an optimization built on top of that, to make values which are near each other in time to be near each other in storage, for faster range-base retrieval.

<comment><USER4> Yes, exactly. (Author)

<comment><USER2> TS enhanced version of riak_core, got it.

Most TS, or tick DBs, are columnar-based, memory-mapped, fast and light systems.

Are there any benchmarks similar to STAC-M3, which is a year's worth of NYSE data run on different hardware to gauge kdb+'s effectiveness on different hardware configurations [1]? It's a great way to gauge performance and TCO.

Does it do both memory (streaming data) and disk-based (historical) storage for big data set analytics in realtime?

I'd be interested to see numbers there.

A lot of people think kdb+ is only for finance. There is a conference coming up in May that will have talks on q (the language for the kdb+ database) about natural language processing and machine learning in q to name a few. Another is about using it at a power plant to most efficiently route power based upon realtime data [2].

I only got into kdb+ and q with the free, non-commercial 32-bit version. I usually use J and sometimes APL, which had MapReduce since at least the 80s for APL.Check out this post from 2009 [3]. I guess the 'new shiny' bit threw me in your chosen title.

[1] [https://stacresearch.com/news/2014/02/13/stac-reports- intel-...](https://stacresearch.com/news/2014/02/13/stac-reports-intel-ivy- bridge-ex-stac-m3-and-kdb)

[2] [https://kxcon2016.com/agenda/](https://kxcon2016.com/agenda/)

[3] [http://blog.data-miners.com/2009/04/mapreduce-hadoop- everyth...](http://blog.data-miners.com/2009/04/mapreduce-hadoop-everything- old-is-new.html)

<comment><USER5> You might find these benchmarks interesting: [http://kparc.com/q4/readme.txt](http://kparc.com/q4/readme.txt)

<comment><USER2> I was inquiring about benchmarks for RiakTS, but your link was perfect. I am a J/APL dabbler, and quite recently learning kdb+/q (I prefer k).

As much as I step away from these languages, I always find my way back to them in strange ways. I was studying music, and there was a great J article in Vector magazine written in August 2006 [1] that walks through scales, and other musical concepts in J.

A Forth-based music software called Sporth [2] has a kona ugen in it, so you can generate scales or other musical items in kona, and then use them in the stack-based Sporth audio language.

My interests in kdb+/q, k, J and APL are in applying them to mathematical investigations of music, visuals, doing data analysis, and then just code golfing, or toying around. They're so much fun!

I need more time on large streaming datasets (Time Series data), than large disk-based datasets to really test latencies. I am building a box much better suited for it than my current machine. The goal is to stay in RAM as much as possible.

[1] [http://archive.vector.org.uk/art10010610](http://archive.vector.org.uk/art10010610)

[2] [https://github.com/PaulBatchelor/Sporth](https://github.com/PaulBatchelor/Sporth)

<comment><USER5> You should definitely check out JohnEarnest/RodgerTheGreat's iKe, built on his open source k interpreter in JS. Fun examples: [http://johnearnest.github.io/ok/ike/ike.html?gist=bbab46d613...](http://johnearnest.github.io/ok/ike/ike.html?gist=bbab46d6132bf961976524393a5517e5) and [http://johnearnest.github.io/ok/ike/ike.html?gist=b741444d04...](http://johnearnest.github.io/ok/ike/ike.html?gist=b741444d04de8efc937f146b2b77904e)

[https://github.com/JohnEarnest/ok/tree/gh- pages/ike](https://github.com/JohnEarnest/ok/tree/gh-pages/ike)

[https://github.com/JohnEarnest/ok](https://github.com/JohnEarnest/ok)

And related APL/J/K subreddit: [https://www.reddit.com/r/apljk/](https://www.reddit.com/r/apljk/)

<comment><USER2> I had stumbled upon John's work before. I am currently dabbling with a stack- based audio language called Sporth [1], and messing with the idea of somehow mashing it up with John's ike project.

See, vector/array languages aren't just for FinTech or Time Series!

[1] [https://github.com/PaulBatchelor/Sporth](https://github.com/PaulBatchelor/Sporth)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> > Riak uses the SHA hash as its distribution mechanism and divides the output > range of the SHA hash evenly amongst participating nodes in the cluster.

Wait, Riak uses SHA as distribution hash? Why use a cryptographic hash for distribution and not something like Murmur3, if you're talking about high- performant[0] ?

[0] [http://blog.reverberate.org/2012/01/state-of-hash- functions-...](http://blog.reverberate.org/2012/01/state-of-hash- functions-2012.html)

<comment><USER7> i'd bet it doesn't matter.

<comment><USER4> Author here. We hash the key so the number of bytes are negligible. So, I'd agree, I don't think it matters.

<comment><USER8> Isn't it more about the number of cycles it takes to generate the hash more than it's size, since you're likely to do that very often in a db context?

<comment><USER4> Probably. I'd venture to say the reason we use SHA is due to its uniform distribution over its speed (or lack thereof.)

<comment><USER8> I guess it's worth investigating, murmur has been in use by some big names (cassandra, elastic search, hadoop, etc...) for a while in similar contexts.

</comment></comment></comment></comment></comment></comment><comment><USER9> I've always found it quite curious that computer human interfaces have always focused on the noun/verb proposition of describing data, and not the time/place. Time is the only true constant in the universe, and yet computers are set up to track and control it, seemingly, as a second thought.

Imagine if instead of having files/folders to (teach,confuse) Grandma, we simply had a time-based system of references. If Time was a principle unit of information that a user was required to understand as an abstract concept, I feel that it would result in far better user interfaces.

We can see this in the Music-making world, where Time is the most significant domain over which a Musician exerts control. A DAW-like interface for managing events seems to me to be quite intuitive - for so many other non-musical applications - that its almost extraordinary that someone hasn't built an email system, or accounting system, or a graphical-design system, of applications, oriented around this aspect. (Of course, they are out there - but it seems that Time management makes the dividing line between "professional" and "dilettante" users rather thick...)

<comment><USER10> > Imagine if instead of having files/folders to (teach,confuse) Grandma, we > simply had a time-based system of references. If Time was a principle unit > of information that a user was required to understand as an abstract > concept, I feel that it would result in far better user interfaces.

How would it be easier when I, let alone my Grandma, can't remember if I did something last week or the week before last? It seems it puts a higher cognitive load on the user.

<comment><USER11> Yeah I actually don't think the human brain accounts very well for time. Like despite a decade has passed I don't feel as if time has moved very much for me. Despite the fact that people age, it does not seem an inbuilt thing to recognize your age. It just seems to be something that happens to your body.

Thinking a bit more about it I don't think the brain accounts for time in long term memory, it does a better job in short term memory. That's why a musician can use time and we can't use it very well for stuff we stored a week ago.

</comment></comment></comment><comment><USER12> Are there performance numbers available?

We're on the look out for suitable remote storage for prometheus.io, and would want to know the hardware that'd be required to handle 1M samples/s and how many bytes a sample takes up.

It doesn't support full float64 which we need, but we could workaround by putting it into a 64 bit unsigned number.

<comment><USER13> We have engaged a 3rd party that will be doing testing that will get published. Currently we have done testing around specific customer use cases.

</comment></comment><comment><USER14> Might be worth looking into dalmatiner.io (DalmatinerDB) as an alternative to this. It's also built on riak_core to manage cluster membership and the top- level framework for dealing with routing and rebalancing.

Waited for a long time for Riak TS to come out. Tried KairosDB & Cyanite, but the operational overhead of Cassandra wasn't something I wanted to buy into for such a narrow use case (infrastructure metrics store), and then suddenly out of nowhere DalmatinerDB was released. The code is clean, the architecture is solid, and the ops story is simple.

I don't have any affiliation of any kind with the Dataloop folks. I am however a happy end-user. We do currently use Riak KV due to its CRDT support though.

<comment><USER15> DalmatinerDB has been around for a while now. I started working on it during the EUC in 2014, and it was released as part of ProjectFiFo the same year I just really suck at marketing ;).

But I'm kind of curious, are you using Dalmatiner directly? And if so what is your use case?

<comment><USER14> Current deployment is Graphite (Carbon/Whisper) proper due to a lack of time to change it out, but eval'd Dalmatiner and should be migrating to it in the next 6 months (before the year is out). Made it through testing like a champ.

The use case isn't particularly interesting though. Just multi-site machine and application metrics aggregation. Needed something that could work with Graphite tooling, would be highly-available, and be comparatively trivial to operate/maintain.

</comment></comment></comment><comment><USER16> I see SQL support, that is interesting. Isn't Riak the premier NoSQL database. I guess it is a NoNoSQL db now ;-)

The implementation of SQL part is so neat. Great work whoever did that. It uses yecc and leex that comes with Erlang and rebar even knows how to compile those. Very cool!

[https://github.com/basho/riak_ql](https://github.com/basho/riak_ql)

<comment><USER17> [takes a bow]

<comment><USER16> Awesome work!

</comment></comment></comment><comment><USER18> Poses the question

      So what's the big deal? People have been recording
      temporally oriented data since we could chisel on tablets.

Never answers it, but instead explains how Riak handles large time series. Certainly interesting, but I would like an answer to this question, as I don't understand the big deal.

<comment><USER19> Immediately following the part you quote (my emphasis)

      Well, as it turns out, thanks to the software-eating-
      the-world thing and the Internet of Things we happen to be
      amassing *vast quantities* of all sorts of data [...] The
      demand for systems that are capable of storing and
      retrieving temporal data on an *ever increasing scale*
      necessitates systems that are specifically designed for
      this purpose.

Strongly implying the big deal is the need to scale?

<comment><USER18> That's an obstacle that needs to be overcome because you want to get somewhere. A challenging obstacle that has spawned an entire industry, but nevertheless not the goal. It is implied we can get somewhere new and exciting with these vastly larger timeseries. My question is: where?

</comment></comment></comment><comment><USER20> In terms of getting data into RiakTS, would streaming something through Kafka be an option for instance?

<comment><USER21> Hi, Basho employee here. Yes, Kafka is an option. Here's an example about using Kafka with Riak TS and Spark Streaming: [http://docs.basho.com/riak/ts/1.3.0/add-ons/spark-riak- conne...](http://docs.basho.com/riak/ts/1.3.0/add-ons/spark-riak- connector/usage/streaming-example/)

</comment></comment><comment><USER22> As someone who deals with sensor data, the tricky part is really not the write-rate, but rather dealing with messy data. There's a lot of parallelism in sensor network streams, and for many domains you never look at the sensors from one device against the sensors of another device, so you can put them in entirely different databases and it doesn't matter. (It's not true in every case, of course, but if you're doing time series/streaming, ask yourself if it's true for you before picking a system)

The real pain is handling data that arrives out of order or otherwise very late, or handling data that never arrives at all, or handling data that's clearly wrong. Worse, you may have streams that are defined/calculated from other streams for some algebra on series, e.g. series C is series A plus series B - so handling new data on A means you need to recalculate/update the view for C.

Oh, and you'd like this all to be mostly declarative so you have some way to migrate between systems if you need to switch for whatever reason.

Apache Beam/Google Dataflow gets a lot of this stuff right: it's not quite as declarative as I'd like but it gets the windowing flexibility right and handles restatements at a data model level.

<comment><USER4> >The real pain is handling data that arrives out of order or otherwise very late

Riak TS uses leveldb under the hood. Leveldb is natively sorted. In riak ts that includes the bucket. so the sort order is basically bucket/%PK where PK is your composite PK as defined in your CREATE TABLE statement. See Local Key [0].

[0] [http://docs.basho.com/riak/ts/1.3.0/using/planning/](http://docs.basho.com/riak/ts/1.3.0/using/planning/)

</comment></comment><comment><USER23> For the TS experts out there, any real world experience with Influx? ([https://influxdata.com/](https://influxdata.com/))

<comment><USER24> Fantastic db, but maybe not quite ready for production usage. We are using influx for a small portion of our ingestion engine as well as for storing server metrics. The updates/improvements have been pretty astounding over the last year, but also hard to keep up. I had to fork the nodejs library just to update it from 0.9 to 0.12 [0] because there were a _LOT_ of breaking changes. Pre-0.9 there were many issues we ran into when it came to disk space & performance but they have all been resolved as of 0.9.

Another thing to note (after speaking with them on a few occasions) is that they are only providing cluster support to their enterprise offering which wont be available till this summer. They do offer Relay which is their high availability tool for the open source version.[1] You really won't need clustering unless you're doing an insane amount of writes: single server performance is insane right now. We average 10k writes/sec with bursts up to 5x that and it doesn't break a sweat (on a cheap 2 cpu/7gb ram instance, with ssd block storage).

[0] [https://github.com/thinkdevcode/node- influx](https://github.com/thinkdevcode/node-influx)

[1] [https://docs.influxdata.com/influxdb/v0.12/high_availability...](https://docs.influxdata.com/influxdb/v0.12/high_availability/relay/)

<comment><USER25> InfluxDB CTO here, thanks for the note! We've definitely had significant improvements even over the last two months. And the breaking API changes will be a thing of the past very soon: [https://github.com/influxdata/influxdb/blob/master/CHANGELOG...](https://github.com/influxdata/influxdb/blob/master/CHANGELOG.md#v100-unreleased)

0.13 drops Thursday and 1.0 is the next release :)

</comment></comment></comment><comment><USER26> Time series does not necessarily have to be about 'huge' data either, just a much greater level of historical precision. Example:

ISP sells a circuit with 95th percentile billing to a customer.

If you poll SNMP data from a router interface on 60 second intervals and store it in an RRA file, you will lose a great deal of precision over time (because RRAs are highly compressed over time). You'll have no ability to go back and pull a query like "We want to see traffic stats for the DDoS this customer took at 9am on February 26th of last year".

with time series statistics you can then feed it into tools such as grafana for visualization.

An implementation such as openTSDB to grab the traffic stats for a particular SNMP OID and store it will allow you to store all traffic data forever and retrieve it as needed later on. The amount of data written per 60 second interval is miniscule, a server with a few hundred GB of SSD storage will be sufficient to store all traffic stats for relevant interfaces on core/agg routers for a fairly large sized ISP for several years.

</comment><comment><USER27> Love the simple install for development on a Mac. Thanks for that.

<comment><USER4> I can't speak for the engineers but a lot of folks at basho are constantly building and tearing down riak single instance or multi instance clusters on redhat/ubuntu virtual machines. I do that and I also have different versions of riak sitting in their own folders on my mac hd. mac osx support +1.

</comment></comment><comment><USER28> Looks really nice. although I am bit sad to see that - it requires structured schema. I have been lookout for a metric collection system (like influxdb) and this would fit very well - except the schema part.

<comment><USER4> You can kinda fudge it by making one of the columns a varchar. It will store whatever you put in it like stringified json but not compute over it (arithmetic, filters, aggs).

(author)

</comment></comment><comment><USER4> Hello, I'm the author of the post. Thanks for all the interest! AMA!</comment>


From programmer to engineer - <AUTHOR> https://medium.com/@boltmick1/from-programmer-to-engineer-90b53727fe3d <comment><USER2> Got some spelling errors there bro. "Fist" should be "first" "Along" should be "all"? "Will" should be "is" "To" should be "too" "Were" should be "where"</comment>


Cherokee (Web Server) Annouces Streaming WebM (VP8) One Day Later - <AUTHOR> http://www.alobbs.com/1386/Streaming_WebM_VP8_One_Day_Later.html <comment><AUTHOR> For those of you who don't know Cherokee there is a simple benchmark page on its site: <http://www.cherokee-project.com/benchmarks.html></comment>


Nim programming language - <AUTHOR> https://nim-lang.org/ <comment><USER3> Nim is the language I have always thought was a brilliant idea that I never get to use. It's a shame.

Nim is to C/C++ as CoffeeScript is to JavaScript. A highly extensible template language atop a portable language with libraries for practically everything.

So why haven't I hopped on the bandwagon? Outside of C++, C, and Fortran - <USER2> only way I have ever learned a new language is through using a REPL. How much of Python's and MATLAB's (and maybe even Julia's) success is due to having a brilliant REPL?

I am not complaining, and I do not have any free time to fix it. But man... if Nim just had a killer REPL that allowed me to slowly learn the language properly while not being blocked from my daily work... it would be just killer!

<comment><USER4> +1 to the usefulness of a REPL. Anyone know of a good one for the vanilla Java language?

<comment><USER5> I don't, but I'll point out you can do a lot of exploration in the Clojure repl, and with leiningen it's really easy to set up anything in maven.

<comment><USER4> I must have a really low I.Q. Or something because maven is all but broken in intellij for me. The Apache quickstart template defaults to jdk 5?!? And the pom file seems like it could get out of control fast.

<comment><USER5> Sorry, by "in maven" I meant "in a maven repository". Using Maven itself is a nightmare, I know, but if what you need is to download some jars and stick them on the classpath, leiningen is perfect (it even compiles regular Java and has control over JDK versions if you want that)

And it generates the pom files so you don't have to...

<comment><USER4> I guess I just need to read up on how to actually use maven the right way. Thanks.

<comment><USER5> I wouldn't use Maven, but there are multiple tools that can use Maven repositories that aren't Maven, and I'd recommend one of those. :)

<comment><USER4> I was only trying to learn it because a take home coding assignment for an interview asked to use maven for its build process. I found the whole experience (using maven) disheartening while I was able to code up the assignment using maven and my inexperience with it cost me going to the second round. I have only myself to blame though.

<comment><USER5> That sucks :(. But I can tell you there are plenty of organisations (e.g. Thoughtworks) where Maven is regarded as a bad tool that should be avoided. That doesn't help you much if it's part of a job you want, though. :(

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> If anyone was interested, the markup theme is Dracula[1], which subjectively feels like the most readable highlighting theme I've ever used.

[1]: [https://draculatheme.com/](https://draculatheme.com/)

<comment><USER7> I've applied to Terminal.app now. Works like a charm. The only thing is that by cloning the git repo using "git clone [https://github.com/dracula/terminal.app.git"](https://github.com/dracula/terminal.app.git") it gets put into a folder called terminal.app, which is not readable when trying to import it from Terminal since it thinks it's an app. The solution is to move the Dracula.terminal file to another location before importing.

<comment><USER8> Easy enough to solve, just change the destination directory:

        git clone https://github.com/dracula/terminal.app.git terminal-theme

</comment></comment></comment><comment><USER9> Like the new design, old site looked very dated, which unfortunately matters a lot when attracting mindshare. Kudos to the team that rolled this out, nim looks much more modern and loved at first glance now.

</comment><comment><USER10> As someone who does a lot of Python programming, I really love the idea of Nim, and I've started learning it, I just need to find some more time to get back to learning it. Given there's a pandas style + out-of-core support I'm interested in trying to use it for a lot of data extraction + cleaning + prep sort of tasks given how speedy it can be, being built on top of C...

<comment><USER11> Are you saying there is some library already existing? I'd be curious to try it then.

<comment><USER10> Sorry I only just saw this message: yeah, turns out there's 2:

* [https://github.com/qqtop/nimdataframe](https://github.com/qqtop/nimdataframe)

And

* [https://github.com/bluenote10/NimData](https://github.com/bluenote10/NimData)

</comment></comment></comment><comment><USER12> One thing I have always hated about languages that tout easy C interop is the fact that you have to declare the C function first. A lot of C libraries e.g. Guile uses all sorts of Makefile hacks that makes it impossible, not to mention extremely time consuming to write a function declaration. Things would be so much easier if languages can implement something like Julia's ccall or a similar mechanism to allow direct calling of C libraries without any for of headers or wrapping.

<comment><USER13> Aren't you still writing the equivalent of a function declaration, but at the call site? What makes Julia's approach easier to use with Guile?

</comment></comment><comment><USER14> I am stuck working on a C++ code base using Qt. Could I in theory use Nim to accelerate my development, or would it produce incomprehensible or ugly C++ code?

Alternatively are there other alternatives to C++ for people who have to submit C++ code into the repository?

I use other languages than C++ on a regular basis and I find it annoying to tedious the language is. So much boilerplate and repetitions.

<comment><USER15> Some years ago I had the idea to create something similar to CoffeeScript for C++: [https://bixense.com/coffeepp/](https://bixense.com/coffeepp/) Never got through to finish it though :/

<comment><USER14> Looks pretty cool, I'd love to have something like that. Preferably something which you could tweak to output C++ code matching company code style guidelines.

</comment></comment></comment><comment><USER16> Happy to see that nim is evolving. Any big player out there who uses nim for an important project?

</comment><comment><USER17> I dig the changes in the landing pages, but I wished the documentation pages got the same treatment. At present, the documentation is not readable easily on mobile browsers.

Are you considering converting the documentation pages to responsive design too?

Also the black and yellow theme looks great on the home page, but that theme loses its continuity on all the other pages. It's as if the home page was designed by a different person, the feature and other landing pages by someone else, and the documentation pages by someone else altogether.

<comment><USER18> > Are you considering converting the documentation pages to responsive design > too?

Unless someone volunteers to do this it likely won't happen any time soon.

As for the continuity. Not all pages can have the same "section" style, the documentation page for example is just composed of a list of links and descriptions. Of course, if you have ideas on how to improve the continuity then I'm all ears :)

<comment><USER17> > Not all pages can have the same "section" style,

But they can have the same CSS styling (colors, fonts, responsiveness, etc) that ties the whole site together.

A good example that's at the top of my mind is this: [https://hugodocs.info](https://hugodocs.info)

It works great on desktop as well as phone, and a common theme is seen all across the site.

> the documentation page for example is just composed of a list of links and > descriptions.

By the documentation page, I meant a page like this: [https://nim- lang.org/docs/manual.html](https://nim-lang.org/docs/manual.html)

That's a lot of good info but is not accessible in a good way on phone.

For sort of an equivalent reference, see [https://hugodocs.info/templates/base/](https://hugodocs.info/templates/base/)

It has a similar collection of help pages and the design is responsive too.

<comment><USER18> > > Not all pages can have the same "section" style,

> But they can have the same CSS styling (colors, fonts, responsiveness, etc) > that ties the whole site together.

> A good example that's at the top of my mind is this: > [https://hugodocs.info](https://hugodocs.info)

> It works great on desktop as well as phone, and a common theme is seen all > across the site.

I might be missing something but the website you linked has only two pages and I would consider them to lack continuity even more than the current Nim website. The layout for the "docs" page is completely different to the home page.

> By the documentation page, I meant a page like this: [https://nim- > lang.org/docs/manual.html](https://nim-lang.org/docs/manual.html)

Oh I understand where you're coming from a bit more now. Everything under the `docs/` is sort of separate, it's part of Nim's doc gen generator and thus has a different style associated with it. But I can see why you think it loses continuity.

</comment></comment></comment></comment><comment><USER19> If you like Nim, check out this blog. [0]

[0][https://hookrace.net/](https://hookrace.net/)

</comment><comment> brown-dragon Nim is a great little language - it is enjoyable to work in and small enough to learn easily. It's neat for little utility programs that are "too big for bash" and "too small for java/C". Sometimes I think of it as an alternative to python.

</comment><comment><USER20> Here's a talk by Andreas Rumpf (Nim creator) about async programming in Nim: [https://www.youtube.com/watch?v=hwArqelfBBY](https://www.youtube.com/watch?v=hwArqelfBBY)

</comment><comment><USER21> When trying out a new language, one of the first things I look for is a Getting Started/Quick Start guide that'll get me up and running with executing some code on my computer.

Is there something like that on the Nim website? There's a code example on the home page but after doing a `brew install nim` I don't actually know how to run it. In the Documentation section there are guides about the standard library and so on but I can't find a 'quick start' that'll get my hands just a little dirty without feeling overwhelmed with too much information.

<comment><USER22> There is "How I start" [http://howistart.org/posts/nim/1/index.html](http://howistart.org/posts/nim/1/index.html)

</comment></comment><comment><USER23> Very nice dark main page, but the others have a different brighter (ouch!) theme, and the Examples one renders badly here (small netbook, Palemoon 27.2.1 on Debian amd64) due to high pitched fonts. Examples code blocks also do not use the same font size so I believe it's just a matter of fixing the theme. Other pages look nice despite the small screen size I'm using right now.

<comment><USER18> Sorry about that. Any chance you could submit a bug report on GitHub[1]? Include screenshots and any other relevant information if you do.

1 - [https://github.com/nim-lang/website](https://github.com/nim-lang/website)

</comment></comment><comment><USER24> Nim seems like a great language -- certainly people who use it seem to extoll its virtues -- but I see this getting submitted and making it to the front page essentially every month. Unless there's some news about Nim that's pertinent, perhaps we could give it a rest?

<comment><USER18> The reason that it was submitted this time is because of a new website that we just released. I hope you can agree that this is a valid reason for the submission.

<comment><USER25> This feels like one of the exceptions where you should be allowed to change the page title. Perhaps if you prefix the title with "Show HN: " it would be ok to not use the default title. Something like "Show HN: Nim revamped its website" might be worth a try.

<comment><USER26> I like that. I was originally with venantius where it should be something new. That was by looking at the title alone, though. Yours would be much better.

</comment></comment></comment></comment><comment><USER27> I can see some interesting applications once we can target WASM, libraries that are client/server agnostic with clients that can join in the cloud workload comes to mind.

<comment><USER18> We already can target WASM[1] :). Nim's JS backend is already very useful though, you can see a game I've created using it in the features page.

1 - [https://forum.nim-lang.org/t/2838](https://forum.nim-lang.org/t/2838)

<comment><USER27> i'd love to see something that compiles into two parts, one for the browser and one for the server from a single source and also maybe distributes trusted computations among the user base.

</comment></comment></comment><comment><USER28> Huge update on the website. Dope!

</comment><comment><USER29> Whenever I see a new project my first question is always "why?".

From the FAQ:

      Why yet another programming language?

      Nim is one of the very few programmable statically typed languages, and one of the even fewer that produces native binaries that require no runtime or interpreter.

That's it? That doesn't answer the question at all. In fact, it makes it even less clear. All it says it that there are other programming languages that have similar features. Who cares?

<comment><USER30> How does it accomplish tracing GC without a runtime?

<comment><USER31> It doesn't have a tracing GC (or at least, the primary portion isn't tracing). The garbage collector is outlined at [https://nim- lang.org/docs/gc.html](https://nim-lang.org/docs/gc.html)

<comment><USER30> It says it has to scan the entire threadlocal heap with mark and sweep. What am I missing?

Anyways I'm sorta being pedantic that it obviously has some sort of runtime. Maybe they meant to say not a runtime like a full VM ala Java?

<comment><USER32> The whole language compiles to C, C++, or Javascript. It presumably uses whatever runtime the compiled-to language provides.

<comment><USER30> Well C doesn't ship with the GC described, so it must include some additional runtime beyond the C library.</comment></comment></comment></comment></comment></comment>


Ask HN: New Year Resolutions - <AUTHOR> Did any of you make new years resolutions, and if so, which ones? <comment><USER2> This year I am going to focus on being less passive. I have written down some achievable goals and instead of only thinking about doing them I am going to push myself to complete them.

In the past I have been too complacent and this lowers my self-esteem indirectly when I feel like I never get around to finishing these goals.

</comment><comment><USER3> The last "news years resolution" I made was about 18 years ago, when I resolved to quit making new years resolutions.

That said, the new year is always a time to reflect and re-evaluate and make plans. I already commented on my plans for 2017 in some other threads.

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

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

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

</comment><comment><USER4> Try to write better articles for my blog HTTP://Blastar.in/WordPress

Try to take time off playing video games and get up earlier to work on becoming a programmer again with Python.

Try to eat better and get more exercise to be healthier.

Try to give up soda and drink more water.

<comment><USER5> Don't try, make it happen :)

<comment><USER4> "Do or do not, there is no try!" -Yoda

</comment></comment></comment><comment><USER6> -Lose the last 5lbs so I'm back in the normal bmi range.

-completely stop playing computer games.

-Do the Stanford machine learning class and better understand machine learning.

-Get a new job.

</comment><comment><USER7> \- Sleep on my back

\- Meditate daily</comment>


15 mobile growth hacks that improve user experience - <AUTHOR> http://venturebeat.com/2015/06/22/15-mobile-growth-hacks-that-improve-user-experience/

<comment><USER2> Guest article by Sanket Nadhani of Upquire that includes a stack of case studies...</comment>


Is The Chinese Supercomputer Our Sputnik? - <AUTHOR> http://www.macdougherty.com/macblog/2010/10/is-the-chinese-supercomputer-our-sputnik.html

<comment><USER2> The article is wrong on " The fastest supercomputer has, since 1994, resided in the United States at the Oak Ridge National Laboratory, where it is used for scientific computing, among other purposes."

I present to the thee, the Japanese Earth Simulator:

<http://en.wikipedia.org/wiki/Earth_Simulator>

</comment><comment><USER3> Asks an American tax payer: Why does America need to have the fastest super- computer? _(the premis of this and other coverage of this topic)_

<comment><USER4> I think the article is making the argument that the goal of having the fastest X or the biggest X or being the first to X is not the point. Supercomputers have real value, in the sense that they are used to solve real problems that can't be solved otherwise. The bigger point seems to be that the benefit in getting to X is that you normally create a lot of technology that ends up being beneficial to the economy in general.

Having an uninterruptable communication network led to the internet. Being able to deploy ICBMs across the nation led to the Highway System. Going to space created a ton of new materials and manufacturing systems that have created products that couldn't have existed before.

Having the fastest supercomputer is the trees, the forest is the wealth of technology and industries born out of that race.

<comment><USER3> _Supercomputers have real value, in the sense that they are used to solve real problems that can't be solved otherwise_

Sure, and this answers the question "why have super-computers", indeed, the US has several.

I'm not just sure if any of the reasons you specify, all valid, suddenly become invalid when there is simply a delta between the power of US vs China systems.

</comment></comment></comment><comment><USER5> There was an article posted here on HN not too long ago about Japan's 5th generation computer project. It was more about what killed logic programming but this China+supercomputing thing reminds me of this a little.

Here's the article: <http://vanemden.wordpress.com/2010/08/21/who-killed- prolog/>

EDIT: Wikipedia page about the project: <http://en.wikipedia.org/wiki/Fifth_generation_computer>

</comment><comment><USER6> The Chinese CPU is junk, and the chinese supercomputer is built out of US parts - I wouldn't be too apocalyptic about technological superiority for some years yet.

<comment><USER2> The CPUs are just a commodity. The interconnect is where it is at.

<comment><USER7> Until the interconnect is a commodity, and at any point the advances they've made there can be as easily utilized in building new US supercomputers.

I don't really see the point of this chest thumping, whoever does it, it just seems like so much posturing. It's fast. Great, but get back to actual science please.

</comment></comment></comment><comment><USER8> this reads like what the Japanese did in WWII: racing to build the largest battleship when naval warfare had shifted to carriers and airplanes (<http://en.wikipedia.org/wiki/Japanese_battleship_Yamato>).

<comment><USER9> To be fair, they also built a crap-ton of carriers and airplanes.

<comment><USER10> To be even more fair, so did we, since neither of us _knew_ ahead of time which or what mix would prove decisive.

</comment></comment></comment><comment><USER11> "Supercomputing is at the basis of many important scientific and commercial enterprises in the United States, and it is very important that we not relinquish our lead in this area."

Details, please. Otherwise it is just blubbering.

<comment><USER12> I'm studying to become an interdiciplinary computational biochemist, so perhaps I can lend some perspective.

Supercomputers are increasingly used in the sciences to scale down the search space of massively complicated problems such as protein folding, molecular docking, and chemical synthesis. In several instances they lead us to novel, non-intuitive results, sometimes as small as finding a functional group prefering a gauched vs anti conformation that changes a particular interaction completely. With drug design specifically, we can cut down the chemical search space necessary to find inhibitor molecules and search for potential problematic harmful interactions before ever running in vitro assays.

Science today is more serendipity and hard work than acts of sheer brilliance. Having high-throughput tools that save us from looking too hard give us more time to think and more quickly update our models.

Supercomputing will lead us to smarter medicine, cures for cancer, better materials, and a more energy-efficient planet. Computer science is a major cornerstone of today's scientific endeavors, and we increasingly need to encourage interest and investment in this field.

</comment></comment><comment><USER13> Such a sad US vs THEM post.

Americans are just going to have to accept that the playing field is becoming more level and eventually a country with 1 Billion people is going to be more productive than a country with 300 Million people. It's just arithmetic.

And it's not the end of the world. It's ok to just live in a country and have a cool life.

<comment><USER14> How do you figure that? The size of a country's population is nothing to do with anything, really. History is full of examples.

<comment><USER15> That's good to point out, but China is consciously adopting a Western legal and economic system (with some notable modifications) on which to run its society. If they do it successfully, the larger amount of people should give the country a greater amount of productivity than the US.

<comment><USER14> That's a very fine balancing act. Everything is magnified. What if 10% unemployment in the US economy at an equivalent tech level translates to 60% in China? Perhaps the Chinese will choose to keep productivity at a controlled level to prevent social unrest.

</comment></comment></comment></comment><comment><USER16> No. That'll happen when the Chinese reach the Moon.

<comment><USER17> In 2013: <http://en.wikipedia.org/wiki/Chang%27e_3></comment></comment>


Four Lessons Learned From An Excursion Into Solo Web Programming - <AUTHOR> http://ponycomplete.blogspot.com/2010/11/five-lessons-learned-from-excursion.html

<comment><USER2> Solo development in a nutshell - have you got what it takes to build a finished product? There's no one else to blame.

</comment><comment><USER3> He sounds frustrated because he's not a master of CSS. Like most things, this takes a lot of time and practice, and whining about how UI DESIGN IN HTML IS IMPOSSIBLE really doesn't help. After years of working with CSS I tend to go straight from pencil sketches to HTML/CSS mockups, and find it a fairly straightforward and pleasurable way to work.

I also can't help but give a CSS tip to the author. Please don't exploit browser bugs to trick IE in to doing things; use conditional comments instead which will let you cleanly put all of the IE junk in a separate stylesheet.

</comment><comment><USER4> I've only recently got into web development after being into backend C++ development through college. I pretty much see where he's getting to, and solo web development can really be a pain, especially if you're new to it (like I am). But I have to say, even while getting frustrated with the smallest of PHP/CSS/JS errors, I'm really enjoying the learning curve of web development. Learning these lessons early on is quite important IMHO.

</comment><comment><USER5> I got a great laugh from this. I think anyone that has experienced the full life cycle of an enterprise level web app can relate to this article.

The good news for the author is it gets better. The bad news is this takes time, a lot of time.

Disclaimer: It was a long article, so I skimmed it instead of reading in its entirety, but here is some general advice none the less.

Advice (from a front end guy):

1) Stick to what you know, and sprinkle in new stuff as you go. (Just get something working)

* If your a backend programmer, go balls out on this part of the app. For the front end, keep the code entry level. Use tables, embedded CSS, and case specific JavaScript (for example a jQuery light box) when needed.

2) Start using jQuery or MooTools pronto (solves that pesky browser compatibility issue)

* If you haven't started this yet, do so as soon as possible. Don't worry about creating an entire JS framework until you are very comfortable with jQuery or MooTools. This will save you many hours of bug fixes on code that you are going to have to rewrite anyways.

* I prefer MooTools because of the way the code is structured. They have a function called Class() which gives you the ability to Extend or Implement (to a certain degree) other MooTools classes that you create.

3) CSS oh no, I feel bad for you.

* CSS is a complete shit show when you are just starting out. Keep it entry level with fonts, colors, images, backgrounds, borders. If you get stuck, solve it with JS or embedded styles and fix it later when you have a better understanding of CSS.

* Also, avoid padding where possible and stick to using margins. This will save you box model complications.

4) CSS floats warning, if you must

* If you end up using floats, don't forget your lil buddy, the div.clear hack. This kind of works like a line break.

* div.clear { clear: both; }

*
stuff

more stuff

 <\-- (I know it feels dirty introducing a seemingly unnecessary element to the DOM, but hey, it WORKS!!)

5) Be ready for a long UI/UX journey

* It takes time to get cozy with this stuff, but when you do you will feel like a geeky rock star. It is a lot of fun when you get to the more advanced UI/UX stuff. Enjoy every little UI/UX mile stone along the way, they are fun. You will feel like you are programming at a turtle's pace, but a few months from now you will look back and think "Look at all the cool stuff I can do!"

6) Good Luck!

</comment><comment><USER6> Facebook pioneered random-walk as a design strategy.

</comment><comment><USER7>
      Sure, in theory, separating content from presentation is a
      good idea. In practice, using CSS for layout is confusing,
      error-prone, and brittle, and that's before you even take
      browser bugs and incompatibilities into account.

In practice it is even greater idea. Sure you can go ahead and have all your layout in tables, then go ahead and create several different versions of your site just to take care of phones, tablets and like. Or you can employ css media queries. Sure, learning CSS (and, alas, browser quirks) takes time, but it pays off. And frankly it it much easier today than it was back when IE5 was still relevant.

The other funny thing is that some native applications are using HTML and CSS for UI :)

</comment><comment><USER8> Point 4 WEB BROWSERS SUCK (OR: UI DESIGN IN HTML IS IMPOSSIBLE) made my day:

      If you have good front-end web programmer/designers, you   probably aren't paying them enough.
      Imagine being a highly educated garbage man, except about one third of the smelly garbage
      cans you encounter abruptly try to kill you, and can only be defeated by frantically (but precisely!)
      shouting garbage-can-dependent arcane incantations like:
       .quux {
         width: 500px;
         padding: 50px;
         voice-family: "\"}\"";
         voice-family: inherit;
         width: 400px;
       }
       html>body .quux{
       width: 400px;
       }
      Ia! Ia! Tantek Fhtagn!

<comment><USER9> Consensus these days is pretty much that CSS hacks should be completely avoided in favour of conditional comments. Take a look at how we handle IE- specific styles on <http://lanyrd.com/> (based on a trick discovered by Paul Hammond: <http://www.paulhammond.org/2008/10/conditional/> )

</comment></comment><comment><USER10> I haven't been doing web dev for very long - and only in a fun/learny capacity...

but this speaks to me... deeply.

</comment><comment><USER11> > (2) Think very hard about whether you really want to design any reasonably > complex user interface in HTML, CSS, and JavaScript instead of either (A) > programming a native application or (B) using some other browser-based user > interface framework like Flash (or perhaps coding the entire interface in an > HTML 5 canvas if you're some sort of "standards" fetishist). Not that I've > actually tried doing anything in Flash or HTML 5 canvases, but seriously > [cue: Famous Last Words], how could anything possibly be more painful than > designing user interfaces in HTML, CSS, and JavaScript?

WTF? Look at couchapp's.

Of course, it is no fun when code of whole application is written in one large HTML page.

I use Evently widgets with CouchDB, PHP and java. I use my own little framework on top of that. I use MVC, my own libraries, and database abstraction layer. I have no problems with coding of whole application HTML/JavaScript.</comment>