Ask YC: Voting Karma - <AUTHOR>

My view of Karma is similar to my view of money: it's an artificial measure of the value you add to this site.
Most of my Karma comes from comments because I honestly take a pretty passive role here, taking in and commenting instead of actively adding nodes; however, I have an interesting habit. Whenever I write a comment, before I submit, I double check to see what value I'm really adding. If it's not pretty significant — if my comment is pretty much just agreement with something someone said with little additional information — I drop it and just upmod. It's a small effort to try to bring up the signal-to-noise ratio recognizing that even well meaning comments can be be noisy.
The part I want to call attention to is that, to me, it seems like you're still adding value when you upmod. It's far less than a full comment or submission, but you're calling attention to signal instead of noise.
My suggestion is that Karma could be incremented based on some fraction of the number of upmods that occur on an article you upmodded after you did so. This rewards the people who read articles (especially those on the new page) and vote so as to bring attention to something interesting.
Sound interesting? <comment><USER2> The naive implementation would create an incentive to go to the "new" page and indiscriminately upvote everything.

<comment><USER3> The solution is to have a karma cost for voting on a submission/comment that isn't upvoted enough (for example doesn't make the 40th percentile) or to finally add downmod for submissions and make you pay for supporting something the community rejects.

<comment><AUTHOR> I see this as being a pretty good way of doing this, too. _Uncertain_ stories, stories with little Karma, are riskier business and are therefore more expensive to support, but if they're good stories the payoff can be lucrative when large parts of the community agree.

</comment></comment></comment><comment><USER4> I've considered doing something like that.

<comment><USER5> I thought I heard somewhere that your vote gets more "powerful" if you were one of the early voters on a story that garnishes a significant number of votes. Was I mistaken?

<comment><USER6> I think the old bellwether award on Reddit somehow fed into the recommendation system. I'm pretty sure that stuff isn't turned on here yet though.

</comment></comment></comment><comment><USER7> > My suggestion is that Karma could be incremented based on some fraction of > the number of upmods that occur on an article you upmodded after you did so.

Yes, I'm working with a similar scheme on my site. This rewards people for predicting what will be popular and provides a big incentive to check out the new content.

