JMESPath – A query language for JSON - <AUTHOR> http://jmespath.org/ <comment><USER2> I like JMESPath, but it has some serious limitations which prevent it from being as general purpose as jq.

JMESPath limitations:

\- No simple if/else, but it is possible using a hack, documented below.

\- The to_number function doesn't support boolean values, but it is possible using a hack, documented below.

\- can't reference parents when doing iteration. Why? All options for iteration, [* ] and map, all use the iterated item as the context for any expression. There's no opportunity to get any other values in. May be possible for a fixed set of lengths. Something akin to the following (except there is no syntax for switching or if statements):

      switch (length):
       case 1: [expression[0]]
       case 2: [expression[1], expression[1]]
       case 3: [expression[0], expression[1], expression[2]]
       ...

\- Key name can't come from an expression. Why? The ABNF for constructing key- value pairs is given as: keyval-expr = identifier ":" expression. The key is an identifier, which gives no possibility for making it an expression. No functions modify keys in such a way as to allow using an expression as a key.)

\- No basic math operations, add, multiply, divide, mod, etc. Why? Nobody added those operators/functions.

\- There's a join, but no split.

\- No array indexing based on expression. Why? Indexing is done based on a number or a slice expression, which also doesn't support expressions. Here's the ABNF:

      bracket-specifier = "[" (number / "* " / slice-expression) "]" / "[]"

\- No ability to group_by an expression.

\- No ability to get the index of an element in a list

Hacks:

Convert true/false to number:

      boolean_expression && `1` || `0`

If/else:

Option 1)

      [{q:CONDITIONAL_EXPRESSION, v:IF_RESULT_EXPRESSION},{q:!COND_EXPRESSION,v:ELSE_RESULT_EXPRESSION}][?q]|[0].v

Option 2)

      {"if":CONDITIONAL_EXPRESSION, "ctx":@} | [{q:if ,v:ctx.IF_EXPRESSION},{q:!if,v:ctx.ELSE_EXPRESSION}][?q]|[0].v

</comment><comment><USER3> I love JMESPath. I first discovered it when using the AWS CLI `--query` option[0].

I then realized that using it in my code would make things much more declarative and easy to grok than a bunch of maps, filters etc. Here's a real example which I think illustrates it[1]. It has libraries for lots of languages with a clear specification/compliance test[2].

The cherry on the top is the interactive query on the website. You can tweak any of the examples (both queries and data) and get results instantly. Extremely useful for playing around, building queries to work with JSON data (webhooks, API responses etc)

