Ask HN: Reflective display for programming - <AUTHOR> Brightness is a selling point these days. But every time I use a display I turn down the brightness (sometimes down to 10). Bright displays are nice for games and watching movies, but (IMHO) not for programming or watching all day. I wondered if there are reflective displays available (like E Ink) so I looked around. But I can't find any of a decent size (20" and above) or a decent response time. Does anyone know if there are decent size reflective (LCD) displays available? And why aren't they more popular? <comment><USER2> I don't know much about reflective displays but I use an app called f.lux which adjusts the color on your display based on the time of day. Now I can hack away all night with no eye strain!

<http://stereopsis.com/flux/>

<comment><AUTHOR> Thank you. I already use something similar calles Red Shift. But I still think it would be nice to have a reflective display.

</comment></comment><comment><USER3> Until you find such a display, I recommend you look into platform's accessibility options and invert the colors instead of messing with brightness. Google "black on white" for Mac or "invert colors" for Windows / Linux instructions.

<comment><AUTHOR> Nice, I did not know this was possible. But I'm currently on Windows Server 2008, and the invert option is only available in the magnifier screen.</comment></comment>


Gosling: "standards are viewed as competitive weapons rather than stabilizers" - <AUTHOR> http://nighthacks.com/roller/jag/resource/StandardsPhases.html

<comment><USER2> so true and in some completely different areas too - the vhs-betamax wars, the HD/Bluray.

Probably one is going to be brewed up between bluetooth/wifi direct or mebbe its already won, before it even started.</comment>


Firesafe: Add Complex Security Logic to Your Firebase App - <AUTHOR> https://www.firebase.com/blog/2014-02-04-firesafe-complex-security-logic-for-firebase.html

<comment><AUTHOR> So there are two technologies, Firesafe which is for drawing finite state machines, then, behind the scenes I have connected Firebase security rules to a static analyser. This allows me to check the logic makes sense IN EVERY CONCEIVABLE LOGICAL COMBINATION.

I have really enjoyed developing this project and I hope to find people who can use it. (sign up to the mailing list and I will be in touch)