The basic system is something like a stock market (that's how I initially visualized it). It costs zero to vote on something but if it goes negative then you lose points, positive then you gain. Like "icky" says here, this approach would have some vulnerabilities here since content is rarely voted down (which is good.)

Ultimately, the closer the karma number correlates with how useful the user is being, the more benefit the community will receive through some properties of game mechanics. Right now, that correlation isn't very high.

<comment><USER8> Any site like this is designed so that upvoted content is seen by a much larger number of people than down voted content (which is, after all, pretty much the point). So you're going to get a lot more upvotes than downvotes, making rampant upvoting still strategically sound. You could weight negative positions more than positive ones, or you could also have a buy in cost. Buy in cost does provide a disincentive to voting which probably isn't desirable.

<comment><AUTHOR> Disincentives to voting give more abstract _value_ to an upmod. Right now the only thing that gives an upmod value is that you can only upmod a story once.

Without some sort of constraint the only thing keeping people from upmodding continuously and rampantly is... RSI!

<comment><USER8> We're still talking about a single upvote per article. Its just that if you upvote every new article you'd end up ahead of the game whilst adding nothing of value.

<comment><AUTHOR> Bingo, I was being hyperbolic there.

The core idea is that upmods and downmods need to embody some sense of value. Without a buy-in cost, the only contributing source of value is 1-vote-per- story exclusivity. Without a buy-in cost, nothing is stopping me (edit: _or someone else_ , hah. I don't mean to implicate myself for the sake of rhetoric) from getting a bot together to upmod every single story essentially nullifying the benefit of my vote and still maximizing the return.

</comment></comment></comment></comment></comment><comment><USER9> We shouldn't write base on karma, we should write because we have something valuable to say.

<comment><USER10> But karma tells you whether what you wrote is valuable here.

</comment></comment><comment><USER11> I posted 3 suggestions yesterday that went unoticed : <http://news.ycombinator.com/item?id=133618>

The 3rd one concerns the karma system : makes a quota of free comments each day then the additionnal ones cost some karma to post. Sometimes your silence has a greater value than a new comment.

</comment><comment><USER12> Here's an idea. Please bear with me for a moment, I'll explain how it's related to the karma.

The system could group users based on their voting patterns and account for these grouping when computing a point score of the submission _for specific user_. For example, if A, B and C are voting up and down same articles, then if A votes something up, this should mark it up in B's and C's view in some fashion.

It is a form of a dynamic interest profiling, which should increase _per-user_ quality of the top articles. This way karma can be an indication of how compatible you are with a general population .. though it wouldn't be _karma_ strictly speaking.

Thoughts ?

</comment><comment><USER13> I agree. I personally don't really want to listen to people that care immensely about their karma scores.

I think an exponential decay on how much karma you get based on upmods per second would be sufficient to avoid people rampantly upmodding. It takes time to read an article and its comments, and it seems like measuring that would be an effective way of preventing rampant abuse.

Of course, people could just write scripts then to upmod all the time once they figured out the optimal delay. Then there would be an entirely different form of karma inflation to fight. Like spam, it seems to be a never ending battle.

<comment><USER14> I'm new here, but it seems this site is less about karma-whoring that digg and reddit.

In any case... is it that difficult to reverse-engineering the points system? For those who care...

<comment><USER13> It is much better than digg or reddit, in my limited experience. Karma mongering still happens though, and it will probably increase with time as more users are added unless karma mongering is carefully considered in the design.

</comment></comment></comment><comment><USER15> I think the vote-weighting system is a better solution to the same problem, but PG hasn't turned it on (nor completely implemented it, as of arc2).

</comment><comment><USER16> I have a theory that drive-by modders who only read short posts cause one- liners to out-karma thoughtful posts. Without seeing the data, it's hard to know, but I'm wondering if a penalty for that voting pattern would be worthwhile. The odds of learning something in a 2 word post that justifies my time here seem lower, comparatively.

</comment><comment><USER17> Sounds like an interesting idea, but what is to stop someone from just upmodding every comment in a thread?

<comment><USER18> That could be solved by using a suggestion from another thread. Basically you have to spend some karma to give karma out. And once you upmod one thing, it will cost more to upmod something else soon after that. This system might have to be seperate from the karma, but you could pay karma to get points in the other system. It would definitely need to be refined.

<comment><USER12> This is an interesting idea. It's a variation of intelligent betting. However it seems that mods with mainstream interests will end up with huge karmas, while those interested in more quirky subjects will not get any.

</comment></comment></comment><comment><USER19> You could let people bet karma on stories on the new page...

</comment><comment><USER20> yeah that's definitely gameable but i think there's some merit in your thoughts -- it certainly follows a better outline of what a meme is all about.</comment>


Friend launched a Chrome extension that auto-generates playlists from blogs - <AUTHOR> http://ex.fm

<comment><USER2> Awesome. I tried using SongBird (<http://www.getsongbird.com/>) for a while, but it never seemed natural to switch to a specialized browser every time I landed on a music blog. This is a much more user friendly proposition.

One major problem: it's an unwritten rule for music blogs (at least the well established ones that I read) that they don't host the MP3s forever. They put them up for a couple of weeks, and delete them after that. The artists and labels tolerate the infringement because they like the publicity. This extension doesn't seem to store the files at all. Maybe it could be coupled with S3, Dropbox, etc, and upload to the cloud the tracks you listen to?

<comment><AUTHOR> I'm worried about the track deletion as well. My guess is that doing anything that involves storing would lead to legal issues which have befallen nearly every other music startup.

I would hope that eventually they could automatically point you to another URL w/ the same MP3 if it existed w/in the ex.fm database.

</comment></comment><comment><USER3> Do they really pursue this as a startup?

An extension for a browser with 2% market share?

<comment><USER4> Last I hear Chrome share was more along the lines of 6-7%. And that 6-7% is generally an internet-savvy group, who are more likely to adopt this extension than the average user. Finally, I think it's safe to say Chrome share will do anything but go down for the foreseeable future.

</comment></comment><comment><USER5> This is wonderful. Perfect for the music blogs I frequent.</comment>


How I Found My Market (and a 10% Monthly Growth Rate) - <AUTHOR> https://www.indiehackers.com/interview/how-i-found-my-market-and-a-10-monthly-growth-rate-2fa6c5e1eb <comment><AUTHOR> I made the decision this year to be more open about my journey bootstrapping Keygen. This interview is a bit long, but I hope it contains some valuable no- BS insight into how I've approached building and growing Keygen. Would be happy to answer any questions that I didn't cover in the interview!</comment>


Why the term 'sharing economy' needs to die - <AUTHOR> http://www.theguardian.com/technology/2015/oct/05/why-the-term-sharing-economy-needs-to-die <comment><USER2> For the most part, the "sharing"/"gig"/"contractor"/"race to the bottom" economies are a result of generation-term poor economic times and skyrocketing income inequality resulting in fewer resources to go around and commodification of existing resources in order to make par. Sharing is far too innocent of a term, because really these "sharing" paradigms are another way of treading water. I hope that someone else has mentioned that before, but it seems absent in these discussions most of the time.

You think the rich need to share/borrow their power tools via the latest app? Pfft, they don't even need to think about power tools because they can hire tradesmen whenever needed. Sharing is for people who can't afford an expert or their own personal items.

</comment><comment><USER3> >A typical analogy for the sort of model people wanted to build was focused on household tools: if you own a drill, you likely don't use it 364 days of the year; why not let others use it in the meantime?

>In its purest sense, that is the sharing economy. But it very quickly ran into an issue: while some people act out of altruism, most don't. My drill is mine. Why should I share it with you?

> [...] And so "sharing" became "renting".

Quite great summary how socialism (at least the utopian kind) implemented at large scale, while a beautiful idea, still remains an elusive dream.

</comment><comment><USER4> I wrote something similar one year ago:

[https://medium.com/@javier_dev/uber-is-not-sharing- economy-2...](https://medium.com/@javier_dev/uber-is-not-sharing- economy-2f6f7ce6f076)

</comment><comment><USER5> "While renting out a spare room in a flat (or even renting out a flat) may be close enough to "sharing" to be hair-splitting…"

It's actually good for me to read these sentences, because it reminds me that clear-minded people can have opinions that I consider borderline nutty. The best thing to do in these situations is to disagree firmly and unambiguously, but politely.

Ahem.

So, pop quiz, "commerce or sharing?": I put up a listing on a website that says "you may stay in my house on october 11-13 for $275 a night." If you don't pay, you may not stay. If you do pay, we now have a deal.

How on earth is that so close to sharing as to be hair-splitting? It is so clearly a quid-pro-quo, money for service transaction that I think it is almost a pure illustration of commerce. If I wanted to illustrate the difference between sharing and commerce and where it gets ambiguous, this would be an excellent example of something that is commerce, not sharing, with no ambiguity.

</comment><comment><USER3> Otherwise, article makes also a good point about services like Uber, that they are not really about sharing anything.

A "sharing economy" version of Uber would be more akin to a car-pooling service.

<comment><USER6> I mean in theory, that's what Uber is supposed to be. Drivers share space in their car while on the way to places, and make some spare change. In practice, drivers pick it up as a part time job and just drive around looking for pickups.

<comment><USER7> I don't see any evidence that Uber is intended to work that way. Drivers don't get to filter riders to only get riders who are going somewhere near to where the driver wants to go. They have to take whoever is nearby, and can only reject a small percentage of requests before they are kicked out of Uber.

</comment></comment></comment><comment><USER8> This is perhaps an application for blockchain technology, keeping track of "ride credits" that drivers earn and can only spend on rides from other drivers. It's not a Taxi model, it'd be a sharing model.

I'm surprised Uber is not running a tier like this, because they could advertise completely free rides (just give a few rides first) and charge a small admin fee

<comment><USER9> Under this 'definition' of sharing, the only requirement seems to be for the goods transferred to be in a 'closed' system. If someone were ever to create a service that traded 'ride credits' with 'food credits', would it no longer be a sharing model? Couldn't we frame the entire world economy, based off of currency as a 'sharing model'?

While I do think sharing models require some kind of 'inclusiveness' to make them viable, I think we must take into account the distribution of goods/resources, and the power relationships that evolve from providing these services. The only way (or at least the only way I can think of off the top of my head) to keep these in check is to allow everyone participating in the system to have a say in how the system operates. Something akin to a co- operative rather than a shareholder driven corporation.</comment></comment>


Show HN: GrowthHax - a revolutionary approach to business coaching for startups - <AUTHOR> https://growthhax.com <comment><AUTHOR> @salomelunarojas good question. We're just starting to spread the word so thanks for your (positive) reaction!

</comment><comment><USER2> How is this not getting more upvotes, I don't understand life any more.</comment>


Extreme steel 'Velcro' takes a 35-tonne load - <AUTHOR> http://www.newscientist.com/article/dn17739-extreme-steel-velcro-takes-a-35tonne-load.html?DCMP=OTC-rss&nsref=online-news <comment><USER2> Neat to see increased innovation being carried out in the steel industry.

The last innovative steel-related thing that caught my eye was ConXtech's Portable Tower at Burning Man 2008 (see <http://www.theportabletower.com/> for a video on how they built a 10-story tower in 3 days using compression joints)

</comment><comment><USER3> So...how do you pull it apart? Is this effectively a permanent fastener? If so, how is better than welding or something?

<comment><USER4> Like regular velcro, shear load capacity is probably much, much higher than the force it takes to pull apart.

Think about the most common application of velcro - shoes - you're keeping the two _sides_ of the shoe together. Velcro prevents the two surfaces from sliding around, not from coming apart.

<comment><USER5> "Metaklett can support maximum weight when pulled on in the plane of the strips, and a square metre can hold a perpendicular load of 7 tonnes, says Mair."

So you only need a 7.1 tonne weight.

<comment><USER6> That's for the whole area. If you pull just a fraction of the area, the force required is proportionately less (think of a strip of Velcro that you pull apart from one end).

fun fact: the Firefox spell-checker knows that Velcro is a trademark, and must be capitalized. Obey the spell-checker. ("Firefox" is also).</comment></comment></comment></comment>


Microsoft Bing Loses Search Share - <AUTHOR> http://www.informationweek.com/news/internet/search/showArticle.jhtml?articleID=220300782

<comment><USER2> Sounds like its time for MS to change the name again and re-launch!

<comment><USER3> Or put in another $100 million towards ads.

</comment></comment><comment><USER4> According to NetApplications, Bing lost 0.2%, Google lost somewhere around 0.2%, and Yahoo lost 0.44%, but it looks like the biggest real change was Baidu, which caught almost all the users google, yahoo, and bing lost.

<comment><USER5> A loss to Baidu should be expected, people will generally switch to a native language program to search. While I believe French, Spanish and the like can be adequately made even solely based in NA, but you have difficulty with languages that no Anglophone will typically have had the potential to learn in school.

Chinese and Japanese are not only complex languages, but they're hard for Anglophones to pick up not only because of distance, but also because of a lack of community integration.

<comment><USER6> Perhaps for a small company, but with the investment google is making there, I doubt it's the translation... [http://www.foreignpolicy.com/articles/2009/09/29/where_googl...](http://www.foreignpolicy.com/articles/2009/09/29/where_google_loses)</comment></comment></comment>


How did you learn to program? - <AUTHOR> http://ilearnedtoprogram.com/

<comment><USER2> One day my dad brought home a reference manual for TRS-80 BASIC. It had all the statements in alphabetical order. I read it front to back and spent a couple years scrawling programs on paper, until finally the IBM PC was introduced and he bought one. I wrote a bunch of BASICA programs, including half a text adventure in a horrible mess of spaghetti. I spent hours with printouts spread across the floor, tracking bugs through thickets of GOTOs.

Then Dad got Turbo Pascal and I discovered the joys of structured programming. For my first project I wrote Conway's Life, and was shocked when it worked perfectly the first time. I never wrote another line of BASICA.

I went to college, thought I didn't want to program for a living and got a degree in anthropology. A few years later I had all kinds of crazy ideas for software running around in my head, plus I was tired of being broke. I bought a machine and some books, learned sql and classic asp, and got a job easily because it was the height of the dotcom boom.

After a few years I discovered that writing endless data entry screens wasn't that exciting, and started learning some real computer science. Still working on that.

</comment><comment><USER3> My dad bought an MSX computer and some programming manuals when I was a young boy. I liked it more than him :) started with just typing over listings from the books and magazines (that was common back then).

Later on I started changing things and trying what would happen. And trying to make games do different things. And wrote quite some programs on my own, like simple games, but soon found what you could do with BASIC was quite limited. But it was kind of the only choice back then, apart from assembly. Somewhat after that I started learning some Z80 assembly from a little book of opcodes.

Much later we got an MSX2, then an Atari ST, then finally a PC (286), man those were crappy compared to the ST :) I learned Pascal using Turbo Pascal, then C using Turbo C (Borland was big back then and everything was Turbo). Learned a lot from other BBS users and TXTfiles.

I get very nostalgic when I think about these things.</comment>


The Two Envelopes Problem: the most boring paradox in the world - <AUTHOR> http://iaindooley.com/post/61292324101/the-two-envelopes-problem-the-most-boring-paradox-in

<comment><USER2> The author appears not to understand the problem as presented - certainly the "solution" as given is inconsistent with my understanding of the problem.

Consider your position. I present you with two envelopes, and tell you that each contains a number, and one of those numbers is twice the other. You choose an envelope, and find that it contains the number 8.3467394756297. You can choose to swap, if you like, and your objective is to maximize the expected value of the number in the envelope you're holding.

Do you swap? Or not? Here's a line of reasoning.

Call the number I've chosen Z. The other envelope contains either Z/2 or 2Z, and it would appear to be 50:50 as to which it is. If you swap, my expected value is then (Z/2) _0.5 + (2Z)_ 0.5 = 5Z/4\. That's bigger than Z, so you should swap.

But that means you should always swap, which doesn't seem to make sense.

Perhaps this version explains more clearly to you the paradox. Or not, maybe you still think it's all obvious. In that case, could you revise your explanation for this context, away from the $20 vs $10 or $40 issues?

<comment><AUTHOR> Yep so the way you've stated it there is my understanding of the problem, except for this bit:

 _You choose an envelope, and find that it contains the number 8.3467394756297_

You're actually given the chance to switch without having first seen the value in the envelope.

If we forget the notion of switching and expected values for a second, I just want to focus on the very start of the statement where you say:

 _Call the number I 've chosen Z. The other envelope contains either Z/2 or 2Z_

The issue as I see it is that the probability exists that the other envelope contains Z/2 or 2Z, but not both - ie. the probability that one of those exists negates the other from existing, because in order for both to be possible you're introducing a 3rd value where only 2 existed at the start.

If you ignore all the envelopes and switching and whatnot you can boil it down to this:

I have two values A and B. I ask you to select one. What is the probability that the remaining value is C? Obviously it's zero.

So if A and B are envelopes, how does this change? If B is twice A how does it affect anything?

All the other information provided in this paradox just serves to distract you from the fact that in order for you to have selected a value, and for the probability to exist that either half that value or twice that value is in the remaining envelope, you would have had to have 3 values present at the start of the exercise.

<comment><USER3> _The issue as I see it is that the probability exists that the other envelope contains Z /2 or 2Z, but not both - ie. the probability that one of those exists negates the other from existing, because in order for both to be possible you're introducing a 3rd value where only 2 existed at the start._

So there is 50% probability that the other one contains Z/2 and 50% that it has 2Z. Do you disagree with that statement?

 _I have two values A and B. I ask you to select one. What is the probability that the remaining value is C? Obviously it 's zero._

No it doesn't. According to the problem, both 2Z and Z/2 are possible and you don't have the information to decide either way. Think of a simple coin toss, before I show you the result it is 50-50 to be heads or tails, even though it is just one of the two.

<comment><AUTHOR> _So there is 50% probability that the other one contains Z /2 and 50% that it has 2Z. Do you disagree with that statement?_

Yes! Well, in some circumstances. Unless you know how the values were placed into the envelope to begin with, how could you possibly assign a probability to it? I just found this great link today: [http://lesswrong.com/lw/dy9/solving_the_two_envelopes_proble...](http://lesswrong.com/lw/dy9/solving_the_two_envelopes_problem/) which basically resolves the problem I'm having by taking into account how the values get into the envelopes in the first place.

If you have absolutely no knowledge of how the values got into the envelope in the first place then there's a 50/50 chance you got the higher value on your first pick, and a 50/50 chance you'll get the higher value on your second pick. You can't make a more informed decision unless you know how the values were initially chosen.</comment></comment></comment></comment>


What's the difference between a startup and a small business? - <AUTHOR>

What makes a startup a startup? Does it have to be technology-related? If I start a small business selling widgets or a service, are the same elements not involved: some capital injection (from savings or family loans), one/two owners acting as CEO, CFO, CIO, Sales, Marketing, HR, Ops, etc., juggling many things and struggling with the same questions?<p>I am truly curious - what constitutes a startup and how is this different from the thousands of non-tech businesses that are started every day? <comment><USER2> A startup is designed to grow rapidly. To do that it has to be a product company rather than a service company.

<http://paulgraham.com/startupfunding.html> (search for "physical")

</comment><comment><USER3> My view: scale/size of market

A small business is going to be mainly local/regional. A car dealership is a small business - might make the owner(s) millions, but still a "small" business.

Car manufacturers like the new Tesla Motors are start ups.

There's plenty of start-ups that aren't tech based, but tech firms probably lend themselves to scaling thus the majority of them being start-ups.

Non tech example: Stonyfield Farm = start-up Farms an hour from me = small/medium businesses

</comment><comment><USER4> Small businesses are typically based on an established business model. Restaurants, bars, retail outlets, etc., count as small businesses.

Startups in contrast are an organization in search of a business model. Once it finds one it doubles down on the product search with a viable business model and develops it to profitability.</comment>


REST Superman – Parallel Async HTTP Client as a Service Open-Sourced - <AUTHOR> http://www.restsuperman.com Fast Parallel Async HTTP/REST/SOAP client as a service to monitor and manage 10,000 web servers.
Sends requests to 1000 servers with response aggregation in 10 seconds. or 10,000 servers in 50 seconds. <comment><AUTHOR> Thanks for your interests in REST Superman.

Is a great devOps tool to speak HTTP in scale.

Fast Parallel Async HTTP/REST/SOAP client as a service to monitor and manage 10,000 web servers. Sends requests to 1000 servers with response aggregation in 10 seconds. or 10,000 servers in 50 seconds.

Check details at [http://www.restsuperman.com](http://www.restsuperman.com) Fork it at [https://github.com/eBay/restsuperman](https://github.com/eBay/restsuperman) with zero installation! It is open source and totally free! Like me at facebook: [https://www.facebook.com/getrestsuperman](https://www.facebook.com/getrestsuperman) Follow me at twitter @restsuperman : [https://twitter.com/restsuperman](https://twitter.com/restsuperman)</comment>


Illustrated Jq Tutorial - <AUTHOR> https://mosermichael.github.io/jq-illustrated/dir/content.html <comment><USER2> I've been a die-hard Linux user for about a dozen years. Recently I had to do some development with MS Powershell. I was very reluctant at first, but after getting familiar with the technology, I almost fell in love.

"Cmdlets", basically commands used in Powershell, output "objects" instead of the streams of text used in a more classical shell. Powershell has built-in tools to work with these objects. For example, you can take the output from one Cmdlet, pipe it through `SELECT` with a list of fields specified, and get a stream of objects only containing those fields. Other operations can be performed against those objects as well, such as filtering and whatnot.

Back to normal _nix commands, we 're starting to see more and more commands introduce direct JSON support [1]. There are even tools to translate output from common commands into JSON [2]. We'll probably see `jq` shipped directly with modern distros soon. Eventually we'll reach a tipping point where it's expected that command supports JSON output. Tools like `awk`/`sed` might get updated to have a richer support for JSON. Finally, we'll have ubiquitous Powershell-like capabilities on every _nix machine.

Powershell _is_ available on Linux. The model of piping objects instead of JSON is both powerful and more efficient (For example, there's no redundant keys like in a stream of JSON objects, leading to less moving bytes, like how CSV headers aren't repeated with every row. Plus, binary data is smaller than text.) But, most developers are hesitant to switch out their shell and existing workflows for a completely new tool, which is why Powershell will likely only be adopted by a small subset of sysadmins.

[1] [https://daniel.haxx.se/blog/2020/03/17/curl-write-out- json/](https://daniel.haxx.se/blog/2020/03/17/curl-write-out-json/)

[2] [https://github.com/kellyjonbrazil/jc](https://github.com/kellyjonbrazil/jc)

<comment><USER3> Though it's pretty immature, nushell has a similar idea, with its own internal data model being streams of structured, typed data: [https://www.nushell.sh/](https://www.nushell.sh/)

And back to nix commands, libxo is used by a chunk of the FreeBSD base tools to offer output in JSON, amongst other things: [https://github.com/Juniper/libxo](https://github.com/Juniper/libxo)

        -% ps --libxo=json,pretty
        {
          "process-information": {
            "process": [
              {
                "pid": "52455",
                "terminal-name": "5 ",
                "state": "Is",
                "cpu-time": "0:00.00",
                "command": "-sh (sh)"
              },

        -% uptime --libxo=json,pretty
        {
          "uptime-information": {
            "time-of-day": " 8:34p.m.",
            "uptime": 1730360,
            "days": 20,

Be nice to see more tools converted.

<comment><USER4> # ip -j a | jq

</comment></comment></comment><comment><USER5> If you're not aware of what jq is, it's "JSON Query", a cli tool for filtering JSON streams - [https://stedolan.github.io/jq/manual/](https://stedolan.github.io/jq/manual/)

</comment><comment><USER6> Very neat project! I think visibility into intermediate stages of a pipeline can be enormously useful for data restructuring tasks, where the individual steps aren't necessarily "difficult" to understand, but it can be hard to keep track of what's going on without a good feedback loop.

Here's a demo of a prototype live programming environment I made for jq, which similarly shows step-by-step views of the data but also gives live feedback as you construct your pipeline:

[https://twitter.com/geoffreylitt/status/1161033775872118789](https://twitter.com/geoffreylitt/status/1161033775872118789)

By the end of that Twitter thread I ultimately morphed it into a tool for building interactive GUIs (eg, get API data in JSON, use jq to morph it into the right shape for your UI, output to a HTML template).

</comment><comment><USER7> Please don't put "Show HN" on posts like this. See the rules at [https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html).

I'm sure it's fine reading material, but if we allowed Show HN to be reading material, every submission would be a Show HN.

</comment><comment><USER8> Shameless plug: if you really like jq, I built a project that uses libjq to process various formats.

[https://github.com/jzelinskie/faq](https://github.com/jzelinskie/faq)

<comment><USER9> If you'd like to avoid cgo, you can use a pure go implementation of jq called gojq: [https://github.com/itchyny/gojq](https://github.com/itchyny/gojq)

<comment><USER8> Thanks for this link. If you'd like to create a GitHub issue, I'd appreciate it. My justification for linking to libjq is that it's a moving target: there are various builtins added across updates etc...

</comment></comment></comment><comment><USER10> great content, it's just a bit annoying that one has to click on every portion of the command to see the "illustrated" part

</comment><comment><USER11> Why does the reader mode icon not show up for this page on Firefox Android? I don't think it's possible to read on mobile atm.

<comment><USER12> There is a specific requirement to trigger that. Not sure whether desktop and Android Firefox is using the same criteria though. ([https://stackoverflow.com/questions/30661650/how-does- firefo...](https://stackoverflow.com/questions/30661650/how-does-firefox- reader-view-operate))

edit: the article does not have <p> tag. so reader view is not triggered.

</comment></comment><comment><USER13> Nice overview of jq! You may want to say demonstration rather than illustration though.

I liked jq but liked json, a similar npm package, a little bit better for simple tasks.

You can find more about it here: [https://github.com/trentm/json](https://github.com/trentm/json)

As a JS dev I tend to have node installed anyhow so I just use a shell alias to wrap 'node -pe' these days. It's not really for shell scripts but it's great for quick every day usage. Plus you can use JS if needed instead of their DSL.

Here the code for the alias in my shell profile: [https://github.com/KylePDavis/dotfiles/blob/master/.profile#...](https://github.com/KylePDavis/dotfiles/blob/master/.profile#L90)

</comment><comment><USER14> Shameless plug: If you use jq a lot, catj ([https://github.com/soheilpro/catj](https://github.com/soheilpro/catj)) can really help you with writing query expressions.

<comment><USER15> I use gron to do this same thing:

[https://github.com/tomnomnom/gron](https://github.com/tomnomnom/gron)

Some options of gron I use often:

\--stream, which treats the input as "JSON lines" format

\--ungron, which converts from the flat format back to JSON

</comment></comment><comment><USER16> Is there something similar for YAML? I've tried `yq` briefly but weirdly enough it doesn't seem to accept standard input in the way that jq does (ie pipe in some json, and output some pretty json)

<comment><AUTHOR> it shouldn't be too difficult to convert between yaml and json, funny i couldn't find a light weight converter easily. I think i will try to write one.

<comment><USER17> Basic YAML, sure, but YAML has some insane features that I don't think would be possible to replicate in JSON. Or, at least, you'd lose some information in the conversion.

For example, YAML supports the concept of reusable fragments. You can define a fragment in one place and reference it further down in your YAML file. A JSON converter could take the final YAML output and turn it into JSON but you would lose the context of the fact that in the original YAML it was an included fragment and not just the same section repeated a few times.

<comment><USER18> Yeah, YAML can also embed arbitrary code in the original Ruby incarnation and that clearly cannot be translated to JSON.

Yeah, no straightforward translation of references to JSON. You could provide both translation ramps, but it would be an implementation-specific convention and not something other JSON tools understood.

</comment></comment></comment></comment><comment><USER19> the tutorial could be dramatically improved by showing some json data and then the results of processing.

<comment><USER20> If you click on the query string in the command it does. Not intuitive at all though.

</comment></comment><comment><USER21> Nice! I struggled to learn jq initially and I made a similar page for my team.

One suggestion is to use with_entries as a replacement for the 'to_entries | map(...) | from_entries' pattern. For example:

      jq '.metadata.annotations | with_entries(select(.key == "label1"))'

is equivalent to

      jq '.metadata.annotations | to_entries | map(select(.key == "label1")) | from_entries'

<comment><USER22> Not related to with_entries, but I didn't see anywhere else in this thread that mentioned dealing with awscli output

from_entries handles nicely the Tags in a lot of awscli output, you can do things like

        aws ec2 describe-instances | \
            jq '.Reservations[].Instances[] |
                {Role: .Tags | from_entries | .role,
                 Name: .Tags | from_entries | .name,
                 Id: .InstanceId}' \
            -C -c | sort | less -R

to get a summary of all your instances sorted by role.

</comment></comment><comment><USER23> I have been using jq for years and still can't get it to work quite how I would expect it to. kubectl's jsonpath seems just about workable.

<comment><USER24> I don't know what the term would be, mental model, but I just can't get jq to click. Mostly because i only need it every once in a while. It's frustrating for me because it seems quite powerful.

<comment><USER18> I tend to only use it for relatively simpler queries than it is capable of. Ditto regular expressions. But I do not find myself missing advanced features of either very often. If I run out of my ability with jq, the manual page and playing around with the query sometimes illuminates the correct answer. And if not, it's often time (for me) to switch to using a less ephemeral program anyway.

</comment></comment></comment><comment><USER25> I like how you have output for each process of the pipeline, however it would be much better in terms of usability if you could dynamically load the result just below the query rather than opening a new page.

With that said this is a great overview!

<comment><AUTHOR> I added another version where all the links are part of the same page / inline div's that are displayed [https://mosermichael.github.io/jq-illustrated/dir- single-fil...](https://mosermichael.github.io/jq-illustrated/dir-single- file/content.html)

</comment></comment><comment><USER26> Would like to have a kind of "rosetta stone" where each of these examples is rewritten by passing the json to "gron" and then using the standard unix tools.

I guess some of the examples would be simpler than the jq solution.

<comment><USER18> Kudos for sharing "gron," I hadn't heard of that tool before and it looks quite useful: [https://github.com/tomnomnom/gron](https://github.com/tomnomnom/gron)

<comment><USER26> For a truly unix experience, filter the output of gron through this

        grep -Ev '({}|\[\])' | tr -d \; | cut -c 6-

It will remove useless cruft that is added for the output to be valid javascript

</comment></comment></comment><comment><USER27> apart from all the useless use of cat, great content!

<comment><USER28> God forbid that someone should ever write (- y + x) rather than (x - y), what a useless use of the plus sign!

Why have a problem with this? Catting a single file is a well-known idiom for outputting its contents into a stream, plays well with positioning in pipelines, and has the nice property that you can erase as much of the pipeline as you want, to be able to peek inside it at any point.

<comment><USER29> Completely agree. Cut it if your file is 10GB of logs because it requires an extra stream copy, but otherwise, it is the best way to interactively drill down into data and write the pipeline as you go. It is almost never a valid criticism, and when it is, calling it Useless UOC (reads as an insult to the author!) was the worst way to communicate that to the masses.

</comment></comment></comment><comment><USER30> This is so much easier with Powershell. V7 is totally cross-platform and I cant see why people have a problem to use it, if nothing else then for `ConvertFrom/To-Json/CSV/Whatever` cmdlets ..

<comment><USER31> I'd love to see an example. Let's say I'm on a Debian server. How would I acquire Powershell (is it GPL/MIT?) and use it to convert some JSON?

<comment><USER32> Powershell Core and .NET core are MIT Licensed as of 2016 [https://github.com/PowerShell/PowerShell/blob/master/LICENSE...](https://github.com/PowerShell/PowerShell/blob/master/LICENSE.txt)

Debian install instructions [https://docs.microsoft.com/en- us/powershell/scripting/instal...](https://docs.microsoft.com/en- us/powershell/scripting/install/installing-powershell-core-on- linux?view=powershell-7#debian-8)

Enable https, add feed, apt install

As someone who started out scripting in Powershell but preferred Linux as an OS. I found myself missing powershell's object passing in opposition to bash's string passing.

That being said I now primarily use iPython for advanced shell tasks as I can leverage all of Python's libraries like JSON or YAML.

<comment><USER33> > That being said I now primarily use iPython for advanced shell tasks as I > can leverage all of Python's libraries like JSON or YAML.

TBH they're both excellent choices. nushell looks really good too. The point is not to scrape text - rather than write a bash script that can handle JSON properly, write a pwsh/python/nushell script that handle everything properly (ie, by selecting fields rather than scraping text).

<comment><USER30> Yeah, lets wait 10 years for nushell to catch up.</comment></comment></comment></comment></comment>


In the Beginning Was the Command Line (1999) - <AUTHOR> http://cristal.inria.fr/~weis/info/commandline.html <comment><USER2> > For a long time I could not bring myself to take the notion [of a free OS] > seriously. It was like hearing rumors that a group of model rocket > enthusiasts had created a completely functional Saturn V by exchanging > blueprints on the Net and mailing valves and flanges to each other.

Absolutely brilliant.

Unrelated: It's amazing how many predictions he got right. It took Microsoft another 15 years to fully realize that you cannot "bet the farm" on your OS.

<comment><USER3> Seems like betting the farm on their os worked for them for a good long while.

Perhaps their strategy has shifted at the precise time that it will no longer be so profitable.

</comment></comment><comment><USER4> _Keep in mind that Apple 's ability to monopolize its own hardware supply was once cited, by learned observers, as a great advantage over Microsoft. At the time, it seemed to place them in a much stronger position. In the end, it nearly killed them, and may kill them yet. The problem, for Apple, was that most of the world's computer users ended up owning cheaper hardware. But cheap hardware couldn't run MacOS, and so these people switched to Windows_

Well, almost 20 years later. It seems like Apple'sstrategy was right. By owning the hardware and software and having the culture to do both, they were able to come out with the iMac that made them profitable, the iPod that made them relevant, and the iPhone that made them rich.

Owning their own OS allowed them to take one OS and port it to phones, tablets, watches, set top boxes, and speakers.

<comment><USER5> I don't think Apple's _strategy_ can be summed up as 'monopolizing its own hardware supply'. Though it was definitely part of their MO, it's difficult to prove that it was responsible for making them profitable / relevant / rich.

Plenty of companies have tried owning the hardware and software stack on their products, and not ended up being successful.

The phrase 'owning the hardware and software stack' also disguises the fact that they took an existing software stack that had a _kind of_ free licence that allowed them to remove the freedoms of their customers / users.

The suggestion that Apple has a single OS that they've ported to phones, tablets, watches, set top boxes and speakers is a bit disingenuous. Microsoft tried pushing the 'one OS everywhere' propaganda more than a decade ago (too), but it simply didn't / couldn't happen (either).

Ultimately it isn't a compelling sell to end users -- what users are most interested in is a consistent, quality interface, which may include consistent availability of quality applications, depending on platform.

</comment></comment><comment><USER6> _Unix, by contrast, is not so much a product as it is a painstakingly compiled oral history of the hacker subculture. It is our Gilgamesh epic._

</comment><comment><USER7> It'd be interesting to see this updated 20 years on. Microsoft giving away OS's. Apple making money. Linux powering 90% of the cloud. Unix/Linux in nearly every phone on the planet. The command line and batch processing re- ascendant.

</comment><comment><USER8> "This is exactly how the World Wide Web works: the HTML files are the pithy description on the paper tape, and your Web browser is Ronald Reagan"

already worth the read

<comment><USER9> Stephenson is a miracle worker with metaphors

</comment></comment><comment><USER10> Garrett Birkel's 2004 annotations are also interesting. They are now themselves older than ITBWTCL was when he Birkel wrote them.

[http://garote.bdmonkeys.net/commandline/index.html](http://garote.bdmonkeys.net/commandline/index.html)

</comment><comment><USER11> "The only real question about BeOS is whether or not it is doomed."

As a former BeOS user, this still stings me a bit.

<comment><USER12> The rest of TFA discussing free software seems prescient, considering BeOS somewhat lives on in Haiku

</comment></comment><comment><USER13> Previously:

[https://news.ycombinator.com/item?id=12469797](https://news.ycombinator.com/item?id=12469797)</comment>


Google Chrome Allows Access to Webcam without plugins - <AUTHOR> http://chrome.blogspot.com/2012/07/new-senses-for-web.html

<comment><USER2> Awesome. There are only two things that really stand in the way of many HTML5 apps competing with native apps, camera access is one. Address book access is the other.

Before this only Opera 12 had experimental camera support.

</comment><comment><USER3> I'm sure nothing bad will come of this.

<comment><USER4> Did you even read the article? It requires permission, just the same as existing Flash methods do.

This could be very, very interesting video conferencing and the like.

<comment><USER3> And there was never an exploit that allowed malicious websites access to your camera in flash...

<https://www.google.com/search?q=flash%20camera%20exploit>

<comment><USER4> ...so how is it any worse than the current situation?</comment></comment></comment></comment>


MitM'ing my STB (2016) - <AUTHOR> https://xakcop.com/post/mitm-stb/ <comment><USER2> Back in 2005 or 2006, I had purchased a cable-ready QAM PCI Tuner card. When I scanned channels, I saw a number of very high numbered channels that all appeared empty of content.

One day, I was flipping through the channels, I hit one of the high number channels, a relatively newly released movie was playing on it. I started watching it for a bit and the video paused for a second and then it started rewinding.

It took me a few seconds to realize that the Video on Demand service was being transmitted in the clear on these high number channels and the people's STBs were programmed not to see them. With the PCI card though, I could see any VoD being played on my local "circuit".

<comment><USER3> Having a QAM card and living in an apartment complex, there was a couple years where I never had to pay for big PPV sporting/wrestling events. And also, _other_ programming types late at night, which was a bit creepy and left me to which neighbors had which proclivities.

I also found that NBA League Pass and NHL Center Ice weren't encrypted that way too.

</comment></comment><comment><USER4> I'm _very_ surprised this worked at all. I'd have thought HBO et al would have wanted a good (Cisco NDS, Nagra, Conax etc) CAS layer to prevent this kind of stuff happening as part of any agreements to be carried on the network.

In the past I've worked on a few IPTV projects. Users would only see channels they were entitled to (unlike Sat / Cable) projects, and there was a heavy CAS layer.

Interesting though. A lot of boxes are essentially just running an embedded browser so there's scope for some poking around.

<comment><USER5> I wouldn't be surprised if the guy opened his bill next month to discover that he's suddenly subscribed to HBO. It's trivial for the cable company to log those requests and they know who owns which box. An audit would discover his shenanigans immediately.

</comment></comment><comment><USER6> To be fair, while the channel rights enforcement is done "client side," the real work is likely done by an M-Card in your set-top box. This is a secure environment that contains hardware to support decrypting MPEG streams on the fly. The M-Card is able to decrypt key bundles that are sent out-of-band and in-band in the video streams.

The bar to get channels you're not subscribed to is quite a bit higher because of this mechanism, alas.

<comment><USER7> (Post is from 2016 which the title on HN doesn't mention!)

Its a MITM. Packets are being changed on the fly. It being a MITM doesn't mean it works. Nor that it works world-wide in 2019. The term MITM isn't descriptive enough by itself.

Perhaps this worked in Bulgaria in 2016? I'd like to see some proof that he got HBO to work though. I didn't see that clearly specified.

I mean, for public transport they were still using (the insecure) Mifare Classic in 2016 in Bulgaria. See this post from the same blog [1]

[1] [https://xakcop.com/post/cloning-rfid/](https://xakcop.com/post/cloning- rfid/)

<comment><USER8> I'd bet 10$ that it still works, given that it works in Serbia on Orion :)

</comment></comment></comment><comment><USER9> This is a bit content light, and there's no MITM of any content. Anything valuable will be secured with a secret client key. All this will do is show encrypted data flowing as well as some signalling in the clear.

<comment><USER10> He's MITM'ing the signalling. Guess it worked?</comment></comment>


Ask HN: What stack you use to build websites? - <AUTHOR> <comment><USER2> Almost always Django. Customers love Django Admin, and when they don't, it's really easy to tweak.

For dynamic apps that don't fit the Django model, I'll bust out Node.js, and for static sites, just a plain Python script to generate HTML files.

Boring choices, but the older I get, the more I'm OK with that :)

<comment><USER3> For someone looking to learn to code web-app's from scratch, would you advise Django over Vanilla JS, Node, or Vue?

<comment><USER2> If I were you I'd want to really good with plain Python (or Node) before learning a framework, but that's because I'm the kind of person who wants to know how everything works. Once you've written a few CRUD apps you'll wish there was a tool to do some of the common stuff for you, and Django will be waiting for you.

But, if you're not that kind of person it's perfectly OK to jump straight into Django. You'll certainly get further more quickly, even if you won't be able to explain exactly what your code is doing.

</comment></comment></comment><comment><USER4> Go & Postgresql on the server.

Angular 2+ on the frontend.

Why?

Go is fast and bare bones, and works nicely as a backbone to an API (especially with a GraphQL intermediary). Postgresql plays very nicely with Go, especially if writing queries by hand.

Angular 2+ is great. Vue is also really nice, but I love what Typescript brings to the table and find that Angular being built around TS makes me enjoy it more than retrofitting Vue + TS definitions. I decided on Angular 2+ with great trepidation, but the bad rap carry-over from AngularJS turned out to be entirely undesreved. It's a wonderful framework, and I'm enjoying it greatly.

Also, a shout-out for AWS Lambda. I use it here and there for heavy workloads (personally I wouldn't replace my webserver with it entirely yet), and it made my server infrastructure MUCH more pleasant.

</comment><comment><USER5> ASP.NET Core. VueJS on the frontend if it's a webapp.

Jekyll if it doesn't need to by dynamic.

</comment><comment><USER6> Backend language: Scala. Long live FP and type safety.

Backend framework: Play. Inspired by RoR, works with Java/Scala. Light, fast, scalable out of the box.

Database: PostgreSQL. Introduction is not needed.

Database library: Slick. Nothing beats compile time type safety.

Frontend language: Typescript. Better than pure JS hands down.

Frontend framework: Angular (5). Because Typescript is a first class citizen.

<comment><USER7> I have a question. How do you speed up the database CRUD operations when the number of records fitting a certain criteria may range to 10000 or more. It takes a lot of time to get this over the network and the user is not going to use/see all of it at once. Given such constraints, how do you speed up the query so that there's little to no lag time for the user(at least for say first 100 records).

</comment></comment><comment><USER8> It depends on what you mean by a website. If it's one level above a static page, a static site with frequent changes, I'll make my own build chain in Node.js with Gulp and host the pages in S3 and Cloudfront.

Or I will use Rails behind Nginx if the site is more dynamic. Each release would get built into a Docker image and be deployed that way. HAProxy would be there mostly to forward requests to multiple apps if there are any.

For a site that needs a lot of client side scripting, I use Ember. I'm so happy with it that I will probably use it with Fastboot for those times I would have used Rails. In terms of databases, I've been using CouchDB unless I had an overwhelming need for relational records. It saves time because CRUD and websocket/eventsource/longpolling come with it out of the box.

</comment><comment><USER9> For anything dynamic, I usually start with Django but I'm not opposed to building with Node and React

For my personal site, I rebuild it in whatever language I'm trying to learn. In this case, I'm rewriting part of it in golang which I use at work.

</comment><comment><USER10> For work, VueJs and ASP.NET MVC (on .NET 4.6.2, not core).

For fun, a mixture of VueJs and Elixir/Phoenix and ASP.NET Core

</comment><comment><USER11> Language: Go,

Framework: [https://github.com/apex/up](https://github.com/apex/up)

Hosting: AWS lambda

I can't speak highly enough of up, it's amazing for creating serverless(sic) apps without changing the way you structure your app. I also use up for some python apps

<comment><USER4> How much slower are web requests vs a live server?

I see that Up has a warming feature - is that sufficient enough to avoid slow requests for you?

Does the reliance on Up as a service make you nervous for using them for production? How much hot water would you be in if they close their doors?

Are you using Up Pro?

I know - lots of questions, but it seems like a neat offering I hadn't seen before, and I can't find any testimonials elsewhere online.

<comment><USER11> Hi,

1\. Apart from the startup latency i haven't noticed much of a big difference between up/lambda and a live server. And lambda will keep your function warm for AFAIK, 1hr, so if your app has lots of traffic you never experience startup latency.

2\. Up is open source, if they close their biz, I'd just continue using their code. I haven't used up pro yet.

3\. Up has been around for probably under 1yr so you may not see a lot of testimonials yet. It is made by tj(the same guy who made expressJS, the nodejs web framework among other softwares)

You can direct more questions ; [https://up.docs.apex.sh/#links](https://up.docs.apex.sh/#links)

</comment></comment></comment><comment><USER12> Vapor - Swift on the server!

If you haven't heard of it, check out [https://vapor.codes](https://vapor.codes). It's an absolutely amazing framework that is non-blocking in version 3. The performance you can squeeze out of it is unbelievable.

<comment><USER13> That site has some serious problems on my OS X Sierra/Chrome. Every time I load the tab it just freezes the whole browser. Great advert for all the claims they're making.

</comment></comment><comment><USER14> We mostly do rails apps but one of our 4 projects use elixir/phoenix on the backend and react on the frontend.

We are really pleased with the performance of BEAM and the functional flavor of elixir clearly leads to code that is easier do read and to test.

We have been toying with Elm lately.

</comment><comment><USER15> [https://lad.js.org](https://lad.js.org)

</comment><comment><USER16> Static sites: GatsbyJS on S3 or Firebase hosting.

Web apps: ReactJS on s3 hitting NodeJS API on AWS EB.

</comment><comment><USER17> I'm getting very comfortable with plain Go without any frameworks for the backend. Postgres for databases.

For a quick prototype, I'd use Vue.js and Spectre for CSS. I suck at frontend anyway.

Deployed behind nginx.

</comment><comment><USER18> Flask or Django for dynamic sites.

Jekyll hosted with Netlify for static sites.

</comment><comment><USER19> Linux, PostgreSQL, Rails, Webpack, React and Sass. For the most part.

This is a great solution for general-purpose use, dropping React of course if there's no need for interactivity.

</comment><comment><USER20> I'm writing the HTML and CSS in Emacs, applying common elements with Make, and feeding it to an Apache server over on NearlyFreeSpeech.

<comment><USER21> I'm doing basically the same thing but with markdown thru pandoc as well. It's very basic but it works for my personal use.

<comment><USER20> I got downvoted. Emacs sure isn't popular.

Ha. Of course it is!

</comment></comment></comment><comment><USER22> HTML/CSS/JS & LAMP with Craft CMS for dynamic sites, just HTML/CSS/JS on S3 for static sites.

</comment><comment><USER23> Basic websites? Probably Jekyll with some build tools like gulp. Never needed anything more for that.

Otherwise Rails with PostgreSQL.

</comment><comment><USER24> right now I am using a Go framework called Gin for my food site.

I use libsass with bourbon.io and I have a Makefile to compile the binary, generate the css, minify things.

For blogging, I have used Wordpress

But I have recently started looking on moving over to Hugo to generate html using a bootstrap 4 template.

</comment><comment><USER25> I'm thinking about going with Clojure for a POC. Anyone using Clojure?

<comment><USER26> Excellent choice. Two of the best reasons to recommend:

1\. Hiccup syntax is a great way to "template" HTML, being clojure-native data structures with the full power of the language available to you.

2\. REPL-driven workflow makes it a dream to debug things like request handlers.

You will miss out on some perks from bigger/more popular frameworks—there's no built-in admin panel waiting for you—but you can take advantage of the Lisp Curse here and quickly build out what's missing. I find it's a worthwhile trade-off.

</comment></comment><comment><USER27> for work: nodejs + react (usually serverless, but if not, then with k8s/ecs)

for experimenting: golang + react (want to see what the fuss is all about)

for fun: elixir + pheonix (since I never got on the rails bandwagon)

</comment><comment><USER28> For work, server-side Javascript (not Node.js)

For fun, Java servlets/JSPs

<comment><USER29> Are you able to talk a bit about your server-side Javascript setup? What was your decision making process for using something other than Node? How does the ecosystem of libraries and supporting infrastructure look like?

<comment><USER28> It's not something that I chose in particular. I work at a Salesforce Commerce Cloud[0] partner, with half a dozen clients. The language syntax is Javascript (in fact, I'm sure that it's built on the JVM's JS engine), but uses a proprietary API. The platform is laser focused on doing scaleable e-commerce, although it has somewhat competent CMS and CDN functionality, at least enough as necessary to load pages fast and sell things. Once you start doing things like newsletter list management, file uploads, and even product reviews, its less than optimal.

[0] [https://www.demandware.com/](https://www.demandware.com/)

</comment></comment></comment><comment><USER30> ASP.NET Core + Vue/Ang/React + SQL Server on Azure

</comment><comment><USER31> Just websites? Static HTML and assets, served from Caddy.

<comment><USER32> Laravel, Vue, Postgres.

Experimenting with Laravel/Lumen API only for backend, and NuxtJS with SSR.

Also AdonisJS is looking promising to go into that JS world with both front and back ends.

</comment></comment><comment><USER33> Lamp with CakePhp

</comment><comment><USER34> LAMP with Symfony. Ionic for mobile dev.

</comment><comment><USER35> Lua/Torch backend + Redis + React

</comment><comment><USER36> OctoberCMS running on a LNAMP stack

</comment><comment><USER37> For sadomasochism: assembly

<comment><USER38> Same but DotNetNuke

</comment></comment><comment><USER39> Mainly Ruby on Rails

</comment><comment><USER40> PostGres, Redis, Go, Vue. Why? because I am able, not able to understand anything else.

</comment><comment><USER41> Static website built and managed by Publii CMS.</comment>


AppleTV Take 2 the real revolutionary/evolutionary product of MWSF 2008 - <AUTHOR> http://gizmodo.com/345071/apple-tv-take-2-229-no-computer-required-direct-rentals-netflix-screwed

<comment><AUTHOR> I just watched the entire keynote and I think the skinny supermodel sexy MacBook isn't the standout product. Having been an early adopter of Windows Media Center PC, I can say that the PC part got in the way of the entertainment hub experience many a time. And we're not talking BSOD here - just the Penn-and-Teller combination of a PC and Entertainment Hub. Apple TV Take 2 doesn't require a PC. I think it would make a perfect Mother's Day gift (let your in-laws rent movies, see Flickr slideshow of their grandchildren's daily lives, YouTube party tricks). As someone who does tech support for relatives and family members (unwillingly sometimes), I welcome cool new digital devices that might actually not require a manual and tech support. What do you guys think of the Apple TV Take 2.

<comment><USER2> I think this is a great step. What I'd like to see though is a _much_ larger hard drive and a Netflix-style monthly subscription option. It'd be sweet if they could combine the new Time Capsule (terabyte hard drive + Airport Extreme) with the Apple TV. That would be a really nice device.</comment></comment>


How to create a legible text to your website using CSS - <AUTHOR> http://mrbool.com/how-to-create-a-legible-text-to-your-website-using-css/25823 <comment><USER2> More like how to create a meaningless title.

Seriously though, the whole article looks like it's been stolen and run through a thesaurus.

> Line-height property is used to build a transcript more readable. The > transcript helps to increase the quantity of gap between every stripe while > adding the extra line-height and it helps in the judgment that bound as it > moves behind the content.

Make your time.</comment>


Show HN: Get Any GitHub User's Email Address - <AUTHOR> https://recruit.now.sh/ <comment><USER2> > Email address for user "milankragujevic" could not be found

Hah.. [https://github.com/milankragujevic](https://github.com/milankragujevic)

<comment><AUTHOR> Thanks, it seems that some users opt-out of committing their email information.

</comment></comment><comment><USER3> Couple of suggestions:

1) It seems like the site should always show the user's listed email, if one is public. Mine show's someone else email that I have merged many commits from, but my email is public.

2) maybe a confidence interval to show the percentage of commits with this email?</comment>


8 laptop bags that will speed you through airport security - <AUTHOR> http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9114295

<comment><USER2> It's come to this. Laptop bags created specifically to adhere to asinine TSA regulations in an attempt to make your flying experience 1% less annoying. I'm having a hard time finding a better definition of "treating the symptom, not the disease."

Regardless, with the recent addition of checked-baggage fees and the ever- preposterous liquid volume/container restrictions for carry-ons, having to take my laptop out of its case is the least of my gripes. The contradiction just occurred to me, too: Dissuade people from carrying on most items while simultaneously charging them not to. It makes so little sense I'm kind of impressed by the idiocy of it all.

<comment><USER3> It makes tons of sense if you consider it a "revenue-enhancing device."

</comment></comment><comment><USER4> A reasonably-designed top-load or slot-load bag works just as well.

There's no reason to presume TSA won't change its individual or collective minds on even permitting any bags with this feature to "speed" through the security theater, too. You could well end up taking longer to untangle your laptop if they do.

</comment><comment><USER5> It would be easier to have custom-made a padded sleeve with lots of velcro on the side, and a big bag with the corresponding velcro inside.

I only buy bags at chain stores so i can check out the padding first (Apple, best buy, circuit city), I need burly laptop bags (like Brenthaven, Patagonia or Chrome bag). I found this out after nearly smashing in DVI port on my poor powerbook

There's this one they claim you can check in to airline(?):

<http://www.brenthaven.com/catalog-checkable-case.html>

</comment><comment><USER6> No self-repsecting hacker would carry any of these, except the last one. Their designs are all geared toward "business" travelers--you know, the ones wearing a suit and using WindowsOS.

</comment><comment><USER7> I really don't see how these bags are different than any normal laptop bag except there is some airport/security reference in the name, the price is inflated and they are made with cheap plastic zippers. I've traveled all over the world with my laptop and electronic gadgets and never once had an issue an airport because I used a simple laptop backpack bag.

</comment><comment><USER8> It's too bad those bags are so ugly. Maybe the last one I might consider carrying around. And, of course, it's the most expensive. Great.

</comment><comment><USER9> fugly. the only one not bad is the tom bihn and i wouldn carry around a bag that big every day.</comment>


Could folks please help me get DigitalOcean onto wikipedia? (deleted thrice) - <AUTHOR> https://en.wikipedia.org/wiki/Wikipedia:Deletion_review#DigitalOcean

<comment><USER2> Does DO actually need and warrant an encyclopedia entry? The Netcraft article about them says they had 7,000 hosts -- versus 165K at Amazon and several million at BlueHost at the time, the other companies mentioned as points of comparison.

DO is well-known on HN, but I don't know anyone else who's heard of it. The deletion reason was "A7: No explanation of significance", which requires "a credible claim of significance or importance" to have a page on wikipedia. Merely being popular among entrepreneurs, or having some number of customers, doesn't make a company significant in the encyclopedic sense.

It was deleted again for "G11: Unambiguous advertising or promotion", and the five sentence article about their "fast, low cost options" does in fact read like an ad. It wasn't fact-checked, either, since DO is not larger than Amazon nor does it operate its own data centers.

<comment><USER3> > DO is well-known on HN, but I don't know anyone else who's ever heard of it.

IMHO that's a pretty good reason to give them an article. I've heard the name, but I don't know what they do or what's their specialty. If I wanted to get information on them I would be looking on Wikipedia (besides their website, but companies' websites are often full of marketing speak so I usually go to a third party).

<comment><USER4> Wikipedia is an encyclopedia, not a company index.

</comment></comment></comment><comment><USER5> Here is the last version of the article:

DigitalOcean is a [[virtual private server]] provider based in Manhattan. They provide fast, low cost options attractive to entrepreneurial, experimental, and hobbyist developers. Their focus has raised them to prominence, having recently surpassed [[Amazon AWS]] in the number of web-facing computers, according to Netcraft <ref>[http://news.netcraft.com/archives/2013/12/11/digitalocean- no...](http://news.netcraft.com/archives/2013/12/11/digitalocean-now-growing- faster-than-amazon.html</ref>). The company operates datacenters in [[New York]], [[Amsterdam]], [[San Francisco]], and [[Singapore]].

They recently closed a funding round with $37.2 million from Andreessen Horowitz.<ref>Alden W, Andreessen Horowitz Backs DigitalOcean, a Cloud Computing Start-Up. 6 March 2014. [http://dealbook.nytimes.com/2014/03/06/andreessen- horowitz-b...](http://dealbook.nytimes.com/2014/03/06/andreessen-horowitz- backs-digitalocean-a-cloud-computing-start-up/</ref>)

== References ==

{{reflist}}

Now that is not very interesting. "Growing faster than Amazon" could become interesting if it is sustained, hut as pointed out elsewhere they are tiny. Wikipedia is not a cloud server hosting comparison site, there are plenty of those that can be much more useful. They have not produced any interesting software or anything else innovative, and their only point of note is being cheap and advertising a lot on twitter. There are vast numbers of cloud provision companies, and this article has not convinced me that right now this one is sufficiently interesting that anything else other than what is written above could ever be written, unless something else happens. Certainly the VCs no doubt hope they will become more interesting over time.

<comment><AUTHOR> And if you have any better thoughts, I absolutely invite you to contribute them from exactly where you found those words.

<comment><USER6> I think you need to get the article to be on the same level as, eg, [https://en.wikipedia.org/wiki/Oculus_VR](https://en.wikipedia.org/wiki/Oculus_VR). What you have now in the sandbox is a stub at best, and a pretty bad stub. Web-facing servers is not important enough be a quarter of the information you're including.

</comment></comment></comment><comment><USER7> It looks like there have been already quite a few discussions among Wikipedia editors about this article (it's quite interesting to follow the comments chronologically).

The main criticism I see is that the suggested article sounded like advertisement with links that only serve PR.

<comment><AUTHOR> How can you see that?

</comment></comment><comment><USER8> As far as I can tell Wikipedia simply isn't interested in articles about for- profit companies unless they're multi-billion-dollar and completely impossible to ignore.

</comment><comment><USER9> Annoying isn't it? Looks like PG problem #23 way back from July 2008 - [http://ycombinator.com/ideas.html](http://ycombinator.com/ideas.html) \- is still an opportunity.

<comment><USER10> Agreed. The right site organization, so that significance floats naturally to the surface, is what's needed.

</comment></comment><comment><USER11> I don't know why it was deleted but, most likely, the article didn't meet the required standards. A good article about DO should have no problem staying up (if notable enough).

<comment><AUTHOR> I wrote exactly what I went there wanting to know about DO. If you think you could contribute better words, please help the sandboxed version

[https://en.wikipedia.org/wiki/User:Niels_Olson/DigitalOcean](https://en.wikipedia.org/wiki/User:Niels_Olson/DigitalOcean)

<comment><USER11> By standards I also mean the notability standard. Being a business that's doing well is not enough.

<comment><USER12> SSD in the cloud, Linode is just now trying to catch up. I would not expect a wikipedia editor to understand how RPMs of spinning platters in the cloud is not novel. Personally, I'm not a fan of DO but they did push SSD in the cloud while MSFT Azure is still justifying (and recently lowering their price for)their 5400RPM drives.

I don't expect an encyclopedia to include everything that ever existed, but the mere facts that people from across the world are googling Digital Ocean and discussing DO on more than just HN should necessitate an __ENTRY __into a free online encyclopedia. Why capture the history of a company when we can just edit /delete it? There are more important revisions going on.

Cynically but realistically, who is getting paid (or getting donations) to keep DO down?

Is the purpose of Wikipedia to educate and inform or retardedly (not my word) not have facts of the existence of a company that is a competitor to their fund contributors? DO is just a flash in the pan, like the DODO bird, but people still want to know what a dodo bird was.

</comment></comment></comment></comment><comment><USER13> Is there any way to see the deleted article you created? I had this problem before and created a new one following Wikipedia's editors advice and it got accepted. Maybe the article wasn't that good or maybe it just doesn't make sense to have an entry on Wikipedia about Digital Ocean for now.

<comment><USER5> I posted it here [https://news.ycombinator.com/item?id=7610483](https://news.ycombinator.com/item?id=7610483) \- I didnt look at the earlier ones, can do if you like. You have to be an admin to see deleted content.

<comment><USER13> Thanks! I'd say creating something similar to the article about Linode has a much better change of being accepted: [https://en.wikipedia.org/wiki/Linode](https://en.wikipedia.org/wiki/Linode)

<comment><USER5> Thats better, certainly. Something about that length is always about right to start an article. People make the mistake of starting with something too short.

</comment></comment></comment></comment><comment><USER14> One could argue that DO has participated significantly in, if not triggering, the recent cost cutting in the cloud hosting industry. That seems fairly notable.

<comment><USER15> If you can find a reliable source stating that, the anti-deletion argument would be much stronger (from a Wikipedian's POV) than just saying "one could argue".

</comment></comment><comment><AUTHOR> So, I'm not against deletionism, but it's a pain in the butt when I spend the better part of an hour writing and citing only to see it deleted by someone who probably knows nothing about it and were only justified by speedy deletion criteria. I would like to charge the deletionist with the responsible for A) preserving the material that was written, and B) my time (I figure $150/hr is about right).

Alternatively, if you would like to help buff up the article before it goes live again, I sandboxed it here: [https://en.wikipedia.org/wiki/User:Niels_Olson/DigitalOcean](https://en.wikipedia.org/wiki/User:Niels_Olson/DigitalOcean)

<comment><USER2> > Their focus has raised them to prominence, having recently surpassed Amazon > AWS in the number of web-facing computers, according to Netcraft

You misread that article. They had a larger single-month gain than AWS in web- facing computers. They are not larger than Amazon.

> The company operates datacenters in New York, Amsterdam, San Francisco, and > Singapore.

They do not operate any data centers. They have servers in other companies' data centers in those locations.

The rest of the article _is_ written like an ad. It's missing any claim of significance -- what makes DO different from the other hundreds of small VPS providers? Wikipedia isn't a company directory, significance is a requirement for having its own page.

<comment><USER7> Very true. It's quite a difference if you talk about absolute numbers or about rates of growth.</comment></comment></comment>


The infrastructure to access workforce data - <AUTHOR> https://www.argyle.io/data-network <comment><USER2> whoah, that's awesome. what are the main use cases?

<comment><AUTHOR> Lending, Banking, Insurance, Benefit Management, Hiring. We are excited to see what the developers will come up with too!</comment></comment>


Ask HN: What's your cost of living in the Bay Area now? - <AUTHOR> If you live in the Bay Area,
1) How much do you spend on housing, food (do you cook?), car/commute, child care, or other major budget posts? Total expenses is also helpful if you don't care to break it down.
2) In what area do you live? What type of housing?
3) What's your household? Single? Couple? Children? Friends?
<comment>====
Why do I ask?
I'm considering a post-doc at Stanford that would include relocating my family (wife + 2yr old) from Sweden. We're obviously not in it for the money, but we need to know how much to ask to make ends meet.
The base offer is ~$60k/year + medical insurance + one or two trips to visit home. My feeling is that I need additional funding, or my wife (also engineer, biotech) needs a job. Judging from Craigs List about $40k/year goes directly to rent for a small family.
Your answers help us form a realistic view on what we can expect, and what income we need to live near Stanford for a year or two. Hopefully it helps someone else, too.
Any comments welcome. My mail is in my profile for anything off-topic. </comment><comment><USER2> A friend of mine has a wife and kid ... paying 3500 a month for an average place in Mountain View (2 bedrooms). I'm paying 2500 for a 1 bedroom and am considering finding roommates (in my late 30s .. shesh). You could try renting someone's basement ... nice deals are hard to come by but you might get lucky.

Also consider living a bit further away (Santa Clara or even San Jose). Traffic sucks but it is a necessary evil. You might be able to get a decent 2 bedroom for 2500. Make sure your wife has immigration status that allows working else you will be screwed. I have many friends who had highly educated spouses who ended up sitting at home for a year+.

Edit .. some more additions. I don't want to scare you but want to give you some data.

1) Make sure you budget for a car. While uber is awesome, it is very hard to live here without a car. Everything is sprawled out. A cheap car isn't great value ... you end up spending 20K on a car (you recover costs when you sell it of course).

2) Make sure the uni covers health insurance for your whole family ... it is often a payroll deduction so find out how much they charge.

3) East Palo Alto is dangerous so don't go there.

4) I eat out all the time ... food is not as expensive compared to Europe. With a kid, eating out probably isn't a good idea though. Consider shopping in bulk at Costco (need a car for that though).

5) I see posts on craigslist about professional couples who want to share a house. I hope you get lucky and find one of those situations. Seems like a good option.

6) Find out if the uni has subsidized housing. UCSF does and offers it to post-docs. That can be an amazing deal.

Best of luck to you.

<comment><AUTHOR> Thanks!</comment></comment>


ErLLVM: LLVM backend for high performance Erlang - <AUTHOR> http://erllvm.softlab.ntua.gr <comment><USER2> This backend has been merged in to the Erlang/OTP master branch: [https://github.com/erlang/otp/commit/9d46875b53ffb21bc55aec4...](https://github.com/erlang/otp/commit/9d46875b53ffb21bc55aec4a2c76472133ea5d1c)

If you're interested in LLVM you might want to subscribe to LLVM Weekly (which I author). [http://llvmweekly.org/issue/12](http://llvmweekly.org/issue/12)

<comment><USER3> LLVM Weekly is awesome, thanks for doing that!

</comment></comment><comment><USER4> I think I need some guidance in understanding this project. The typical LLVM- base compiler 'stack' looks like this:

      [Front-end] -> [LLVM AST] -> [Back-end]

Where the front end compiles your language of choice to LLVM's AST format, and a back-end translates AST to machine code. All the really awesome code optimization stuff happens at the AST level before the back-end gets involved.

So is ErLLVM a back-end that emits Erlang (such that any front-end language can be translated to Erlang)? Or is it an LLVM _front-end_ that compiles Erlang to LLVM AST? An in the latter case, if LLVM already targets ARM, why does ErLLVM need to do work related to ARM?

<comment><USER5> > Or is it an LLVM front-end that compiles Erlang to LLVM AST?

This, kind-of. It's a new HiPE[0] backend. See [1] for how LLVM integrates into the existing Erlang pipeline.

[0] [http://www.it.uu.se/research/group/hipe/](http://www.it.uu.se/research/group/hipe/)

[1] [http://erllvm.softlab.ntua.gr/documentation/design/pipeline/](http://erllvm.softlab.ntua.gr/documentation/design/pipeline/)

</comment></comment><comment><USER6> Can't remember which talk it was from but I remember enjoying Joe Armstrong speaking about the importance of a language being "correct" rather than fast:

        The performance problem is solved. You just wait 20 years.

<comment><USER7> Doesn't work any more... Now, we need people to invent decent compilers and languages.

<comment><USER8> Nonsense, it still works. Hardware prices are still falling. People aren't writing web apps without garbage collection. Performance/$ is still going to rise.

<comment><USER9> > Performance/$ is still going to rise

But is performance/core also going to keep rising? Or do we need smart compilers/languages to make use of all the cheap cores?

<comment><USER8> I mean, this conversation has been around for easily 10 years. We live in a world where we already have to do this—look at all the progress in the last decade on the prevalence of futures, async i/o, and channels/queues/whatever. Memory bandwidth and latency has proven to be far more of a performance drag that has improved far slower—the likely areas that will lead to performance problems will be in areas other than single-core clock speed.

<comment><USER10> Well, that -- the Memory bottleneck -- is precisely why we need a rethink of platforms and tool chains.

Languages will provide the semantics (in context of memory hierarchy) of data locality, and compilers that optimize for that.

[nop edit]

<comment><USER11> As it turns out, Erlang is already providing much better memory locality than your average language. Each process runs in a contiguous memory area (heap+stack) which fits perfectly with a many-core world.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> "Currently, ErLLVM supports the AMD64 and x86 architectures. There is also some ongoing work for ARM."

Isn't the whole idea of LLVM that you don't need to support individual architectures, because LLVM can be separately compiled into whatever architecture you need?

<comment><USER5> Here, LLVM is not used to output an independent and self-contained binary (that would hardly make sense). It's used as a backend for HiPE's native code generation[0], and it's possible that the rest of HiPE (or part of the integration itself[1]) is not quite ARM compatible (especially ARM64)

[0] [http://erllvm.softlab.ntua.gr/documentation/design/pipeline/](http://erllvm.softlab.ntua.gr/documentation/design/pipeline/)

[1] "The linearized RTL code is translated to LLVM Assembly. […] After the translation is completed, the LLVM code is printed to a file and the LLVM toolchain is invoked in order to produce an object file. […] The lib/hipe/llvm/elf64_format.erl module is responsible for extracting the binary code and all other necessary information from the object file."

</comment></comment><comment><USER13> I thought Erlang was already fast? Are there any before/after benchmarks available post-LLVM?

<comment><USER14> The only exposure I have had with erlang was with rabbitmq and it was blazing fast - I wonder if this would affect it much?

<comment><USER15> There are some parts of rabbitmq which is highly CPU-bound. This will probably help RabbitMQ in those areas.

</comment></comment></comment><comment><USER16> Hopefully someone with more knowledge of all the moving parts can answer this: would this benefit Elixir in any way, considering it also compiles down to Beam or is it specifically for Erlang? I ask this because the documentation makes reference to first compiling to beam, and then compiling modules using LLVM.

<comment><USER17> I believe this will benefit Elixir as well. LLVM code would work on the BEAM bytecode (via the HiPE backend). You can already use a HiPE enabled erl interpreter with Elixir today to this won't change.

<comment><USER15> You would be correct, sir :)</comment></comment></comment>


Objective-C Tuesdays: break out of a loop - <AUTHOR> http://blog.ablepear.com/2009/11/objective-c-tuesdays-break-out-of-loop.html

<comment><USER2> The title is somewhat misleading.

While Objective C syntax is mixed into the examples, the looping constructs discussed are entirely native C constructs.

The code also looks to have 32-bit dependencies based on its use of the %u.

The use of %lu or %lx and casting is usually preferred in the NSLog, lest 64-bit operations encounter errors.

eg: NSLog(@"NSUInteger: %lu", ((unsigned long)i));

[http://developer.apple.com/mac/library/documentation/cocoa/c...](http://developer.apple.com/mac/library/documentation/cocoa/conceptual/Strings/Articles/formatSpecifiers.html)</comment>


Reinventing coding for the iPad : edit the parse tree - <AUTHOR> http://slidetocode.com/2012/03/17/coding-reinvented-for-the-ipad/

<comment><USER2> This kind-of look like the shots/demos I've seen of the Self environment.

In fact, I think a Self-type environment might be the best: image-based, most of the objects are live (not types and a class browser as in Smalltalk, but a hierarchy of live objects) and can be manipulated via small pop-up menus, drags and swipes, with only minimal actual text edition.

It's a very visual experience, where actual typing is generally restricted to small functional blocks (for method slots), this is shared with Smalltalk (methods are edited one at a time in a small self-contained editor).

I don't think text is a good primary interface when the keyboard is a second- class citizen, this is decorated text but text is still king. The problem should be turned around, in touch-based environments where keyboards are secondary so should text be: it should be a DSL for defining behaviors but most of the application-building should be spent away from text.

</comment><comment><USER3> I think your prototype is interesting and probably a step in the right direction, though perhaps not practical until it is fleshed out more.

I think this would be an interesting approach for a language that has Hindley- Milner type inference (like Haskell or OCaml.)

Then you could build an interface that makes it impossible to write a program that can't compile. In that case, the cost:benefit of such a UI might be most favorable.

(Update: Typed Racket might be a good target for your UI, since it has both a Lisp-like syntax and a robust typing system <http://docs.racket-lang.org/ts- guide/>)

<comment><AUTHOR> This is definitely a prototype and at best a first step. I am looking to sign up beta-testers, so get in contact if you are interested.

Your point about type inference is great. I'm keen on Haskell and I do like the idea of an editor in which I can only write code that compiles.

<comment><USER4> I must say that this is a very interesting project. Any hope for an android version?

The problem with making a editor that enforces "correct" coding is how to make the transitional writing work. At least for me, I tend to write things that wouldn't work, jump to some other place and fix up some related issue, and then jump back to where I was to finish that fragment. If you only allow "correct" code that wouldn't work. Also, saving code that is in a half- finished state might be an issue.

 _Marking_ the offending s-expressions, though... that would be a neat feature.

<comment><AUTHOR> Android (like other languages) is on the roadmap once the iPad scheme version is working smoothly.

Your point about the intermediate state between a blank file and working program is true, but for example in TouchScheme you could never have a simple parentheses mismatch error such as (display (+ 1 2) as it takes care of that part of the S Expression for you. This does not however sacrifice any flexibility in what you can write.

<comment><USER4> > Android (like other languages) is on the roadmap once the iPad scheme > version is working smoothly.

Cool, I guess I'll just have to be patient then...

> Your point about the intermediate state between a blank file and working > program is true, but for example in TouchScheme you could never have a > simple parentheses mismatch error such as (display (+ 1 2) as it takes care > of that part of the S Expression for you. This does not however sacrifice > any flexibility in what you can write.

Yes, that's true. But the grand-grand-parent wasn't only talking about such simplistic error-checking. At least that was my impression. Say that you were to start writing a lambda expression, and then realize that you need to change something else:

      (lambda (x

With automagic paren-balancing you'd get

      (lambda (x))

which is still an invalid form. You could make the editor auto-insert a nil (or is it #f in scheme? I always get those mixed up), but that would be a dangerous route to take. Or you could mark it as an invalid form and make the user fix it before the editor even considers evaluating the program (or just that fragment).

That said, you have a very interesting program and the ideas I see here are very interesting as well. I hope that you plan to post more updates on this to hacker news!

<comment><AUTHOR> The scheme equivalent of nil is ill-defined and differs between implementations, though I certainly don't intend to go that route.

In a future post I will attempt to explain TouchScheme's behaviour in this sort of situation more fully, I think I have a good compromise. If you do have an iPad though, please get in touch, I'd love to hear your feedback on the beta.

</comment></comment></comment></comment></comment></comment><comment><USER5> Have you studied Touch Develop by Microsoft Research? They seem to have found a good way of enabling coding on touch devices. You can get more info at <http://www.touchdevelop.com/>

</comment><comment><USER6> They're typing parenthesis in the video. You can't type parenthesis on an iPad without switching the key set. That, plus the small targets and odd autocomplete (missing close-parenthesis, by the look of it) makes me wonder if they've actually used this to a significant degree _on an iPad_ instead of in the emulator...

<comment><AUTHOR> You also need to switch keyboards to type numbers, and parentheses are there just one switch away. Similar to those behind the iPad port of Vim I think that the slight convenience of a keyboard accessory view does not justify the reduction in screen space.

</comment></comment><comment><USER7> I don't think I could code with something like this, the elements of the interface keep moving, things slide in and slide out all the time, it's just too distracting. I guess people used to IDE who constantly nag you like Eclipse might like it.

<comment><USER8> That seems surmountable. Surely the slidiness is tweakable, at least at the design level. Even if it was just faster, that would help, wouldn't it?

</comment></comment><comment><USER9> Sometimes I like to think about how this sentence will be finished:

"One hundred years ago, programs were punched onto cards that were fed into the machine. Fifty years ago, programs were written in a text editor and compilers just did the most basic optimizations. Now, of course, programs are...."

It seems obvious to me that in 30, 40, 50 years, we won't be developing software in the same manner we do now. Especially web software, which is a painful step backwards from UI Builders.

In this timeline, the transition from procedural to OO is insignificant, like the transition from hand-punched cards to machine-punched. With the benefit of hindsight, OO, Functional, whatever, will all feel primitive.

<comment><AUTHOR> C has been going strong for 40 years now, and Lisp for 50, so code may look worryingly similar.

I predict that C& or C% will have an enormous industrial following, and the breakthrough of functional programming into industry will still be just around the corner.

More seriously my hope is that functions will begin to be filled in from a specification. In principle it would be great to write the test, and have the code filled in from there. It is not a problem I see being solved in the immediate future though.

</comment></comment><comment><USER10> I think this is fairly interesting, it would be cool to explore combining this with visual block style stream processing like Max MSP or pd or vvvv, etc.

</comment><comment><USER11> I didn't like how the user types at the top, but is constantly going down to the bottom to press "Run" for the REPL. Maybe that's just watching the video, and with the ipad it's not so annoying?

<comment><USER12> Seems to me like Run deserves to be a gesture.

</comment></comment><comment><USER13> Very interesting. Looks like a cross between the App Inventor (blocks-to- scheme) and Alice (fill-in-java).

I had a similar project for my dissertation and I also came to the conclusion that working on the AST is vital, so Lisp looked like a great option. But it was believed that it's much to unpopular and scary for anyone to ever manage to use it, so I ended up generating JS from blocks. Didn't work very well at all.

</comment><comment><USER14> I am also working on a set of iOS tools that allow you to view, edit, and commit your Github projects on the go.

If you are interested in coding from your iPad, check out <http://jackalope.me> to sign up for early access.

</comment><comment><USER15> I really like that you have taken the typing out of syntax. Syntaxes could be distilled into icons and be put out of the line thought. I'd like to code like that.</comment>