Tinkerer's Sunset - <AUTHOR> http://diveintomark.org/archives/2010/01/29/tinkerers-sunset <comment><USER2> I really don't understand the wave of alarmist posts on the 'end of a tinkering era'. Today, we have more communities and devices for tinkering than we've ever had. Magazines like Make, sites like Hack-a-day, platforms like Arduino, and _countless_ open source projects that are simply there to be messed with, and one device that comes out with a (probably) justified need to be locked down, and everyone raises panic? If I ever have the desire to mess with anything technological today, I can literally get my hands on anything, from affordable FPGA boards with great I/O, to open mobile devices, to even RF hacking! (GNU Radio's great.)

The iPad will _never_ harm anyone's ability to tinker with technology that want to. There will _always_ be platforms that are open by design and _always_ be platforms that have been rooted/hacked/jailbroken/etc. Being a geek/hacker today is far more socially acceptable and wide-spread than it was in the 80s. I'd even argue that it is doing much more to advance the technology than a completely open device like OpenMoko. Completely open devices are rarely better designed than their commercial counterparts. They don't inspire complete neophytes ("I have to do _what_ just to get a decent resolution?"), they don't push boundaries -- they only appeal to people who are already waist-deep in tinkering.

Frankly, if anything, all of this comes off as elitist. God forbid people get their hands on technology that doesn't have a steep learning curve or require you to write BASIC to be useful. Well-designed products that have a lot of concentrated money (and more importantly, talent) inspire people much more so than completely open systems. I think of them as (and please pardon the extremely hyperbolic analogy) well-polished, completed works of art. They won't teach you how to paint or let you alter them, but they'll show you what's possible with the canvas and advance the art.

I'm actually now thinking back to a discussion with a friend of mine, who's a collector of 60's-era oscilloscopes. He was raving about them as being the pinnacle of electronics engineering. Not only were these scopes beautifully designed, but their manuals detailed _everything_ about them, how they worked, what tricks they used to function, what micro-components they used. Their documentation authors really _wanted_ you to understand exactly what made it function. Maybe that's the ideal, but I still believe that beautifully- designed products, even closed, further the state of hacking far far more than completely open platforms. If you don't believe in it, don't buy it.

If you believe they're a step in the wrong direction for open platforms, make another blog post tomorrow when you have _less_ open platforms, _less_ hobbyist projects, _less_ educational materials, and _less_ hobbyist communities than yesterday.

<comment><USER3> "Tinkerable" and "steep learning curve" are orthogonal.

In fact, what the article's author is decrying is that this thing _without_ a steep learning curve is completely un-tinkerable. That, per his argument, is what will cost us some chunk of the next generation of programmers -- that, in pursuit of ease of adoption (and/or control), Apple has lopped off tinkerability.

You're absolutely right: if I want to tinker, I have more options available to me today than anyone ever has before. But it's not me that's being cut off from tinkering. It's the novice computer user, who's only beginning her journey of discovery into the possibilities these incredible tools can offer -- because the tool she has in front of her, as it's been given to her, _explicitly excludes those possibilities_. She doesn't know what Arduino is; she doesn't even have a concept for it. As far as she's concerned, FPGA is something a golfer might join. Those are things for people already at least knee-deep in tinkering.

All she knows is, "Wouldn't it be cool if my iPad had ... ?" or "Wow, I wish I could ... " And the tool she has not only gives her no ability to explore those possibilities, it looks like it's designed to actively impede her from exploring them.

<comment><USER2> > All she knows is, "Wouldn't it be cool if my iPad had ... ?" or "Wow, I wish > I could ... " And the tool she has not only gives her no ability to explore > those possibilities, it looks like it's designed to actively impede her from > exploring them.

While I understand this argument has no right or wrong answers, I can't say I agree to the above statement. Just by the virtue of having a well-designed piece of hardware in her hand, she can start asking these questions. If it was an open platform, it would most likely have been of lower quality, not as ground-breaking, and she wouldn't have had it in her hands in the first place (I'd love to be wrong here, but I'm afraid I can't find the evidence to prove myself wrong). The fact that it has "apps", written by real people can actually guide her to search online what it takes to create these apps, from which she can then find out about open platforms, programming languages, (even FPGAs!) and development in general.

I understand that talking about our curious, hypothetical protagonist we can prove anything we agree with, but without an extremely approachable, polished device it would simply not appeal to as many people. Most of these people will just be users, but some will be curious, and those are the ones we're talking about. Since hobbyist platforms are ubiquitous, you don't need to create yet another hackable platform, you need to get them interested.

I'm purposefully holding back anything specific to the iPad. Nor I, nor the majority of HN readers have even held the device, but knowing Apple, I think it can vastly increase the ubiquity of general purpose computing even more, and make good UI and design be expected. And that's a win for everyone.

<comment><USER4> > _If it was an open platform, it would most likely have been of lower > quality, not as ground-breaking_

The issue isn't that the platform is open/closed. Open or closed is a binary decision that Apple made that was entirely separate from their user interface decisions.

It just happens that most of the development money is behind closed products.

 __NOTE __Before anyone on here says anything more about how much better/worse open systems are vs closed systems when it comes to user interface and integration, think about these points:

* Do you feel that at any point during the development of the iPhone or iPad, Apple's designers would have been restricted had the platform been open? (By designers I mean user interface designers; please don't give me some smug, "they couldn't have incorporated a close-source library," answer)

* Do you feel that if Apple were to release the source code to the iPhoneOS tomorrow that the usability of all iPhones would immediately suffer and there would be mass panic as people were not able to continue using their iPhones?

* Is there any _real_ reason that Apple couldn't have a 'devmode' switch that voids your warranty, but allows you to run whatever you want on it? Note: I'm _not_ talking about jailbreaking. I'm talking about an official switch that flips the only-run-signed-binaries bit off, but at the sacrifice of Apple supporting your further actions.

Apple is all about control. One example, is when they removed the built-in ability to theme the operating system (in OS9) when building OSX. I remember that the justification back then was the Steve Jobs wanted every Mac that was running OSX to have the same interface so that: (1) it would be highly recognizable and (2) people wouldn't have to worry about differences between different setups.

What gets my goat about this is that they were selling computers to the masses. They weren't setting up some sort of corporate infrastructure or university computer lab where all the computers must be the same. What if I want _my_ computer to be different than someone else's? What if I don't care about whether or not someone else can sit down and use my computer? What if X modification makes me more productive? I feel like if I were an Apple employee and voiced such concerns at a planning meeting I would be looking at a pink slip, the way that Steve Jobs runs his boat.

I guess the point of all this is that I see a lot of the electronics industry going the way of 'dumbing down for the masses,' but not just specific products... EVERYTHING. Just look at what happened with TechTV/G4TV, now it's no longer about tech, or even gaming. It's just a SpikeTV, "Let's watch some wrestling" network. The same with SyFy. I feel like this is the start of a 'race to the bottom' in the industry.