[http://tomlarkworthy.github.io/](http://tomlarkworthy.github.io/)</comment>


Evaluating Natural Language Understanding Services [pdf] - <AUTHOR> https://wwwmatthes.in.tum.de/file/6djp1mgfl78x/Sebis-Public-Website/-/Evaluating-Natural-Language-Understanding-Services-for-Conversational-Question-Answering-Systems/SIGDIAL22.pdf <comment><AUTHOR> "From a high-level perspective, LUIS performed best with an F-score of 0.916, followed by RASA (0.821), Watson Conversation (0.752), and API.ai (0.687). LUIS also performed best on each individual dataset: chatbot, web apps, and ask ubuntu. Similarly, API.ai performed worst on every dataset, while the second place changes between RASA and Watson Conversation."

</comment><comment><USER2> Just in time. I was just researching this today. Quick question ( maybe not related). Is there a good open source solution for Entity Extraction, and more exactly mapping it to Wikipedia, ( Like GOOGLE NATURAL LANGUAGE API ) ?

<comment><AUTHOR> Rasa, evaluated in the paper, can do entity extraction.

Other open source libraries that can do entity extraction: OpenNLP ([https://opennlp.apache.org/docs/1.5.3/manual/opennlp.html#to...](https://opennlp.apache.org/docs/1.5.3/manual/opennlp.html#tools.namefind.recognition)), Stanford NLP ([https://nlp.stanford.edu/software/CRF- NER.shtml](https://nlp.stanford.edu/software/CRF-NER.shtml)), MALLET ([http://mallet.cs.umass.edu/](http://mallet.cs.umass.edu/)),

<comment><USER2> Maybe my question was misleading. I'm more interested, for my current project on mapping those entities with Wikipedia articles ( see [https://goo.gl/mNdDRD](https://goo.gl/mNdDRD) ) or try the [https://cloud.google.com/natural-language/](https://cloud.google.com/natural- language/) example</comment></comment></comment>


Asqway – ask questions and get recommendations - <AUTHOR> https://itunes.apple.com/app/asqway/id1039694793?ls=1&mt=8 <comment><AUTHOR> Any questions on the App? email us email@example.com</comment>


Insights From Steve Jobs Keynote Circa 1997 - <AUTHOR> http://onstartups.com/tabid/3339/bid/58082/16-Brilliant-Insights-From-Steve-Jobs-Keynote-Circa-1997.aspx

<comment><USER2> I don't know what to make of this exchange, but I found it fascinating. (Starts at 12:15)

 _Audience member:_ "I think it's important that Apple be perceived as different, 'cuz if Apple says we're just like everybody else, but better that doesn't really say very much ..."

 _Jobs:_ "I don't think it's good that Apple is perceived as being different, I think it's important that Apple is perceived as being much better. If being different is essential to doing that I think we have to do that ... I don't care about being different. Wouldn't you agree?"

 _Audience member:_ "I agree, but I think Apple needs to articulate those difference better."

Later(?) in 1997, Apple launched the Think Different campaign: <http://www.youtube.com/watch?v=vmG9jzCHtSQ>

"So we have to be really clear in what we want them to know about us. ... The Apple brand has seriously suffered from neglect. The way to do that is to not speak about speed ... it's not to talk about why we're better than Windows."

I can't reconcile Jobs in these two videos. I'd like to think it shows a remarkable flexibility in opinion.

</comment><comment><USER3> "It's incredibly stupid for Apple to get into a position where for Apple to win, Microsoft has to lose. That's really dumb."

Its amazing how on the money that quote is.

</comment><comment><USER4> Though he'd only been back Apple a short time when this video was recorded he had an amazingly clear vision of where Apple needed to go. One that he executed on once he assumed the CEO role.

Two things I caught that were highly interesting:

He talked about Apple 'controlling distribution' and then caught himself. Was he already planning Apple stores that long ago?

He was obsessed about having a good cell phone and hearing him go on it was interesting to note was before the smartphone had even been invented. I note with humor that it was a dealbreaker for him that the phone have a physical keyboard! Guess that's one area he comprised on in the final design.

<comment><USER5> He never said physical keyboard. Just keyboard, and always connected to the net.

<comment><USER4> The phone he mentioned previously using had an on screen keyboard so I inferred from his emphasis that the phone have an actual keyboard that he meant a physical one.

<comment><USER6> He said he did not want to use that scribble thing.

</comment></comment></comment></comment><comment><USER7> Is it just me or does Jobs seem to be conflicted a bit between the strategic value of controlling everything vs. the value of opening things up and licensing to third-parties?

<comment><USER8> Perhaps nobody has yet offered them the "fair price" he believes Apple should get for licensing the operating system.

</comment></comment><comment><USER9> Why do people try to demonstrate how on the money Steve was back then? Clearly, he's had many deeper insights since then and you would hope so.

He's abandoned some of what he talked about and doubled down on others. And many of the ideas he's had only could have emerged as he went down the path.

</comment><comment><USER10> I feel the post misses the historical importance of the video. I watched it last week and also came up with an entire page full of notes, but my notes ended up sounding more MBA-ish.

Watch his personality. Watch the way he tells stories and interacts with people when faced with praise, hostility, and indifference.

He's completely open. In this video, he isn't CEO -- he's just an advisor. He can say what he wants, what he means, and what he feels with no corporate marketing sitting in the way.

His stump points throughout:

      - We can save the world by reducing complexity
      - We must make people love us through our great products
      - Somebody give me a goddamn internet phone with a non-stylus keyboard</comment>


Golang Restful Starter Kit - <AUTHOR> https://github.com/ribice/gorsk <comment><AUTHOR> Last month or two I worked on a Golang Restful Starter Kit.

Ideas and motivation behind this project are available as a blog-post on my website: [https://www.ribice.ba/go-restful-starter- kit/](https://www.ribice.ba/go-restful-starter-kit/).

All feedback is welcome.</comment>


A Photographic Guide to the Earliest Computers - <AUTHOR> http://motherboard.vice.com/read/a-gorgeous-guide-to-the-earliest-computers?trk_source=homepage-lede <comment><USER2> Nice pictures, but hardly any information about the computers is given (not even links to Wikipedia). And a tape drive is not a computer.</comment>


How to write marketing emails that don't suck - <AUTHOR> http://nathanbarry.com/write-marketing-emails-dont-suck/

<comment><USER2> I've actually applied the "Philip," tactic (read the article to know what I mean) to all my writing. Makes it easy for me to balance educational with a conversational style.</comment>


You asked me to prove mob programming works. Here's the proof - <AUTHOR> https://firstname.lastname@example.com/you-asked-me-to-prove-mob-programming-works-heres-the-proof-70eb6a1d0279 <comment><USER2> You've seemed to have left out the proof...</comment>


Why you should manage your energy, not your time - happy-go-lucky http://www.bbc.com/capital/story/20170612-why-you-should-manage-your-energy-not-your-time <comment><AUTHOR> Rather interesting data points refuting the idea that butt-in-seat time matters for productivity and excellence matters, as some on HN have suggested:

" _In 2014, the social networking company The Draugiem Group used a time- tracking productivity app to study what habits set their most productive employees apart.

Surprisingly, the top 10% of employees with the highest productivity didn't put in longer hours than anyone else – often they didn't even work eight-hour days. Instead, the key to their productivity was that for every 52 minutes of focused work, they took a 17-minute break._"

and

" _One study from Illinois Institute of Technology by Raymond Van Zelst and Willard Kerr in 1951 found that scientists who spent 25 hours per week in the workplace were no more productive than those who spent just five._ "

Another interesting point hints at why the poorly done agile at most organizations is so painful and ineffective:

" _... points to a study in the early 1980s that divided undergraduates into two groups: some were advised to set out monthly goals and study activities; others were told to plan activities and goals in much more detail, day by day.

While the researchers assumed that the well-structured daily plans would be most effective when it came to the execution of tasks, they were wrong: the detailed daily plans demotivated students. Harford argues that inevitable distractions often render the daily to-do list ineffective, while leaving room for improvisation in such a list can reap the best results._"

The list of tasks for a sprint are never supposed to be a ironclad promise that all of them will be done and that they are precisely what will be worked on and nothing else; that's just micromanagement by story point. They are just a best guess using the information available at the time of sprint planning. If some tasks aren't completed, that's normal and expected, as long as there's a valid engineering reason other things needed to be done first to make progress toward the overall goal. (And there often are; "yak-shaving" ([https://en.wiktionary.org/wiki/yak_shaving](https://en.wiktionary.org/wiki/yak_shaving)) entered the software development lexicon for a reason.)</comment>


RIP Blackberry, we won't miss you - <AUTHOR> http://www.thememo.com/?p=4398 <comment><USER2> What is the point of this article? None of it seems to be relevant to any actual event; it's just random android bashing from random people.</comment>


Google Cloud ups game against Amazon, buys cloud-services firm Bitium - <AUTHOR> http://www.siliconbeat.com/2017/09/26/google-cloud-ups-game-against-amazon-buys-cloud-services-firm-bitium/ <comment><USER2> Lord does this irritate me. Google's got amazing technology, but it's not a capabilities gap that's causing them to lag behind AWS.

It's that the entire decision tree seems run by robots. You don't hear about AWS customers:

* Having to plunk down credit card deposits to extend service limits.

* Having their accounts shut off randomly and not being able to turn them back on for hours or days without explanation.

* Incurring horrifying bills by mistake and being forced to pay them.

Computers are awesome, I get that— but people don't want to trust their production infrastructures to a capricious algorithm. I _want_ to see Google do better than it is, but I consistently fail to see signs that they understand their market.

</comment><comment><USER3> Even Microsoft offering is better than Google. At least I can interact with real people using their products.</comment>


AWS CodeDeploy - <AUTHOR> http://aws.amazon.com/codedeploy/ <comment><USER2> While this looks nice, part of me can't help but be annoyed by yet _another_ deployment option on AWS. We now have CloudFormation, Elastic Beanstalk (which can take many forms, including Docker), CodeDeploy, and Opsworks.

I can imagine how, for a new user, it's utterly baffling which of these options is the best for the longterm, with the least friction. I use OpsWorks quite a bit but have found it very challenging, and the feedback cycle when attempting to develop new cookbooks is excruciatingly slow.

All I want, personally, is a system that uses a set of interchangeable scripts that represent dependencies, so my server configs can live in version control. It doesn't even need to run on multiple OSs (which seems to be a central tenet of Chef). It just needs to deploy/rollback with zero downtime, and ideally autoscale as quickly as possible. Is this it? Is there any way to know without spending weeks fleshing out how it works?

<comment><USER3> How about an Amazon-managed Docker (not shit ElasticBeanstalk) infrastructure/config management system?

If they handled things like EBS integration, orchestration, ELB integration, and all of the usual stuff, I'd be sold in a second.

<comment><USER2> From my understanding, after talking to them at Web Summit, something like this is in the works. And they're aware of how incredibly complicated the AWS console is becoming. I don't know how or when they plan to address it, however.

<comment><USER4> They promise lots of things (like cross region VPC peering) to person to person at Summits...

<comment><USER2> Yes, I am still waiting for something prettier than software VPN or OpenS/WAN. Their docs show 5 ways to connect VPCs, all of them complex, all of them with significant downsides. One would think this sort of thing would be easier.

</comment></comment></comment></comment></comment><comment><USER5> I've only briefly read over the documentation, but this service seems to not follow deployment best practices that aws and others such as netflix have been talking about for years. Specifically the pattern of pre-baking an ami with your current version of the app you are deploying and any other needed software completely installed on the ami and then having an autoscale group be able to boot that ami up in a few seconds and start working. This greatly helps with scaling up, doing rolling upgrades and also very easy rollbacks.

The CodeDeploy service seems to operate by you manually launching base ec2 instance with a code deploy agent and then this agent will checkout your git code on the live instance, run any provisioning steps and then if things break somehow rollback all that work, still on the live instance.

I'm sure this is still a big improvement to companies who are manually sshing into servers and running deployments by hand, but as someone who pre-bakes ami's and does rolling upgrades with autoscaling groups this service seems like a step backwards.

<comment><USER6> I've been working on the CodeDeploy Integration here at Codeship and have been working with the service for a bit (as a preface on my thoughts)

While Immutable Infrastructure is also in our opinion (and I've written about this extensively) the way to go in the future updating systems in place is still the primary way to deploy systems and will be for a while. By providing a centralized systems to upload new released and manage the deployment (how many instances get the new deployment in which timeframe) you can take away some of the security problems of opening up ports for access and potential deployment errors where the SSH connection dies.

Especially when deploying into a large infrastructure connecting into each instance for update becomes painful. That's where an agent based services like CodeDeploy is really powerful and removes the single point of failure that is the machine/network that you deploy from.

With ElasticBeanstalk, Opsworks and Cloudformation they now really start to surround all the deployment workflows.

Definitely a great service that will in my opinion become very important to many many teams. You can also read more about our specific integration in our blog: [http://blog.codeship.com/aws-codedeploy- codeship/](http://blog.codeship.com/aws-codedeploy-codeship/)

<comment><USER7> Have you written anywhere how you guys deal with operational monitoring (eg. Boundary, New Relic, etc.) when you're spinning up brand new instances all of the time?

<comment><USER6> A bit: [http://blog.codeship.com/lxc-memory- limit/](http://blog.codeship.com/lxc-memory-limit/)

We use librato for monitoring our build server infrastructure and mostly only look at max/min values for metrics that could mean trouble. Generally we're able to separate data of different instances by their instance id so we could look into them individually.

We use NewRelic for our Rails application on Heroku and pump Heroku data into Librato as well (we love data and metrics)

And of course you can always send me an email to firstname.lastname@example.com with questions.

</comment></comment></comment></comment><comment><USER8> BTW, we now integrate with this from CircleCI: [https://news.ycombinator.com/item?id=8597439](https://news.ycombinator.com/item?id=8597439)

There's some discussion in that post of how it compares to pre-baking, etc. Of course there are trade-offs either way. CodeDeploy does require that your are careful with your lifecycle scripts to make deployments as atomic as possible. At least they provide a good selection of default lifecycle events for you to take advantage of.

</comment><comment><USER9> Here's an open source tool that does something very similar (and you aren't vendor-locked into AWS):

[https://bitbucket.org/scorebig/elita](https://bitbucket.org/scorebig/elita)

</comment><comment><USER10> As a beginner I have a hard time understanding all these services that Amazon provides. I know I should probably be using them, but I don't know which one.

<comment><USER11> What is it you're trying to do? It might be worth taking a look at the storage provided by S3 and how you'd go about hosting a static website (if that's something you might need). Or set up a free micro EC2 instance. That will give you a linux box which you can play around with.

</comment></comment><comment><USER12> How does this compare to Deis? Does it serve the same use case, albeit locked into AWS?

Discussion on Deis from yesterday: [https://news.ycombinator.com/item?id=8591209](https://news.ycombinator.com/item?id=8591209)

</comment><comment><USER13> This looks a lot like Marathon [1] though without some of the resource abstractions that Mesos [2] provides underneath.

1\. [https://mesosphere.github.io/marathon/](https://mesosphere.github.io/marathon/) 2\. [https://mesos.apache.org/](https://mesos.apache.org/)

</comment><comment><USER14> Is this going to integrate with Docker? Would make a great orchestration platform

<comment><USER15> That was my initial thought, too. But it looks like the Docker-related news they hinted at is still coming:

[https://twitter.com/jeffbarr/status/529493907839533056](https://twitter.com/jeffbarr/status/529493907839533056)

</comment></comment><comment><USER16> This could be a big deal in terms of raising the bar for deployment practices.

Right now "nobody ever got fired for" setting up deployment via rsync and some ad-hoc shell scripts. That works for a single host, although it's not great for reproducibility. But as soon as you go to multiple hosts you need some degree of orchestration, monitoring, and integration with your load balancer to avoid downtime.

CodeDeploy offers those benefits, so if it turns out to be even slightly good, it could become the "nobody ever got fired for" choice, for any non-trivial app running on AWS.

<comment><USER17> If the job is "get an app onto a bunch of boxes and load balance the healthy ones," I feel like AWS has already been doing that for a long time – deploy your code to a box, create an AMI from the box, and use it as a launch configuration for an auto scaling group. New code=new box=new AMI, and then you don't have to worry about the mechanics of moving code to a bunch of boxes at the same time.

This seems like a tiny step forward for orgs who are deploying code to boxes that they never take down, but for the orgs that have been doing it the AWS- prescribed (immutable) way, I'm having trouble seeing how this is useful at all.

<comment><USER16> I think immutable infrastructure is probably the way forward, but it's not yet easy enough to be the default for lazy people.

 _tiny step forward for orgs who are deploying code to boxes that they never take down_

That's exactly why this is a clever move - it's a better way to do what you already know how to do. This should get more teams using responsible deployment practices. If you have to first learn a whole new mindset about infrastructure, most people just won't bother, and will keep on rsyncing.

</comment></comment></comment><comment><USER18> Interesting. Between Elastic Beanstalk, OpsWorks, and now CodeDeploy it seems like AWS is taking over every production developer workflow from the hobbyist on up.

<comment><USER19> I find none of them good enough for my workflow. I think heroku nailed it with their deployment approach for my case.

Beanstalk worker tiers are a nightmare. You need to place all your workers in separate repos, for example for git aws.push style workflow to work.

<comment><USER18> Good point. Plus Heroku just gives you so many more options instead of the 3-4 that ElasticBeanstalk provides, although Docker integration potentially changes the calculus significantly. Interesting that its taking EB so long to catch up to Heroku on that front.

</comment></comment></comment><comment><USER20> I am having a hard time to understand how CodeDeploy will change my current deployment workflow (which consists of git aws.push basically). Can someone here enlighten me?

</comment><comment><USER21> I really think Heroku nailed the deployment model. I just push my code, and then the code is deployed. It would be nice to have staging baked in.

</comment><comment><USER22> Region Unsupported

CodeDeploy is not available in EU (Ireland). Please select another region.

Supported Regions

US East (N. Virginia) US West (Oregon)</comment>


Tobacco, caffeine, alcohol, and carpal tunnel syndrome in American industry - <AUTHOR> http://www.ncbi.nlm.nih.gov/pubmed/8882102 <comment><USER2> Study report from 1996.</comment>


Airbnb has expanded into Cuba - <AUTHOR> https://www.airbnb.com/s/Cuba?s_tag=if3lWVIL <comment><USER2> Airbnb-like service w/out the website is what works in Cuba since forever. 'Casas Particulares' (private homes) is where budget minded tourists get their rooms and food. Good thing they will now be able to search online, when I visited Cuba a while back I had to rely on Lonely Planet's printed listings!

</comment><comment><USER3> Oddly "We've determined your location to be in Canada. We are not licensed to provide booking services for this listing."

I'm curious to know what countries get this issue. We've always had open travel to Cuba as far as I know.

<comment><USER4> I read up on this when visiting in November. Apparently, only US residents can book with Airbnb in Cuba.</comment></comment>


Startup Quote: Jason Cohen, Founder, Smart Bear Software - <AUTHOR> http://startupquote.com/post/9655587170

<comment><AUTHOR> It's more effective to do something valuable than to hope a logo or name will say it for you.

\- Jason Cohen (@asmartbear)

<http://startupquote.com/post/9655587170></comment>


Government Report Finds Drastic Impact of Climate Change on U.S - <AUTHOR> https://www.nytimes.com/2017/08/07/climate/climate-change-drastic-warming-trump.html <comment><USER2> It will be very illuminating to see what Trump and his cohorts do about this report since it reports facts which fly in the face of the fantasy that has been promulgated by the Administration. The scientific community should not have to fear government censorship.</comment>


LimeSDR Now Backed by the European Space Agency - <AUTHOR> https://www.rtl-sdr.com/limesdr-now-backed-european-space-agency/ <comment><AUTHOR> LimeSDR vs mini: [http://qrznow.com/limesdr-mini/](http://qrznow.com/limesdr- mini/)

 _"the LimeSDR Mini is a smaller, less expensive version of the original LimeSDR ... uses the same LMS7002M radio transceiver as its big sibling. The Mini has two channels instead of four, and, by popular demand, SMA connectors instead of micro U.FL connectors."_

A positive review (2016): [https://myriadrf.org/blog/first-tests-limesdr- gqrx/](https://myriadrf.org/blog/first-tests-limesdr-gqrx/)

A negative review (2017): [http://sv3exp.blogspot.com/2017/03/limesdr- review.html?m=1](http://sv3exp.blogspot.com/2017/03/limesdr-review.html?m=1)

<comment><USER2> I bought one (the LimeSDR) and based on that experience declined to buy the mini. If I had to summarize the mismatch it was that MyriadRF, the folks who are the actual developers behind the systems, had a decidedly windows/microwave focus. If you wanted to build an LTE simulator and use PothOS on Windows there were people to talk to, but gnuradio and Linux support was hit or miss. That was made particularly challenging by the LimeSDR folks modifying and building tools in their own PPAs which had incompatible changes/libraries with the 'mainline' sources. As a result I could build a working gnuradio setup that _only_ had LimeSDR support (through SoapySDR) or one that supported the other three SDRs I had simultaneously. That was really painful.

The 'microwave' focus was particularly apparent when, by default, there was no reasonable way to listen in on things below about 200Mhz. (all the FM band for example). They later offered an HF mod which was to remove an inductor(coil) from the front end selector on one of the antenna inputs to give it better frequency response.

Even with the change I found a number of systems with better performance in the low bands. It isn't a deal killer but it means if you're going to be exploring the low bands you probably want an upconverter.

<comment><USER3> >Even with the change I found a number of systems with better performance in the low bands.

Such as? I'm not aware of anything in the price arena of the LimeSDR that can Tx.

<comment><USER2> If you're transmitting the RSP2 (mentioned earlier) is about $100 cheaper and can transmit in all of the lower spectrum. HackRF works well as a transmitter in this spectrum as well where its dynamic range isn't the limitation like it is when receiving.

You can add a down converter of course and shift spectrum where the SDR is comfortable playing into the lower bands, but if you're going to do that you might as well get the PLUTO-ADALM from Analog devices which is only $150 (I got mine on the intro deal of $99 but still).

That said the LimeSDR excels at MIMO type applications (as that really is its design target).

</comment></comment></comment></comment><comment><USER4> Other than the basic SDR projects like tracking aircraft and decodimg garage door fobs, what cool projects are people using this hardware for?

<comment><USER5> Came here to ask this. I'm an extra-class ham but I've never done any SDR. Are these suitable for regular ham use for voice and digital modes? (assume you'd want a big amp)

<comment><USER6> Yes. See my video here: [https://www.youtube.com/watch?v=W_o8sOZHoeE&feature=youtu.be](https://www.youtube.com/watch?v=W_o8sOZHoeE&feature=youtu.be) Software is [http://qradiolink.org](http://qradiolink.org) built with GNU radio.

</comment></comment></comment><comment><USER7> I used LimeSDR at work. We were nervous to buy from Crowd Supply, but they are really a good value add. Compared with something like Kickstarter they inventory the products and handle returns- something a tiny startup might not deal with well.

LimeSDR was convenient for us because the LMS7002M has two radios, each with I & Q plus 3:1 input switch (so 6 inputs total).

</comment><comment><USER8> Question: can I use LimeSDR and some SDR software to save on hardware and not get a Yaesu or Icom ham radio?

I wanted to play with ham radio for a while but I am not sure I want to spend 750+ Euros for a Yaesu station.

<comment><USER9> It would be a good proxy for those radios, but if you're licensed and are simply looking for an inexpensive transceiver, Baofeng UV-5R radios can be found on Amazon for ~$20 and will get you working right out of the box.

If you try to mock up a station using a TX/RX SDR system, it would probably much more expensive and require significantly more hardware.

<comment><USER10> He's probably looking for an HF rig -- baofengs definitely don't do HF. As someone else said, the LimeSDR would work well, just need an amplifier because the power out is on the order of milliwatts.

<comment><USER8> > He's probably looking for an HF rig

Indeed.

</comment></comment></comment></comment><comment><USER11> Anyone know how the LimeSDR Mini compares to the LimeSDR or HackRF?

<comment><USER12> The most important difference is that that HackRF has a huge ecosystem of established software now than it's been a handful of years since the kickstarter.

With crowdfunded SDR devices expect a 1.5-3 year lag between hardware release and the software/firmware being there to do what it advertises.</comment></comment>


What Paul Graham Is Missing About Inequality – Tim O'Reilly - <AUTHOR> https://medium.com/the-wtf-economy/what-paul-graham-is-missing-about-inequality-a9f7e1613059#.5nmn0ybn4 <comment><USER2> Tim writes: _But in formerly rich countries, many people who used to be paid well for their work now have to compete for lower-paid jobs, while those who already own meaningful capital take a larger and larger share of the pie.

This is the real "pie fallacy" — the idea that as long as the pie is getting bigger, everyone is better off. It's true that through technology, trade, and the spread of knowledge, we have made a bigger pie. But that doesn't mean that some people aren't getting far more of the benefit, while others are losing out._

This highlights probably the biggest flaw in Graham's original article, and if he does reply to Tim's critique I hope at minimum he addresses this point. The reason that the wealthy are claiming an increasing slice of the growing pie is that we've institutionalized, in the form of law and custom, many, many, "rich-get-richer" rules. Tim enumerates a few of them, but there are many such mechanisms woven into the economy, some of them not so obvious. (For example, recently HN featured a Priceonomics article showing how cigarettes effectively transfer wealth from the poor to the rich: [https://news.ycombinator.com/item?id=10941671.](https://news.ycombinator.com/item?id=10941671.))

There are only two ways to combat the rising rate of inequality: 1) modify all those rules and customs to make them wealth-neutral (unlikely), or 2) legislate new counter-rules that move wealth the other way. Any other solution is wishful thinking and not mathematically viable.

<comment><USER3> We've also somewhat institutionalized the belief that all innovation would cease if those laws were even slightly more re-balanced in favor of more redistribution downward.

PG's essay seemed to hint at that kind of thinking, but I couldn't tell if he was advocating against higher taxes on the very wealthy, or whether he was more vaguely saying "don't mess with the startup machine's incentive system" without being specific as to what that means.

<comment><USER4> There are many ways to re-engineer the system to lead to better outcomes. Say you gave everyone twice what we are giving them now. But that extra 50%, you don't give them that as income, but instead as money that can be spent on certain kinds of investment. Not commodities, food, finance, or real-estate. What sort of outcomes would that cause in the system? The standard argument for giving people any sort of wealth is, well that causes inflation. That only causes inflation only because of the way the money is used. If it is used different it can cause innovation and better distribution of wealth.

<comment><USER5> Those things are all fungible, and thus can be exchanged for cash. This would only introduce friction, not prevent inflation.

<comment><USER4> I don't see how they are fungible. At the end of the day the people are investors. They invest in a real company that carries out real business. Is that business any of those listed above? If not, then yes you can invest, if not no you can not invest. Obviously the investors would at some point see a return on their income. And you simply don't give them the returns. You put the returns back in the same fund. You can get that money back when you are 65 to pass to your children. You can only get back a certain amount, depending on the number of children, enough to pay for their schooling and a home. That way everyone has an education and a home, and the banksters don't get rich off mortgages and loans. The residual the government can keep for social programs or something as such.

</comment></comment></comment></comment></comment><comment><USER6> I think his points on executive compensation vs labor-based compensation plus incentives are spot on. It's this way because they _can_ do it this way for their own gain. They also have influence in Washington to pull it off. Quite simple.

Of course, being a scientist, I prefer to judge something by its results. We can say exactly what our system's design is doing by looking at what results from it and where those results show up. Spoiler: it's a plutonomy or an economy that almost exclusively extracts wealth to concentrate in hands of richest few.

Citigroups internal analysis confirming we're a modern plutocracy & that illusion of upward mobility was critical:

[http://politicalgates.blogspot.com/2011/12/citigroup- plutono...](http://politicalgates.blogspot.com/2011/12/citigroup-plutonomy- memos-two-bombshell.html)

Nice profile of the richest firms controlling the most wealth and their interlocking boards:

[http://www.projectcensored.org/financial-core-of-the- transna...](http://www.projectcensored.org/financial-core-of-the- transnational-corporate-class/)

That's 161 directors managing $23.91 trillion in funds. Hard to imagine control of wealth distribution or incentives to take a slice getting more concentrated.

EDIT to add: Also relevant is this recent HN post with empirical evidence supporting rule by elite claim. If law and business structure are for elites, then _of course_ they continue and expand economic inequality that benefits elites at the rest's expense.

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

</comment><comment><USER7> "I agree with him that technology can make us all richer, but I disagree that it necessarily creates greater inequality, even if some startup founders become very rich. It only does that if companies don't create real value in return for that wealth."

Tim provides no justification or evidence for this argument. This makes no sense to me. While there is certainly a difference between making money from rent-seeking vs rendering real value, the statement that lots of wealth can only come from not creating real value seems absurd to me. If providing some value results in some wealth, why wouldn't providing lots of value result in lots of wealth? It is true that some of the highest money makers are from rent seeking activities (banking and finance sectors especially) but to say that lots of wealth can ONLY come from not providing value is absurd.

Technology, education, and access to capital all create inequality because they all create leverage. Those who use leverage will always get further ahead than those who don't use leverage. Getting rid of leverage is not the answer though because leverage is the basis for creating more physical wealth in the world and for doing it with less resources.

We should ask ourselves, how can this leverage be democratized?

<comment><USER3> > the statement that lots of wealth can only come from not creating real value > seems absurd to me.

I don't think that's what he said. He said that inequality increases when wealth is created for the company's owners/investors while NOT creating value (or even reducing value) for everyone else (customers, the public, employees).

There are lots of examples of huge wealth being created at the expense of others without also creating value - for example: bad mortgages being bundled, obfuscated, and upsold. Tim actually proposes that bad startups are somewhat analogous to these sorts of financial instruments - i.e. there's a sucker at the end holding the bag.

<comment> UK-AL Things that don't create value eventually collapse.

I don't think customers/employees would work with company if they weren't getting at least some value out of it.

<comment><USER3> Sure, but things can _appear_ to provide lots of apparent value for customers and employees (i.e. the borrowers and loan-bundlers in the pre-2007 real estate bubble), until as you say, they collapse.

Also, just because a small group of people (customers, employees) may derive value from a particular startup company doesn't mean that that particular company, or the overall the ecosystem of startup companies, is creating more value than it consumes. The effect on inequality of the overall ecosystem is what's being debated here, and I'm not sure that anyone has a clear, data- backed understanding of which way it skews.

</comment></comment></comment></comment><comment><USER8> Paul writes: _The most naive version of which is the one based on the pie fallacy: that the rich get rich by taking money from the poor. ... I think because we grow up in a world where the pie fallacy is actually true. To kids, wealth is a fixed pie that's shared out, and if one person gets more it's at the expense of another._

Tim amends: _But in formerly rich countries, many people who used to be paid well for their work now have to compete for lower-paid jobs, while those who already own meaningful capital take a larger and larger share of the pie. This is the real "pie fallacy" — the idea that as long as the pie is getting bigger, everyone is better off. It's true that through technology, trade, and the spread of knowledge, we have made a bigger pie. But that doesn't mean that some people aren't getting far more of the benefit, while others are losing out._

This is a step forward, but I confess that I'm still not convinced that the simpler version is actually a fallacy. I can't shake the sense that more and more people are consuming shared resources in a finite ecosystem.

Paul continues: _It takes a conscious effort to remind oneself that the real world doesn't work that way. In the real world you can create wealth as well as taking it from others. A woodworker creates wealth. He makes a chair, and you willingly give him money in return for it._

But where does he get the wood? Does he cut down a tree, which is no longer there for others to use? Or if he buys the lumber, how does he get the money to do so? And the person with the lumber, did they cut down a public tree to get it? For that matter, where does the person who buys the chair get his money? Does it matter if he too "created wealth" or it OK if he took it by force?

Can someone who once shared my naiveté explain what convinced them that the "finite resources" view is indeed a fallacy? It might be that I don't distinguish correctly between wealth and value. I understand that people can create something of value, and that they can make themselves wealthy, but I don't think I understand the concept of creating wealth.

<comment> UK-AL What is it that you don't understand.

Somebody owns some land, perhaps it was auctioned off by government. They plant trees(Adds value to the land). Lumber jacks pay to cut down the trees, and prepare the wood for woodwork(adds value to wood). They sell the wood to a woodworker, who crafts it into a chair(adds value to the wood). Who then sells it. The owner of the land may plant more trees and the cycle starts again.

At each step more value has been added(using labour and skill), which people are willing to pay more for.

Money is injected into the economy via banks and government to represent the value of products and services in the economy. If you create too much money, for the amount of value created you get inflation. To little and you get deflation. Obviously this is overly simplified. You also have stuff like velocity of money.

</comment></comment><comment><USER9> One of the big reason we have an increase in wealth inequality is globalization. Before 2000, you were only competing with another American at the same wage. Now, you need to compete with workers in India, China, and Mexico.

If not in those countries, big companies like Facebook will just bring them over on an H1B visa at a similarly competitive wage.

It's the same phenomenon that happened when technology uprooted the music industry 15 years ago: small, indy labels can now no longer survive because nobody actually buys music anymore and we are left with huge labels.

Adblock will eventually do the same with independent blogs: If you want to make any sort of living, you will need to post your content on a large- corporate owned blog that has enough traffic to make money outside the ad system.

<comment> UK-AL Globalisation has actually decreased inequality on a global scale.

<comment><USER9> The poor are moving up, the middle class are moving toward the poor (they will meet at some point), and the rich continue to get richer in the process.

So yes, inequality is technically decreasing between the poor and middle class, but the end result will be the middle class being non-existent.

It might be better for someone from a poor country, but not that good for someone from the US.

<comment> UK-AL I don't believe that it is the divine right of the middle class of one country to live better lives than other people, simply because of location.

Besides, globalisation will overall increase the total wealth of the poor + middleclass combined.

<comment><USER9> "Besides, globalisation will overall increase the total wealth of the poor + middleclass combined."

It won't really increase the overall wealth of the middle class. It will pull wealth away from the middle class to pay the poor at a cheaper rate. This is what's happening right now and why people in the tech industry are so upset by it. It's a form of global wealth redistribution.

I also don't think the middle class has any divine right. They just need to start preparing for job loss and overseas competition.

<comment> UK-AL Trade has ability to create wealth. If we increase global trade, it will also increase the total wealth available to the poor + middle class. Some portion of the surplus value will also go to rich providing the capital.

</comment></comment></comment></comment></comment></comment><comment><USER10> Very curious to see what people think about O'Reilly's supposition that many, if not most, startups are just another financial instrument that don't actually create wealth:

"When a startup doesn't have an underlying business model that will eventually produce real revenues and profits, and the only way for its founders to get rich is to sell to another company or to investors, you have to ask yourself whether that startup is really just a financial instrument, not that dissimilar to the CDOs of the 2008 financial crisis — a way of extracting value from the economy without actually creating it."

<comment> UK-AL If someone buys a start-up, obviously it has value to them.

<comment><USER11> The 'value' can be as simple as a payout. If I could go back, I'd love to invest in Snapchat. I don't think Snapchat will ever have a strong revenue stream but that doesn't matter to me - what matters to me is the buyout.

Hell, I invest in options often. There's no real value to me... only a potential investment payout.

I think it's the same with most investors of technology.

<comment> UK-AL The value comes from the people buying the company then.

Maybe snapchat is going to be a crucial marketing channel for them, which makes it worth it to purchase them. They transfer some of this value, to the original investors of the company who got it off the ground.

There is value, or perceived value at some point in the chain.

</comment></comment></comment></comment><comment><USER12> It would be much more interesting to hear economists, who have expertise in this domain, discuss this issue and hear people who happen to be in our industry talk about what they know (IT).

<comment><USER13> I agree. Paul Graham's essays on income inequality expressed my views on income inequality more clearly than even I was thinking them. I appreciate this, but now I need to hear a critique by someone who understands the issue how I understand it and disagrees with me. I've been looking, but I've found ad hominem attacks.

<comment><USER14> @delish: have you seen this? [http://praxtime.com/2016/01/12/paul-graham- inequality-cowens...](http://praxtime.com/2016/01/12/paul-graham-inequality- cowens-laws/)

<comment><USER13> That was worth my time. Thank you. I wrote down Cowen's laws for future reference.

</comment></comment></comment></comment><comment><USER15> Condensed version here: [https://medium.com/the-wtf-economy/in-his-essay-on- income-in...](https://medium.com/the-wtf-economy/in-his-essay-on-income- inequality-paul-graham-credited-me-for-pre-publication-feedback- ff8a0b295a1b#.8sjfw8397)

</comment><comment><USER16> > PG: Traditional economists seem strangely averse to studying individual > humans.

Because that's not what economics is? Economics is a social science. Or, as far as I can see, psychology for the society. If you study the individuals, you are a psychologist, not an economist.

</comment><comment><USER10> One wonders if pg will respond to this piece.

</comment><comment><USER17> Well said.

</comment><comment><USER18> Inequality is a very serious issue. It's unfortunate to look at it in the context of the startup world however. Startups aren't driving the problem.

To quote a great musical legend, _The reasons are several, most of 'em Federal_.</comment>


Show HN: Synesthesia – Optimizing brainfuck compiler implemented as Nim macros - <AUTHOR> https://github.com/Jeff-Ciesielski/synesthesia <comment><USER2> I'm playing a lot with VM, interpreters, JIT and recently compilers in Nim.

Here is a JIT brainfuck VM: [https://github.com/mratsim/jitterland](https://github.com/mratsim/jitterland)

Nim macros are extremely useful for assemblers and emulators as contrary to many codebases which needs to use an intermediate code generation step via text files [1][2][3] you can directly use them with type checking and all Nim facilities while keeping an easy to read syntax: [https://github.com/numforge/laser/blob/e898f027/laser/photon...](https://github.com/numforge/laser/blob/e898f027/laser/photon_jit/x86_64/x86_64_ops.nim)

[1]: Xbyak - [https://github.com/herumi/xbyak/blob/v5.751/gen/gen_avx512.c...](https://github.com/herumi/xbyak/blob/v5.751/gen/gen_avx512.cpp)

[2]: NNPack + PeachPy - [https://github.com/Maratyszcza/NNPACK/blob/af40ea7d/src/x86_...](https://github.com/Maratyszcza/NNPACK/blob/af40ea7d/src/x86_64-fma/relu.py)

[3]: Apache Milagro Crypto - [https://github.com/apache/incubator-milagro- crypto/blob/d43a...](https://github.com/apache/incubator-milagro- crypto/blob/d43ac938/version3/c/config64.py)

</comment><comment> def- Related: [http://howistart.org/posts/nim/1/index.html](http://howistart.org/posts/nim/1/index.html) [https://github.com/def-/nim-brainfuck](https://github.com/def-/nim-brainfuck)

</comment><comment><USER3> Similar implementation in JavaScript: [http://www.iwriteiam.nl/Ha_bf_online.html](http://www.iwriteiam.nl/Ha_bf_online.html)</comment>


How two dead accounts allowed remote crash of any Instagram Android user - <AUTHOR> https://medium.com/bugbountywriteup/how-two-dead-users-allowed-remote-crash-of-any-instagram-android-user-8f20e88b1b59 <comment><USER2> IG co-founder here: users 1 and 2 were our first two attempts at creating users end to end when getting Instagram v0.1 hooked up to the backend we'd written. There was a bug so they were left in an incomplete state; post bugfix, 3 was my co-founder Kevin and 4 is me.

<comment><USER3> Two ghost users, left in an incomplete state by a bug in a previous version of the codebase... you basically created the Twins from The Matrix!

</comment></comment><comment><USER4> _" java.lang.NullPointerException"_

That is probably responsible for more of the lost sleep in my life than any other single entity.

Various versions of _" out of file descriptors"_ might be a close second.

<comment><USER5> To be fair, all new serious languages now don't have null pointers.

... but we'll still struggle with java.lang.NullPointerException in 2080.

<comment><USER6> A null pointer is just a manifestation of a bug, usually unexpectedly missing data.

If you can't have nulls, you might have a better chance of spotting the possibility of that missing data and trying to deal with it, granted, but if it happens truly unexpectedly the bug is still going to manifest itself somehow, as an NPE or otherwise.

Following all the way through, let's say there is no exception anywhere and the missing data gets all the way through to the UI.. well then that's how the bug manifests.

Is the missing data just not appearing better than a 'oops, something went wrong' error or similar in response to a 500 caused by an NPE? Depends on the application and circumstances I guess, but in general probably not. The bug exists in both cases. You can present it in better and worse ways, but the bug is that the data is not there and it should be.

The point being, not having NPE doesn't fix any problems, fundamentally. It just shifts them elsewhere. No language feature saves you from bugs.

<comment><USER7> _> The point being, not having NPE doesn't fix any problems, fundamentally. It just shifts them elsewhere. No language feature saves you from bugs._

NPE _is_ the problem. The point of type systems with non-nullable references is that they force you to handle the null case explicitly using an Option/Maybe type by throwing a compiler error instead of an exception in production.

Nobody expects that getting rid of NPEs would get rid of bugs. It would, however, force one of the most common classes of bugs to be handled when it is cheapest to do so, rather than when the production system is on fire.

<comment><USER6> Respectfully I think you're not addressing the point I'm making, but a slightly different one.

In the case where a piece of data can be missing, and that's fine, I completely agree that optional/maybe types are useful to model that explicitly and unambiguously. They let you and future maintainters know that this is the case, via the type system, at compile time.

But what I'm talking about here is genuine runtime exceptions (which NPE is in Java, of course), where the design of the system says that this piece of data cannot be missing and yet, at runtime, you encounter a case where it is missing, erroneously, because of some bug somewhere.

Types like optionals won't help you here, because you wouldn't have used them at design time anyway. The same applies to languages completely without null references.

All type systems do is formalise expectations about how data is going to look. If the real data breaks from those expectations because of some bug at runtime, the type system can't help you.

<comment><USER8> > But what I'm talking about here is genuine runtime exceptions (which NPE is > in Java, of course), where the design of the system says that this piece of > data cannot be missing and yet, at runtime, you encounter a case where it is > missing, erroneously, because of some bug somewhere.

My experience is that this is the less common of the cases in a production environment (vs dev where one may be experimenting a bit more).

<comment><USER6> I agree with you :-)

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> Original (non-Medium) post: [https://www.valbrux.it/blog/2019/09/13/how-two- dead-users-al...](https://www.valbrux.it/blog/2019/09/13/how-two-dead-users- allowed-remote-crash-of-any-instagram-android-user/)

</comment><comment><USER10> At my work there were some drivers who cloned the app and were using (a presumably hacked version of) it on another tablet with the "test user" ID to make a whole bunch of money, they could see where the trips were going and would only take the really good ones. Bare minimum we're probably talking at least an extra $1k/week.

Who knows how long they got away with this before someone noticed "ghost tablets" logged into the system and locked down the test user account -- which is also how they got caught because they then had to log in with their actual ID and _The Powers That Be_ could pinpoint who exactly was doing it.

So, yeah, lock down invalid user account IDs.

<comment><USER11> So any account could do this? It doesn't sound like extra IDs were the real problem.

And there's something deeply sad about "they prioritized the better jobs, so we blacklisted them".

</comment></comment><comment><USER12> More like debugging than security researching? Wonder how much he got! Congratulations

<comment><USER13> Was about to comment the same thing. Just an average bug, not a security issue.

<comment><USER14> I would like to highligth that after the exploitation the instagram application could not be successfully opened until the affected users were removed from the group

<comment><USER4> _" manually removed"_

Which probably means Instagram admin intervention.

</comment></comment></comment></comment><comment><USER15> Any speculation on what a bounty like this is worth?

<comment><USER16> Depends on their budget. Wild guess but 5-10k seems reasonable.</comment></comment>


Origin Of The Abbreviation I18n For "Internationalization" - <AUTHOR> http://www.i18nguy.com/origini18n.html

<comment><USER2> What's striking to me is that we have the abbreviation "i18n" for internationalization, and "a11y" for accessibility. From the perspective of a typical young American software development team, these are two instances of "making software work for those other people that aren't quite like us". Is it a coincidence that (1) both of these concepts got cumbersome words, and (2) both of these words were abbreviated in the same way?

<comment><USER3> I think you're reading too much into it. "i18n" exists because, frankly, it's too long; it's a 20-letter word, one of the longest in common usage, and it's boring and time-consuming to type, and easy to mistype.

There is a long tradition in hacker culture to shorten and optimize things whenever possible, going back to the early days of Unix and C ("sh" for shell, "rm" for remove and so on). The reason i18n has a number is that it's awkward to abbreviate without; the C/Unix-style tradition of removing vowels to abbreviate would render it unreadable ("intrntnlztn"? "intrlzn"?).

Case in point: One of the companies I co-founded, Transparensee, has a very long name. Internally we started referring to it as _t11e_ everywhere, including the domain names we use for dev stuff (t11e.com works as an alias for transparensee.com).

Edit: We also have l10n (localization) and m17n (multilingualization), incidentally.

<comment><USER4> I feel like "intl" would be a good abbreviation.

<comment><USER3> That just means "international", which does not capture the essence of what it is. It would have to be something "intlzn". But since we already have established i18n, there is no need to coin a new abbreviation.

</comment></comment></comment></comment><comment><USER5> didn't know that. one of my customers mentioned one day we should shorten our email to f19n.com, we thought it was a great idea, since then we use f19n.com as our email domain.

</comment><comment><USER6> from a hacker's perspective, Internationalization is a old word now. You either code for all platforms, or you code for specific people/platforms/needs.

 __Busted! __

<comment><USER7> What the hell is i18n other than "coding for all platforms"?

i18n is making the software _capable of being localized_ at all. l10n ("localization") is the process of actually localizing to a specific given locale (which is more than mere translation, btw).

<comment><USER6> it is different from the translation meaning? something like the problem of japanese games not working on english based plateforms, without the locales being changed to the former?

<comment><USER3> Localization is all the stuff not covered by translation: Time and date formats, for example. And also any aspect that must be tailored to a location. For example, if a game contains graphics that satirizes something American (like a restaurant chain or a sports brand), region-specific graphics may be modified to suit the region.</comment></comment></comment></comment>


A handy Ruby interface for AWS Athena - <AUTHOR> https://github.com/u2i/egis <comment><AUTHOR> Together with my team at u2i ([https://www.u2i.com/](https://www.u2i.com/)) we have recently built a wrapper for AWS Athena Ruby SDK providing a convenient, higher-level interface for defining schemas, creating tables and executing queries. It reduces boilerplate and repetitive code allowing you to process large data sets easily.

Will you find it useful? Please give it a star. ;)</comment>


Can any of the ciphers in GnuPG be brute-forced? - <AUTHOR> https://www.gnupg.org/faq/gnupg-faq.html#brute_force <comment><USER2> This is basically true, but a little overstated.

In particular, it's helpful to make a distinction between brute-forcing a cipher, and brute-forcing a particular file. If I GPG-encrypt my plaintext with a weak RSA key, or a weak passphrase with conventional encryption, that particular ciphertext may be revealed through a brute force attack; the attack wasn't on the _cipher_ , it was on my key.

Also, the fact that it's impossible/infeasible to exhaustively search the keyspace doesn't mean that the key won't be found - 50% of the time it'll be found in the first half of the keyspace that's searched (assuming a linear search), 1% of the time it'll be found in the first 1% of the keyspace that's searched, and so forth. Success via brute force isn't at all likely, but it's not impossible, even though an exhaustive search is practically impossible.</comment>


Why Internet Explorer 8 still Sucks Balls - <AUTHOR> http://www.windowhaxor.net/2008/03/06/why-internet-explorer-8-still-sucks-balls/ I was trying to load linux.com and it tells you microsoft's feeling towards open source software by the way it was loading the website <comment><USER2> Anyone who's done website design knows that it's pretty standard to include hacks for IE. So the problem with IE now running in full standards mode, is that all of these hacks are still applied! And all of the IE conditional comments are still applied. So until developers have a chance to get their sites ready for a (mostly) standards compliant version of IE, of course it's not going to work correctly.

<comment><USER3> Well, the standard way to hack around IE is with conditional comments. And hopefully everyone has done the right thing and used "if LT IE 7" comments to avoid just this.

<comment><USER4> Um, yeah, that's right. I was _totally careful_ to comply _strictly_ with Microsoft's recommended standards for nonstandard XHTML. Yep. I assure you that I certainly did _not_ use _any_ nonstandard hacks to get IE5 and IE6, the banes of my existence, to work at 3am on the night before the site launched. I swear to god.

Ahem.

On a completely unrelated note: Does anybody know if IE 8 runs in XP under Parallels? I have some websites that I should probably check.

<comment><USER5> MS updated their ie testing images on Thursday. ie8 + XP happens to be one of them. So I'd assume it'll work under Parallels. You'll have to run them thru Transporter first.

[http://www.microsoft.com/downloads/details.aspx?FamilyId=21E...](http://www.microsoft.com/downloads/details.aspx?FamilyId=21EABB90-958F-4B64-B5F1-73D0A413C8EF&displaylang=en)

</comment></comment></comment></comment><comment><USER6> Sigh, one more browser version to test for. Plus with Firefox3 coming out this year and Safari gaining market share, things are going to get worse before they get better.

What are your favorite tools to automate functionality testing/layout verification in different browsers?

<comment><USER7> Selenium and WATIR and Firewatir.

On Windows I rigged up something to walk a site and take screen shots of each page so I could do a quick visual scan.

<comment><USER6> While there are a bunch of browser screen shot SaaS out there (browsershots.org browsercam.com), I haven't found a good app to do the same thing locally (that ideally controls the corresponding VMware instances as well).

Anyone seen such as a beast or do you need to roll such a thing by hand?

</comment></comment></comment><comment><USER8> You've got at least 80% of web designers ensuring good layout as part of all of their compliance testing. Additionally, there's plenty of legacy intranet applications that only work well on Internet Explorer. Not defaulting to a quirks mode is a quick method to annoy designers and managers.

<comment><USER9> And hopefully a quicker way to get glacially slow, complacent IT departments (and the enterprise vendors they use) to use web standards.

So some pages break because the site was IE-only. Nothing like a swamped help desk to get the IT department up and moving.

</comment></comment><comment><USER10> i believe its still beta, and you showed 2 out of 80 gizallion sites.

\- but! - this could be the vista of browsers. (no adoption)

</comment><comment><USER11> I just love the title of this article so much.

</comment><comment><USER12> usually i hate it when titles like "why X sucks", however, it's ok if you're talking about _any_ flavor of IE.

</comment><comment><USER13> Ugh. "Sucks balls." Ignore gay bash and hesitantly click.

So new layout features of a beta browser release are breaking some layouts. I wonder if the author ever used a Mozilla pre-release browser.

<comment><USER14> How is saying that something "sucks balls" a gay bash?

<comment><USER13> You're right, I take back that it's a "bash", but it is informed by anti-gay culture. I don't want to get into a discussion about that, because it's very much besides the point. I only included it because I thought it betrayed the childish nature of picking on a piece of software for no reason besides that a beta release still has bugs.

If you ignore my criticism of the headline, the point still stands that it's the article is empty. All pre-release software has bugs that will be fixed in the final release, and browsers, including Mozilla's, usually have some layout bugs. These get fixed, so if people are looking for problems with a browser, they should look elsewhere.

<comment><USER14> Yeah, I totally agree about the article. Not only is it almost content-free, the content it does have is misguided. It's particularly ironic that the interweb flamed Microsoft for originally planning to make IE8's rendering conservative by default. Now that it is (more) standards-compliant and will hence break some pages that depend on the quirks of old IE versions, they get more abuse...</comment></comment></comment></comment>


Rape in the world's largest democracy - <AUTHOR> http://www.nytimes.com/2012/12/29/opinion/rape-in-india.html?_r=0 <comment><USER2> I, as an Indian, am deeply ashamed by what has happened. But what saddens me even more is that while our culture teaches us to respect women, we worship several goddesses, refer to our country as "Mother" India; we rank highest among the nations where women are the worst abused.

This has nothing to do with democracy, I believe it is a pure case of rising economic inequality and decreasing sex ratio in India.

The protests that we are seeing in the country are just a sign of how frustrated are people with the current political environment in the country. Rather than focusing on development in the country and taking care of law and order, our current politicians are way busy arguing over trivial things.

Its even sadder that this case represents the current mentality of an Indian male. And I am not sure how to change that. I am sure new and tougher laws will be made, but how do you teach respect and compassion that our country seems to be missing so badly now.

It seems we as a nation are making progress but sadly at the cost of our values.

<comment><USER3> Thank you for an Indian perspective. The broader problems of inequality and poverty don't help, but raping someone to death with a steel bar seems a touch too much to blame on Indian society and a decreasing sex ratio. There are clearly some big problems around sexual abuse in India, but I think that some individuals could be receiving some more condemnation and a society a bit less.

</comment></comment><comment><USER4> There's tons of rape going on in the good ol' US of A. Why not fix it here? then we can go ahead and be a shining example for other countries to follow.

<comment><USER5> Are there really "tons of rape" in the United States? Are they really as bad or as systemic as the gang rapes occuring in India?

<comment><USER6> Yes:

> According to United States Department of Justice document Criminal > Victimization in the United States, ... 1 of 6 U.S. women and 1 of 33 U.S. > men have experienced an attempted or completed rape.

<http://en.wikipedia.org/wiki/Rape_statistics#United_States>

<comment><USER7> While not contesting the assertion, one should be careful to note what denotes 'rape' in different countries, and the divergence from de jure and de facto. It's not interpreted or recorded the same way in all places. Even in the US what constitutes rape today may not coincide 100% with that it constituted 50 years ago.

For a starker contrast compare say Romania with Sweden. Which one might one theoretically feel safer in, in which one might one feel psychologically safer, in which one would one be physically safer?

<comment><USER8> Sweden has a much higher (3-4x general crime rate) and an even higher violent crime rate (about 12-14x) than Romania. ([http://epp.eurostat.ec.europa.eu/statistics_explained/index....](http://epp.eurostat.ec.europa.eu/statistics_explained/index.php/Crime_trends_in_detail)). I don't see anything surprising here.

</comment></comment></comment></comment></comment><comment><USER9> This really isn't hacker news.

<comment><USER10> Upvoting you, though I commented on this thread.

Maybe when people submit articles to HN they should be asked to select a category (Tech, News, Science etc). The app could restrict the number of non- hacker news.

</comment></comment><comment><USER11> "India, a rising economic power and the world's largest democracy, can never reach its full potential if half its population lives in fear of unspeakable violence."

I think this sentence about sums up most of the reasons I can't take mainstream American media seriously.

<comment><USER12> And why is that? I am not sure about the American media, but the point about "half its population lives in fear of unspeakable violence" is very true.

I have lived 23 years in India (26 now) and I know for a fact that people are really scared of the police and some crazy people who can shoot you for no reason and are out of the hands of law.

</comment></comment><comment><USER8> Democracy does not mean civilized society. On the contrary, the same goes for other "democracies." Sad indeed.

<comment><USER13> Indeed, democracy is nothing more than a tool. Without proper built-in safeties, it can be used for evil just as easily as it can be used for good; that is why the constitutions of democratic countries are all longer than _"Vote on stuff, majority wins."_ The US constitution, for example, has a built-in safety to ensure that a mere majority cannot vote away freedom of speech (changing amendments has a much higher bar).

It shouldn't surprise us when shitty things happen in democratic countries. Merely being democratic implies next to nothing about a country.

<comment><USER14> Democracies (republics) are flawed because the citizens control stops at the voting booth. Platform policies politicians get elected on are non binding. They don't legally have to follow through with anything they said to get elected. Once elected the only test for the politician (in legal bounds) is to get elected again in 4-6yrs.

Politicians know that they can win elections on allegiance to parties, platitudes and sound bites.

This creates a detachment where the political system is no longer based on data and real results of improvement of the citizens life or the countries well being - and turns into a game of marketing and party cheerleading.

<comment><USER15> Voting isn't about getting the best candidates into office, its about being able to get the worst ones out.

<comment><USER8> And in the US, it's about nothing at all because unfortunately one of the protections against voters and one of the most ill-conceived ideas of government has been the electoral college. If you're not in the small percentage or so whose vote might count (read "swing-state), or whose state primary / caucus comes so late it's irrelevant, walking into a voting booth (or filling out a vote by mail, email or whatever insecure thing they do these days) is a waste of time.

Then there's the matter of the compromised voting machines ...</comment></comment></comment></comment></comment>


Ask HN: Where do I go to learn Modern PHP? - <AUTHOR> There is Modern Java, Modern C, and Modern JavaScript. Is there Modern PHP? Or, I should just learn some other language instead… <comment><USER2> [http://www.phptherightway.com](http://www.phptherightway.com)

</comment><comment><USER3> Whether you should learn another language really depends on what you want to do. Do you want to be a better programmer and gain a better understanding of how to write maintainable code? Definitely learn a new language! I've really enjoyed working with TypeScript, which is the only language with good static typing that also has a large, widespread community (via JavaScript).</comment>


Rust lifetimes: Getting away with things that would be reckless in C++ - <AUTHOR> http://www.randomhacks.net/2014/09/19/rust-lifetimes-reckless-cxx/ <comment><USER2> In C++ if the string is a rvalue reference you could std::move it into part of the return value. Think a signature like

        template<typename T>
        std::pair<std::string, std::vector<std::string_view>>
        tokenize_string(T &&str);

This would be efficient when the user passes a temporary, and it would be safe.

Which isn't to say the Rust solution isn't totally cool. Being able to easily check this class of errors at compile time is probably a lot nicer than needing to learn all the relatively complicated parts that would go into a easy to use / safe /efficient / still slightly weird C++ solution.

<comment><USER3> Sure, and then somewhere along the way you throw away the first element of the pair, because you're not using it, but you're still using the views, and oops you just reintroduced the bug you tried to fix.

Which is to say, yes, you can obviously write C++ code that _works_. But you run the risk that one tiny mistake, or a change weeks, months, or years later, causes memory issues. Being able to completely rule out this class of error at compile-time is really amazingly useful.

<comment><USER4> That's a forest for the trees argument. The ability to introduce bugs ("make a tiny mistake") in future changes is an _inherent property of software_ , and you can't fix this in the general case. Rust just fixes this for the case of free-memory-read bugs. That has value, but it's a much more limited scope than you're implying.

Really I think this is the biggest problem with Rust. The stuff broken about C++ isn't really its memory model, it's simply its complexity. And every time I look at what's happening in Rust I see _the same kind of complexity being introduced at every turn_. I mean seriously: "named lifetime parameters"? And the syntax is a bare single quote? That's a joke, right? No one but Rust nerds is going to grok this, and real code needs to me maintained by mediocrities.

Frankly Go seems to have this "don't introduce new nonsense" problem under much better control, so if I need to pick a horse in the race, it's that one, not Rust.

<comment><USER3> This comment is a joke, right? I find it hard to believe that any programmer would say "the compiler prevents me from writing broken code? That's too complex!"

Yes, a proper typing system involves more visible moving parts than a broken typing system. But a proper typing system is vastly more powerful. C++ may not have lifetimes, but every time I touch C++ I have to be really careful that I don't accidentally introduce memory or threading bugs, because they're both _really easy_ to do. Someone who's programmed C++ for a long time might not even realize it, but then again, the vast majority of C++ code in this world almost certainly contains numerous memory and threading bugs.

And why the comparison to Go? Go doesn't live in the same world as Rust. It's not a systems programming language. At this point it's mostly a glorified web server application language. And if you're going to pick Go because of the lack of memory lifetime issues, you may as well pick any other garbage- collected language out there.

<comment><USER4> Again, forest for the trees. Your laser focus on one particular type of bug blinds you to the fact that complex systems lead to bugs in general. I'm not interested in defending C++ (or Go, or anything else). I'm saying I see Rust falling down the same "cool new ideas" rabbit hole as C++, and Haskell, and Erlang, and Common Lisp, and... Of those languages only one has achieved any notable success.

And btw: the idea of calling something a "systems programming language" that can't even make a system call is laughable. Can I mmap a buffer to pass to a hardware video codec or make an ioctl to an audio driver in rust? Guess which language I _can_ do that in? If "Go doesn't live in the same world as Rust", then Rust isn't in the same galaxy as C/C++.

<comment><USER5> I don't know where you got the idea that you can't mmap a buffer or call an ioctl in Rust. You certainly can do those things.

<comment><USER4> I got the idea from the docs, honestly, which don't talk about system interfacing at all. Though I do now see the "unsafe" page, which at least has assembly hooks.

Serious question though: has anyone ever done this? I mean, are there kernel header import utilities I can use to get the flag definitions and parameter structs, etc...? You can sneer and downvote me all you want, but it seems that the clear truth is that Rust has _not_ been used as a "systems programming language" in the only regime where IMHO that term has any meaning.

Basically: drilling a hole through the compiler to the assembler (which I'll state again is done in Rust as yet more complicated syntax users need to learn and not as, say, a native library interface) is a valuable tool, but it does not a syscall interface make.

<comment><USER5> There is rust-bindgen, which you can use to convert C headers to Rust FFI declarations. This should be able to convert the kernel userland headers to Rust declarations, so that you can call directly to the kernel.

(I didn't downvote you.)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> Or, you know, instead of returning two C pointers which in modern C++ makes no sense, return a vector of `std::pair<size_t,size_t>` with position and length of each substring, and if needed use `std::string::substr` to extract the parts you need.

<comment> expr- I would say returning regular pointers is more C++-esque than your handmade range implementation. Pointers are, after all, a kind of iterator, which is an essential C++ concept. (std::string::iterator is a handful.)

(Furthermore, there is nothing "C" or wrong with regular pointers. Their only "flaw" is that they can't manage an object, but they're still _the_ semantical way to refer to one.)

<comment><USER6> Returning regular pointers which point to memory which is not managed by you and that you by default know could disappear at any time is not the C++ way of doing anything. Thing is, a class has a public interface for a reason, and if you as an outsider want to start playing pointer games you know from the start what you are in for.

I never implied that pointers are bad, just that this particular usage of pointers is bad, and as such should not be used as an example of why we would want something else over C++. If I ever saw a function with a signature like the one proposed I'd be extremely suspicious of what was going on.

Note that this would happen in the same way if the function returned pairs of iterators. It is a choice that depends on the documented and intended usage of a function. If you feel your tokenizer will be used on temporaries (I fail to see how that would ever be useful though) you could overload the function to also take universal references or change the return parameters so that nobody can get hurt. Otherwise you return whatever delimiters you are comfortable with, with the assumption that they will not be used in some way. All code can be broken if you actively try to, so it makes no sense to protect against everything.

<comment><USER5> > All code can be broken if you actively try to, so it makes no sense to > protect against everything.

That's not Rust's philosophy. Rust is memory-safe, period.

<comment><USER7> I guess technically 'if you try to' means also abusing unsafe, so in theory he's still sorta right. Every time I see someone ask a question about transmute on IRC I shiver a little.

But yes, Rust is way, way, way better in this regard.

<comment><USER8> The difference is safe-by-default languages force you to turn off the safeties before they will let you blow your own foot off. C++ doesn't believe in safeties since (at the time the language was designed) it introduces an unacceptable delay between you wanting to pull the trigger and your target and/or feet blowing up.

</comment></comment></comment></comment></comment></comment><comment><USER9> Which makes me wonder :

1/ could you build the same unsafe behiavor in Rust if you wanted to by not specifying lifetime constraints ?

2/ If yes, shouldn't lifetime constraints be mandatory ?

<comment><AUTHOR> The compiler will not compile code it cannot verify as safe (outside an `unsafe` block), meaning it will complain about lifetime constraints that are missing, e.g. it is a compile-time error to not propagate the lifetime information out of the enum.

[http://play.rust- lang.org/?run=1&code=enum%20Token%20{%0A%20...](http://play.rust- lang.org/?run=1&code=enum%20Token%20{%0A%20%20%20%20Word%28%26str%29%2C%0A%20%20%20%20Other%28%26str%29%0A}%0A%0Afn%20main%28%29%20{})

</comment></comment><comment><USER10> There's an obvious extension here for lifetime inference - the example given doesn't need to be an error, it could compile correctly by increasing the object lifetime to the outer block. I don't know offhand whether there is a universally correct inference algorithm for that (if every other language feature was static then unification would solve it easily, but the other language features are not static and I don't know how it would interact with rust type inference).

<comment><USER11> wouldn't extending the lifetime in this situations lead to subtle hard to trace memory leaks?

<comment><USER12> No. Currently a reference in a struct or enum has no inferred lifetime, and must be explicitly stated. Having it default to the lifetime of that containing struct or enum would simply mean you don't need to specify it. The danger is it could infer wrongly, leading to lifetime errors that might be cryptic.

But at the end of the day, the Rust compiler will never allow a reference to outlive the original object.

<comment><AUTHOR> You've misinterpreted, it's not a question about reducing the annotation in a struct/enum definition, but about postponing the destruction of the String so that the later references are valid, i.e. currently we have

      fn test_parse_unsafe() {
          let v = {
              let text = "The cat".to_string();
              tokenize_string3(text.as_slice())
          }; // `text` destroyed here
          assert_eq!(vec![Word("The"), Other(" "), Word("cat")], v);
      }

but the suggestion/question is about changing this to

      fn test_parse_unsafe() {
          let v = {
              let text = "The cat".to_string();
              tokenize_string3(text.as_slice())
          };
          assert_eq!(vec![Word("The"), Other(" "), Word("cat")], v);
      } // `text` destroyed here

so that the references in `v` are valid.

This could lead to "memory leaks", where a destructor is implicitly postponed to a higher scope, but I don't think it would be much of a problem in practice (the promotion would only be through simple scopes, not through loops, and maybe not through `if`s). In fact, there's an yet-to-be-implemented accepted RFC covering this[1] (there's no guarantee that it will be implemented though, just that the idea is mostly sound).

[1]: [https://github.com/rust- lang/rfcs/blob/master/active/0031-be...](https://github.com/rust- lang/rfcs/blob/master/active/0031-better-temporary-lifetimes.md)

<comment><USER10> Ah yes, that RFC is roughly what I had in mind, thanks.

I believe that it's safe to promote through an if, although obviously not through a general loop.

<comment><AUTHOR> Yes, I agree that it should be safe, I've softened my original text. However, it would require dynamically tracking if the destructor needs to be run, and there's currently discussion[1] about Rust possibly moving to a static model, for the highest performance.

[1]: [https://github.com/rust-lang/rfcs/pull/210](https://github.com/rust- lang/rfcs/pull/210)

<comment><USER10> Consider this:

On a two-way if statement, then a given storage location is either set on zero, one or both branches. If it is set on neither branch then the if statement is irrelevant and can be ignored. If it is set on one branch, then either it had an original value and hence can be treated as being set on both branches, or it must be destroyed within the branch of the if (no null pointers - think about it until it is clear that the type system guarantees this). Hence we are only interested in cases which are isomorphic with the location being set on both branches.

We can treat this as a phi node following the if: there is one output value, which has been created in one of two different ways. In this case we don't know statically which value has been constructed, but we do know statically how and when to destroy it regardless of which one we get, because both branches have the same type and storage location. We don't actually need to know where it came from.

Any obvious problems? I think it works...

<comment><AUTHOR> It doesn't work, the &str could come from completely different types in the two branches.

I.e. one branch could be created by .as_slice() on a String, the other could be created by referencing a global, e.g.

      let s = if cond {
          let some_string = create_it();
          some_string.as_slice()
      } else {
          "literals are always-valid &str's"
      };

`some_string`s destructor should only be run if the first branch was taken.

<comment><USER10> I'm not sure that this particular example can ever use some_string outside the if without hitting a type error, but I see what you mean.

That seems like a reasonable case to raise a type error. That defines the cases quite neatly: if it's temporary on both branches then it can work, and if it has different lifetimes then the values can't be merged and should be rejected. If the programmer really meant for this to work then they need to copy the global, and copies should be written explicitly.

<comment><AUTHOR> There's no type error at all, we're talking about delaying the destruction of some_string so that the `s` (which is a &str) is valid outside the if. The string literal is a &str with a infinite lifetime, and so can of course be safely restricted to have the same lifetime as the other branch (done implicitly).

However, it's easily possible to have the &str come from temporaries of different types in the two branches. This would restrict the static destruction case to only working through an `if` when the "parent" values have exactly the same types; which doesnt seem nearly as valuable and possibly not worth the effort.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment> enjoy-your-stay In C++, the best way to hand out pointers to anything where the creator may not necessarily be the last one referencing that object or chunk of RAM is to use reference counting, which would have solved the posters' problem.

It would mean that you would have to wrap the incoming string in a class, and probably add the tokenize_string method to that class. Then you would also have to wrap the results vector in a class that then addrefs the original string wrapper class.

But after that, handing out pointers to the contents of the string would be no problem as the results class would addref the string class and then release it when done ensuring that the string wrapper class remains alive as long as the results object has not gone out of scope.

Of course Rust's approach of alerting you when your code path causes dangling pointers is also interesting, but I wonder how that would work if you were to link against a static library that handed out references to internal objects like that - could the compiler see the scoping problem?

</comment><comment><USER12> Just as an aside, the &str is not stored as two pointers, but a pointer and a length.

</comment><comment><USER13> _> The function get_input_string returns a temporary string, and tokenize_string2 builds an array of pointers into that string. Unfortunately, the temporary string only lives until the end of the current expression, and then the underlying memory is released. And so all our pointers in v now point into oblivion_

So what stops you from returning a shared pointer in case of get_input_string? Then take over that ownership and use it. It's still a potential problem that v is logically disconnected from lifetime of that pointer, but at least you could avoid the problem you described.

</comment><comment><USER14> This seems like the kind of place where std::shared_ptr would really shine. The author's point on the danger of pointers is well taken, but some of the new pointer types get around a lot of these issues. You couldn't use it to point into the middle of the string, but if you paired it with some offsets you wouldn't have to worry about the ownership of the pointer anymore.

<comment><USER5> std::shared_ptr has (atomic!) reference counting overhead.

<comment><USER15> Not to mention the issues with reference counting in general. Having to make sure you don't have (even indirect) circular references means you have to explicitly think about ownership anyway.

</comment></comment></comment><comment><USER16> Rust is the best complicated language I have seen!!!!!!

</comment><comment><USER17> I'm hearing an awful lot about Rust on HN, even though afaict it still does't have a basic http package yet, limiting the main types of apps I would build with it. Maybe I'm in the minority, but perhaps we can slow down on Rust news until it's a little closer to usable?

<comment><USER18> I understand there are a lot of people on HN with "web goggles" and a severe case of "all development is web development" myopia, but seriously this is just over the top. I'm a "C++ guy" (that is, I like writing programs using C++ and probably always will, even if I use others from time to time), but I would never object to a language like Rust on the basis that it lacks an http package. HTTP is a high level communication protocol. It isn't the only such, certainly not the most efficient, and definitely not even the best. To bash on a language for lack of "native" support for http is just a bit ridiculous.

</comment></comment><comment><USER19> Is there are reason this language exists? They're solving a problem that's been solved many times over for at least 2 decades in the form of managed languages.

<comment><USER20> Actually, many people have been waiting long for such a language to come out, and are very excited about Rust for good reasons.

Managed languages solve a large set of problems, but introduce two big problems as I see it:

\- Cause nondeterministic overhead which is particularly problematic for kernels, games, and software with heaps over, say, 10 gigabytes.

\- Limit ability to safely pass objects outside their ecosystem. How many libraries written in managed code are worth using outside of the language they are written in?

<comment><USER21> Actually it depends on what one understands by managed.

Strong typed languages with automatic memory management, having native compilers and used for writing OS, exist since Mesa/Cedar (70's at Xerox PARC)

Back when C was UNIX only, no one talked about C ABI. The only ABI that mattered was the OS ABI.

Amoeba, OS/400, Lisp Machines, Oberon are a few examples of having multiple languages interoperate via the OS ABI..

<comment><USER20> I was just alluding to the fact that garbage collection runtimes are quite less than ideal if another system calls into them sporadically. It just doesn't fit well for software libraries intended to be language-agnostic.

<comment><USER21> I just jumped the gun, because many tend to think stronger typing that what C offers is a synonym for managed.

Regarding the interoperability, it really depends at what level OS, GC or RC services are available.

If just on the language runtime, yes it complicates the distribution of libraries. As it raises the issues how many copies of the runtime one gets and version compatibility issues.

If the OS offers the services, then any language on that specific OS, can enjoy exposing libraries that interoperate with GC or RC.

COM (now WinRT) is a possible example of such OS services.</comment></comment></comment></comment></comment>


Thingsquare out of private beta - <AUTHOR> http://www.thingsquare.com/

<comment><USER2> Huh. I'm interested in playing around with this, but the free developer account requires you to use pre-qualified hardware. In my case, I already have a designed device. Why don't they expose an API?

<comment><USER3> Adam, Thingsquare CEO here.

We could expose a device API, and might do so in the future, but exposing an API means that we'd have to maintain that API for the foreseeable future. We do have an API for connecting apps and server-side software, but devices currently have to connect using our Thingsquare client firmware.

</comment></comment><comment><USER4> How does this fit in with offerings from Apple and Google?

Edit: Specifically HomeKit and Brillo(?)

<comment><USER3> Adam, Thingsquare CEO here.

The Thingsquare platform connects products with smartphone apps, which is similar to what many other platforms do, including HomeKit, Brillo, and Parse's IoT platform. Unlike other platforms though, Thingsquare allow secure remote access even for products that aren't always in range of WiFi or BLE. We're using a self-healing wireless mesh so that products can cover large installations and work nicely even in places with poor WiFi.

<comment><AUTHOR> How will a 6LoWPAN mesh fare against WiFi/BLE meshes, as the market seems to move towards the latter?

<comment><USER3> Not sure the market really is moving towards WiFi/BLE - there is a lot of talk about BLE meshing right now, but so far haven't really amounted to much it seems.

The strongest part of 6lowpan meshes right now is that it supports sub-GHz communication, which has much longer range and less interference than 2.4 Ghz.

In the end though it doesn't really matter which radio technology is being used, as long as it gets stable Internet connectivity. Once you're there, the backend is easy to reach.</comment></comment></comment></comment>


Why do Chicago VC's lag so far behind others? - <AUTHOR>

Chicago being the 3rd largest city in the country and filled with plenty of wealthy angel investors and VC's, seems to really miss the mark in the internet field.  We see much smaller markets from Boston, Austin, Boulder, San Francisco to merge as a growing hub for web entrepreneurs. Why does Chicago seem ages behind the rest of the country?  There are very few if no angel funds, start up groups, or incubators.  Chicago, whats up? <comment><USER2> I run a private equity fund in Chicago that invests exclusively in internet and financial-services startups. As far as I know, we're far bigger than any firm in Boulder, and our AUM exceed most of the Sand Hill Road firms. But we're boring and low-key. There are several other VC and angel funds in the area that invest in internet companies, and they tend to be the same -- boring and low-key. Basically, we all require a business model. A 'boring' and profitable business is better than a business that is 'slick and quick.' I would personally rather cash checks than be written about in TechCrunch. I'm more likely to invest in a SaaS company that manages the back-office networks of pension administrators than in a company that aggregates social network profiles, for example.

The fact that the Chicago VC/angel establishment is not constantly funding Google takeover targets (or on TechCrunch all the time) doesn't mean we don't exist...it just means we work differently. We're definitely much smaller than the Boston and SF contingent, but we're here if you look.

</comment><comment> barry-cotter Lots of finance, manufacturing, logistics wealth, trivial amounts of technology wealth (compared to Boston or the Valley.) The expertise isn't there and it has no incentive to move there when there are clusters that are massively more attractive by virtue of the historical forces and path dependence that gave the big clusters a critical mass of expertise and smart money.

<comment><USER2> Yeah, what he said ;-)

Succinctness is a virtue that I lack.

<comment><USER2> My original, long-winded answer:

I think much of the answer is historical, but part of the answer is also cultural (and these two factors intertwine and reinforce each other.)

Historically, Chicago technology startups have tended to be more industrial and/or infrastructure focused than the startups in other hubs. There isn't a major,'exciting' Yahoo or Google-type company headquartered here that gets lots of press and that will buy a non-profitable startup from you. Instead, there is Motorola and companies like that. There simply isn't the strong history of computer-oriented VC firms in Chicago like there is in Boston and SV. Part of that is just historial anomaly (owing to Stanford and Shockley, etc)...but the ripples in SV and Boston turned into waves because people nurtured them. Some places needed technology to become a major industrial base, so their economy and education system rewarded technology research and technology startups. That is not the case in places like New York or Chicago, which have plenty of other industries to keep all the yachts afloat. Of course, once an area builds the infrastructure and the talent pool, it tends to just feed on itself and amplify, making it difficult for other places to catch up.

Culturally, Chicago is a fairly pragmatic city...there isn't as much of an interest in the flashier, consumer-focused startups as there is in Silicon Valley. The "IPO or Flip or Die" strategy is much more prevalent in the Valley or Boston, whereas internet companies in Chicago tend to be more interested in slow, organic, _profitable_ growth. Investors in Chicago are more risk-averse and are not likely to invest in something that just wants to aggregate eyeballs and figure out a business model later. The downside of that conservative approach is that you will miss out on companies like Google. And you will miss out on fame and excitement. The upside is that you are more likely, statistically, to end up with a stable and profitable company.</comment></comment></comment>


Should I try Melatonin - <AUTHOR> Melatonin ( https://onlinepharmacyreviews.org/ingredients/melatonin ) is prescription only in the UK, but having heard many USians talk about how it helps with sleep, I:m tempted to pick some up when I visit the US. However, is it generally OK to take if you are taking drugs for a mood disorder? <comment><USER2> For me, I take it, and eventually pass out. And I sleep, really deeply, like a rock. I'm sure I dreamed lots, and when it hit, it hit, and I only need a small dose.I've only taken it a few times and i'm not even sure if I can get it since I've moved from the US to Norway.

Now, on the mood disorder meds, I'm truly not sure, but one of the better methods is to go to an actual pharmacy when you visit the states and talk to the pharmacist. Have the drug names - both brand and chemical - with you. The pharmacist consultation will be free. Of course, you could also possibly call your doctor there in the UK or just google it, but I'd probably ask to make sure.

</comment><comment><USER3> I suggest that you read about melatonin and its possible side effects, e.g. at [https://examine.com/supplements/Melatonin/](https://examine.com/supplements/Melatonin/) that has a very thorough writeup.</comment>