[0] [https://docs.aws.amazon.com/cli/latest/userguide/controlling...](https://docs.aws.amazon.com/cli/latest/userguide/controlling- output.html)

[1] [https://gist.github.com/gingerlime/757c7b4778c1ab68605dfce66...](https://gist.github.com/gingerlime/757c7b4778c1ab68605dfce66ceb8378)

[2] [http://jmespath.org/libraries.html](http://jmespath.org/libraries.html)

</comment><comment><USER4> Besides's this projects cli, jp ([https://github.com/jmespath/jp](https://github.com/jmespath/jp)), I see jl ([https://github.com/chrisdone/jl](https://github.com/chrisdone/jl)) and jq ([https://github.com/stedolan/jq/](https://github.com/stedolan/jq/)) in the comments. I wonder if anyone has had experience with all three (or even just one) and can comment on their experiences?

<comment><USER5> jq is by far the best developed and has the most intuitive syntax, but it doesn't have a formal spec for its language.

I have been maintaining [https://github.com/kislyuk/yq](https://github.com/kislyuk/yq), which wraps jq with a transcoder for YAML and XML.

<comment><USER6> Is there demand for a formal spec for jq? Would that lead to additional implementations? Serious question.

<comment><USER7> I would love to have a jq lib in every lang, which would probably require a spec

<comment><USER6> That's fair.

</comment></comment></comment></comment></comment><comment><USER8> The reinvention of XML in JSON is almost complete - JMESPath vs XPath, JSON Schema vs XML Schema etc. If you need semi structured data to that level, consider using XML instead - you can validate it, there's plenty of tools, it's very stable and mature etc

<comment><USER9> We still need XSLT for JSON to complete the circle.

Though it seems like XSLT should support JSON:

[https://www.w3.org/TR/xslt-30/#json](https://www.w3.org/TR/xslt-30/#json)

<comment><USER10> XML Stylesheet Transformation, the language to describe transformations of XML documents into another XML documents. Isn't jq or JMESPath an example of such a language for transformations?

<comment><USER11> No, those are query languages akin to XPath.

<comment><USER10> What's the difference between query and transformation then? Isn't transformation a (vector) function ^f of input ^x, with n dimensions of x and m dimensions of f where f_i = f_i(x_1, ... x_n)?

<comment><USER12> XPath can be used in Xslt, but not the other way round. In Xslt you can create new elements, while in XPath you can't. Seems like a pretty big difference to me. XPath isn't Turing complete either, while Xslt is.

</comment></comment></comment></comment></comment></comment><comment> crooked-v The example on the front page seems equivalent to (and only marginally less verbose than):

        locations
          .filter(l => l.state === 'WA')
          .map(l => l.name)
          .sort()
          .join(', ')

<comment><USER13> The benefit of a query language is that it can be described declaratively (i.e. in a non-executable text file, perhaps within JSON itself), and then programs written in any language can execute its query logic using a standard interpreter written in that specific programming language.

So you get reusability of queries across the stack, in all languages that implement a parser against the spec. Your example only provides re-usability in JavaScript, and requires evaluating code at run-time so may not be suitable for queries based on user-submitted data in multi-tenant environments.

<comment><USER14> I really appreciate this comment. I was trying to figure out why I wouldn't use native data types and functions, but this makes it clear.

In your opinion, where would someone be storing the json such that they'd benefit from a tool like this? The only time I use json outside of pulling it from an API (where I can convert it to a native object) is probably storing it in postgres, where I've already got json querying tools.

<comment><USER13> Some cases off the top of my head:

\- Infrastructure configuration stored in JSON. Query could reference other JSON files, or the JSON file itself (loops would need to be considered).

\- Declarative reactive programming, e.g. platforms like IFTT. You might want to take certain actions based on data in a JSON post. The IFTT GUI would create JSON config files that its server side parsers can safely use without eval'ing code to decide which action to take.

\- Adding conditional logic to jsonschema form generation. Recently I've built a questionnaire renderer in react that renders forms based on jsonschema. The user creates forms with a GUI, which compiles them to JSON, and then the renderer knows how to render. Conditional logic (e.g. question B is required if question A === true) can be quite limited when constrained to pure JSON. Something like this could help with that.

The nice thing about declarative syntax is you can build a GUI to generate it, so users never use the JSON itself, but you can store it in a database, safely execute rules based on it, etc. without requiring programming from the user.

That said, there are usually better ways to accomplish this, like in pure JSON for example. Mongo syntax achieved this, with declarative operators like $or{}, ${sum}, etc., but it can be quite cumbersome.

</comment></comment></comment></comment><comment><USER15> Thanks for taking the time to write this tool. Can you explain how it is distinguished from jq?

</comment><comment><USER16> I want to add one more into the mix - Couchbase has something called "N1QL" ('nickel'), which is actual SQL adapted for JSON:

[https://www.couchbase.com/products/n1ql](https://www.couchbase.com/products/n1ql)

It's not standalone though, you need Couchbase to use it.

</comment><comment><USER17> Does this have any mathematical foundation like the relational algebra for SQL? Or more generally, does a mathematical framework exist to treat this or similar constructs and that goes beyond what relational algebra provides and that, for example, also handles aggregate functions?

The reason I am asking is that I am currently trying to build a tool to analyze a kind of time series data, think log file entries, in order to look for anomalies and visualize them. I could of course just build all the transformations I am interested in in an ad hoc fashion but it would be nice to have a mathematical framework in order to start out with a small set of basic operations and then compose those while having some guarantees about the expressiveness of that the basic operations and ideally also a rigorous foundation for transforming them, for example for performance optimizations.

But so far I was unable to find something that seems fitting, everything I am aware of is either to limited like relational algebra or way to general like general functions. It feels like what I am looking for should exist but I am unable to find it.

<comment><USER18> What reasons did you not go with SQL itself? I may not fully understand what you're trying to do, but in any case it sounds really interesting.

<comment><USER17> I never tried it but I am expecting the performance to be not good enough, it takes already several minutes with code specifically written to perform the calculations I am interested in. And because I don't know what exactly I am looking for I need more or less interactive speed so that I can try out many different ways to look at the data. But maybe I could use [materialized] views to convey enough information to the query planner how to efficiently carry out the calculations or maybe I am even underestimating how good query planners are. I just have the gut feeling that performing a lot of aggregation will make a database perform a lot of unnecessary work. But maybe I should and will try loading the data into SQL Server and see what happens.

The other thing is that SQL seems not the best fit to me. Say you just want to know how many events occurred in the last three months in any hour, that is straight forward grouping and counting at first, but already rounding the timestamps to an hour is not as obvious as it should be. But if there was no event in a specific hour, your result will just have no row for that hour instead of a row saying there were zero events in that hour. This in turn will cause more trouble if you want to build a histogram showing in how many hours there were say 0 to 9, 10 to 19, 20 to 29, and so on events. Certainly still doable with SQL but we are already entering the territory where writing a single query will take most people several hours to get the desired result.

I also couldn't easily tell how to express calculating the 99th percentile of the event size for every day of the week and hour of the day. I am pretty sure it is possible but I guess it would also be pretty unreadable unless you put in quite a bit of effort to create utility functions instead of hacking together one huge SQL statement. Then again I don't really know much about the more recent SQL features for partitioning and aggregating, maybe I should have a closer look at that first.

<comment><USER18> Is this for an open source project, or anything you'll be publishing? I'd be interested to follow on with the results!

<comment><USER17> Right now it is just an effort to develop a tool to diagnose and hopefully thereafter fix random performance problems we are experiencing with one of our applications in production. Despite having a small team dedicated to investigating the problems, monitoring every click and function call with Dynatrace, having had a Microsoft SQL server expert look into it, and getting the system audited by one of the big consulting companies, the problem persists since years and nobody has really any clue about what is going wrong.

The performance is never really great, it is [one of] the central applications of the company and depends on the interaction with a sizable junk of the system landscape developed over decades and therefore it is prone to be affected by incidents in a lot of systems but most of the time it is good enough. But once every couple of weeks or months something goes badly wrong an requests, it's a web application, start taking several seconds or even minutes to complete. Minutes later everything is back to normal.

But I digress. If I would manage to come up with a reusable and somewhat general tool to analyze data similar to what I am looking at, I would consider releasing it. It could either be a somewhat general data analysis and visualization tool, think R, or it could be more specifically tailored towards looking for anomalies in data sets like the one I am investigating. But as of now I am struggling to come up with a general framework to express the analyses I am performing and therefore all I have is a rather ad hoc collection of transformations that extract and visualize aspects of the data that could lead to new insights into what is going on.

But right now it is really driven by our specific issue, I notice something in one view of the data and then come up with a new transformation to look at it in more detail or from a different angle. It is nothing that could easily be reused by anyone else and so for the moment it seems most likely that this will never become public or maybe only in the form of a blog article explaining what kind of information might be useful to look at and how to derive it from logs that look rather uninteresting at first glance.

<comment><USER18> Aha, well thanks for sharing this far :)

</comment></comment></comment></comment></comment></comment><comment><USER19> See also [https://stedolan.github.io/jq/](https://stedolan.github.io/jq/)

</comment><comment><USER20> A worthwhile alternative to this approach (a JSON-specific query language) is a language for converting JSON structures to newline-delimited records. Then, standard shell tools can be used to query and join: [https://github.com/micha/json-table](https://github.com/micha/json-table)

</comment><comment><USER21> For those interested in arbitrarily transforming JSON objects (for example, in a communications pipeline) I'd recommend JSONata. It's quite useful and we're well along in a Golang port with $function extensibility. [http://jsonata.org](http://jsonata.org)

<comment><USER22> Agreed. I like JSONata a lot, even though it's the dark horse among JSON traversal languages. I've had a good experience parsing semi-unstable JSON with it.

</comment></comment><comment><USER23> There is also JSON Pointer ([https://tools.ietf.org/html/rfc6901](https://tools.ietf.org/html/rfc6901)) from IETF.

Very simple standard and easy to implement, but not as powerful as jmespath nor jq.

<comment><USER24> To say that it's "from IETF" is sort of a misnomer I think. RFCs are submitted _to_ IETF by others, not by IETF itself.

</comment></comment><comment><USER25> jq exists, is fast, and works well. Is this compatible?

<comment><USER26> No, and I generally like jq's syntactic choices better.

</comment></comment><comment><USER27> This looks interesting - but doesn't MongoDB basically achieve the same effect? I kind of prefer MongoDB because you query JSON with JSON - but I'm open to changing my mind :)

<comment><USER28> If you're using MongoDB already, then sure use MongoDB's query tools. But if you are just working with raw JSON from a potential variety of sources, or in a streaming context, then you need something more in-place and general- purpose, which this appears to be.

</comment></comment><comment><USER29> why choose this over jsonpath (like xmlpath) or jq?

</comment><comment><USER30> I already have a query language for json. I insert json into mssql 2017 community edition and query it there. [https://docs.microsoft.com/en- us/sql/relational-databases/js...](https://docs.microsoft.com/en- us/sql/relational-databases/json/json-data-sql-server)

</comment><comment><USER31> One more alternative to many listed here is SPARQL-Generate. A single query language that works for XML and JSON, and has syntax borrowed from SPARQL.

[https://ci.mines-stetienne.fr/sparql- generate/playground.htm...](https://ci.mines-stetienne.fr/sparql- generate/playground.html)

</comment><comment><USER32> My tiny lib with very similar functionality: [1]. The query syntax is slightly different though. Also I decided to re-use JS for evaluation of sub- expressions instead of implementing own full-fledged parser.

[1] [https://github.com/xonixx/jsqry](https://github.com/xonixx/jsqry)

<comment><USER33> I love libraries like this, which is small enough to be read in one sitting. I can scan through and get a general understanding of everything that it does.

The "evaluation of sub-expressions" made me curious. This line:

       token.func = Function('_,i,args', 'return ' + token.val);

..could be a potential security issue with user-submitted expressions?

<comment><USER32> Thanks. I doubt this could be a security issue. Typical usage like so

        var name = one(users, '[_.id==?].name', 123)

uses parameterized queries, same idea as with SQL to eliminate injections.

<comment><USER33> I see, I should have dug deeper before commenting. Wow, parameterized queries, there's been a lot of thought put into this compact library!

</comment></comment></comment></comment><comment><USER34> I built this VS Code plugin to convert JSON interactively using JMESPath: [https://marketplace.visualstudio.com/items?itemName=octref.v...](https://marketplace.visualstudio.com/items?itemName=octref.vscode- json-transform)

Might be useful if you are testing API or playing with JSON data.

<comment><AUTHOR> Well actually - your plugin has led me to find JMESPath and post the link to HN :D

</comment></comment><comment><USER35> I'm sad that JSONSelect ([https://github.com/lloyd/JSONSelect](https://github.com/lloyd/JSONSelect)) never caught on. It uses CSS selectors to query JSON, which has the nice side effect that learning to use it improves your CSS as well!

</comment><comment><USER36> I remember when xml started down this road too. "We aren't going to be sgml, but just a lightweight markup. Xpath, xslt, etc. And now we have xml today, the modern day sgml.

But this time it's different?

</comment><comment><USER37> There is also JsonPath.

[http://goessner.net/articles/JsonPath/](http://goessner.net/articles/JsonPath/)

</comment><comment><USER38> Does someone knows nice human-friendly search language like the one in Jira, Slack, etc?

</comment><comment><USER39> the second I looked at the example on the homepage and saw this:

sort(@)

I'm like nope! What is this "@" symbol? Why can't that be "name"? I'm already passing judgment that this library will be a nightmare to use which isn't good.

Now I know I can read the docs and eventually what I can pass the sort expression and what it all means, however, this is an issue I come across more and more with new libraries in programming... show simple examples, not "smart" or complicated ones. I shouldn't have to read through docs to try to decipher an introductory example. There is a reason every programming language starts with "Hello World".

<comment><USER40> This is not that new. And it happens to be the JSON query language _built in_ to the AWS CLI tools.

For last 3 - 4 years I see lots of AWS CLI examples piping through jq. That's an extra dependency that's not necessary when this is built in.

Here's the author's idea of intro materials (posted Jan 2015):

[http://jamesls.com/how-to-easily-explore-jmespath-on-the- com...](http://jamesls.com/how-to-easily-explore-jmespath-on-the-command- line.html)

I've found him very responsive on bugs and (provably useful) feature ideas.

</comment></comment><comment><USER41> I'm rather disappointed its not called JPath.

<comment><USER42> Unsurprisingly there are already multiple projects called JPath

</comment></comment><comment><USER43> this, combined with GraphQL would be awesome

</comment><comment><USER44> So no mention of JSONiq which came before JMESPath?

</comment><comment><USER45> May also be interested in the `jq` CLI, which on first glance appears to use a similar but not identical query language. [https://stedolan.github.io/jq/](https://stedolan.github.io/jq/)

<comment><USER46> seconded. the jq language is surprisingly powerful and at first glance at jmespath, the syntax is similar.

<comment><USER47> I think the equivalent jq query would be something like:

        [.locations[] | select(.state == "WA").name] | sort | join(", ") | { WashingtonCities: . }</comment></comment></comment>


Imagining the Google Future (2006) - <AUTHOR> http://money.cnn.com/magazines/business2/business2_archive/2006/01/01/8368125/index.htm <comment><USER2> > Free wi-fi, a faster version of the Web, the Gbrowser, and the cube > transform the technology landscape and our language.</comment>


Creating a Christmas card on a vintage IBM 1401 mainframe - <AUTHOR> http://www.righto.com/2017/12/creating-christmas-card-on-vintage-ibm_7.html <comment><USER2> Deja vu! I spent years fixing mainframes at IBM and the 1403 lived on for years after the 1401, attached to more modern systems like System/360.

It was quite a beast to maintain. The main part is a "train" of metal slugs with the letters, digits and a few symbols that hurtle around on a steel oiled track.

To print a letter H, the machine fires an electromagnet that drives a hammer onto the next H as it flies past.

One of the maintenance activities was adjusting the hammer strike, which you did by printing a page full of H's, and moving the strike forwards and backwards so that the left and right uprights of the "H" were both printed clearly.

The worst scenario with this machine was a "train crash", when one of the slugs dug into the train and all of the flying metal slugs smashed into each other in a giant screaming hail of destruction.

Other activities: \- topping up the hydraulic fluid \- replacing dead hammer drivers

<comment><USER3> Hah, I never thought I would ever hear a story about a computer that needs its hydraulic fluids topped-up.

My first modem is 28.8k, I guess you can call me young'un...

<comment><USER2> Young'un indeed!

IBM used to use hydraulics pretty extensively. Their 2311 disk drives used hydraulic actuators to move the heads in and out over the platters. Hot pressurized oil and spinning magnetic media - a combination not made in heaven. I seem to remember stories about injuries caused by hydraulic oil piercing engineer body parts.

Thankfully they were phasing out as I started. Though living in the colonies, we used to see machines still working that were probably nowhere to be found in the US any more.

<comment> King-Aaron > I seem to remember stories about injuries caused by hydraulic oil piercing > engineer body parts.

Hydraulic fluid injection injuries are appalling, and can often require amputation. I recall assisting a guy who had split a main line on a bobcat, and had oil spray into his hand. He lost most of his fingers.

</comment></comment></comment></comment><comment><USER4> Wow, what a memory rush. I used to color on fanfold line printer paper like this. When I was in kindergarten I'd sometimes go with my dad to work on a weekend when he needed to debug a job. I think those are the exact printer and keypunch models.

I would happily play on the punchcard machines for ages. When you turned one on (with the flip of a heavy switch) they'd start humming, giving a sense of coiled power. I loved the crisp thud of each punch, and the fluffy mass of little squares in the bin that collected waste. Compared with modern computing technology, they have a very industrial feel. I remember being delighted that my last name was all on the top row of the keyboard.

I also remember being absolutely fascinated by insert mode on the terminals. I could make shapes with the symbols and then make them move forward by arrowing back and holding down the spacebar. The slowly fading green glow of the phosphors was magical to me, as was the way each letter was composed of visible dots.

There was a haecceity, a thisness to early tech like this that I miss a little in comparison with the incredibly flexible devices of today. I wouldn't go back, of course, but I definitely get why people spent time maintaining and restoring relics like this.

<comment><USER5> > The slowly fading green glow of the phosphors was magical to me, as was the > way each letter was composed of visible dots.

If you have nostalgia for phosphor, but don't want a huge, hot, CRT in your office, and you have Mac, check out the terminal emulator "Cathode": [http://www.secretgeometry.com/apps/cathode/](http://www.secretgeometry.com/apps/cathode/)

(No association. I just like the product.) It's extremely configurable, you can simulate a wide variety of tubes in various states of (dis)repair.

Probably the perfect way to play nethack.

<comment><USER6> There's another one called "cool retro term" that will run on more operating systems.

[https://github.com/Swordfish90/cool-retro- term](https://github.com/Swordfish90/cool-retro-term)

<comment><USER7> Couple with this font for a true retro feel:

[http://sensi.org/~svo/glasstty/](http://sensi.org/~svo/glasstty/)

</comment></comment></comment></comment><comment><USER8> I _loved_ those 1403 printers as a high school kid working on the IBM 360/65 at the Naval Electronics Lab on Point Loma (San Diego area).

Not sure why/how they hired me for the summer to do systems hacking (lost in the mists of time), but I remember adding some feature or other to the WATFOR Fortran compiler. (Maybe some additional COMMON features?)

There was something ultimately satisfying about the fonts used and the way a finely-tuned 1403 would render characters (even lower case on special models!).

</comment><comment><USER9> To complement this: Johann Johansson - IBM 1401 - A User's Manual - [https://open.spotify.com/album/3ZqqvWwHzoVCxwdsaUaF9z](https://open.spotify.com/album/3ZqqvWwHzoVCxwdsaUaF9z)

</comment><comment><USER10> This is brilliant! We have one of these rusting in the basement at work, this gives me ideas. It would sure beat the dot-matrix printer I've been using to annoy my colleagues, but would definitely be harder to connect to wifi.</comment>


Code reviews and bad habits - <AUTHOR> http://bitquabit.com/post/code-reviews-and-bad-habits/ <comment><USER2> He hits upon a good point with the criticism of gerrit. For instance, I recently pushed a set of 14 patches through a gerrit review: all of them related. But they had to go through one by one. The reviewers are looking at the set of changes through a peephole, and you end up having to defend things along the lines of "I promise that is taken care of in the patch after the next one; please approve this."

There are ways to submit multiple patches, but there are issues with all of them, so I patiently work one by one, not submitting the next patch at all until the previous one clears.

If you submit multiple patches that are parented off each other in the normal way, then it triggers too much activity whenever the posterior ones get rebased.

Rebasing dependent patches to a common parent is not always feasible.

If you do submit multiple unrelated patches such that they are rebased to a common parent, the system can still be overwhelmed, if some of the reviewers are robots that trigger builds. Suddenly, you've kicked off twelve independent builds, one for each patch.</comment>


JQuery 1.8.2 released - <AUTHOR> http://blog.jquery.com/2012/09/20/jquery-1-8-2-released/

<comment><USER2> Jquery is one of the building blocks of modern web upon which, many web pages, plugins, functionality is based.

That said I think it would be better for the community if they went a bit slower on major releases like 1.4/1.8/1.9/2.0, and more on minor releases for bug fixes, compatibility and performance improvements.

<comment><USER3> This /is/ a minor release containing only bug fixes, right?

<comment><AUTHOR> Yes, although there are some performance tweaks as well. But it is quite a small release this time.</comment></comment></comment>


How the Army plans to use Microsoft's HoloLens goggles on the battlefield - <AUTHOR> https://www.cnbc.com/2019/04/06/microsoft-hololens-2-army-plans-to-customize-as-ivas.html <comment><USER2> So what's the viewpoint internally from Microsoft employees? It seems like at Google at least, employees are strongly unified against working on militarized applications of their technology.

Is it different at Microsoft? If so, why?</comment>


Radio Garden – Explore live radio by rotating the globe - <AUTHOR> http://radio.garden <comment><USER2> There is also an app called "radiodroid" (or maybe it is "radiodroid2"; on the [https://f-droid.org](https://f-droid.org) app store that says it builds all the apps from free/open source) which I have very much enjoyed for this. Unlike the other 1-2 internet radio apps I tried, this one made it easy to browse thousands of stations, search by tag (I guess _everything_ is in there), language, country, etc etc, set bookmarks, list listening history, and no annoying weirdness. Very few that I have tried had commercials, those that did were not enough to annoy: bach, beatles, ethnic, deep lounge, 1940's big band, tejano, on and on.

Edit: I also recall a nice little linux program called radiotray, on debian (that sat in the XFCE or maybe LXDE app tray / bar), that did something similar. Presumably there are others.

Edit2: I mention radiodroid and internet radio among ideas like watching news TV sites on the internet from around the world, on my simple fun/relaxation page: [http://lukecall.net/e-9223372036854618463.html](http://lukecall.net/e-9223372036854618463.html)

Edit3: I tried libre.fm too (which basically seems to be an FSF initiative to flag or play favorite tracks from archive.org by category, and had high hopes, thought it had promising ideas, but though it seemed to work well at first, I later couldn't get anything to happen after I logged in, etc., and finally gave up. Mentioning in case others know better.

<comment><USER3> Radiodroid 2 is also available in the Play store.

Thank you for that. Finally time to say goodbye to TuneIn.

<comment><USER4> FYI: RadioDroid 2 from F-Droid does not support Chromecast. RadioDroid 2 from Google Playstore supports Chromecast..

[https://github.com/segler- alex/RadioDroid/issues/155](https://github.com/segler- alex/RadioDroid/issues/155)

</comment></comment></comment><comment><USER5> If you like this to explore music of other places, try also [https://radiooooo.com/](https://radiooooo.com/) to travel through time and space.

Mentioned here a few times ([https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...](https://hn.algolia.com/?dateRange=all&page=0&prefix=true&query=radiooooo&sort=byPopularity&type=story))

<comment><USER6> This one: [http://www.lightyear.fm/](http://www.lightyear.fm/) is a neat visualization of the "radio bubble" around Earth about 110 light years in diameter (edit: radius).

<comment><USER7> I just got rick-rolled at 30LY.

</comment></comment></comment><comment><USER8> I used this service a couple of years ago to listen to the local radio station from my home city.

It's indescribable how homesick it made me, but at the same time I felt so much more connected to my home after hearing the local news, and my regional accent which is somewhat rare.

for context; I'm British, from a city called Coventry (which does not have an accent similar its neighbours) and I live in Sweden, where everyone who speaks English sounds either American or very Swedish.

<comment><USER9> Same here, was surprised to see so many radios from my city (Sao Paulo, Brazil) and from the country side too, where they have an accent similar to my father's family. Still use radio.garden weekly, great service.

</comment></comment><comment><USER10> In case the developer is reading, feature requests:

(1) When browsing the list of radio stations, I can see the use of alphabetical by call letters. But the way my brain remembers radio stations is by band (AM/FM) and frequency. (Maybe it is ancient muscle memory from radios you tune with a knob.) So it would be nice to have this available as a view.

(2) In a large metro area, there are transmitters in different cities and suburbs. To get the full set of stations, I have to flip around between nearby points on a map and look at different lists. (For example, in the Bay Area, you have to click SF to get KQED then click Berkeley to get KPFA.) It would be super cool if I could click on any point on the map, then see one list of all stations that a radio at that location would pick up. Getting a completely accurate list is probably complicated (topography, weather, antenna type, etc.) but distance and maybe transmitter power would give a good approximation.

</comment><comment><USER11> So how are all these radio stations connected to the Internet? Do all these radio stations have a server? Or is there some organization which does the broadcasting on behalf? Who pays for the streaming fees? Can I start my own station?

<comment><USER12> Can't speak for every one of these, but yeah, it's usually just an audio feed encoded and streamed out to a server that handles the streams to listeners. There are several ways to do it but I only know the way I used to do it back in the early/mid 2000's.

Back then, I had an ever-updated playlist running on WinAmp with a ShoutCast plugin. Whatever I played (or when I switched over to mic, etc.) was streamed to a ShoutCast server I had running on some storage provided by a dude I knew who was working at a small ISP. He basically said they would never care or notice that I was streaming a 128k/sec stream to maybe 5 or 10 people at a time so just go for it, heh...

That said, I could've run it from home if I wanted, but this was more stable on an early 2000's broadband connection. Otherwise, today you could probably do this with any suitable online virtual web server.

As far as streaming fees, well...if you mean bandwidth, you can see above. If you mean license fees for copyrighted material, then that's the main reason I stopped running one. Loads of these did (and still do) fly under the radar, but you're still essentially sharing media with other people, so if it's not something you have the license to broadcast or share, you have to pay to license it.

For a time, I had been looking into an ASCAP/BMI license since (terrestrial) radio doesn't really pay much at all for that. Airplay is free advertising for commercial music sales, after all. But somewhere along the line in the wake of Napster freaking the hell out of music labels, the laws were put in place to be much more restrictive on streaming radio. Instead of a relatively affordable blanket license, you also had to pay per-song-per-listener royalties. The whole thing made it cost prohibitive for amateurs to legally run a music streaming station so I just said screw it and moved on.

Of course, there's nothing stopping you from streaming something else. You can do a talk show or get license to stream local unsigned artists. You could do all sorts of things, just as people do with live video streaming. You just can't really do anything like typical FM or satellite music radio unless you wanna deal with quite a bit of licensing and expense outside of just a PC and bandwidth.

</comment></comment><comment><USER13> I used to be user of TuneIn radio for a year or two but grew to dislike it with its newer heavier updates that you could not avoid and the pressure to go professional or whatever it's called. Now I just have bookmarks to the BBC Sounds webpage and also to the couple of other stations I listen to sometimes. It cuts out the middle man and the risk of initially great sites like this going the way of TuneIn radio and ruining the user experience.

</comment><comment><USER14> If curious see also:

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

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

Comments from the developer in both threads.

</comment><comment><USER15> Similar database of internet radio stations: [https://www.radio- browser.info](https://www.radio-browser.info)

<comment><USER16> The radiodroid app mentioned elsewhere in comments uses this list as a source.

</comment></comment><comment><USER17> It's crazy how similar pop music sounds from all over the world. The language differs, but the energy of the music is similar in a lot of different countries.

I wonder if this is because everyone is using digital audio workstations like Ableton or Logic now. It used to be that different places had different instruments; and it would take years to become an expert. But now, the DAW is everybody's instrument.

<comment><USER18> musicians are the ultimate cross-pollinators .. someone, somewhere will inevitably get a creative buzz from listening to something solid from somwhere else.. its not a bad thing, entirely.. different strokes for different folks .. Think about "guitars", except over the centuries.. is it a technical copying that makes the music sound the same, since it is a stringed instrument, like those other ones ? hmm It certainly could be argued that pace of interaction can lead to loss of diversity.. isolated people dont copy music styles.. big topic !

<comment><USER19> A wonderful video exploring this: Everything is a Remix

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

</comment></comment></comment><comment> tech-historian Great site! But as I clicked on music radio stations across the US, they were almost all broadcasting commercials at the time. Which is one of the fundamental problems with the format.

<comment><USER20> My vote, every time, has to be for WFMU. "The format", in 'FMUs case, is whatever the DJ likes to play.

You may end up listening to an hour of funk, followed by an hour of experimental noise, then old '78s and bluegrass. It makes for a fun listen.

[https://wfmu.org/](https://wfmu.org/) \- for a feel of programming, you can pick some of the DJs from here: [http://www.wfmu.org/table](http://www.wfmu.org/table)

<comment><USER21> Yes! Freem-form WFMU is an incredible station. Though based in NJ, it has a worldwide listener base. It is entirely listener supported, without even corporate underwriting, unlike other public radio stations in the US. It also has internet accesible archives of programming that goes back into the 90's. If you have a unique musical itch, just Google that song and add WFMU as the site. Click and enjoy the playlist that pops up.

</comment></comment></comment><comment><USER22> Is there an open directory of radio stream URIs?

Like if I wanted to build my own tiny radio streaming client, where would I look for the streams?

I tried snooping the network tab in dev tools on Radio Garden, but couldn't see many requests that weren't either grabbing map tiles, or connecting to Radio Garden itself.

<comment><USER23> There is [http://dir.xiph.org](http://dir.xiph.org) for Icecast radio stations.

<comment><USER22> Thank you!

</comment></comment></comment><comment><USER24> Strange, I tuned into a random South Africa station and the guy immediately started talking about radio garden. Coincidence? Did not sound like an advert because he immediately trailed off to talking about Netflix and some ex marine sniper stuff.

<comment><USER25> Perhaps he'd been browsing hacker news.

<comment><USER24> What a crazy world this is

</comment></comment></comment><comment><USER26> This was the subject of a really nice NYTimes "Letter of Recommendation" recently [https://www.nytimes.com/2019/11/05/magazine/letter-of- recomm...](https://www.nytimes.com/2019/11/05/magazine/letter-of- recommendation-radio-garden.html)

</comment><comment><USER27> Recently, a user posted on my problem validation platform that she's unable to listen to radio from her home town (possibly rural India) from a foreign country[1].

Setting up SDR for this seems to be beyond the capacity of that user. Sites like these might address this need gap, if they allow the user to tune to specific frequency rather than being limited to particular stations[I understand that this has larger technical overhead].

P.S I checked the Radio Garden, it GeoIP's some stations, there were no prominent stations, mostly comprised of religious stations and couple of unknown hobby stations.

[1][https://needgap.com/problems/126-listening-to-obscure- intern...](https://needgap.com/problems/126-listening-to-obscure- international-radio-station-radio-audio)

</comment><comment><USER28> Nice for discoverability. I've been positively surprised by [1] [https://hirschmilch.de/](https://hirschmilch.de/) _progressive_ stream, which i'm now listening to by other means.

(Should i feel Jägermeistered now?)

</comment><comment><USER29> Great work! If op is maintainer, feature request: "random station in random city"

</comment><comment><USER30> wow how does this work? is there a public list of radio stations? or does this site maintain a scraper of sorts?

<comment><USER2> Something I vaguely remember reading in an app (maybe it was the "internet radio" app or its description, from [https://f-droid.org?](https://f-droid.org?)) said there is a maintained list on the internet, of stations, like maybe in xml. (edit: or maybe where I read that was about the "radiotray" linux desktop app.)

edit: Ah, another comment has mentioned "Similar database of internet radio stations: [https://www.radio-browser.info](https://www.radio-browser.info) ".

</comment></comment><comment><USER31> That is really neat. I'd love to see an app like this which allows surfing the globe for listening to shortwave radio. Users could report which WebSDRs (for example) are picking up which stations. Then those stations are marked as live on the globe, and you can listen to the WebSDR audio feed(s) that are picking up that station, as if you're listening on a real shortwave radio.

Maybe individual WebSDR listings could show SINPO numbers, to allow users to choose a source based on the quality level that's currently available...hmmm!

</comment><comment><USER32> You put radio... on the internet.

<comment><USER33> I think many people already listen to radio over the internet.

<comment><USER34> I believe there is a joke being missed here:

[https://www.reddit.com/r/SiliconValleyHBO/comments/5n0xen/ca...](https://www.reddit.com/r/SiliconValleyHBO/comments/5n0xen/can_someone_explain_the_radio_on_internet_joke/)

</comment></comment></comment><comment><USER35> Thanks for sharing this, heard my hometowns' radio station in Bolivia after 5 years of being away, nostalgia hit me hard. :)

</comment><comment><USER36> For anyone who's curious - this is built with CesiumJS ([https://cesium.com/](https://cesium.com/)), same as: [https://news.ycombinator.com/item?id=21037167](https://news.ycombinator.com/item?id=21037167)

Disclaimer: I work for Cesium.

<comment><USER37> You're probably aware but I will just report it anyway.

On that link ([https://james.darpinian.com/satellites/](https://james.darpinian.com/satellites/)), there doesn't seem to be a lower bound limit on the 'polar angle' rotation. So I am able to rotate below the 'horizon' and look up to the earth's 'inner surface' (the concave side of the mesh). The trajectories dashed lines are still rendered and drawn on top of the earth's 'bottom' but are all glitchy and intermitent.

This maybe an issue with this specific implementation and not cesium itself but just thought you should know.

</comment></comment><comment><USER38> If you'd like something a bit more curated, WFMU has a show called "The Blind Tourist" which is mostly audio collage from various global radio stations.

[https://wfmu.org/playlists/TX](https://wfmu.org/playlists/TX) All shows are archived and streamable for free.

</comment><comment><USER39> This is great. For years I have been exploring radios around. Sometimes I add radios from my region to Radio Garden. Just send it through their form and wait to be accepted. I just wish it was easier to export their favorites. I once lost a good list of saved radios.

</comment><comment><USER40> I came across this a while back and had hours of fun randomly sampling radio stations around the world. The one feature I wish it had was the ability to "lock" the current station while still being able to wander around looking for another station to try

<comment><USER41> There's a "Lock" button right above the zoom in/out buttons that does this.

<comment><USER40> Thanks! That's new, I haven't used Radio Garden in months and the previous version didn't have that.

</comment></comment></comment><comment><USER42> All I want is an app that I can hotkey to my main (android) screen that starts a stream with an auto-sleep timer set to some value. I currently have to click like 6 times with various wait times to listen to my nightly "sleep time" stream.

Any app recommendations?

<comment><USER43> Without a timer, if your stream can be found in a url form just save a link on your homescreen. One click can start it.

For a one button solution with timer if no app is satisfactory you can build your script in Workflow (IOS) or any other automation tool on android. You might find a script already made on your liking.

</comment></comment><comment><USER44> Nice.

But, oh my god, why are mainstream radios stuck with the same 10 songs since what seems like forever ? First pickup: suzanne vega, second pickup: francoise hardy.

<comment><USER45> Me: lets listen to the middle of Africa. Second song - Manic Monday by the Bangles

<comment><USER46> Try Madagascar and nearby islands. 90% of what I got there was sufficiently off the beaten path that neither Shazam nor SoundHound could tell me what it was.

</comment></comment></comment><comment><USER47> Awesome. Feature request: show tooltip showing station name/location on hover so that I don't need to change location to get station info.

</comment><comment><USER48> I'm impressed... a bit crazy while you are zoomed out, but when you zoom in it's actually a good way to navigate through a country.

</comment><comment><USER49> Overall I like it, great interface. I would like to be able to explore the map without changing the station I'm actively listening to.

<comment><USER50> You can do this. Click the lock icon and then you can browse around without changing stations.

</comment></comment><comment><USER51> This is wonderful! I forgot how beautiful Cambodian pop was. Be really nice if they had country borders and city labels as an option too.

</comment><comment><USER52> Thank you so much for this. It makes me so happy that I can be in different country and yet listen to my favorite station back home.

</comment><comment><USER53> Just wondering what would happen if you combined these thousands of radio stations to 1 stream. Would it result to white noise?

<comment><USER54> [https://en.wikipedia.org/wiki/Imaginary_Landscape_No._4_(Mar...](https://en.wikipedia.org/wiki/Imaginary_Landscape_No._4_\(March_No._2\))

</comment></comment><comment><USER55> I have used it for a while now, thanks for the work put in it! I would love to have some sleep timer added to it.

</comment><comment><USER56> Any good recommendations on which cities ahve great radio ? I mostly stick to London and surroudning area.

</comment><comment><USER57> This feels like the opening to a movie that needs an intro to the variability of human societies. Love it!

</comment><comment><USER33> Why do so many US stations have such cryptic abbreviated names? And why do so many start with W or K?

<comment> mark-ruwt It was a naming convention created in the early 1900s, using the Mississippi River as a rough line of delineation. Local TV stations use a similar convention.

[https://www.rd.com/culture/radio-stations- k-w/](https://www.rd.com/culture/radio-stations-k-w/)

<comment><USER33> Oh wow so they don't even stand for anything? Must be hard to brand an abbreviation you get handed!

<comment><USER58> The three latter letters are usually meaningful, but only barely. For example, there's WGBH, a Boston public broadcasting station that stands for Great Blue Hills, which are the hills that the broadcasting antenna is located on.

<comment><USER59> Also related to the etymology of Massachusetts: [https://en.wikipedia.org/wiki/Massachusetts#Etymology](https://en.wikipedia.org/wiki/Massachusetts#Etymology)

</comment></comment></comment></comment></comment><comment><USER60> Congrats! You successfully found me a replacement for TuneIn :)

Navigating on a map is so much more practical

</comment><comment><USER61> One of the few applications pinned to my browser in the past year.

It's a fantastic work companion.

<comment><USER62> Same here. Although I wish it would show the song names.

<comment><USER2> The radiodroid app does (which I mentioned in another comment here), at least, and probably others -- it seems to depend on the station.

</comment></comment></comment><comment><USER63> When would you guys listen to radio ? And why not Spotify, podcast, YouTube etc ?

<comment><USER64> One word: Discovery.

College radio is excellent for this. My favorite DJ has been on 4 hours a week for a decade, and most of the music is new to me. Half is OK in the background, there can be a handful of awful grindy noise bleh, but another bunch of it is often great, and there are amazing gems that have taken my listening off into new frontiers — from Bevis Frond to Gravitar to Mono to Expo 70.

The most common question the kids ask is: How can you listen to that? The answer is: I'm happy to listen to unfamiliar and even unpleasant music if that's the price to discover something completely unexpected and amazing.

</comment></comment><comment><USER65> I want to travel in time in listen to radio/TV in a specific point in time.

</comment><comment><USER66> It's interesting how few streaming stations there are in eastern Asia.

<comment><USER67> [http://www.radio-browser.info/gui/#!/countries](http://www.radio- browser.info/gui/#!/countries) lists 1625 stations in China, of which barely a handful appear on radio.garden. I guess nobody volunteered to put them all on the map.

</comment></comment><comment><USER68> Very cool. Never seen anything like this, though they may exist. Well done

</comment><comment><USER69> Thank you very much for this great interface to online terrestrial radio!

</comment><comment><USER70> I have nothing to add to the discussion but this so cool :D

</comment><comment><USER71> Spot on. A HN show that might actually use every day!

</comment><comment><USER72> Someone needs to make this for DTV...

</comment><comment><USER73> dang! i forgot about this. thank you. it's like scanning the radio on grand theft auto

</comment><comment><USER74> This is so cool. Love it.

</comment><comment><USER75> Very nice onterface, tnx!

</comment><comment><USER76> part of me wishes this site was called "sound.garden"

<comment><USER77> When I first saw the band's name in the early 90s, my imagination ran wild with what they might be like. Considering the musical landscape at the time (a few I was aware of-- Enya, Fishbone, Skinny Puppy, Ice Cube, Slayer) it could have been anything and everything.

They are still one of my favorite bands, and Badmotorfinger is probably in my top 3 albums of all time... but I must admit I was disappointed when I first heard them because my expectations had been so crazy from the name. It took going through some tough times before I warmed up to their style, and the name never seemed to have much to do with it. It's a great name, though.

<comment><USER78> It's named after a permanent outdoor sculpture installation in Seattle.

</comment></comment></comment><comment><USER79> This has been around for years, what makes it front-page-of-HN-worthy now?

<comment><USER80> It offers some variety when so many of us are working from home?

Also, just because it isn't new doesn't mean it isn't interesting.

</comment></comment><comment><USER81> Thank you. Just found this beauty on Faroe Islands [http://radio.garden/listen/-7fm/EgrMqzvq](http://radio.garden/listen/-7fm/EgrMqzvq)

</comment><comment><USER82> I suppose this is strictly for terrestrial radio stations? I run an internet radio station[1] and there is a galaxy of us.

[1] [https://hymns.fm](https://hymns.fm)

<comment><USER83> This is lovely, thanks!</comment></comment>


Show HN: Capsulelink – Group, save and send links as one - <AUTHOR> http://capsulelink.com <comment><AUTHOR> Capsulelink is a simple web application that lets you add multiple links and send or save them as one.

Also, there are private links for registered users.

Private links are only visible to the user who created them.

Links created by anonymous users (users who are not logged in) expire after 48h, while the links of registered users don't expire.

I would love to hear your opinions and suggestions on this, and what I could improve.</comment>


Internxt – Silicon Valley's New Internet Is Here - <AUTHOR> https://internxt.io/ <comment><USER2> I had a cloud of doubt a couple of years ago that secret agencies were already using unknown resources of non technical computer users to get their things running faster or stored better. It has arrived, but late as a service for people in general!</comment>


From Oxford to Silicon Valley (Auctomatic) - <AUTHOR> http://news.bbc.co.uk/1/hi/business/7048556.stm Kulveer Taggar moved to Silicon Valley in California after graduating from Oxford and working as an investment banker. Now after months of preparation he sees whether his hard work has paid off. <comment><USER2> 56,258 lines -- That's a lot of code! What is Auctomatic written in? Very impressive stuff, from what I've seen so far.

<comment><USER3> Smalltalk

<comment><USER4> From the URLs, it looks like Auctomatic has been written in PHP, ASP, Arc, Fortran, Python, QBasic, and Cobol :)</comment></comment></comment>


Implementing a Virtual Machine in C - <AUTHOR> http://www.felixangell.com/virtual-machine-in-c/ <comment><USER2> A good read.

One thing I thought of as a little weird is this:

> But remember, we aren't decoding anything since our instructions are just > given to us raw. So that means we only have to worry about fetch, and > evaluate!

The 'decode' step is being done by the switch statement, it's not being skipped. I think the author may be confusing turning assembly into machine code (i.e. what an assembler does) with decoding an opcode.

I built a (very simple) VM in Go live on stage at a local mini-conference last year. I really enjoyed it. There's a video of it here: [https://www.youtube.com/watch?v=GjGRhIl0xWs](https://www.youtube.com/watch?v=GjGRhIl0xWs)

<comment><USER3> I'm not sure, but I think the author means that there is no extraction of fields from the instruction, which is one way of defining the decode step.

</comment></comment><comment><USER4> There's something really nice about these minimalistic C projects. You can quickly take a look at the source and immediatelly grasp what's happening. A simple and didactic introduction. Super cool.

<comment><USER5> Yes. Obligatory and tedious re-up for my favorite minimalistic C program of the last 5 years:

[https://github.com/rswier/c4](https://github.com/rswier/c4)

Take 2 hours to grok this and you can skip compiler books and move straight to compiler papers.

<comment><USER6> Challenge accepted.

<comment><USER5> An even better challenge: add structs to the compiler. :)

<comment><USER6> haha okay! I don't have any formal CS training though (and the CPU between the ears isn't too great either) so it's going to take me more than 2 hours. I'm going through void next() right now. Are you open for questions on Github?

<comment><USER5> It's not my code, so, Github is a bad place to ask me questions. But you can ask them here, and I'll respond.

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

</comment><comment><USER8> A nice simple demonstration.

Other things that can be added easily is Labels, Loop0 - loop while a variable is greater than zero and subX - pop stack and instruction pointer and go to location X.

</comment><comment><USER9> why not use an array of structs as the program, with a function pointer and the parameters stored in the struct? the instruction pointer is then an index into that array... the functions implement the opcodes and the archetecture becomes more instructive, cleaner, faster, smaller and easier to read imo. executing the program can become a loop that just calls whatever function pointer is in the struct at the instruction pointer.

<comment><USER10> Funny you mention that - I used that structure in my simple virtual machine (which includes a compiler, a decompiler, support for conditionals, and also an example of embedding):

[https://github.com/skx/simple.vm](https://github.com/skx/simple.vm)

Rather than having an enum of opcodes I have a array of pointers to functions - one for each opcode I implement. It is a logical/clean way of implementing things, but i think it is not necessarily better.

(In my case I lose due to inline strings, and variable length opcodes which make complications.)

</comment></comment><comment><USER11> And if you want a better performance, you can replace this switch with computed gotos (supported at least by gcc and clang).

<comment><USER12> You should first check if the compiler doesn't do it for you. Otherwise you're just making your code harder to maintain and less portable for zero gain.

In my experience with similar code you can get GCC and LLVM to generate a proper jump table if you're careful to make your code as regular as possible in order for the optimizer to understand what you're doing.

Case in point: [https://github.com/simias/psx- rs/blob/master/src/cpu/mod.rs#...](https://github.com/simias/psx- rs/blob/master/src/cpu/mod.rs#L325-L400)

Here LLVM manages to inline all the functions and generate a proper jump table. IIRC I tried getting the function address in the "match" and calling it afterwards but then the compiler wouldn't optimize it properly anymore.

<comment><USER13> > You should first check if the compiler doesn't do it for you.

It probably doesn't, because otherwise Intel wouldn't have submitted this patch that adds computed goto support to CPython: [http://permalink.gmane.org/gmane.comp.python.devel/153401](http://permalink.gmane.org/gmane.comp.python.devel/153401)

<comment><USER14> The same performance can easily be achieved by simple compiler optimizations like inlining functions, unrolling loops, peephole optimizations, etc. The fact that your compiler doesn't support the same performance doesn't necessarily mean to re implement things in a confusing way.

Another way of achieving the exact same result would be to use an array of function pointers.

I think the more interesting dilemma is when you have a more complex VM possibly operating on an abstract syntax tree instead of just a bytecode stream, and the ways to optimize code (in C) while maintaining a proper stack.

After figuring out how to make a switch statement work, there are a ton of more pressing organizational concerns like how to make function trampolining work without any overhead.

Another way to make it faster would be to have it interpret * two * op-codes at once, but hey, that wouldn't do anything except save two cycles and explode the code size to a square of what it was.

<comment><USER11> Yes, that python patch is only halfway to a proper indirect threaded dispatch, it still got a lookup table. See the OCaml bytecode VM for a really high performance example of this approach.

> a more complex VM possibly operating on an abstract syntax tree

Don't do it.

<comment><USER15> > Don't do it.

[http://peterdn.com/files/A_JIT_Translator_for_Oberon.pdf](http://peterdn.com/files/A_JIT_Translator_for_Oberon.pdf)

Oberon did it with relative success. Relative to other VMs at the time.

<comment><USER11> We're not talking about JITs here. Of course an tree-based representation is better for JITs, and if using a flat VM you may have to promote it to a higher level AST (or at least an SSA-based) form anyway.

But for an _immediate_ execution, a flat stream of instructions (or, better, a threaded code) is much more efficient than any kind of tree. Yes, I'm aware of things like SISC, but I'm yet to see a proof that their approach is more efficient than a flat bytecode, even when JVM overhead is taken into consideration.</comment></comment></comment></comment></comment></comment></comment>


Why Tipping Should Be Outlawed - <AUTHOR> http://www.esquire.com/blogs/food-for-men/why-tipping-should-be-illegal-15603180

<comment><USER4> I've had many friends over the years who have worked in the service industry, and I spent a few months as a bar-back earning tips as well.

The thing this article doesn't mention is how many servers feel about tips.

When I first started earning tips, I couldn't believe how much money I was making for the amount of work I was doing. I always had cash in my pocket, and lots of it, and I didn't make as much as servers or bartenders.

I left after only a few months, and have fond memories of the job and swimming in cash as a 21 year old.

10 years on, I had a few friends who were still in the service industry, and had moved up to white-table service in very posh restaurants. They all wanted to get out, but had a common complaint. They wouldn't make as much as they did as a server in any other profession that was available to them. The tips became the handcuffs that kept them in a job that was no longer of interest to them.

Since then, the percentage rate of tips has continued to increase, so I imagine this problem is getting worse rather than better.

</comment><comment><USER5> Go to a restaurant or bar frequently and tip generously. You will be AMAZED at he great service you receive. May not be worth much for a one time drop in, but for somewhere you frequent it is well worth the cost.

</comment><comment><USER6> I've always thought that tipping was just a way for restaurants to lower both the wages and the advertised price of a meal. I would rather have a service fee, because, when you are not ordering a multi-course meal, I don't know what the servers actually do.

</comment><comment><USER7> As an American who eats out a lot, I have to admit I loved going to Iceland where tipping is not expected whatsoever. Tipping feels like prostitution; when cash is exchanged it's hard to believe you're getting authentic service.

<comment><USER8> Wait, what? You mean service from my car mechanic, gardener, pool guy, garbage collector, repairman, contractor, hairdresser, sports trainer, etc. - <USER2> "unauthentic" because I pay money for it? Or it is only when serving food that paying for it somehow becomes "unauthentic"? It is extremely weird notion that paying for service is somehow not expected. Why do you think all these people do it - out of deep and passionate love for you?

<comment><USER9> A gardener cuts my lawn for money they are not payed to be nice.

If they are nice then I assume it's because they are nice, not because they are doing it for money, since there's no direct obvious correlation. (Especially if they don't own the business.)

Prostitutes are payed to be nice, that is their service so the nice bit is "unauthentic". Just as the gardener might not be cutting my lawn for love, it's probably just money, but the friendly conversation probably is real.

Once you start tipping the niceness is much more out there as possibly faked.

Simple statement to me.

<comment><USER8> There is an obvious correlation - if I employ someone and he's not nice to me, I'll fire him (or stop ordering his services) and hire somebody who is. Why should I suffer for my own money? Of course, there could be cases where I have no choice - like when I'm dealing with some sort of government monopoly like telecom or water company - but even there people are usually nice and there are ways to deal with it if they are not.

>>> Once you start tipping the niceness is much more out there as possibly faked.

What you mean by "faked"? I don't want each of these people to become by best friends forever or have deep emotional relationship with me. I don't date them or plan to spend a romantic vacation with them. I want them to be polite, courteous and helpful. How can it be "fake"? How you distinguish "fake" please from "sincere" please and what that even means?

<comment><USER10> You can be perfectly polite, corteous and helpful without being nice. That's just being proffessional.

Being _nice_ is to stand around after the job for a chat.

</comment></comment></comment></comment></comment><comment><USER11> People working as servers have very little market power. I don't know what the macro solution is, but the micro "solution" is: don't be a server.

</comment><comment><USER12> I don't really mind tipping for a job well done, and I tend to be harsh for those who are lousy. (That's what tip supposed to be after all.)

I have complaints to people who is working in the service industry (or have worked in there, as part-time and whatnot) telling me that I should never undertip them/leave without tip, even if the service is horrible, because that's how "they are getting paid properly."

That's total BS, if "tipping" is an incentive for better service. And if they feel undertipping/no tipping is bad because I am docking their pay, by all mean, just include that in the price and refuse any type of tipping.

</comment><comment><USER8> So the summary is "I don't like doing it the traditional way, other people do like it and keep doing it, so I must force them to behave as I want by applying the force of government coercion". But of course.

Oh, and of course no case for government coercion can be complete without throwing racism and sexism into it. It's not enough to call police on people that behave not to your liking, you have also to call them racists.

<comment><USER10> And your opinion is "it should be done the way it has always been done"?

> other people do like it and keep doing it

Well, a lot of people seems to _not_ like it, but keeps doing it not to be seen as an asshole.

> I must force them to behave as I want by applying the force of government > coercion

That was how slavery was abolished... Is that really your best argument?

Imho, the arguments were very well motivated. Can you offer any counter argument to the actual points in the actual article?

<comment><USER8> My opinion is government has no place in choosing the exact arrangement of how to pay servers (or anybody else for that matter), and should not enforce one way at the expense of the other because some columnist doesn't like it.

>>>> That was how slavery was abolished.

No it's not. Slavery was abolished when the state refused to recognize that human being can be owned by anybody and so nobody could make a person to work for another person unvoluntarily. Since then, all employment is voluntary. What the article asks for is to ban voluntary employment of some sort because of some stupid ideas of this columnist about how everybody else should behave.

>>> Well, a lot of people seems to not like it, but keeps doing it not to be seen as an asshole.

So to ask for the government coercion to force people to change the whole way their business works - on the way probably putting a lot of people out of business and out of work is not being asshole, but actually standing up for what you believe in - is being asshole? Talk about perverted ethics... That's like saying the only moral way of doing charity is if you hire a thug to mug somebody and then donate the proceeds. Then again, that seems to actually be very common opinion that charity can not be done without being coerced, so I shouldn't be surprised.

>>> Can you offer any counter argument to the actual points in the actual article?

I just did. I can do it again and very briefly: it absolutely does not matter if you don't like how other people pay for their services and how other people earn their money, and how they behave in general, provided these people are happy with the arrangement. If you don't like tipping restaurant - open non- tipping one and have the happiest servers in the universe and put all others out of business. Or eat at the McDonalds - I have never seen anybody tipping McDonalds cashier.

<comment><USER10> >>>> That was how slavery was abolished. >>No it's not. Slavery was abolished when the state (...)

It seems you misunderstood my point. Slavery was abolished when _the state_ declared it illegal. That kind of thing is what the state is for. If there is a majority of support for "abolishing" tipping, that is where the state can step in and enforce it. That is the point of democracy.

> So to ask for the government coercion to force people to change the whole > way their business works - on the way probably putting a lot of people out > of business and out of work is not being asshole (...)

This smells very much like the logical fallacies used by the copyright industry. No business would have to go out of business and no costs would need to change. It is simply about making the implicit explicit and to stop pretending it is a gift. You yourself gave a great examples of how McDonalds manages to run their restaurants without tipping.

>>> Can you offer any counter argument to the actual points in the actual article? > I just did.

No you didn't? The article had very specific arguments. They are even nicely numbered. Your "counter argument" is basically "I like it the way it is and no one should tell me to change", backed up by a vague claim that people would somehow lose jobs and business.

<comment><USER8> I understood your point completely and I disagree completely. The point of the democracy is not to enforce majority's views on the minority, at least if we're talking about modern democracy. The point of the democracy is to protect people's rights. Since you have no right to tell the restaurant how to pay their servers, or to restaurant patrons if they should leave tips of not, no democracy can or should give you this right, and it shouldn't matter how many people agree with you - otherwise slavery would be OK as long as slave owners are the majority. On the contrary, one has the right not to be enslaved (or, made to work for other man involuntarily and without mutually agreed compensation) - which makes slavery not OK. It is rather ironic that you invoke slavery - i.e. work forced, ultimately, by government coercion - <USER3> support of applying government coercion to mutually agreed trades between people.

>>> No business would have to go out of business and no costs would need to change.

Of course they would need to change - changing the structure of charges would require changing all the prices, and as any price rise, perceived or real, would cost business.

>>> You yourself gave a great examples of how McDonalds manages to run their restaurants without tipping.

I don't go to McDonalds, but I go to other restaurants. So converting all restaurants to McDonalds would cost them my business, that's kinda the point. That'd the difference between our positions - I advocate that both models can work for different people and different situations, and people should be allowed to choose which one they prefer. You advocate that only one model is right for everybody and all others should be banned by the threat of government coercion, and nobody should be allowed to choose what you dislike.

>>> I like it the way it is and no one should tell me to change

It's called freedom. There was time it had some value in America. Now one has to explain what's so valuable about it.

<comment><USER10> > in support of applying government coercion to mutually agreed trades between > people.

...But it isn't mutually agreed. It is enforced by social stigma. Very unfree if you ask me.

> I don't go to McDonalds, but I go to other restaurants. So converting all > restaurants to McDonalds would cost them my business, that's kinda the > point.

Now you are just trolling. You seriously believe every restaurant would turn into McDonalds by not accepting tips?

> It's called freedom.

No, it is called anarchy.

<comment><USER8> Of course, free means you get to do what you like and everybody has to like it and tell you so in polite yet colorful language. Otherwise it is not a true freedom - true freedom can only be total absence of consequences for you actions and complete subjugation of others to your wishes, right? If you do something and somebody says its wrong, then is it "very unfree", right? In true freedom, he'd be forbidden from doing this.

>>> You seriously believe every restaurant would turn into McDonalds by not accepting tips?

No, I believe there is place for different things, even if I don't like some of them. You, on the other hand, believe only things you like deserve to exist and for some reason feel entitled to use government coercion to serve you.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> Why socialists always try to spend other's people money? Or tell them how they should live their lives? America was once a free country...</comment>


Quick Weekend Experiment: Would Love your feedback - <AUTHOR> http://Markover.me

<comment><USER2> I gave it a try and it looks interesting, but I'm probably not part of your target audience. I don't know if it's a good or bad idea. I'll give you some usability feedback though based on my experience.

I put down a remark and a fake e-mail and was confused for a little bit. There was no submit button or any obvious way to inform the page that I was done entering info. I finally realised that I needed to press enter but this was not made clear to me.

The remark did not show up, but I noticed I was now logged in and ID'ed as my e-mail. I needed to enter the remark again before it showed anything.

I feel like it would have been more intuitive if the marks were visible even before my mouse hovered over the image. There can be an option to enable marks only on hover over but I don't think it's a good default. If your aim is to prevent the entire image from being covered in marks, then perhaps you could limit the number that show up (using some criteria like only the most recent X number of marks).

<comment><AUTHOR> Right now, we don't even have a target audience :) hah. I agree about the issue with the enter/button.

We were going to have the marks load but be hidden in default and then users could change the setting to one or the other either universally or with each image.

We definitely will be limiting number of marks. Actually, in the long term the marks/feedback etc will be more curated based on latent semantic indexing of comments/content (once we move into text, etc) and a variable assigned to the commenter (or marker) based on number of similar projects having commented on. More here: [http://kelseyfalter.posterous.com/stop-posting-start- reactin...](http://kelseyfalter.posterous.com/stop-posting-start-reacting-to- reactions)

Ps. Thanks for your input! You really have no idea how much I appreciate it.</comment></comment>


Comcast Plans to Drop Time Warner Cable Deal - <AUTHOR> http://www.bloomberg.com/news/articles/2015-04-23/comcast-plans-to-drop-time-warner-cable-deal <comment><USER2> From a discussion of the open issues, [http://www.wetmachine.com/tales-of-the- sausage-factory/comca...](http://www.wetmachine.com/tales-of-the-sausage- factory/comcasttwccharter-looking-good-but-too-early-to-pop-the-champagne/)

 _"..as someone who has played regulatory poker with Comcast for 15 years now, I can say from personal experience that no one counts Comcast out until the game is well and truly over. Even if the rumors are true (and I have no way of knowing), these would only be staff recommendations. Comcast still has plenty of opportunities to plead, cajole and bully DoJ and FCC into submission.

Which is why it's important to remember my advice from last February with regard to Title II reclassification: DON'T BE THE SEA HAWKS! We need to continue to keep the pressure on to get this over the goal line..

• The Antitrust Case Is Much Stronger Than People Initially Assumed.

• The Three Legs of the Antitrust Stool: Access to Programming, Access To Set- Top Boxes and Access to Broadband.

• Recent Win By The DoJ Supports Key Elements of the Potential Theory Against Comcast/TWC.

• Nobody Else Really Likes This Merger — And Most People Hate It.

• Conclusion — Still Too Early To Call A Win, But Path To Victory Clear."_

<comment><USER3> Great Seahawks reference. Haha

It is important to stay vigilant.

</comment></comment><comment><USER4> Proof that some portion of the Federal government still works properly. This was a terrible idea from day one. It may be populist low hanging fruit to kill the merger, but populism certainly hasn't stopped other terrible ideas from coming to fruition (Citizens United)

<comment><USER5>
        populism certainly hasn't stopped other
        terrible ideas from coming to fruition (Citizens United)

What does a SCOTUS justice care about populism? They're appointed for life. They care about their legacy, or the legitimacy of the institution[1], but it's not like Americans are going to show up at the Supreme Court with pitchforks and torches in hand. If you want to make sure another _Citizens United_ decision doesn't happen any time soon, it would be worthwhile to think carefully about your choice for President next year.

edit: also, as others have noted, this deal wasn't under the purview of the Supreme Court, but instead the FCC, FTC, and DOJ.

[1] [http://www.slate.com/articles/news_and_politics/jurisprudenc...](http://www.slate.com/articles/news_and_politics/jurisprudence/2012/06/john_roberts_broke_with_conservatives_to_preserve_the_supreme_court_s_legitimacy.html)

<comment><USER6> Who have you chosen for president next year? Or are you also waiting to be told who the actual candidates are?

<comment><USER5> Barring some astonishing calamity, Clinton will be the Democratic nominee.

Meanwhile, on the Republican side, former key aides of three of the top tier candidates have established Super PACs in support of their former bosses[1], basically eradicating any air gap between the campaigns and 'dark money'[2] that used to exist.

Clinton, at least for now, is pledging to push for campaign finance reform[3]

[1] [http://www.nytimes.com/2015/04/21/magazine/the-next-era- of-c...](http://www.nytimes.com/2015/04/21/magazine/the-next-era-of-campaign- finance-craziness-is-already-underway.html)

[2] [http://en.wikipedia.org/wiki/Dark_money](http://en.wikipedia.org/wiki/Dark_money)

[3] [http://www.slate.com/blogs/the_slatest/2015/04/14/hillary_cl...](http://www.slate.com/blogs/the_slatest/2015/04/14/hillary_clinton_says_she_d_want_to_overturn_citizens_united_her_super_pac.html)

<comment><USER7> >> "...pledging to push for campaign finance reform[3]..."

Pardon my cynicism, but I can't even see the mirrors because the smoke is so thick.

<comment><USER5> I'm exceedingly skeptical as well, but it's also notable that the SCOTUS decision on Citizens United was 5-4, split down the expected lines, with Kennedy concurring with the conservative bloc. It seems highly likely that somewhere between now and January 2025, the following Justices will be replaced:

Conservative:

        Scalia

Swing:

        Kennedy

Liberal:

        Ginsburg
        Breyer

Had Scalia, Kennedy, Ginsburg, and Breyer all stepped down and been replaced either in the two months before Citizens United was first argued (or in the following six months before it was re-argued[1]), we would have likely seen a 6-3 decision _in favor_ of the FEC.

So even if Clinton doesn't manage to get campaign finance reform legislation moved through Congress[2], a reshaped Supreme Court would be enough to undo Citizens United for at least a couple decades.

If Clinton were elected for two terms, you'd see roughly the following makeup of the court in 2025:

        Thomas     78 years old
        Alito      75
        Roberts    70
        Sotomayor  70
        Kagan      64
        Clinton Appointee 60-68
        Clinton Appointee 60-68
        Clinton Appointee 60-68
        Clinton Appointee 60-68

In other words:

       Conservative: 3
       Moderate-to-Liberal: 6

So, even if a Republican won the White House in 2024, it would take until sometime in the 2030s or 2040s before an overturned Citizens United could be reinstated.

[1] Some interesting speculation on why this happened: [http://www.slate.com/articles/news_and_politics/jurisprudenc...](http://www.slate.com/articles/news_and_politics/jurisprudence/2012/05/citizens_united_justice_david_souter_s_dissent_in_the_supreme_court_s_momentous_campaign_finance_case_.html)

[2] Which, given current circumstances, seems unlikely, as it would take another Democratic wave election, even bigger than 2006's to happen ([http://www.nytimes.com/2006/11/08/us/politics/08house.html](http://www.nytimes.com/2006/11/08/us/politics/08house.html))

<comment><USER8> > It seems highly likely that somewhere between now and January 2025, the > following Justices will be replaced: > Conservative: Scalia

Don't tease me. That would literally make my decade. I wonder what Thomas would do without being able to blindly concur with everything Scalia says? He might actually have to start talking again during trials.

> it would take until sometime in the 2030s or 2040s before an overturned > Citizens United could be reinstated.

One major issue is that the USSC can't just go back and reverse bad decisions (Citizens, Voting Rights Act) on day-one of a new 5-4 liberal majority. They'd have to get a case, stretch standing (again), and then explain why they were reversing course, which they're usually really against doing until a significant amount of time has passed.

But this is probably the only realistic option we have. We'll never see another constitutional amendment, let alone for something that would harm conservative election prospects.

<comment><USER9> > I wonder what Thomas would do without being able to blindly concur with > everything Scalia says?

Are SCJs allowed to call a friend during deliberations?

<comment><USER10> He could flip a coin: Heads, Alito; Tails, Roberts. Or, he could watch Scalia's future show on Fox to learn what his opinion ought to be.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> It says something about a deal when the stock price of both companies rises after an announcement like this.

<comment><USER12> Mergers are often more about executive nest-feathering than about "synergy" or whatever, aren't they?

<comment><USER13> They also tend to drive up stock prices.

<comment><USER11> Usually the acquired gains most of the boost. There's a net gain if there is an increase in market power. It's rare to get positive synergies, unless you consider layoffs a synergy.

<comment><USER13> Don't most shareholders? Labor is an expense.

<comment><USER11> Poor wording on my part - I wasn't putting in a value judgment.

By positive synergy I mean on the revenue side. "They have A sales people selling B per year on product set C. We have D sales people selling E per year on product set F. If we allow their salespeople to sell F and ours to sell C, our revenues will grow from A * B and D * E to A * (B + E) and D * (B + E)."

That's a long way of saying revenue promises rarely materialize, but cost ones usually do.

<comment><USER13> Well, you're right, but whether or not they do shareholders seem to behave as if they do (in the same way shareholders seem to think offshoring is a sure thing but increasingly people are finding it's not, necessarily).

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> Give them a couple years. After a few more "government is bad" TV spots, and under a republican president, they will try again. Whether they merge today or then doesn't really matter.

They are effectively merged already. They stay away from each other, treating customers like each other's property, and offer comparable services at comparable prices. They aren't in any real competition with each other. I'm not saying that they should merge. Rather, I'm saying that them not merging isn't a quick fix of the underlying issue. Americans need actual choice of providers within a given technology.

<comment><USER15> > under a republican president

Democrat or Republican doesn't matter. Lobbying and who is offered and receives campaign contributions, etc. matter. It's about manipulation, money and power/getting re-elected, plain and simple.

Notice the Reps and Dems on this list of campaign contributions from Comcast: [https://www.opensecrets.org/orgs/summary.php?id=D000000461](https://www.opensecrets.org/orgs/summary.php?id=D000000461)

Top Recipients from Comcast:

National Republican Congressional Cmte, John Boehner (R-OH), National Republican Senatorial Cmte, Democratic Senatorial Campaign Cmte, DNC Services Corp, Democratic Congressional Campaign Cmte, Ed Markey (D-MA), Democratic Municipal Officials, Cory Booker (D-NJ), Fred Upton (R-MI)

Comcast spent $16,970,000 on lobbying in 2014. They likely lobbied both Reps and Dems.

Those noted who own Comcast shares:

Barber, Ron (D-AZ) Boehner, John (R-OH) Cohen, Steve (D-TN) Collins, Susan M (R-ME) Cooper, Jim (D-TN) Dingell, John D (D-MI) Frankel, Lois J (D-FL) Frelinghuysen, Rodney (R-NJ) Hagan, Kay R (D-NC) Hanna, Richard (R-NY) Heck, Dennis (D-WA) Holding, George (R-NC) Isakson, Johnny (R-GA) Kelly, Mike (R-PA) Marchant, Kenny (R-TX) McCaul, Michael (R-TX) McDermott, Jim (D-WA) Pelosi, Nancy (D-CA)

<comment><USER16> Note that Comcast, as a corporation, is prohibited from donating money to political campaigns: [http://www.usatoday.com/story/news/politics/2014/04/07/supre...](http://www.usatoday.com/story/news/politics/2014/04/07/supreme- court-political-donation-corporations/7417035).

OpenSecrets has been sweeping that disclaimer more and more under the rug, to the point where now I'd accuse them of lying.

<comment><USER17> Is this a matter of direct contributions versus PAC contributions?

<comment><USER18> Corporations cannot donate money to campaigns at all, either directly or through PACs. A corporation can have a "captive" PAC whose expenses it can pay (for example, letting it operate out of their corporate offices), but all donations that pass through to a campaigh must come from individuals.

When you hear that "Company X gave money to candidates", what you're really hearing is "people who reported that they work for Company X gave money to candidates."

</comment></comment></comment></comment></comment><comment><USER19> It's a shame TWC didn't ask for $4 billion merger rejection fee, like T-mobile did with AT&T. Maybe it could've used that money to compete in Comcast's markets now.

If Comcast's plan was to "expand", then it might be forced to get into TWC's markets soon anyway, which means TWC will also respond by going into Comcast's markets. At least that's how I'm hoping it will play out.

<comment><USER20> Being the second cable company in any given location is a terrible investment. Being the third is even worse.

The only company I know who does it is RCN, and they only do it in big cities.

<comment><USER21> This isn't universally true. In my town, for example, the second was (if I understand correctly) Suddenlink (the first was AT&T), and Suddenlink is easily the dominant cable company in the area; AT&T's best offering is 3Mbps DSL, while I just got bumped up to 100Mbps with Suddenlink (and that's apparently not even the fastest residential anymore; I wonder if they'll eventually offer a gigabit plan here?).

Meanwhile, the town's also considering municipal fiber now that the whole net neutrality stuff happened (and having watched another nearby town implement its own locally-grown fiber).

<comment><USER20> AT&T was a phone company and Suddenlink was a cable company. They both had separate networks used for non-ISP service (telephone and video TV). They both moved into ISP service when it got popular, but they didn't have to build a new network to do it.

</comment></comment></comment></comment><comment><USER22> I live in NYC, so in general I am lucky to have cable Internet service. I lived in SF for a brief period of time, and Comcast was expensive and slow.

I am quite glad this deal is off. I have been TWC Internet service user for many years and it used to be so-so compared to FiOS. When I finally had the chance to switch to FiOS I was very excited, but after comparing customer service, speed, and price, I just couldn't move away. I couldn't move to RCN because so many instability (probably due to over provisioned pools). TWC's new plan is cheaper and pretty reliable where I live.

I did invest some serious cash on getting my own modem SB6141 and a very good wireless router, which definitely has boosted bandwidth and performance. TWC and Comcast's stock modem sucks (and now you either buy or rent). I was surprised to see how many people were willing to rent because of simplicity; go to Amazon, spend $100-$130 on the modem, ship it, and install the modem.

As a customer, I just hope we can have more reliable options. Technically, $40 for up to 100 Mbps is still a little high (but 3-5 years ago it would be like $70, $80 a month). The day when we are offered 100Mpbs at "DSL" plan price range, I will be really happy. Actually, I'd be even happier if we can build out the cellular data technology... "4Gb for $40? Yes, first 1G at 4G speed, the rest, like 56kpbs." I want to see the day when cellular data can be just as quick as my home network.

I am not very concerned with other monopolies (search, TV, , music etc), but telecom monopoly is a big concern to me.

<comment><USER23> NYC still doesn't have gigabit for $70.

<comment><USER16> Think about what a marketing coup it would be for Google to wire up San Francisco or New York City with Fiber. And think of how awful the red-tape in those cities must be for even Google to steer clear.

<comment><USER23> I think they should do it at some point. It's just too major of a potential to ignore.

<comment><USER16> You think there is any money in building fiber in NYC at $70?

<comment><USER24> not when those dollars can be spent on LTE/wireless and see a far greater return. just because something is profitable doesn't mean there is something even MORE profitable to spend dollars on (in VZs case, wireless wireless wireless)

<comment><USER16> So why isn't that profit enough to entice a non-Verizon fiber company? You can't sensibly argue it's because NYC is in the pocket of TWC/Comcast, when they're out trying very hard to get Verizon to come in and compete. You think if Google came a knocking de Blasio would turn them away?

<comment><USER10> For the same reasons that companies aren't prospecting for oil/gas in the US right now.

<comment><USER25> How much oil and gas exploration do you think has gone on in the US in the last five or so years.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER26> It's interesting how Comcast's track record in complying with regulatory requirements from past deals may be a major factor here. I wonder if they would have been able to muscle this through had they been just a little bit less awful in the past.

</comment><comment><USER27> Thanks guys! - The customers</comment>


Visual Transistor-Level Simulation of ARM1 with WebGL - <AUTHOR> http://visual6502.org/sim/varm/armgl.html <comment><USER2> Anyone know where I can find a block diagram for this chip? I'd like to overlay it and get a better sense of what each section is doing.

My google foo didn't turn up anything quickly.

<comment><USER3> My guess is that the top part is the bus/decode, middle part is the ALU and the bottom part is the register bank.

</comment></comment><comment> vive-la-liberte Cool stuff. Works in Firefox on Android for me. Would like to see it made touch friendly.

<comment><USER4> Works even in IE on windowsphone. This stuff is even more compatible than most WebGL demos out there.

<comment><USER5> Yes, running on my S3 Android 4.3, which usually fails to run most of the HN posted WebGL demos, although it runs many games without issues.

</comment></comment></comment><comment><USER6> Very cool, but I'm not sure it was necessary to use WebGL in order to display an essentially 2D object.

<comment><USER7> WebGL is actually a 2D graphics API.

</comment></comment><comment><USER8> Looks cool but, what is it computing?</comment>