</comment></comment></comment></comment><comment><USER5> This whole tinkering panic is ridiculous. Did tinkering end when Nintendo released the NES? Or more recently with the Wii? His dad could have bought a word processor instead of a ][e, would he have been able to tinker with that?

Some devices are more open than others. This is not a new phenomenon, nor did anything change on Wednesday.

<comment><USER6> Seriously, you guys are making me sad. Use some imagination -- there is a lot more to tinker with for your dollar in 2010 than there was in the good old days. For the price of your dad's ][e you can now buy multiple linux boxes, a bucket of Arduinos or a NerdKit, robotic legos, and -- if you are so inclined -- an iPad with developer account on top of it.

At first I was wondering what the ulterior motive to all this drama was. I'm beginning to think it's just link-baiting.

<comment><USER7> The point of the argument is that in the old days you didn't have to buy anything extra; you could tinker with your main computer. This drew in some opportunistic hackers.

<comment><USER8> > _"didn't have to buy anything extra; you could tinker with your main > computer"_

You realize that mass adoption of the "home computer" is a very, very recent phenomenon, right? I grew up with a computer in the late 80s/early 90s because my father was in the field, but most of my neighbours did not start getting computers until the mid 90s. IMHO the image of the precocious youngster learning to hack on the machine his family _just happened to have_ is a bit of selection bias.

People look back at the wonderful days of the 70s and 80s with rose tinted glasses - the truth of the matter is back then computers were _exclusively_ hacking machines (i.e., you couldn't work them at all without some fairly in- depth knowledge), you _did_ buy them just to hack on it.

<comment><USER9> A lot of people grew up in 80s with computers used primarily for games. I was a kid in glory days of 8-bit computers (Atari, Commodore, Sinclair). There were many many millions sold of those.

So yes, many precocious youngsters of my generation learned to hack just because they happened to have computer (bought for non-hacking purpose) and it was tempting and possible to tinker.

</comment></comment></comment></comment></comment><comment><USER10> If the iPad has a way to enable the Webkit Inspector, you've got your tinkerer's playground right there! The equivalent of Ctrl-Reset is about:blank.

      Unix OS : iPad : Browser :: MOS CPU : Apple II : BASIC

I'm sure that in your day there were curmudgeons who grew up with Altairs railing against the kids these days that bought computers that not only had one-chip CPUs (make your own damn ALU from TTL), they even came fully assembled! Just like you didn't want to have to deal with wire-wrapping and debouncing yourself, kids these days don't want to have to deal with stupid implementation details like booting an operating system. Just as you wanted a standardized BASIC prompt that let you punch in code listings you got from friends and magazines, kids these days want a standards-based browser that they can use to tinker with the whole world's creations.

Having your code running persistently on a server (whether abstracted like App Engine and Heroku, or old-school like a VPS) where other people can interface with it is far more important to the youth of today than something that dies along with your battery and wireless connection.

<comment><USER11> Picky, but the Altair did have a single chip CPU (the 8080).

</comment></comment><comment><USER12> The iPad has really brought out a lot of old, crochety "well in _my_ day" engineers that are now to the point where its embarassing.

The iPad will draw more people towards software engineering, because for the first time we will have a general purpose computer that doesn't suck horribly for normal people. It will be cool. It will be fun.

Passion for software has little to do with how much you can "hack" down to the hardware. It has to do with curiousity, drive, and interest. The iPad is going to increase these. Any lack of hackability out of the box that is really interesting will be overcome by these kids, I think people posting about this are thinking these darn youngins will never figure out how to jailbreak their iPads. Odds are though, they just won't care, because being able to root the filesystem is pretty boring compared to what you can do for a $99 dev kit.

The development environment for the iPhone is perfect for learning. None of the bullshit, all of the good stuff so you can get results quickly. Apple should simply make it so you can get a dev license as a student for free, or really cheap ($99 is arguably already pretty cheap considering it includes the App Store services.)

Kids will be able to write apps for the iPad and get them into the App Store. Now their non-tech savvy friends, and everyone in the world, will be able to get them in one tap. This will be absolutely phenomenal for re-kindling the fire of curiosity and passion for building more stuff. When I was learning, I was lucky if a few dozen local nerds on BBSes tried out my programs. Now a clever teenager could conceivably become a millionaire.

Now, what if they want to go deeper? What if they want to use "undocumented APIs"? They can, of course, but can't share their work through the App Store. (They can share it with friends via Ad Hoc) What if they want to really hack the thing beyond what they can do in an app's sandbox? They can, of course, jailbreak.

This is a much better world for getting young kids excited about engineering. I personally think Apple could not pull off the computer revolution they are poised to do with an open system. Just look at the Jailbroken iPhone ecosystem for an idea of what that would look like. It's great if you're a hacker, but it would have destroyed the platform.

Instead of complaining about not being able to root your iPad, complain about the fact Apple is not talking about how they're going to use the iPad to get kids excited about programming.

<comment><USER4> > _They can, of course, jailbreak._

Why do people insist that 'jail-breaking' is some sort of valid option?

* If Apple had their way even jail-breaking would be illegal.

* Jail-breaking is dependent on security holes in the operating system (i.e. the same way that you are jail-breaking your iPhone is the same way that blackhats could take it over)

* Jail-breaking breaks on most updates.

Why do people think that it is impossible for Apple to make some sort of button that says, "Yes. I want to enter 'tinker mode' my iPhone/iPad. I realize that this will void my software (maybe hardware?) support from Apple."

[EDIT]

> _Just look at the Jailbroken iPhone ecosystem for an idea of what that would > look like. It's great if you're a hacker, but it would have destroyed the > platform._

That's a strawman. If the system was open, would all of those Apps on the AppStore right not just vanish? People wouldn't have bothered to develop for the iPhone at all? What about the people that didn't develop neat apps for the iPhone (that are impossible under the SDK) because the 'jail-broken' community is so small and not officially sanctioned? (Or just because of all of the issues with jail-breaking I mentioned above?)

<comment><USER12> My point was Jailbreaking is a final, last ditch step that young aspiring software nerds will probably have if they want to spend their time dicking around with the low level guts of the pad. My bigger point was, they won't bother. Because the capabilities of the device make it so there's not really that much joy to be had in rooting the thing or tinkering with it the way we were "brought up" in the computing world.

If I am an aspiring young hacker I would probably spend more of my time writing apps for the app store or building apps on the web for my friends' iPhones. If I really want to learn about the guts of the thing, I can jailbreak or simply learn about the guts of non-iPad computers.

</comment></comment></comment><comment><USER13> The funny part is that they (Apple) are waging war against those grown tinkers that _they created_. The sweet irony doesn't stop there. Today's little hackers are just as motivated to seize control of their technological world as those in past years. I have learned from watching my own children that just about nothing can stop a motivated child.

All they are doing with their endless keys and locks and walled gardens is creating an unstoppable army of new hackers for whom the latest and greatest "content protection system" won't even be worth a raised eyebrow and for whom the legal harassment has become nothing more than background noise.

<comment><USER14> _endless keys and locks and walled gardens_

By that you mean freely available SDK?

</comment></comment><comment><USER15> I think the web itself gives the individual a lot more to tinker with and explore than in the old days.

For example, you can still play around with applesoft basic.

Applesoft basic interpreter in javascript:

<http://www.calormen.com/applesoft/>

</comment><comment><USER16> Answer this: You have somehow given a completely unlocked iPad to a child that will run any unsigned executable.

How are they going to figure out that they can hack its guts?

Now answer this: You have given a child a personal computer running Windows 7 or OS X 10.6.

How are they going to figure out that they can hack its guts?

<comment><USER17> >|Answer this: You have somehow given a completely unlocked iPad to a child that will run any unsigned executable.

>|How are they going to figure out that they can hack its guts?

I have no idae, I think the point is that they can't.

>|Now answer this: You have given a child a personal computer running Windows 7 or OS X 10.6.

>|How are they going to figure out that they can hack its guts?

<http://www.python.org/download/>

<http://www.gentoo.org/main/en/where.xml>

<http://openbsd.org/ftp.html>

<http://gcc.gnu.org/>

<http://docs.python.org/tutorial/>

<http://www.cplusplus.com/doc/tutorial/>

The list goes on and on and on and on and on and on of things that I can do on my PC that I will not be able to do on an iPad. If the iPad philosophy becomes the norm (which it probably will) we're boned.

Apple has set a precedent here. They have said "It's okay to release a PC, then totally limit what software can even be installed on it. It's ours, you're just licensing it and that is fine.". Other manufacturers are going to take note.

<comment><USER18> _t's okay to release a PC, then totally limit what software can even be installed on it. It's ours, you're just licensing it and that is fine_

No, an iPad is __NOT __a PC, it's an iPad. Apple sells another product, a Mac pro, that's a PC. I'm typing this on a Macbook Pro, that's also a PC. And there's the Macbook Air, that's a PC as well. But the iPad is not a PC just as my car is not a PC, even though I'm sure it has RAM and ROm and various CPUs in it. I hear you can buy a fridge with a web browser. That isn't a PC with freon-cooled CPUs, it's a fridge.

<comment><USER19> Your fridge is not in danger of replacing your PC.

Your argument makes sense if we were talking about the iPhone. What role is the iPad meant to play, if not a simplified PC replacement ?

<comment><USER18> An iPad is not in danger of replacing my PC, I completely agree with Apple's proposition that it's a third class of devices.

I won't program on an iPad. I like the look of iWork, but I can't see myself composing my next presentation on it. I won't be (legally in Canada) ripping my DVD collection on it. I might write comments like this on it, but without a stylus I can't see myself writing a blog post on it.

An iPad may replace my mother's Macbook. And it ought to. She surfs the net, writes email, does her banking, and skypes. She has no need of a device that she can tinker with.

I see iPads as a threat to books and also as a threat to secondary televisions. The big screen isn't going away, but a lot of people like a smaller TV in their bedroom or kitchen. Being able to watch movies and favourite shows on a small device may displace these extra televisions.

</comment></comment></comment></comment></comment><comment><USER20> Tinkering now moves to "Meta Tinkering" - as it always has, to some degree There was a time when Tinkering involved modifying the OpCodes/Circuitry of your Computer - 1950 - 1970s. Then Tinkering involved programming the computer, with little ability to touch the hardware or modify the CPU, using assembler, compilers, interpreters.

The next generation is the creation of Meta-Environments, in which tinkering allows us to go back to first principles, _create_ circuits, OpCodes, and generally understand the Computing Universe from it's bare components - [http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&...](http://mitpress.mit.edu/catalog/item/default.asp?ttype=2&tid=10218) Has been the most fun I've had in a Decade, and I'm pretty sure any smart kid, around the 8-10+ age, can start to mull through most of it's components.

</comment><comment><USER21> One company that sold lots of easily-modified computers is now selling a harder-to-modify computer.

Could you get an Apple ][e Emulator through the App Store? And throw in all the tips, manuals, and cheat sheets Mark referenced?

<comment><USER22> That would be a virtual machine or interpreter, and that's against the TOS.

<comment><USER23> Virtual machines are against Apple's App Store's TOS?

<comment><USER24> _"No interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple's Published APIs and built-in interpreter(s)."_

\-- Apple iPhone SDK agreement

<comment><USER25> The only hope is a javascript-based interpreter, which bypasses the SDK. We'll see how fast the A4 is, I guess.

</comment></comment></comment></comment></comment><comment><USER26> I grew up with an 8bit basic too, but to me it seems Garry's Mod would inspire a lot more tinkering than Apple II basic: <http://www.youtube.com/view_play_list?p=7D7FFF74CFCF1CC5>

You can start without any programming at all, then extend with Lua scripting. Available on Steam.

</comment><comment><USER27> My first programming experience was using a televideo terminal and an acoustic modem to connect to my school system's mainframe. We played around in basic and did tons of tinkering, and the devices we used were closed, dumb terminals.

I just don't see the problem.

</comment><comment><USER28> Economic rules only exist to serve society.

The iPad & iPhone lockdown are simply a way for apple to give themselves a monopoly on software and content sales.

It's leveraging success in one market (shiny looking hardware) into dominance in another (content provision, software sales)

If they keep it up and are successful you can bet your ass the regulators will fine them for it, it's far more destructive than MS bundling media player.

Of course the end service may be better, but thats neither here nor there, it's hugely anti-competitive.

Does rather depend how in-thrall to no-regulation academics & business leaders our politicians get though.

</comment><comment><USER29> By the way after finishing vernor vinges the peace war I'm thinking tinkerers really need to get to work. They did some amazing things in that book.

</comment><comment><USER30> My concern is if/when they come to dominate content distribution and become the only channel (or a member of an oligopoly of channels, all using "fair use" adverse licenses and DRM). At which point I'm effectively forced to lease rather than own my content, under whatever terms they dictate.

<comment><USER14> Apple still makes most of the money on hardware. They could not care less how do you get your content if you consume that content on the device they sold to you.

Frankly, I cannot imagine they going back to DRM for music on iTunes, and I hope it is only the question of time when DRM will be dropped for video and other media. If ITMS (where M will stand for "Media" instead of "Music") is the most convenient way to get your media and the price is right they will do well without DRM.</comment></comment>


The Challenge of Flying Below Sea Level - <AUTHOR> http://www.avgeekery.com/challenge-flying-sea-level/ <comment><USER2> I'm reminded of a glider GPS failure mode I've heard a few times.

There's a phenomenon called mountain wave where strong winds at altitude get angled upward. When it's working right, a glider can point into the wind and ride it up like an elevator.

Some GPS units save you from running down the battery if you forget to turn them off by noticing you haven't moved in a while and shutting off automatically.

So you get into wave, point into the wind, ride the elevator up while motionless over the ground... and then, boop, your GPS shuts off because it thinks you're parked.

<comment><USER3> That doesn't make sense since most GPS units also include an altimeter. Plus, you can get an inaccurate altitude estimate from GPS itself.

I suppose it's possible that the unit doesn't include an altimeter or doesn't account for altitude, but that seems odd.

<comment><USER2> Whoever wrote the "am I parked?" code probably didn't think to check altitude, since when could an airplane possibly be moving vertically but not horizontally? A lot of these units are built for powered aircraft and then appropriated for gliders. I'm confident that software written with gliders in mind would not have this problem.

<comment><USER4> Actually this is quite possible in a light aircraft. If you're flying into a fast wind, you can maintain lift while also not generating enough thrust to negate the speed of the wind, leaving you hovering over a spot, or moving backwards.

<comment><USER2> Obviously, but how often do they actually _do_ that?

<comment><USER5> I once sat in a commercial aircraft (only barely - a Do228!) which, landing straight into the wind, appeared to stand still and just touch down vertically.

Now, I know that this is impossible (no way the stall speed, even with full flaps, sensible AoA and near empty plane is lower than the wind speed at which the airport closes!) - but it definitely felt and looked as we simply gently dropped out of the sky, helicopter style.

The pilot suggested this was not uncommon practice when I asked him after we'd parked on the apron - fast, steady wind was what they encountered every day landing on these northern Norwegian islands.

</comment></comment></comment></comment></comment></comment><comment><USER6> I was in Israel last summer hiking with my kids at a spring (Ein Gedi) near the Dead Sea. We'd hiked up a trail and had gained maybe 500 ft of elevation. We were looking out across the Dead Sea toward Jordan when some Israeli military jets flew across above the Dead Sea and they were definitely at or below us. It was an interesting site being above the jets, and only later did I realize we were all still below sea level.

<comment><USER7> 5M years ago parts of the mediterranean were 6,000 to 15,000 feet below sea level. Imagine flying that.

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

<comment><USER8> Wow, I had no idea. Thanks for posting that. And it's going to happen again "soon" in geologic time...

</comment></comment></comment><comment><USER9> Why is -400 MSL the threshold? 0 would be the naive bug. I wonder if it's related to the geoid correction for altitude, which can be as much as -106 meters. That's close to -400 MSL. [https://en.wikipedia.org/wiki/Geoid](https://en.wikipedia.org/wiki/Geoid)

<comment><USER10> In the old GPS selective availability "SA" days it was generally assumed you'd get vertical errors of about 1.5 times horizontal errors and SA added "up to" 100 meters of random error, so if you were at sea level and SA were turned back on again (WW3?) it would not be surprising to see -400 feet, but -500 would indicate a system failure of some sort because "obviously" there are no airports below sea level so set the firmware failure detector to -400.

Another thing to consider with modern avionics is this isn't a hand held Garmin or an iphone. There are two interesting military, and increasingly civilian, avionics features, GCAS ground collision avoidance system and TAWS terrain avoidance and warning system. GCAS theoretically engages the autopilot and pulls up if the plane is about to hit what it thinks is the ground. GCAS has already saved at least one F16 pilot's life, probably more by now. TAWS is about the same concept but rather than "don't hit the ground" its "don't hit the radio tower in front of you" which is somewhat more complicated to calculate both the danger and how to safely avoid it. Either GCAS or TAWS might have freaked out and "fail safe" design means you're better off shutting off or dumping into a reboot loop than letting something detected to be freaked out take over the plane. I specifically listed "or" because nothing fires off a fail safe quite like having GCAS report all is chill and calm while TCAS vehemently disagrees (or vice versa). I am a little unclear in avionics in general what happens when a GCAS and TCAS disagree. I guess TCAS only avoids obstacles by turning or climbing whereas GCAS only avoids obstacles by climbing (obviously?) so as long as they both implement that protocol they should never disagree. Unless there's a bug in only one of them below 400 feet.

Finally the verbal description of the problem indicates the nav gear failed after reboot but operated fine until reboot. My guess is the GPS firmware itself might have an "issue" in its acquisition firmware where obviously all positions below sea level are categorically unable to be accurate during acquisition mode so you can toss out any interim solution and keep acquiring if you find an altitude below -400 feet (see first paragraph). Or the GCAS or TAWS do the finite low pass input filter thing over multiple location data points where the last 60 seconds of flight data show a smooth descent to -1400 feet or whatever so thats perfectly fine because the boot up self test is not running while the system is booted, but on boot up during self test the input data filter having an output of -1400 is "obviously" a software bug so keep on rebooting until the input data filter has a reasonable value.

</comment></comment><comment><USER11> There's got to be a joke along the lines of "QA guy walks into a bar, goes down to the cellar, orders -1 beers" somewhere in this story.

<comment><USER12> In the Apple ][ lemonade stand simulation game you could order negative quantities of supplies and your account would be credited without having to actually sell anything.

<comment><USER13> I now want to plug in my Apple ][, load up lemonade stand and try that.

<comment><USER14> Me too. Just tried it, it filters out negative numbers.

[https://archive.org/details/a2_Lemonade_Stand_1979_Apple](https://archive.org/details/a2_Lemonade_Stand_1979_Apple)

<comment><USER15> And it seems to have no obvious overflow issues. Either there are multiple versions or the claim that negative numbers work is simply wrong.

<comment><USER14> Might be more simple than that.

In the source of the Apple-published program, there's a comment that it was based on an earlier program from MECC* (you might remember them as the creators of Oregon Trail). That program goes back to 1973.

Perhaps _that_ version didn't check the input.

* [https://web.archive.org/web/20130226024448/http://theodor.la...](https://web.archive.org/web/20130226024448/http://theodor.lauppert.ws/games/lemonade.htm)

</comment></comment></comment></comment></comment></comment><comment><USER16> This reminds me of certain credit card signature pads that generate an error if you don't begin your signature in a particular area on the pad.

It's all too easy for designers to consider input constraints that (a) don't actually improve the user experience, and (b) don't actually make the downstream part of the system more robust.

If the user's signature is a chicken scratch and the GPS is reporting a trusted, verified altitude of -750 feet, who cares?

<comment><USER17> > verified altitude of -750 feet, who cares?

Ah, altitude. I'll use an unsigned long.

<comment><USER18> Q: What are the internal units in the GPS system (overall, not necessarily an arbitrary receiver unit)? Like mm? radians?

<comment><USER19> GPS data from a receiver is usually output using the NMEA format. The lat,long is reported in degrees, minutes, seconds, and the altitude is reported in meters. After the actual receiver calculates position, I'm sure this same data is just handed over to the part of the device so it can display your coordinates or pin point on a map. You can buy chips that will do all the GPS signal processing and positional math for you and just spit out NMEA data sentences for a computer to process.

</comment></comment></comment></comment><comment><USER20> The title is a bit misleading, at least to me. I thought the article was about either physics of flying very low or flight-like motion underwater. Instead the technical bits are about software bugs appearing when altitude is below MSL.

<comment><USER21> How are those not part of "the challenges of flying below sea level"?

<comment><USER22> It's a bug in a software package for a specific plane, not a general challenge of flying below sea level. I too initially read the title the same way and was then disappointed to read about a software bug.

</comment></comment></comment><comment><USER23> So a falsehood a programmer believed about geography then?

<comment><USER24> The airport of Amsterdam ([https://en.wikipedia.org/wiki/Amsterdam_Airport_Schiphol](https://en.wikipedia.org/wiki/Amsterdam_Airport_Schiphol)) is often used in test data because of its negative elevation. It is so well known that I can hardly believe that a certified aircraft has this kind of bugs.

<comment><USER25> If you notice, the nav system comes back at -300 MSL, so it's not as simple as "negative numbers don't work". They're inconsistent about negative signs, but I think the nav system fails at -400 MSL.

I don't know why it might handle some negative numbers but not others. Maybe there's an overflow somewhere?

<comment><USER19> It's probably hard limits set to make sure that the GPS doesn't display erroneous data due to a glitch in reception or whatever but as long as you are computing a running average of the position, those hard limits aren't really needed and only serve to create failures for weird edge cases like this.

</comment></comment></comment></comment><comment><USER26> QA Engineer walks into a bar.

Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers. Orders a sfdeljknesv.

Hug your QA engineers, they save you from eternal embarrassment.

<comment><USER27> Orders a NULL, orders "'); DROP TABLE Beverages;"

<comment><USER28> Why would anyone drop the Beverages table? I'd think the first target would be the Customer_Tab table.

<comment><USER29> If you are a QA engineer testing to see if an input is injectable it hardly matters what you target database wise

If you are attacking with the intent of stealing information it would likely better to use the database injection as the foundation for multiple pivots into other systems that would presumably have more valuable stuff than a list of people who bought a beer and or their credit card numbers.

</comment></comment></comment></comment><comment><USER30> Which was the plane that allegedly had the bug that flying across the equator or international date line caused the autopilot to turn upside down?

<comment><USER2> They didn't flip upside down, but a flight of F-22s had a bunch of systems completely crap out when they hit the date line: [http://www.defenseindustrydaily.com/f22-squadron-shot- down-b...](http://www.defenseindustrydaily.com/f22-squadron-shot-down-by-the- international-date-line-03087/)

They ended up visually following their tankers back to Hawaii.

</comment></comment><comment><USER31> In high-altitude ballooning we have to convince our GPS suppliers to turn off the altitude limiter at 80 km (some sort of anti-ICBM thing).

</comment><comment><USER32> Possibly related to conversion to/from [https://en.wikipedia.org/wiki/ECEF](https://en.wikipedia.org/wiki/ECEF) which uses ellipsoidal height (Geodetic), potentially in ways which would be problematic for negative values.

</comment><comment><USER33> Kind of related, an adorable instructional video about density altitude:

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

</comment><comment><USER34> They were lucky that the software wasn't naively using an unsigned int, or the altitude would have read 4294966055 feet.

<comment><USER35> Assuming an unsigned int is 32 bits large. Never assume the size of an int; this is what uint8_t, int8_t, uint16_t, int16_t, etc are for. The only thing the standards say about the size of an int is that it must be at least as large as a short, which must be at least as large as a char, which must be 1 byte. Even then, 1 byte is not necessarily 8 bits (but it is in POSIX).

</comment></comment><comment><USER36> Both QA and the Software Engineer failed the catch this serious bug.</comment>


Ask HN: How do you drive traffic to a startup pre-launch landing page? - <AUTHOR>

<comment><USER2> Try to hit the jackpot. Reach out to people with large Twitter followings who might be interested. One tweet can bring in as many hits as you pestering your personal network of people who might not even be the target audience. Also do some Google searches and leave useful comments on blog posts where your product could come in useful. I'm launching a private forum service for example, I google for people asking how to make a forum software configured to be private. Boom, there's me pointing out www.oath.is - my new startup blabla.

Just some ideas.

</comment><comment><USER3> Use your existing networks. When we had our initial landing page up for matchist (<http://matchist.com>), my co-founder and I used our networks to spread the word. That consisted of our Twitter followers, Facebook friends, and other personal connections via email.

We also had an existing community from our other company, Entrepreneurs Unpluggd, which was actually our target customer base, so we sent out some emails to them as well.

</comment><comment><USER4> For all intents and purposes you don't. People that already have substantial followings can drive traffic for you. If you are a normal person, you can grind out signups, but those people will forget who are you by the time you launch.

So, what's a person to do? Well, build a product worth using. Get a few people using it and enable them to spread the word for you.

Good luck!</comment>


Maine gov. signs bill banning ISPs from selling consumer data without consent - <AUTHOR> https://thehill.com/policy/technology/447345-maine-governor-signs-into-law-bill-to-ban-internet-providers-from-selling <comment><USER2> [https://news.ycombinator.com/item?id=20061764](https://news.ycombinator.com/item?id=20061764)</comment>


Web Based Haskell IDE/App Server from FP Complete - <AUTHOR> https://www.fpcomplete.com/business/haskell-center/overview/

<comment><USER2> In my view, one of the largest problems Haskell has--much like Linux--is that it's hard to get started. There is quite a bit of incidental complexity: you have to install the compiler (or Haskell Platform), set up an editor, learn about cabal and so on.

Partly because of this, Haskell is never the "default" choice--if you set out to "learn programming", you'll be quickly herded to JavaScript, Java, Python or, god forbid, PHP. The only people learning Haskell are the ones who set out to _learn Haskell_.

Hopefully a nice web-based, turnkey development environment will really help with the upfront cost. Now to learn Haskell somebody just has to go to the website and start.

Of course, interactive tutorials for Haskell would make for an even nicer introduction. And hey, the same company behind this IDE has something like that: the School of Haskell[1]! It lets readers edit and run Haskell code snippets right in the browser, which should make picking up the basics even easier.

[1]: [https://www.fpcomplete.com/school](https://www.fpcomplete.com/school)

It's very gratifying to see people chipping away at one of the main walls to Haskell adoption.

<comment><USER3> Yes! Because the biggest problem with Haskell adoption was not having a place to give $75/month to.

On the serious side. I've often wanted to learn Haskell, but not coming from a functional background makes it hard. Also I think idiomatic Haskell might be great for Haskell coders, but it's hard for anyone who comes new to functional and wants to learn by reading code.

<comment><USER4> I don't really think there's anything that can or should be done about this. It feels like saying Spanish is great for Spanish speakers but it's opaque to everyone else.

</comment></comment></comment><comment><USER5> I'm happy to see things like this, as the easier it is for folks to use Haskell, the better it is for the platform.

I might try to experiment with some personal projects on it, although unfortunately, I can't use it for any of my actual work.</comment>


Ask HN: Tips on how to get started in tech consulting? - <AUTHOR> Hi HN!
Background: I'm an Engineering Manager with 15+ years of experience. I've run my own business (successfully) twice and I've worked in SF for the past 8 years in several startups (two of them went IPO).
I feel that I've accumulated some knowledge and every time that I talk to my friends it seems that they are going through some pain that I could help with:
- Growing their tech team - Hiring for diversity - New startup hiring for a CTO/first engineer (founders are non-tech) - Evaluating some tech they are going to implement/invest in - Evaluating a possible acquisition
I've been through that and many other problems and I really think I could offer some help.
My question is: how should I start approaching companies/founders to offer help? Is anyone here needing that kind of help? I would be willing to offer a few hours for free in order to start to get some recognition/linkedin recommendations. Any advice from someone that started on that path? <comment><USER2> Check previous threads about this. I'm not a consultant but it seems you already have a network to start.

This is something I saved up from here:

\--

1) Produce publicly visible artifacts which demonstrate that you're able to apply technology to impact business outcomes. You do not need many of these; ~3 is fine. You do not need to block on the other steps. You do need to plausibly connect the technology to a business outcome; blockchain and beginner-level cryptography probably do not get you there.

2) Begin getting into conversations with people who either a) have purchasing authority or b) talk to people with purchasing authority, at your target clients or firms very similar to them. This can be as simple as bonding over technical things with technical people. You want to become Internet buddies with e.g. senior engineers / team leads / etc at software companies.

3) Walk the network of your new friends to engagements, either at their firms or peer firms. Do not make another WordPress site for the average business; make something for a software company.

4) For every engagement you land, attempt to get referrals to more clients, attempt to land follow-on work with the same client, and attempt to land ongoing maintenance/retainer/etc agreements with the client.

And then: [https://news.ycombinator.com/item?id=4247615](https://news.ycombinator.com/item?id=4247615)

<comment><AUTHOR> thanks! I'll take a look at previous threads as well

</comment></comment><comment><USER3> I think what you should do is get in touch with everyone you've worked with before and let them know you're looking for consulting work. The hard part is building up a network of people who trust you, which you've hopefully acquired with all the experience you have. I bet you this'll work a lot better than cold approaching people.

</comment><comment><USER4> You might want to look at daedtech.com, it's the blog of a software consultant who has a lot to say on the topic of starting your own consulting business.

</comment><comment><USER5> Start with writing the best blog post or medium article in the world on the thing you are most passionate about (and hopefully have skill in).

Ask for comments, feedback or if anyone cares at the end.

Then promote the shit out of that one piece of content.

Then listen.

If all you get is crickets, then you know there isn't much there.

The hope though is lots of conversations startup from that one awesome piece of content.

Best of luck!

\--harris</comment>


Show HN: A Turing Machine Editor/Simulator - <AUTHOR> https://wjlew.is/tm/ <comment><USER2> Very nice. I am surprised you did not get more traction and github stars. Good luck

<comment><AUTHOR> Thank you for taking a look at it, and for those kind words!</comment></comment>


How We Sent a Man to the Moon Without E-mail and Why It Matters Today - <AUTHOR> http://calnewport.com/blog/2014/10/04/how-we-sent-a-man-to-the-moon-without-e-mail-and-why-it-matters-today

<comment><USER2> They used interoffice memos.

Take a look at this citation list for "Lunar Impact: The NASA History of Project Ranger" \- [http://books.google.com/books?id=UewO7htzSv4C&pg=PA386&lpg=P...](http://books.google.com/books?id=UewO7htzSv4C&pg=PA386&lpg=PA386&dq=nasa+interoffice+memos&source=bl&ots=ivR8ZVsUwp&sig=MLePoLjVDJKf8IrKullbXUIXims&hl=sv&sa=X&ei=dlI1VLTWGqrnygOIvYDwBQ&ved=0CG0Q6AEwDg#v=onepage&q=nasa%20interoffice%20memos&f=false) and see just how many are "interoffice memo from X to Y".

They also had voice-operated memo writers, also known as secretaries, typists, or stenographers.</comment>


Next.js 2.0 - <AUTHOR> http://zeit.co/blog/next2 <comment><USER2> We recently used Next.js to build out an MVP. It was a pleasure to work with.

For those wondering what this is, it's basically a slightly more opinionated Create React App [1].

Here are some of the benefits:

\- No need to setup complicated tooling

\- Server and client (SPA-style) rendering out of the box

\- Filesystem for routing using the `pages` directory

\- `getInitialProps` component lifecycle to encapsulate data requirements per component

\- Automatic code splitting for each route

\- If it works with React, it works with Next.js

Here are some of the issues we encountered:

\- Importing non-JS files from `node_modules` (like normalize.css) was not as simple as it could be (#1245 [2])

\- Animation transition between pages is still being worked on (#88 [3])

\- There are still some inconsistencies between server and client that could improve, like running Webpack on the server (#1245 [2])

\- Doing proper scroll restoration when routing (#1309 [4])

We will continue to use it as long as it keeps letting us move fast without having to worry about spending hours setting up React tooling.

[1] [https://github.com/facebookincubator/create-react- app](https://github.com/facebookincubator/create-react-app)

[2] [https://github.com/zeit/next.js/issues/1245](https://github.com/zeit/next.js/issues/1245)

[3] [https://github.com/zeit/next.js/issues/88](https://github.com/zeit/next.js/issues/88)

[4] [https://github.com/zeit/next.js/issues/1309](https://github.com/zeit/next.js/issues/1309)

<comment><USER3> > For those wondering what this is, it's basically a slightly more opinionated > Create React App.

Does that mean the top benefit of next.js is to alleviate difficulties with Webpack + Babel + etc?

<comment><USER4> > Does that mean the top benefit of next.js is to alleviate difficulties with > Webpack + Babel + etc?

And server-side rendering which solves common SEO and performance challenges of SPAs. Here's an article showing where server-side rendering is especially useful for SEO reasons:

[https://hackernoon.com/react-js-cms-blog- tutorial-e090c69984...](https://hackernoon.com/react-js-cms-blog- tutorial-e090c699845b)

</comment></comment></comment><comment><USER5> This page has some huge issues loading resources. I kept it open as a tab to dive into later and noticed it was still spinning after a long time... I refreshed with Developer Tools open and after 2 minutes over 100MB had been transferred!

It appears the screencast video is to blame, it is not only huge (~70MB), but it keeps getting downloaded instead of just replaying. I just checked the console again and the page is now up over 300MB downloaded. Glad I wasn't on mobile data!

Update: I downloaded the video and ran it through ffmpeg to see how much space could be saved... Original size 72.2MB, new size 1.7MB. Screencasts obviously compress very well, but this was pretty surprising. You could easily optimize this down further and probably half the size yet again.

       ffmpeg -i hello-world_2.mp4 -vcodec libx264 -preset veryfast smaller.mp4

<comment><USER6> > It appears the screencast video is to blame, it is not only huge (~70MB), > but it keeps getting downloaded instead of just replaying.

Question, do you have caching disabled when devtools is open? If so that'll cause it to continually re-download. Looking at the markup it shouldn't redownload but devtools will make that happen quite easily.

Completely agreed about the size though; geeze.

<comment><USER7> Devtool doesn't impact caching.

<comment><USER8> Why do you post about things you obviously have no clue about? Any web developer knows that you use DevTools to disable caching.

</comment></comment></comment></comment><comment><USER9> Vue.js ecosystem has alternative as well. It is Nuxt.js ([https://nuxtjs.org/](https://nuxtjs.org/))

<comment><USER10> Super! I love the way VueJS community plays its cards in this otherwise corporate driven turf of open source-y stuff. Will take a look at nuxtjs next.

</comment></comment><comment><USER11> Next is great. I would love to deprecate my SSR starter kit - Sambell - [https://github.com/humblespark/sambell](https://github.com/humblespark/sambell) \- once it supports a layout file, for animated transitions, etc. Right now, React Router seems fundamentally more powerful as a SPA framework.

<comment><USER12> just fyi it's possible to change the commit history, so no "proof" ;)

</comment></comment><comment><USER13> I don't understand why people here are comparing Next.js to create-react-app.

I see Next.js primarily focusing on server-rendered React and then it also supports client-rendering. I see create-react-app is primarily focused on client-javascript. Am I missing something?

<comment><USER14> Because both are opinionated ways to get a React project going without having to configure any tooling yourself.

Next.js also focuses on client side JavaScript, but happens to render at the server first, so that there's something there for users before the client bundles have downloaded, parsed and been executed.

You could think of it as a more configurable create-react-app that supports server side rendering, with a convention over configuration approach to pages and links.

<comment><USER15> > You could think of it as a more configurable create-react-app that supports > server side rendering, with a convention over configuration approach to > pages and links.

You are a poet, sir. Best answer.

</comment></comment></comment><comment><USER16> Ah, so close.

I really just want something like Handlebars, with a generic adapter for any language for compilation.

Then you can load with javascript a client-side controller if you want to add in interactivity.

\---

To expand, I think the idea solution would be the following:

1\. Server side view, let's call it "Bars"

2\. Bars can be written on the front-end or back-end, does't matter. It'll compile to BarsHTML.

3\. If you write Bars on the back-end, then when you serve your page it'll compile Bars into BarsHTML.

3a. If you want to sprinkle JS onto Bars, you'll use BarsControllerJS, an adapter to whatever framework of your choice, to manipulate it. The main difference between this and manipulating the DOM is that the interface to do this is not DOM centric.

4\. If you write Bars on the front-end, it's the same as (3), but you get (3a). If you decide you'd rather do server side rendering, you literally just move your views to the server. The controller is already abstracted, so you wouldn't need to do anything else.

<comment><USER17> Take a look at [http://markojs.com/](http://markojs.com/) and [http://markojs.com/docs/installing/](http://markojs.com/docs/installing/)

test.marko: `<h1 on-click('callMyFunc')>${ input.hello }</h1>`

component.js: `class { callMyFunc(e) { console.log(e); } }`

...gets compiled to test.marko.js which can then be require'd or using a special runtime loader or transformer. It hits a nice sweet spot for me, and is worth checking out.

</comment></comment><comment><USER18> It would be great to see TypeScript support with NextJS out of the box. It can be done with some work today.

Inspired by an earlier(probably first release) of NextJS, I had attempted TypeScript and server-rendered react here:

[http://www.anupshinde.com/posts/react-typescript-server- rend...](http://www.anupshinde.com/posts/react-typescript-server-render/)

<comment><USER19> Very cool. I wrote a SSR React + TypeScript boilerplate [0] and have been trying to keep it updated, but I just found out next.js has a TS example[1] so now I think I'll switch over.

[0]: [https://github.com/styfle/react-server-example- tsx](https://github.com/styfle/react-server-example-tsx)

[1]: [https://github.com/zeit/next.js/tree/master/examples/with- ty...](https://github.com/zeit/next.js/tree/master/examples/with-typescript)

</comment></comment><comment><USER20> I wonder how hard it would be to programatically cache a Next.js app with a ServiceWorker to make it also work offline. I guess one could copy the logic from the prefetch script as it makes network requests like this: [http://i.imgur.com/c3H176u.png](http://i.imgur.com/c3H176u.png)

</comment><comment><USER21> The link is wrong for the Koa server example. It points to the Hapi example, it should point here: [https://github.com/zeit/next.js/tree/master/examples/custom-...](https://github.com/zeit/next.js/tree/master/examples/custom- server-koa)

</comment><comment><USER22> If anyone wants to see, we are using next.js 2.0 on [https://kimmel.com](https://kimmel.com). Yes, the designer added way too many fonts, but overall it's a really nice static site thanks to next and the programmatic api allowed me to generate blog post pages!

</comment><comment><USER23> I'm curious: Where do these anti-React (anti-spa?) people come from, technologically? Rails? Php? Some .Net stack? Do you think the web Peaked with Perl-based CGI-scripts? I've been in this game for many years, and to me, any technology that speeds up development cycle time is an improvement. There's a reason React is so popular.

<comment><USER24> I'm not anti-SPA (and in fact, I think of the tools out there react is a pretty good one if you're going to do SPA), but I do think it's the wrong tool for a lot of jobs. If your site is mainly content-based, like a blog or a forum, why make it an SPA?

I feel like React/Angular/Vue/etc apps are becoming "the way the web is done" when so many things would be simpler and more efficient as plain old web sites with server-rendered HTML. It's like everyone decided that because convertibles are cool, they should be used for everything, and are now spending a ton of effort hitching trailers to their convertibles when it would have been much simpler and more effective to just drive a boring minivan in the first place.

<comment><USER25> I agree with you mostly, but isn't fb a forum? It most certainly has more capabilities like playing games etc, but it still carries basic forum principles. So is facebook wrongly designed?

<comment><USER26> look. a strawman.

Don't kid yourself, Facebook is much much more than just a forum. It might have been little more than a forum initially, and the amount of javascript it originally had kind of upholds the OP's original statement. It was a pretty slim webapp originally.

</comment></comment></comment></comment><comment><USER27> Awesome stuff. Just a quick question that doesn't click with me: how would you use Redux to manage application state for multiple users, server-side? If someone could drop me some examples or articles on this, I'd be really thankful!

<comment><USER28> Check this: [https://github.com/kirill-konshin/next-redux- wrapper](https://github.com/kirill-konshin/next-redux-wrapper) and usage here: [https://github.com/zeit/next.js/blob/master/examples/with- re...](https://github.com/zeit/next.js/blob/master/examples/with-redux)

<comment><USER27> Thank you, I've seen the clock one on the website, however the thing that doesn't exactly click with me is how would you, for example handle multiple users with server-side rendering, where each user only has access to their own state data?

I'm pretty clear on how to use client-side react with redux, it's just the server side part that would include stuff like user authentication seems confusing to me so far, since I haven't seen a clear implementation of that yet.

Thanks!

<comment><USER29> I have been trying to work this out myself too. Would love to see some examples on how to address this.

The challenge seems to be that while the server side rendered bit would work fine - it could query a DB locally after authenticating a users cookie (for example)...

If the client routed to a page (not using the server rendering) - you would need to have duplicated code to handle how the client can fetch that data, as it cannot query the DB directly.

</comment></comment></comment></comment><comment> mike-cardwell I rebuilt [https://www.emailprivacytester.com](https://www.emailprivacytester.com) in NextJS v1 - [https://gitlab.com/mikecardwell/ept3/tree/master](https://gitlab.com/mikecardwell/ept3/tree/master) \- Was a pleasure to use. My main problem though was that I couldn't add custom routes for API end-points, so had to split the application into a frontend (in Next) and backend express app. Looks like v2 fixes this. I will definitely be updating to take advantage.

</comment><comment><USER30> Next looks very interesting and feels very much like the PHP of old where stuff just works with sane defaults. Very cool stuff.

My one criticism of this is: Component CSS is cancer. I've worked on a large scale javascript project and it was riddled with duplicated CSS in every component, all in the name of being conflict-free.

You know what I call that? Not knowing how to scope your styles properly with something like BEM. [http://getbem.com/](http://getbem.com/)

<comment><USER8> I completely disagree. After working with component CSS I vomit when I see any CSS not encapsulated to one single component. I don't want to change a global CSS declaration and accidentally change something completely different. You can always import the stuff you really want shared.

<comment><USER31> Do you have some reading material on how to do this properly? Because I never worked with component-based CSS yet, but want to have a look at it and wondered about what your parent posted, too.

<comment><USER32> There's a set of libraries like Aphrodite, Glitter, jsx-style, and JSS that help you do this. I'd look at some benchmarks [1] and do some comparison before you make a decision yourself.

I've worked extensively with Aphrodite (disclaimer, my employer maintains it) and have found it works with React to make a pretty good workflow for SPAs. It does require some buy-in from everyone involved with the codebase since you'll have Aphrodite-defined styles clashing with stuff in external stylesheets, and there are occasional edge cases where you'd like to use some crazy CSS selector that Aphrodite doesn't support, but this is often a sign that you should be restructuring your component in a more straightforward way.

The style reuse and composability story is very good, since all styles are wrapped around bare JS objects which are super easy to manipulate and the ES6 spread syntax [2] makes it all look very elegant. If it's important to you to keep styles and markup in different files, you can do that too as long as you're happy giving them all .js/.jsx/.ts extensions.

In general it is frustrating to me that total buy-in into the React model comes at the cost of support for actual standards like Web Components, but I never want to write UI in a non-declarative way again so I'm hoping someone smarter than I can figure out how to bring these two worlds together so we can let the browser properly namespace our CSS rather than relying on randomly generated class name infixes as Aphrodite does.

[1] [https://engineering.hellofresh.com/the-css-in-js- battle-89c3...](https://engineering.hellofresh.com/the-css-in-js- battle-89c34a7a83ea#.cae5q4lkd)

[2] [https://developer.mozilla.org/en- US/docs/Web/JavaScript/Refe...](https://developer.mozilla.org/en- US/docs/Web/JavaScript/Reference/Operators/Spread_operator)

</comment></comment></comment></comment><comment><USER33> The MP4 included in the page causes graphics corruption and locks my MBP in Safari 10.1. Anyone else seeing this?

Save your work before trying, though.

</comment><comment><USER34> Looks cool. But everybody who thinks of building a webapp, try todo it without react if you don't need it. For example [https://next- news.now.sh/](https://next-news.now.sh/) is MUCH MUCH slower than normal hacker news. And its also much more difficult to maintain, and less future proof.

Greetings

<comment><USER35> It is so much slower because it uses another API which requires multiple requests to get the same data.

</comment></comment><comment><USER36> Not to toot our own horn, but I wanted remark on how similar the issues we have had to deal with in our own framework ([https://qbix.com/platform](https://qbix.com/platform)), since 2011.

When we built it, we had out of the box:

\+ Tools (our name for components)

\+ Pages (to support all web standards)

You place tools on pages, the framework does the rest:

\+ It loads JS and CSS on demand

\+ It adds/removes tools from pages automatically as you navigate

\+ Support for web standards, HTML5 history w fallbacks, etc.

\+ Tools can contain other tools

\+ You have events for when all parent tools have activated (onActivate) and when all child tools activated (onInit)

\+ JS and CSS had to be namespaced by convention from day 1, by module and tool name.

We use events instead of virtual DOM. We didn't use fancy JSX or preprocessors to do it. It's all written in ES4 JS and runs on every modern browser and IE8.

But the problems are very similar in scope.

<comment><USER37> Any links to sources of sample apps built with it? Interested to see how you compose pages with Tools.

<comment><USER36> Sure. Here is a full app built on it: [https://customizemypic.com](https://customizemypic.com) \- it has a GITHUB link

Here is a showcase of what is possible: [https://vimeo.com/208438090](https://vimeo.com/208438090)

And here are some tutorial videos on pages and tools: [https://qbix.com/platform/tutorials](https://qbix.com/platform/tutorials)

</comment></comment></comment><comment><USER38> >> "More than 3.1 million developers read our announcement post of Next.js. "

Really? 3.1 million developers? I'm not saying I don't believe, but wow, how?

edit: actually I am saying either I don't believe or you've miscalculated somehow.

<comment><USER39> They're probably just reporting google analytic numbers. I don't think that's unfair.

<comment><USER38> Even so, 3.1 million page views?

<comment><USER40> Over a few months? Plausible.

</comment></comment></comment></comment><comment><USER41> There is something I do not understand. Why does `<div>` not create a syntax error in the Javascript examples? Is there a pre-processor?

<comment><USER42> Take a look here [https://facebook.github.io/react/docs/react-without- jsx.html](https://facebook.github.io/react/docs/react-without-jsx.html)

</comment></comment><comment><USER43> If I'm understanding correctly, seems like this is back to the old days when routes mapped directly to pages. From experience with ASP, it is not a good thing. You need to separate the routing from the presentation ala MVC. I can see the benefit if next.js is intended to be create-react-app++.

</comment><comment><USER44> I want to use this but I'm hesitant to do so for a project that's backed specifically by a single company _. Can someone help alleviate my concerns?

_ I had to verify my email address and accept the TOS before I could use their command line tool.

<comment><USER2> Next.js is entirely open source and is separate from the product the company offers. Their command line tool is one of the interfaces they provide to use their product but is not needed to use Next.js.

<comment><USER26> saying something is entirely open source is useless if their License Agreement contains riders like Facebook's React license agreement does.

I just don't trust their modified License Agreement.

</comment></comment></comment><comment><USER45> I have recently migrated my boilerplate code to Next.js and it's awesome to work in. Previously I had my own code-splitted/server-side rendering setup but next does it better!

</comment><comment><USER46> I used next on a side project, zero boilerplate is refreshing.

</comment><comment><USER47> How does this compare to react-boilerplate? I've been using react-boilerplate recently and it's been solid so far.

<comment><USER48> This seems to be totally another approach. More like an opinionated setup where you can get a project set up and ready in a few line of codes.

Very interesting approach!

What are the pros and the cons? Someone that has used both should help us here.

<comment><USER49> I've used both and prefer next.js. Granted I'm using GraphQL but I'd prefer it regardless.

RBP is actually more opinionated. It's "best* practices to the extreme" at the cost of productivity and lots of boilerplate. It's also a little hostile towards server-side rendering.

I enjoyed RBP and learned from it, but we switched to next.js (with styled- components and apollo-client) and things have been far smoother. To be honest I can't really think of a reason to use RBP over Next.js.

The creator @mxstbr has tweeted positively about Next.js, has other projects to look after (e.g. styled-components), and hasn't updated it since January, so I'm not sure RBP has much of a future anyway.

</comment></comment></comment><comment><USER50> I would love and use this if it was using Riot instead of React.

</comment><comment><USER51> Frameworks made of frameworks... frameworks all the way down

<comment><USER52> The word framework is broad and I dont see this as the same kind of thing as React. This marries set of frameworks which work well together and provides a opinionated but clean approach to building larger apps more efficiently/consistently. Similar to eiffel, MEAN, jHipster etc. There is great value in this kind of bundling effort for those of us less-experienced with the frameworks who need help getting a proper start

</comment></comment><comment><USER53> I guess I became way too cynical.

I though it was a satire, based on its name. Maybe there is some hidden self deprecating joke that went over my head, but Next + JS + 2.0 seemed too buzzwordy to be true.

The tech looks interesting. Still looks to me like a lot of stuff that I don't understand why I would need, but that's an old rant I have with the curent js ecosystem.

</comment><comment><USER48> Very promising!

</comment><comment><USER54> nice, thx!

</comment><comment><USER55> Nice work.

</comment><comment><USER56> Why in the world everything needs to be made with react that makes it incompatible/hard to integrate with any other frameworks?

<comment><USER57> IMHO because react is designed this way. It makes it easy to add to existing content, it is not an "opinionated" framework. This is great for getting quick results, but not for compatibility, easy source code navigation, etc.

You can add these constraints later, but you will be on your own island. Maybe sometime a standard ("best current practices") emerges...

<comment><USER56> At this point I have to use react more or less. It is a ghetto. React vs the world. I'd like to have more than one option to use here.

<comment><USER58> Obvious solution to your problem: write your own js component library. And don't forget to submit it to the HN crowd when you're done, you should get a very positive feedback.

<comment><USER56> There are other solutions out there: polymer, skatejs, x-tags, vue, angular, aurelia. Some of them are more interoperable with others and can be use in multiple projects using different frameworks - I'd like this to be the norm.

<comment><USER58> So, to go back to your original post ('Why in the world everything needs to be made with react'): not everything is made for/with react, and you provided really good counterarguments againts yourself (polymer, vue, angular, etc). I still don't get the point you were trying to make (no offense really).

</comment></comment></comment></comment></comment></comment><comment><USER59> i know this is a tangent and not directly related to next.js, but the react ecosystem's insistence on coming up with increasingly convoluted and self- defeating stories around how to handle CSS instead of just using the tool the way it's intended is pure insanity. the emphasis with styled-jsx favors encapsulation with no real thought put into external overrides or customization, which makes this a non-starter for creating vendor components that are actually usable. compare [https://github.com/zeit/styled- jsx](https://github.com/zeit/styled-jsx), which can only euphemistically be called a naive implementation, with the documentation around custom properties, with the styling documentation at [https://developers.google.com/web/fundamentals/getting- start...](https://developers.google.com/web/fundamentals/getting- started/primers/shadowdom).</comment>


Breathtaking Pictures from Mars Colour Camera of India's Mars Orbiter Spacecraft - <AUTHOR> http://www.isro.gov.in/pslv-c25-mars-orbiter-mission/breathtaking-pictures-mars-colour-camera-mcc-of-india%E2%80%99s-mars-orbiter

<comment><USER2> This story jumped from 3/4 down the front page to the middle of the 2nd page while I was looking at the pictures. Being flagged?

</comment><comment><USER3> Not to denigrate ISRO's efforts, but is there a reason the pictures look so... VHS-y?

<comment><USER4> It's a 2048x2048 pixel camera, and is there mostly to provide context to the other sensors. While better than many historical probes, it is a bit low-res today. But NASA's MRO already has some great optics over Mars, so they probably figured hi-res visual survey wasn't the best use of their probe.

Also, it was probably cheaper and easier. After all, MOM is a "technology demonstrator".</comment></comment>


Why Are You Still Using Microsoft Word? - <AUTHOR> https://gizmodo.com/why-are-you-still-using-microsoft-word-1794219158 <comment><USER2> Because it's still the best.

</comment><comment><USER3> Why is Gizmodo still trafficking in clickbait posts?

Oh, wait.</comment>


Texas schools board rewrites US history - <AUTHOR> http://www.guardian.co.uk/world/2010/may/16/texas-schools-rewrites-us-history

<comment><USER2> These people are actively bringing about the downfall of the education of a large number of children, you really wonder what is on their minds.

If the United States does not get its priorities straight in this respect they'll pay the price in having a badly educated batch of people 20 years down the line in positions of trust and influence.

They should make 'The daemon haunted world' a must read in school instead.

<comment><USER3> I don't think that one state having a conservative bias instead of a liberal bias in it's public schools is going to cause the downfall of anyone's education. The changes mentioned in the article aren't even that extreme, particularly when compared to the socialist propaganda that was present in the high schools and college I attended.

<comment><USER4> Heh.

The greatest trick the republicans ever pulled was convincing people that everything has a liberal bias.

</comment></comment></comment><comment><USER5> A fantastic demonstration of why the state shouldn't control the cirriculum. Even if those who share your ideas and ideals are in power now, it's short- sighted to assume things will stay that way.

It ought to be a fundamental right to educate your children in whatever ideological tradition you please.

<comment><USER6> Fundamentally, the problem is so much bigger than just Texas' school board and this particular rewrite.

Fundamentally, the problem is that any state can end up with wrong, objectionable, or offensive curriculum simply due to enough nuts getting elected to the school board (or enough people who are nuts on one particular issue), and if that happens, there's very little parents can do about it in the short term aside from leaving the state or paying for private school.

As long as the average person is stuck sending their kid to the nearest public school, we're also stuck with the possibility that the school board will choose to educate our children inappropriately (along with a whole host of other problems, like that the nearest school will simply be terrible.)</comment></comment>


Russia's 'slow-motion Chernobyl' at sea - <AUTHOR> https://www.bbc.com/future/article/20200901-the-radioactive-risk-of-sunken-nuclear-soviet-submarines <comment><USER2> While a bit sensationalist it obviously poses a real problem and fortunately its being acknowledged and acted upon.

however google can bring up the stuff of nightmares of what we have dumped into the oceans, worse this of course only what we know of. many countries have dumped stuff without any record keeping.

Chemical Weapons and other munitions [https://www.smithsonianmag.com/science- nature/decaying-weapo...](https://www.smithsonianmag.com/science- nature/decaying-weapons-world-war-II-threaten-waters-worldwide-180961046/)

[https://www.nonproliferation.org/chemical-weapon- munitions-d...](https://www.nonproliferation.org/chemical-weapon-munitions- dumped-at-sea/)

Gulf of Mexico [https://www.jacksonville.com/zz/news/20190719/what-lies- bene...](https://www.jacksonville.com/zz/news/20190719/what-lies-beneath-gulf- likely-holds-tons-of-discarded-military-munitions)

Low level radioactive wastes [http://large.stanford.edu/courses/2017/ph241/jones-a2/](http://large.stanford.edu/courses/2017/ph241/jones-a2/)

<comment><USER3> there is a documentary on youtube about oil leaking out of sunk WWII ships. Some of those ships are really close to shores and tourist destinations. Fun time.

<comment><USER4> [https://m.youtube.com/watch?v=OP0U62oiBlM](https://m.youtube.com/watch?v=OP0U62oiBlM) \- The DW documentary on the matter.

A fascinating watch. It is a shame that the economics do not play out in such a way that recovery and resale is feasible. Sadly, I do not expect most governments to be as proactive as Norway's on the matter.

The documentary suggests that even covering a wreck with sand as a preventative measure costs 10s of millions of €s. Surely an opportunity for a lower cost solution exists here?

</comment></comment></comment><comment><AUTHOR> The headline from the BBC is a bit sensationalist I think, but that's what they have.

Interesting article about retrieving the submarines though.

<comment><USER5> I was going to say Chernobyl created a huge wilderness park, these just sit there doing nothing.

But if they do pull then up and have an accident the article claims fishing might have to stop for a while, so perhaps they are as good? I'm dubious on the claims though.

Either way, the tech and recovery is the interesting bit.

<comment><USER6> Fishing might stop in the area due to adverse publicity, but not because of the radiation. Chernobyl fallout fell and was concentrated on the surface of the earth, a two-dimensional plane. Oceans are three-dimensional. Even a chernobyl-magnitude radiation event will be quickly diluted into the hundreds of cubic-kilometers of water that passes over every point in the ocean daily. It is hard to wrap one's head around exactly how big, how literally massive, oceans are.

</comment></comment></comment><comment><USER7> American subs use Highly enriched 90%+ uranium metal fuel rods, as opposed to power plants which use low enriched uranium oxide. They use this kind of fuel so they can fit enough in the reactor for twenty plus years of power. Does anyone know what kind of fuel russian subs use?

</comment><comment><USER8> Further reading >> [https://www.worldcat.org/title/greenpeace-book-of-the- nuclea...](https://www.worldcat.org/title/greenpeace-book-of-the-nuclear-age- the-hidden-history-the-human-cost/)

</comment><comment><USER9> Russia is required to behave under first world standards when it comes to their commitments, but it's relegated to third world when it comes to participating in global leadership/trade.

<comment><USER10> > _...relegated to third world when it comes to participating in global > leadership /trade._

Because when given more civilized tools, they nonetheless alienate the world. They could have annexed Crimea peacefully, at least the part that they actually needed, but chose instead to engage in a semi-hot war while sending mixed signals with the referendum.

Then President Obama completely shut the door on them, which did not have the effect of changing their behaviour; this in Russia after all. What the Obama Administration did in response to the annexation of Crimea was close off most avenues of reconciliation; and the subsequent propaganda about President Trump has kept those avenues closed.

<comment><USER9> I just say that China or India (to put two bulky examples) have terrible civil rights AND environmental protection history and yet they aren't featured under a negative light on a daily basis in media.

<comment><USER11> Huh? China is seen kinda negative in press... India is usually shown as shithole country too.

<comment><USER10> Or at least a country with extreme material inequity; there are people in India who are recognizably wealthy by global standards, and there are also people who can't afford to poop on a toilet.</comment></comment></comment></comment></comment>


OVH.com Recommends Mailjet For Email - <AUTHOR> http://blog.mailjet.com/post/47188898598/partnership-ovh-com-recommends-mailjet-for-email

<comment><USER2> I had the pleasure of meeting with the Mailjet folks in New York a few weeks ago. We got in to a deep technical discussion about email infrastructure. I left the conversation really impressed by the team and their approach to the service they're building. There are a lot of cloud emailing companies now and some good history of what others have done. Mailjet's doing some great work and I'm looking forward to even more good things from them. Congratulations on the partnership with OVH!

<comment><AUTHOR> Thanks! Quentin actually told me about your meeting. We'll probably get in touch at some point ;) ^E.

</comment></comment><comment><USER3> Congrats! Happy Mailjet user here so I'm glad to see good things happening for them.

</comment><comment><USER4> That's awesome!</comment>


The Sports Startup Being Sued for Nearly $500,000 by Its Former Employees - <AUTHOR> https://sports.vice.com/article/sport195-lawsuit-backpay-lost-wages?src=longreads

<comment><USER2> The mind boggles at how much of a disjuncture there can be between executive management and their development teams within a development-driven sector! When will the marketing graduates realise that the web is not a magical dream- realisation machine that takes marketing speak and turns it into money?</comment>


Executive exodus: Jamie Dimon and other top CEOs quit Saudi conference - <AUTHOR> https://edition.cnn.com/2018/10/14/business/jamie-dimon-saudi-arabia-future-investment-initiative/index.html <comment><USER2> And all it took was the murder of a journalist getting a whole lot of press. Not decades of persecuting gay people, women, still having slavery, etc, etc. (Not that SA is unique in that, more just it's important to note that the "exodus" is only happening now that there is bad PR for the execs involved)

<comment><USER3> Last straw</comment></comment>


Twitter brain interface - <AUTHOR> http://hackaday.com/2009/04/20/twitter-brain-interface/ <comment><USER2> Seems like it would be more efficient to use a binary search algorithm; first flash the first half of the alphabet, then the second, using their method to detect which half the user is focusing on.

In fact, I suppose you wouldn't even need to flash both halves; just flash the first half and see if the user's brain "twitched".

Edit: bah, nevermind, I misunderstood how it worked. I guess I should watch the demo videos before mouthing off from now on.</comment>


5G Security - <AUTHOR> https://www.schneier.com/blog/archives/2020/01/china_isnt_the_.html <comment><USER2> If you want to get into IoT, invest into security hardware to stay secure.

I prefer TOSIBOX but I'm sure there are other solutions that work. [https://www.tosibox.com/products/](https://www.tosibox.com/products/)</comment>


Microsoft Cognitive Services - <AUTHOR> https://www.microsoft.com/cognitive-services <comment><AUTHOR> This demo by Saqib Shaikh (a visually impaired MSFT engineer) is an incredibly compelling use case of image annotation APIs.

I've done work with the Braille Institute in San Diego, and access to a device like this would truly be world-changing for any of the people there.

[https://twitter.com/Microsoft/status/715234653938933761](https://twitter.com/Microsoft/status/715234653938933761)

<comment><USER2> He mentions some smart glasses in that video, but says it kinda quickly and I can't ID them. Anyone know what they are? As a blind developer myself, I've pretty much been wanting to build this kind of app for a while. Even if facial recognition may not be good enough to identify someone accurately by name, for instance, just hearing "face, blue eyes, blond hair, male, 80% confidence" or something similar would give me a bunch of additional data points to identify someone when they say hello. I don't even know what color my own girlfriend's hair/eyes are. :P I'd love a set of these to develop my own apps with.

But this appears to blow all my ideas out of the water. I wonder how much work they had to do to obtain clean input (I.e. how many mis-identifications we didn't see.)

Edit: Ah, I guess it's these: [http://www.pivothead.com/](http://www.pivothead.com/). SDK and dev kit pricing not available unless I fork over my details. If I have to ask how much it costs, I can't afford it.

</comment></comment><comment><USER3> Something I'm starting to realize with all these AI APIs is how difficult it is to evaluate and compare the results.

How do you know their algorithms are better than the competition? The marketing buzzwords are all there. "Powerful algorithms", "never seen anything comparable" etc.

The worst part is the algorithms might work well with certain data sets but fail miserably with others.

<comment><USER4> If you had an internal API as opposed to using an external one you'd have some sort of A/B or multi-armed testing in place to check if the model you've deployed is performing as expected. At this point you don't think about the theoretical best you could perform at for the said model without computing some sort of complexity measure. I assumed one would have to use a similar automated process for external APIs. I don't see why they have to be different per se.

</comment></comment><comment><USER5> I have a bittersweet feeling about all these APIs. On the positive side, this is something we can take and use, possibly saving ourselves tons of time on some routine tasks. On the negative side, this particular flavor of AI-as-a- service from a big company like Microsoft means that algorithms will be reduced to a black box which you don't really understand or control in any meaningful way.

</comment><comment><USER6> Maybe this is nit-picky, but the use of "Cognitive" in the name seems odd. This service relies on applied maths (e.g., machine learning), not "cognition." I guess it was a marketing decision?

<comment><USER7> The APIs perform cognitive tasks, like speech to text, identifying objects, and so forth. Yes, underlying it is applied math, but what they actually perform are things that (for the most part) only humans are cognitively capable of.

<comment><USER6> I disagree. Basic research in behavior analysis has shown that nonhuman animals can perform visual (and other sensory modalities) discrimination and categorization among a number of trained and untrained stimuli ([0] and [1] are just two examples). I don't think these APIs do anything that is uniquely human or "cognitive." Nonetheless, this API still has enormous value for developers and users. I'm not discounting that.

UPDATE:

0: [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1334394/pdf/jeab...](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1334394/pdf/jeabehav00221-0041.pdf)

1: [http://kops.uni- konstanz.de/bitstream/handle/123456789/20501...](http://kops.uni- konstanz.de/bitstream/handle/123456789/20501/Delius%20Categorical.pdf?sequence=1&isAllowed=y)

<comment><USER7> Processing human language is definitely a human skill, and many of the image categorization tasks would be as well (while animals have great visual systems, they categorize differently than us, it's not clear if cats see "cars", for example).

In any case, the word "cognitive" is used as in "cognitive science",

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

<comment><USER6> I guess it's kind of a semantic argument. I stand corrected. It seems the culture accepts "cognitive" in AI according to the wikipedia link you provided. Although, I question the degree to which the use of "cognitive" in marketing materials contributed to this acceptance.

On the topic of "processing," it's very difficult (sometimes impossible) to know what humans or nonhumans are doing covertly when they "process" stimuli. Thus, I'm not sure how you can determine that "they [animals] categorize differently than us."

A dog that is trained to sit when his owner says, "sit" must be "processing human language" when the dog sits. Right? I know this is an oversimplified example, but I'm just making a point that calling things "cognitive" and referring to "processing" doesn't help explain what is really happening. Sometimes these terms obscure a description/explanation. Skinner [0] makes this point a lot better than me.

[0]: [http://carboneclinic.com/portal/conferences/files/IESCUM%20D...](http://carboneclinic.com/portal/conferences/files/IESCUM%20Dec%202014%20SENT/new%20readings/Operational.pdf)

<comment><USER8> I think when it comes to cognitive ability of animals versus humans we are at the same stage as biology before Darwin - assuming hard boundaries that don't really exist.

</comment></comment></comment></comment></comment></comment><comment><USER9> The links to the python notebooks fail.

Here in the emotion API, look for the link to the jupiter notebook on github [https://www.microsoft.com/cognitive-services/en- us/emotion-a...](https://www.microsoft.com/cognitive-services/en-us/emotion- api/documentation/getstartedwithpython)

Here in the vision API, same thing-jupiter notebook is 404. [https://www.microsoft.com/cognitive-services/en-us/face- api/...](https://www.microsoft.com/cognitive-services/en-us/face- api/documentation/get-started-with-face-api/getstartedwithpython)

I know, real coders use C++, C#, or objC. But I need to understand something before I code it.

<comment><USER10> Hi! Good catch. We're fixing the links in the docs. In the meantime:

[https://github.com/Microsoft/ProjectOxford- ClientSDK/tree/ma...](https://github.com/Microsoft/ProjectOxford- ClientSDK/tree/master/Emotion/Python) [https://github.com/Microsoft/ProjectOxford- ClientSDK/tree/ma...](https://github.com/Microsoft/ProjectOxford- ClientSDK/tree/master/Face/Python) [https://github.com/Microsoft/ProjectOxford- ClientSDK/tree/ma...](https://github.com/Microsoft/ProjectOxford- ClientSDK/tree/master/Vision/Python)

Uh, and "real coders" also use Python... :)

<comment><USER11> Hey, I've signed up for a test account, and I'm trying out the Computer Vision API. However the three properties I'm most interested in (which are also featured on the example page [1] are not being returned (or documented!) for the actual SDK: "Description", "Tags" and "Celebrities".

Are these coming soon? I'd love to develop something with the Vision API, but I'd rather not continue until I know if / when my requests will indeed return these features.

Cheers & Thanks

[1] [https://www.microsoft.com/cognitive-services/en- us/computer-...](https://www.microsoft.com/cognitive-services/en-us/computer- vision-api)

<comment><USER10> These features are here now! We're fixing a broken link to an old version of our API reference. In the next hour or so, you can check here for version of the documentation as of 3/30/16:

[https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d...](https://dev.projectoxford.ai/docs/services/56f91f2d778daf23d8ec6739/operations/56f91f2e778daf14a499e1fa)

For the celebs category, you may also want to read:

[https://www.microsoft.com/cognitive-services/en- us/computer-...](https://www.microsoft.com/cognitive-services/en-us/computer- vision-api/documentation/domain-specificmodels)

Thanks for checking out the APIs!

<comment><USER11> Awesome, thanks! Works great!

</comment></comment></comment></comment></comment><comment><USER12> The APIs look good. I have used Microsoft's search API for years and have had customers also use it. I like the business model of a few free calls per day, with a relatively low cost for more API calls. Things that are 100% free make me nervous because they are probably more likely to go away in the future.

</comment><comment><USER13> So many of these will be replicated by free open source libraries. Thus I am not sure that most these services are that defensible in terms of pricing, if there is a premium over AWS base costs.

<comment><USER14> As time goes on libraries may not be the fundamental issue. Hardware, on the other hand, may become the decisive factor. You will just pay more and more in terms of the fraction of the cost that goes to energy consumption.</comment></comment>


Ask HN: Is there any work on self-testing software? - <AUTHOR> For clarification, I don't mean automated testing, test suites, or TDD. I mean more like HAL: "Dave, I have detected an error in one of my circuits." I.e.,  software that, when run in normal production mode, updates its test fixtures with the latest environmental changes, and then runs its test suite on itself. If it passes, then the full production mode continues.
This is an idea I've had which would be a really nice advance for my field: parsing and scraping public government legal texts. I'm wondering what others have done like this.
Unfortunately, when I search for "self-testing software" I get only _automated testing_ ... even Martin Fowler using self-testing as a synonym for it: https://martinfowler.com/bliki/SelfTestingCode.html.
Thanks!
----
Details for the curious:
I have the problem of false positives when (say) the Nevada legislature changes the format of a statute. My program completes without error, but the output isn't correct. (My take-away: I've allowed an illegal state to become representable, and my code needs to change.)
But I noticed something interesting: when I update my text fixtures (they're full copies of a few of the Nevada HTML input files), I get test failures! This is great --- no false positives here. And it's nice confirmation for me that I've got a good test suite. (I did write this code using TDD and was careful not to code ahead of my tests.)
And so I had a thought: I could automate this. When I run the app ( https://github.com/public-law/nevada-revised-statutes-parser ) for real, it can update these fixture files and re-run the test suite to see if it still holds up against any recent changes. This wouldn't be a 100% guarantee of correctness because the source texts may have changed in some way that happens to avoid my tests. But it definitely would have saved me in this situation --- instead of finding the error way down the line with the data already in use. <comment><USER2> Somewhat related:

A few yeas ago I used SpamBayes. The program calculates two values independently:

* The "probability" that a message is spam

* The "probability" that a message is ham (not spam)

They aren't real probabilities and they don't add up to one. Usually you get one value that is close to zero and one that is close to one.

Sometimes you get two values that are close to zero and it means that the email is of an unknown type (and you must classify it so the program learns to classify similar messages) and sometimes you get two values that are close to one and it means that the email is of a weird type (and you must classify it so the program learns to classify similar messages).

So the programs "knows" when it is confused.

<comment><AUTHOR> That's pretty cool, like a confidence score.

</comment></comment><comment><USER3> I don't think there's really a thing like you want where the system changes it's parsing logic on the fly. You could definitely set up acceptance tests for the system to see whether your program can parse the Nevada legislature data properly as it changes. The program could pull the data fresh from the API, run through, and check that the end result is the same. Automation tests can run on a scheduler so you could at least figure out when the data changes (daily, weekly, etc.).

Could you post back if you do get the dynamic parsing to work in Haskell?

</comment><comment><AUTHOR> It looks like "self-healing" might be the thing I'm after.

<comment><USER4> erlang has self-healing baked in as one of it's core tenets.</comment></comment>


Shipping containers of Li-ion batteries in the power grid - <AUTHOR> http://green.blogs.nytimes.com/2011/01/07/hold-that-megawatt

<comment><USER2> I was rather surprised that the energy transfer loss is only 10% in batteries, but 15% in flywheels. It's pretty amazing that the chemical process in a li- ion battery (developed in the last 50 years) is more efficient than our best engineering efforts in the simple wheel and axle design (over 5500 years old).

On a side note, an engineer at our local power plant once told me that the inertial energy available on "the grid" was sufficient to cause one of the steam turbines at our local power plant to "jump out of the floor" should someone fully engage it out of phase.

<comment><USER3> The US might benefit from some investment in Nickel-Iron batteries. These were invented by Edison in 1901. They have a basic service life of 20 years (as opposed to 3-5 for Li-ion) and can be stretched to 50 years with electrolyte replacement. The battery tech is worked out, but investments in manufacture and economies of scale would enable market access to a technology with lower cost than Li-ion. (Also, the materials used in NiFe batteries are cheap and available domestically. They are a bit challenged with regards to high currents, though.)

 _Wind and solar plants "introduce some additional variability that you don't have with traditional thermal units,'' Mr. Zaharuncik said. With a system that has a lot of renewable energy generators, he explained, "you need some other kind of resource that complements it. ''_

I'm surprised that flywheels aren't a bigger deal because of wind and solar power. Why doesn't someone make a flywheel unit the size of a major appliance, incorporating inverters and regulating hardware, for home wind and solar?

<comment><USER4> At the last company I worked for, which was a manufacturing facility. They installed a giant flywheel as a line conditioning device. (We manufactured NAS, and it is terribly costly when a power outage interrupts 5 days worth of testing forcing you to start over). I think it gave us about 17-18 seconds of power, in the event of any brief interruptions in power (Most of the outages we received were 1-2 seconds in length)

<comment><USER5> Some datacenters (eg the Miami IPX/NAP) use flywheels the size of large trucks to provide failover until the generators kick in. They are seriously scary machines up close.

</comment></comment></comment></comment><comment><USER6> AES did a pilot project of the same type with Altairnano batteries back in 08, you can see some of the numbers and details here (warning pdf): [http://www.b2i.cc/Document/546/KEMA_Carina_validation_report...](http://www.b2i.cc/Document/546/KEMA_Carina_validation_report_public_final.pdf)

</comment><comment><USER7> What about some sort of hydraulic "battery"? I have seen water pumps that can be used as generators and vice/versa, especially during offpeak periods, water is pumped uphill, and during peak demand, water is sent downhill to generate electricity.

Would a hydraulic turbine/pump/generator be feasible?

<comment><USER8> Well yes, and that's what the system you mentioned does. In addition to pumped hydro, there are schemes for pumping air into underground caverns.

You need too much volume to make artificial tanks cost-effective. That's why natural formations are used.

<comment><USER7> That pneumatic system sounds interesting. Do you have any links, por favor?</comment></comment></comment>


Ask HN: AI in code edior / IDE - <AUTHOR> Hi is there any editor / IDE / Plugin that utilizes some smart AI features to make coding better ? Like something that analyzes and suggest codes based on its knowledge. Like IntelliSense on on steroids. Something that learns our coding patterns and be a minion for repeated  tasks. <comment><USER2> Hi, the firm I work for is working on something like this. I'm just the admin, not a developer, but check us out:

[http://www.diffblue.com](http://www.diffblue.com)</comment>