"Smartphone" is the wrong name - loup-vaillant http://loup-vaillant.fr/articles/smartphone-is-the-wrong-name <comment><AUTHOR> I have for some time had a crackpot theory that language will actually evolve the other way.

We have these things we carry around with us, called "phones"; they are actually general-purpose computing devices and making (what we still call) phone calls is a small part of their purpose. And to an increasing extent these can fulfill almost all our computing needs.

So, fast-forward a couple of decades, assuming no huge technological shifts[1]. Everyone is used to having one of these things that they carry around in their pocket, and scarcely anyone really needs any other general- purpose computing device. We still call them "phones" because we always did -- so now this is the usual term for a general-purpose computing device. And, yeah, there are some people who, because of their unusual needs, have a bigger more powerful one. Well, what are you going to call something like a phone but sized to sit on your desk while you work? Obviously it's a desktop phone, right? And somewhere out there In The Cloud there are whole farms of server phones :-).

And there will be conversations like the ones we[2] now have about how "computer" used to mean a human being who did calculations. "Hey, did you ever look up where the word 'phone' actually comes from? It turns out that back in the 20th century they mostly used them for talking to one another, and it comes from some Greek thing meaning 'sound at a distance'. Weird, huh?"

[1] That's a pretty big assumption, of course.

[2] For sufficiently small values of "we".

<comment><USER2> > there are some people who, because of their unusual needs, have a bigger > more powerful one.

Unusual needs like being able to see a lot of text at once, type things longer than a paragraph, multitask, use more than one app in a work flow, and run real software?

I doubt it... unless phones develop dockable desktop capability in which case they are now dual-purpose converged devices. Right now to believe that mobile is "the future" of _everything_ requires one to believe that most people have nothing to say beyond one-liners and selfies and that the only purpose of computing is to interact with canned services. That might be true for a subset of the market but I think it's a smaller subset than some do.

<comment><USER3> > I doubt it... unless phones develop dockable desktop capability in which > case they are now dual-purpose converged devices.

Already here, its only going to get better.

[http://bgr.com/2016/02/21/hp-elite-x3-review- pt-1-preview/](http://bgr.com/2016/02/21/hp-elite-x3-review-pt-1-preview/)

<comment><USER4> Them's are some drool-worthy specs:

[http://cdn.bgr.com/2016/02/screen- shot-2016-02-20-at-11-50-3...](http://cdn.bgr.com/2016/02/screen- shot-2016-02-20-at-11-50-35-am.png)

</comment></comment></comment></comment><comment><USER5> The average adult is required to be available by phone. Not by snapchat, not by skype, not even by text message. By. Phone.

In tech-land and teen-land you can specify platforms to each of your relationships. But in the average American's day, doctors, daycare providers, clients, etc are all going to be contacting you by phone.

Without being required to carry around the phone part, a pocket-sized tablet would have 10x less adoption than it does today. "smart _phone_ " it still is.

<comment><USER6> Not to mention that you can have multiple accounts on any social network, and switch between them at any time, but you can have only one _phone number_ on that mobile device, whatever you want to call it.

So if that device is uniquely identifiable by a phone number, and only you can be the only user of that number at any time (again unlike social network accounts), might as well call it a phone.

<comment><USER7> > but you can have only one phone number on that mobile device

Not necessarily. There are phones which can hold two SIM cards.

</comment></comment></comment><comment><USER8> Japanese cellphones had a lot of the same use-cases that modern smartphones have. You could buy stuff online, use GPS, surf the mobile web, send pictures via email and purchase stuff and movies (disney even produced direct to featurephone cartoons in Japan!).

This is usually used as an argument for why the Japanese decided to colloquially shorten 携帯電話 ("keitai denwa", hand-held telephone) into just 携帯(hand-held, or handy) instead of just calling it 電話(phone) like so many western countries do or 携電("kei-den"), which follows a more typical pattern for abbreviations in Japanese.

However, with the success of the iPhone, which was incompatible with all the featurephone services a new segment arose consisting of iPhones and non- backward compatible Android handsets, and these are denoted as "smartphones" shorten to スマホ(sma-pho).

I think it is interesting that they chose to move closer towards the "phone" moniker, than staying with the focus on hand-held.

<comment><USER9> In that respect, I miss the word 携帯. スマホ ( _sumaho_ , ugh!) feels so uncultivated in such a pleasant language.

It was a predictable outcome though. Japanese has a tendency to abbreviate common words, and the term _smartphone_ (the unwieldy スマートフォン/sumātofon) was imported with the first generations of smartphones.

The German _Handy_ on the other hand (as _ccozan_ mentions)… What a lovely word.

<comment><USER10> I only hear people using スマホ to differentiate them from feature phones ガラ携 (Galapagos phone, also a homonym for "junk phone"). 携帯 is still the general term for "cellphone".

<comment><USER8> You see cellphone store advertise feature phones as Galapagos phones, and I believe it was Panasonic or Sharp that even had a line of phones called Galapagos.

I'm not sure I get what word "Gara" is a homonym with, to me it seems like a fairly normal word.

<comment><USER10> Yes, the Galapagos phone is where ガラ comes from.

I've heard people calling them ガラクタ (crap) phones before. It's obviously just slang...

</comment></comment></comment></comment></comment><comment><USER11> > "Smartphone" has the wrong connotation. It suggests your expensive brick is > a phone first, and can do smart things second.

If you look at where the battery goes, that's usually an accurate distinction. If your screen-on time is less than 4 hours per day, you may spend 75% of battery on the cellular antenna. Everything else takes a lower priority.

Calling it a phone also efficiently distinguishes between smartphones and tablets or devices like the iPod Touch which are identical devices except for the lack of cellular antenna.

<comment><USER12> There are plenty of tablets with cellular antenna though (not all of them have voice call functionality, but that's mostly just a software limitation). And with VoIP and instant messaging apps even WiFi-only device can fulfill "phone" roles.

</comment></comment><comment><USER13> > For instance, picture Microsoft in 2001, after it got sued for bundling > Internet Explorer with Windows. Imagine what would have happened if they > sold Windows XP with an exclusive application store. Imagine that every > program must be approved by Microsoft to run on XP, and they take a 30% cut. > Oh, and no interpreter allowed.

> They would have been sued into oblivion, lost half their customers, suffered > one hell of a bad press. They could have sunk. Yet when Apple did exactly > that to their new computer, the iPhone, few objected and customers flocked.

This just tells me that execution matters more than the initial idea. There's plenty of competition in the mobile space. If users didn't want Apple's locked-down ecosystem, they wouldn't buy iPhones. The vast majority of users don't care about side-loading apps or installing another operating system. They are (quite rationally) willing to sacrifice customization and app choices to avoid malware.

<comment><USER14> Microsoft was considered to have a monopoly (whether you or I agree). As such they were subject to different rules. Apple, especially when iPhone launched, did not have any kind of monopoly on cellphones nor did they have one on PDAs (which is really where _smartphones_ come from, not cellphones).

As for people, people didn't sue Microsoft, companies did. People mostly didn't care. Companies like Sun and Netscape cared. They're they ones that lobbied to have the government declare MS a monopoly. In other words nothing to do with execution and perceived awesomeness by customers. At the time MS was sued IE was the best browser by pretty much every measure so customers wanted it. It was companies that were upset.

Also malware infested vs walled garden is a false dichotomy

<comment><USER15> _At the time MS was sued IE was the best browser by pretty much every measure_

Meh. IE was the browser with the best website compatibility, because Microsoft went out of its way to reimplement half of the HTML standard in its own way, and could use the prevalence of IE to make webdevelopers follow "their" flavour of HTML.

Mozilla's first Firefox release came with the slogan "take back the web". That motto had nothing to do with the excellence of IE.

<comment><USER16> IE4 was head and shoulders above Netscape 4. IE4 is recognizably a modern browser (by introducing .innerHTML), if a very poor one by modern standards; Netscape 4 was hackery on an engine taken way beyond what it could sustain. Netscape require a _long_ time to catch up, and the helping hand Microsoft gave by slowing down dev on IE round about IE6. There was a long window where IE was the best browser by pretty much every measure and I'm pretty sure it overlapped this lawsuit, though my brain and the calendar don't always get along perfectly.

You can argue that IE was that good due to Microsoft being able to leverage its monopoly to develop something for free they could never have afforded to develop otherwise, since that argument basically won in a court of law give or take some nuances. But, in the meantime, IE really _was_ a better browser for a good long time.

</comment></comment></comment></comment><comment><USER17> > _Personally, I have more faith in a third alternative: a virtual instruction > set. Like bytecode, though not managed like Java, and not meant to be > interpreted or JIT compiled either. It could run on the bare metal, or be > translated into something that is —like the Mill CPU. That way you can keep > the illusion of having a single instruction set, while sacrificing virtually > nothing. Moreover, future CPUs don 't even need backward compatibility, as > long as you can translate (and optimise!) the virtual assembly for them._

I don't think he really gets how CPUs work -- it's already that way, and has been for quite a while. The published instruction sets are the 'virtual' instructions, and translation of these instructions (be they ARM, x86, or PowerPC) is baked into each CPU's microcode. We actually have no visibility into the 'real' instructions that CPUs execute ('micro-ops'), because they're proprietary.

<comment> loup-vaillant The idea is to own up to this reality, and stop designing instruction sets as if they were meant run directly. x86 in particular has a legacy of simple CPUs that didn't have much of a decoding unit. But now it has gone too far in the other direction: it takes a significant amount of chip surface and energy to decode, making it unsuitable for low power situations. ARM on the other hand is probably lacking in the SIMD department (I haven't checked).

We need to go back and overhaul the CPU instruction set like Vulkan, Dx12 and Mantle overhauled the GPU APIs. We need to reflect on what CPUs can do, what they can do fast, and what they can do with low power. Then we need an instruction set that would act as an API to these subsystems. Something orthogonal, that doesn't take too much energy to decode, and could be decoded in parallel if need be (for crazy desktop speed ups).

While we're at it, it might be nice to have explicit support for things like pointer tags, to speed up dynamic stuff like garbage collection and runtime type information.

You're right, I don't really get how CPUs work. But I did pick up a few things that lead me to trust instruction set design is not over. We can do better.

<comment> loup-vaillant When I make a long comment, I like to see explanations about what warranted a downvote. So I can learn…

<comment><USER17> I didn't personally downvote you, but I'll give you my best guesses:

1) The percentage of die used for decoding is actually already quite low. Per Anandtech 2014, it was at 10% for x86 and decreasing:

[http://www.anandtech.com/show/8776/arm-challinging-intel- in-...](http://www.anandtech.com/show/8776/arm-challinging-intel-in-the- server-market-an-overview/12)

Since there is a floor to the number of transistors needed for decoding, there might not be a whole lot to gain there.

2) Progress has already been made towards updating instruction sets to reflect what CPUs do quickly, well etc. It started with MMX back in the stone age, and has progressed through a plethora of SIMD and media acceleration instructions.

3) Instruction sets are already not designed as if they were supposed to be run directly. Quite to the contrary, they are abstracted -- the instruction set is the API, and the microoperations are the instructions. Designing them as if they were to run directly would mean exposing the micro-ops, which would require backwards compatibility breaking changes to the CPU each generation when there were changes to the micro ops.

4) The current system already pretty well levels energy consumption between competing ISAs. See: [http://www.extremetech.com/extreme/188396-the-final-isa- show...](http://www.extremetech.com/extreme/188396-the-final-isa-showdown-is- arm-x86-or-mips-intrinsically-more-power-efficient)

You're describing something that sounds like a bytecode VM, but in essence, that's what modern processors _already are_. Unfortunately, x86 (at least 32 bit) assembly is pretty unpleasant as an 'API', but ARM and PowerPC are both pretty good.

As far as pointer tagging, that's something that's probably mostly limited by memory bandwidth (it's not a particularly compute heavy thing to do), so unless the HW support came in the form of a dedicated on-chip cache, it probably wouldn't get you very much ... and then, if you're going to the expense of adding a dedicated on-chip cache, it's probably going to be more effective as a general purpose cache -- if the code is accessing the pointer metadata often, it will be in cache, and therefore accelerated.

Not trying to rain on your parade, I like seeing creative ideas, and I have no idea why people are downvoting you. Have an upvote on me :).

EDIT: Also, ARM has NEON.

<comment> loup-vaillant Whoa, I was hopelessly out of date. Thanks.

</comment></comment></comment></comment></comment><comment><USER18> This article is from France. What's the French term? Has the Académie Française decided on one yet? (Unlike English, French has an official standards body.)

<comment> loup-vaillant The most common term here is "portable", or "téléphone portable", or just "téléphone". "Portable" means what you think it means: you can carry it. Sometimes, (especially in the commercials), we see "mobile" instead of "portable". It also means what you think it means: you can move it.

I think one reason behind the word "mobile" is because "ordinateur portable" (or "portable" for short) is already used to talk about laptops. Destkops are in rare cases called "ordinateur de bureau". Generally, we just say "PC" —unless it's from Apple.

I am not aware of what the Académie Française may or may not have decided.

What I love about the English language here, is that we have 3 words that neatly apply to the three form factors: desktop, laptop, and palmtop. It's a bit of a bummer we can't exploit such regularity in French. If I had to settle on a term, I'd probably try "ordinateur mobile", or "mobile" for short. Unlike "palmtop", it wouldn't scream "computer", so the best I can hope for is that we just stop using "téléphone" to describe those things.

</comment></comment><comment><USER19> In many countries they're mostly referred to as "mobiles" (as an abbreviation of "mobile phone"), especially now that nobody has feature phones anymore and there's no reason to make the distinction.

I find it perfectly vague yet easily understandable.

<comment><USER20> In Italy many people refer to mobiles as telefonino (lil' phone). I guess that doesn't really apply to phablets though :)

</comment></comment><comment><USER21> I agree that naming is important, yet I don't think calling them "palmtops" would have changed anything. Tablets were and often are still called "tablet computers", yet they usually have the same limitations.

<comment> loup-vaillant True. On the other hand, the name make it a bit easier to protest: they can't say those things are not computers, since can't do anything else.

Alas, we often just say "tablet", so it's still possible to make an artificial distinction between them and "real" computers such as laptops and desktops.

The idea behind "palmtop" is to appeal to the intuitions behind laptops and desktops, and suggest it should be subjected to the same rules (when possible).

<comment><USER22> I can't be the only one who has made a habit of casually referring to them as "space computers." Whenever my wife asks some easily google-able question I reply "well just ask you pocket space computer."

I want to hang on to the sense of awe and amazement at the reality of having a powerful computer and all of the internet at our disposal at all times.

</comment></comment></comment><comment><USER23> If I had to rename "Smartphone" I would call it "Personal Computer". My phone is way more "personal" than my desktop and laptop.

But there's absolutely nothing wrong with "Smartphone". Two are the reasons:

1 - There's history there. Most of the words aren't precisely crafted by linguists when society needs them, we simply build on what already exists. The so called smartphone came from the cellphone that came from the telephone, the name itself hints you about its origins. It's fascinating what you can learn about a word when you study its etymology.

[http://etymonline.com](http://etymonline.com)

2 - Meaning wise I wouldn't worry so much about the connotations that the author mentions (I wouldn't worry at all). I'm with Wittgenstein in this one: the word means whatever we decide it means.

[https://en.wikipedia.org/wiki/Philosophical_Investigations#M...](https://en.wikipedia.org/wiki/Philosophical_Investigations#Meaning_is_use)

<comment><USER24> I'm pretty sure that Wittgenstein, while agreeing with your point about meaning being defined by use, would still argue that there's a lot of unspoken confusion that comes from calling the smartphone a smartphone.

The first thing I did when opening this thread was Ctrl+F to see if anyone was suggesting it should be called a "personal computer", because that's what I've thought best described what the smartphone really has become.

Now, to suggest even trying to use that to refer to smartphones these days would be adding a much heavier does of confusion. But the insight seems fundamentally right to me.

Interesting article on the subject that brings up this point: [http://ben- evans.com/benedictevans/2015/11/7/mobile-ecosyste...](http://ben- evans.com/benedictevans/2015/11/7/mobile-ecosystems-and-the-death-of-pcs)

</comment></comment><comment><USER25> We call them "buttons" on interface windows because they look and act like mechanical buttons in the real world. But mechanical buttons have that name only because they look like shirt buttons.

</comment><comment><USER26> Bill Gates called it the "Wallet PC", back in 1994. Later Pen-based computing. Later "Pocket PC".

<comment><USER27> Bill's description was pretty spot on too. I read The Road Ahead again recently and he was right about a lot of things. Though even with all that prescience Microsoft still missed the boat a number of things they saw coming a mile away.

</comment></comment><comment><USER28> I doubt anyone is going to change what they call them (other than dropping the "smart" now that such features are becoming the default), but the point about not being able to install apps except though an app store with a monopoly is very true. Of course it tends to be true with tablets as well.

Maybe when we start to see more android devices that are in a laptop configuration we'll start to struggle more with that issue.

<comment><USER29> Why? Are you under the impression that you can't install Android apps except through an app store?

</comment></comment><comment><USER30> Articles like this gloss over how small tweaks to a product put it in a different category, with large commercial consequences. In the case of smartphones, having a mobile network radio is a very large difference in capabilities, price, operating cost and channel. Smartphones are the largest business on the planet and growing, and tablets have stumbled for not having met their potential in displacing enough PCs in office productivity use cases. Smaller distinctions are important within the smartphone and tablet markets, like "phablets" and various size and price categories for tablets, and for not-quite-tablets like "convertibles." Microsoft tried and failed in multiple product generations to turn PCs into tablets, while in Windows CE and NETCF they had the basic formula for a modern smartphone but they treated NETCF like a red headed stepchild. Small differences, big results.

</comment><comment><USER31> Well, to be honest the best name would be just "PC". Think about it, PC stands for a personal computer. And because a smartphone is in fact a small computer and it's as personal as it gets.

</comment><comment><USER32> Note Apple came to this market from a different direction than most other cellphone makers. Their first mobile computer was a revolutionary music player (innovative UI and music store). It evolved into a sophisticated media computer with color video, wireless and computer utilities in the last iTouch before the iPhone. (Apple still ships iTouches which are the iPhone device without the cellular phone in it, or a micro iPad.) So they pretty much had a full fledge mobile computer before grafting phone technology into it.

<comment><USER33> > Their first mobile computer was a revolutionary music player

The Newton was not a revolutionary music player, and no Apple music player before the iPhone was a "mobile computer" in a sense that would make this portrayal meaningful and accurate.

> It evolved into a sophisticated media computer with color video, wireless > and computer utilities in the last iTouch before the iPhone.

iPod Touch (sometimes nicknamed "iTouch") was introduced after the iPhone, running a later version of iPhone OS (the OS which later became iOS) than the first iPhone. There was no "iTouch before the iPhone."

There was the old-style wheel-controlled iPod before the iPhone, and that was a revolutionary (at least in terms of commercial impact) music player, but it wasn't a "mobile computer" in the same sense as the iPod Touch, modern smartphones, or even earlier PDAs or the Apple Newton.

</comment></comment><comment><USER34> Does anyone actually say "smartphone" except (vanishingly rarely) when necessary to describe the device in contradistinction to "dumbphones"? Is there a difference whether spoken or written?

If so, where are you? I'm curious because all I hear in the UK is "phone" or "mobile" \- both of which we always used. But I'm acutely aware that I hear or read "cell" in American sources significantly less often than, I think, I used to.

<comment> loup-vaillant > _Does anyone actually say "smartphone" except (vanishingly rarely) when > necessary to describe the device in contradistinction to "dumbphones"?_

True. My beef isn't about "smart" however, it's about "phone". I believe my point stands even more acutely in this light.

<comment><USER34> Sure, it was something of a side-point, but the more relevant point (which I may have forgotten to make..) was that in the UK 'mobile' is still common.

Although actually a contraction of 'mobile phone', it doesn't have the same 'problem' going forward, since we can just decide or assume that it refers to a mobile computing device.

Possibly though things will get even more blurred than that - everything a computing device and almost all of them mobile... Time will tell!

</comment></comment></comment><comment><USER35> They won't stop carrying the "phone" connotation until the service providers stop pitching themselves as primarily telephony companies.

</comment><comment><USER36> I usually refer those as "tracking device"

<comment><USER37> I was thinking more "self-funding prole monitoring device program".

</comment></comment><comment><USER38> "Smartphone" is the wrong name? What about "Feature phone"?

Edit: Actually, I meant that the term "Feature phone" is really even a worse name for feature phones, than "Smartphone" is for smartphones. I didn't suggest that it was a better name, but the downvote and comments suggest that I didn't make that clear.

<comment><USER39> 'feature phone' is already an industry term for (mainly) bottom-tier Android phones that lack the hardware to be considered among 'smart phones' but have the basic abilities to access the internet, and play basic media files. Basically the phones that come with the pay-as-you-go wal-mart phone plans.

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

<comment><USER26> Nokia's Symbian based phones, various China based look-a-like phones and WinPhone 7 were called "feature phone".

You couldn't do much beyond the basic functionality. And there was a very limited amount of apps available, if any at all. They were as cheap as today's entry level Android smartphones.

</comment></comment></comment><comment><USER40> In my opinion, it'd only be a truly smart phone if it shipped with a compiler onboard so you could build apps for it ..

<comment><USER41> DroidDevelop and AIDE are available on Android devices. As far as I know, no portable devices ship with a compiler installed, but since it's easily available in the app store, I'm not convinced that it matters.

<comment><USER40> OpenPandora, a portable device (which I consider to be an utterly arbitrary class of computing), ships with usable compilers..

Point is, I think its arbitrary that you can't use an iPhone to write apps for the iPhone.

<comment><USER41> Right, OpenPandora, its predecessors, and its successors. I considered buying one for a time, but never quite convinced myself, so I've never gotten to play around with one.

</comment></comment></comment></comment><comment><USER42> Microsoft has been exploring the smartphone / laptop gap with Continuum - [http://windows.microsoft.com/en-us/windows-10/getstarted- con...](http://windows.microsoft.com/en-us/windows-10/getstarted-continuum- mobile)

</comment><comment><USER43> I've long thought that "hand computer" was a good term for it, but that has rather a lot to do with nostalgia:

[https://app.box.com/s/i6tw2gc8avr9r1hevn0trf4w41nt9r1b](https://app.box.com/s/i6tw2gc8avr9r1hevn0trf4w41nt9r1b)

</comment><comment><USER44> Not even phones they're not handheld devices anymore. The lack of physical interface is very sad. Taking pictures, listening to music, even calling someone, all require high attention interaction over an unfit touchscreen. It's a small slate computer.

<comment><USER45> > _Taking pictures, listening to music, even calling someone, all require high > attention interaction over an unfit touchscreen._

Are you kidding me? All of those functions are 10x easier to do on the "unfit touchscreen" that on what we had before that (tiny non-touch screens, LCDs, 80's style arrays of buttons, etc).

And when it comes to actually taking the picture, changing track or volume etc, smartphones even offer physical buttons on the sides.

Remember trying to get to the 10th track of the 4th folder in your "physical" CD mp3 player or minidisk? Setting anything more advanced than zoom level and picture mode on a typical 2002-2005 compact camera?

<comment><USER44> 90% of the time I need direct blind access to simple functions. Now I have to carefully swipe, carefully otherwise the app goes into gallery mode, or the picture is taken, and since I was pushing on the screen, it's blurry and I need two hands to do so.

Side picture buttons are increasingly rare if not defunct, volume rockers are still here though.

A lot of things that could be done quickly is now fragile and subtle. A side effect of translating desktop UX to IRL handheld gadgets, by the promise that software will be smart enough to make it one button away.

psedit: as noted below, I indeed never realized the volume rocker was bound to snapshot. My rant is half void now u_u;

<comment><USER46> This can all be "fixed" in software. In fact, on my HTC One M8 which is running Cyanogenmod, if I double press the power button at anytime, it switches to camera app and I can then take photos by pressing either volume buttons. I don't need to (or do) look at the screen let alone interact with it.

<comment><USER41> How often do you take a picture without needing to set the focus, or at least watching the screen to see when the app has finished its autofocus? More generally, beyond changing the volume or initiating a voice query, how much can you really do without pulling the device out to use the screen? Lack of hardware buttons and tactile feedback can't be fixed in software.

<comment><USER46> Even with a purpose built DSLR, you still have to frame your shot. I meant I don't need to look at the screen to make the phone ready to shoot. I believe the software can go a long way. It will never be as UX friendly as a camera, sure.

<comment><USER41> I agree that there's room for UX improvement in the software, and as a software guy myself, it's the first place I'm inclined to look at as a source of improvement. It's just that not all the problems have a software fix, in my opinion.

Thank you for the double-tap tip, though. It works in Marshmallow too, apparently.

<comment><USER44> To me the issue is the lack of context and pressure. Physical interfaces tapped into deep human perception. Sub millimeter movements, skin sensitivity, change of texture, response curve. None of that is taken in account in the desktop design world. At least before, software was designed for high throughput and underpowered machines (I often find AS400 UX as ugly as efficient, and in reality nobody cares about software being pretty). Now you get Material Design. 80% eye candy. Whenever I have to use KitKat I feel so relieved because it has centered, static, squary input menus. I don't have to avoid overlapping free floating (+). Every new market causes a regression, until it learns lessons from the past. The learning phase is still going indeed.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER47> Dude, just give it a minute and they'll be called "tricorders" as they should be.

<comment><USER18> We're getting closer. Caterpillar just announced their C60 smartphone with thermal imaging.[1]

[1] [http://www.catphones.com/en- us/phones/s60-smartphone](http://www.catphones.com/en- us/phones/s60-smartphone)

</comment></comment><comment><USER48> Better than what we call them in Switzerland. 'Handy', pronounced the English way.

<comment><USER49> Germany as well. I always heard it dates back to an early marketing thing.

There's also the old (~1990s) joke that it's actually Bavarian and short for "Hän die ken Schnür?" ("Haben die kein Kabel?" / "Do these not have a cord?").

</comment></comment><comment><USER50> I prefer "tricorder."

</comment><comment><USER51> from the Greek _phon_ : voice, sound

i.e. a means to communicate.

You do not call an automobile "wheeled combustion chamber".

</comment><comment><USER52> the device is still a phone, because it needs a SIM card to operate. Without it it's pretty much useless. You cant even start the iphone without it, first thing it needs is a sim card.

<comment><USER53> What? If you boot an iPhone without a SIM it'll show you a warning/error that the SIM is missing, but it still turns on and works.

</comment></comment><comment><USER54> Handcuff computer was rejected by the marketing department.</comment>


Ask HN: Anyone here with a faulty 2011 macbook pro GPU? - <AUTHOR>

https://discussions.apple.com/thread/4766577?start=1200&tstart=0
I'm one of the people in the 80 pages who have now a dead 2011 macbook pro. So far apple has stated that those are individual cases of GPU failure.
I'm just trying to reach as much people as possible. <comment><USER2> My 2011 MacBook Pro broke in September of this year. I took it to the Apple store and they replaced the logic board (this would have cost ~$600 but I have AppleCare).

Last week the issue arose again, so back to the Apple store. They replaced the logic board again, and chalked it up to bad luck when I enquired why this would have happened again so soon.

They wouldn't acknowledge it as a known issue.

</comment><comment><USER3> I had issues with my 2010's GPU -- a random kernel panic once a week. Apple's diagnostic tool determined that the GPU was failing, and they replaced it under AppleCare with no problem. Bummer that its happening in more than one model.

<comment><AUTHOR> Worst thing is that it's happening after the 1 year warranty. The people who did get AppleCare has had their logic boards replaced many times, some have reported being on their 4th logic board in just a few months.

<comment><USER3> Yeah, mine started showing up at the 2-2.5 year mark. Not sure how often Apple charges for these replacements, but GPUs shouldn't be failing after just a year or two..

</comment></comment></comment><comment><USER4> Yes, I have got one of them. Its a good idea to start a thread on HN.

</comment><comment><USER5> No but my new MBPr's caps lock key and USB ports magically decided to take a vacation.</comment>


Grand Central Dispatch: The Sleeping Barber Problem - <AUTHOR> http://www.madebysofa.com/#blog/the_sleeping_barber

<comment><USER2> The code in the linked article has a bug: it doesn't wait for the queued tasks to complete, so the program will exit while people are still waiting for their haircuts - or worse, while the barber's actually cutting some hair.

You can fix this by using dispatch_group_async instead of dispatch_async, then after the loop (before releasing the queue) call dispatch_group_wait to make sure all the queued blocks have completed.

This plus creating and releasing the group only adds three lines of code; the rest of the author's algorithm is correct as far I can tell.

I guess it just goes to show that even with Grand Central you still have to be a little careful.

<comment><USER3> No, you're right, except that the while-loop condition is YES, so it never exits! It's worth noting that all threads in Cocoa (and GCD) are detached pthreads, so whatever you do you have to wait on critical operations.

The sample code is technically correct, but your argument is also valid. I was going for a demo of something that applies in the larger scope of real-world apps :)

GCD, by no stretch of the imagination, negates the requirement of thought!

</comment></comment><comment><USER4> Here's a good discussion on a related topic in the 9fans archive - <http://email@example.com/msg10581.html>

<comment><USER5> That thread was full of knee jerk reactions and deficient in sound reasoning for a good while. I think Roman Shaposhnik had the best point when he noted that you could do something like Cilk (not exactly the same, but similar) as a library if C had closures, instead of as a new language supersetting C. It's not like block scoped functions are in any way new or unusual; even gcc has had downward funargs (which aren't enough to do GCD with, FWIW) for years.

The thing is, Objective C is the main way to develop Cocoa applications. Blocks, garbage collection, and a number of other features that have been roundly whined about are ways of increasing the expressivity of the language so that it is more comfortable to write applications in. One can argue that C is a miserable applications development language (and I think you'd be right) but unfortunately we have relatively few other options. Apple used to have a Java-Cocoa bridge that has been deprecated for some time because nobody cared.

<comment><USER6> I've found Rubycocoa to be really easy to use, and it's supported by Apple. It might go the way of the Java bridge in the future, though.

<comment><USER7> MacRuby seems to be the new hotness for Ruby + Cocoa. Have you tried it? If so, how does it compare to RubyCocoa?

<comment><USER8> I just saw an absolutely fantastic talk at C4 about MacRuby. It'll be tons faster than RubyCocoa, because there's no bridging, and it compiles to native code. You can even do AOT compilation and distribute a native binary!</comment></comment></comment></comment></comment>


Ask HN: Returning to university as an experienced developer - <AUTHOR> Hi HN,
For the past three years, I've been working as a Web Applications Developer (LAMP stack). Although having dropped our after attending one year of Computer Science in 2009 I was able to attain this position without a degree.
I'm not fully satisfied by the rate at which I'm currently learning and I feel I could be doing a lot more for my career/personal development. I now have the opportunity to attend an online Level 8 Certificate in Software Development in university based on my industry experience (cert equates to half an BSc Hons here in Ireland [1]). The cert is a year long with the option to stay on for a second year to obtain a BSc Honors. The entire course is very cheap as it's part of an upskilling initiative so money is not an issue here.
I've thought long and hard about this opportunity but the same question keeps arising -- Do I really need it? I'd love to progress my career, particularly into AppSec. A degree will give me validation and recognition in what I currently do and I have no doubt I'd learn something by completing a full degree; however, could this time be better spent within the industry in a more challenging role?
There is another certificate offered at the same institution which is broader but I'd find it a lot more interesting [2], and though it would mean a lot more time/difficulty in attaining the BSc Hons, I feel it would offer a lot more experience that I could use in a professional capacity.
I'd be grateful if anyone could share any similar experiences or any advice that may help me progress.
[1] https://www.itsligo.ie/courses/bsc-hons-software-development-online [2] https://www.itsligo.ie/courses/certificate-secure-it-deepmachine-learning <comment><USER2> I returned to University in my late 20s after spending several years in industry. After three years, I completed a business degree (with a major in marketing).

While I can't claim that I learned many things that have actually changed the trajectory of my career, having the paper has certainly helped me get the first round of resume selections. It's really just a credential and checking off a box.

I did gain a tremendous amount from the students and (especially) professors I met. Three years in University in my late twenties has had a tremendous impact on my network. To this day (11 years after I convocated), I still reap the benefits from that network.

When I went back to school, I was quite a bit older than most of my fellow students, so I gravitated towards professors and older students. Being in business, many of the older students had huge amounts of experience in industry.

Three caveats:

1.) I studied business, not computer science.

2.) I studied in person and not online.

3.) I focused on building my network.

<comment><AUTHOR> I hadn't considered the networking part of it so thank you for that insight. Despite studying online I'll probably have a chance to meet some people during labs which I need to attend in person.

</comment></comment><comment><USER3> If you already have experience, a degree doesn't mean that much - at least in the US.

Also, again in the US, most online degrees aren't taken seriously by hiring managers.

The best way to learn is by changing companies and learning from other people. You've taught yourself this much, stay on that road.

<comment><AUTHOR> Coincidentally I was chatting to someone involved in HR who's been involved in the tech industry since posting this and they mentioned the same; that they never primarily considered degrees during the hiring process. Thanks for confirming the same about the US as I plan to work and live there after a while.

<comment><USER4> Coincidentally, some of those same people who would say they don't primarily consider degrees will outright ask about education background when talking to a candidate.

The conversation will go generally positive. A month later of no contact/ghosting, and a form letter rejection pops out, with either the position being closed or "Unfortunately, we have decided to pursue other candidates whose background appears to match our needs more closely."

And that will be that.

<comment><USER3> I've been developing for 20+ years. I got my degree in the mid 90s. There is absolutely nothing I do today that my degree from a little state college in CS over 20 years ago helps with.

I've interviewed people for 15 of those years. None of the post interview discussions when we were deciding who to hire ever brought up there degree.

Well let me take that back, I know managers who would put people with degrees from Devry and online only schools at the bottom of the list and wouldn't even consider them. Getting degrees from one of those schools were actually considered worse than no degree at all.

I don't agree with that sentiment, but that's the way of the world...

</comment></comment></comment></comment><comment><USER5> In my experience certificates like this are considered pretty useless by most software engineers. Anybody can do a certificate and have their hand held all the way through it. Real world experience in much more valued. Also software dev is both an applied skill and a fast developing field too in which not everybody agrees on the right way to do things, so its hard for universities to keep up with the changing times. Plus whatever job you get after university will probably require you to learn a ton of new stuff anyway. Basically I don't believe that software engineering is a field in which you can go off to study for a year and then be considered better at your job because of it. (This could be different if you were to study a more specific subset of computer science like security, computer graphics, machine learning etc.)

That said you've been a developer for three years so are in a pretty good position to try moving to a company which does more advanced stuff and further your career. This of course has the added benefit that you don't have to make any financial sacrifices, in fact you will probably get paid more by doing this.

Finally you mentioned getting into Appsec, if you want to specialise in a field like this then I would highly recommend that. As I said earlier spending time to specialise in a field like this would be worth while, you could do a degree or do a certification like the OSCP (unlike software dev, certifications in info sec are actually valued if you do the right ones). This is what I'm currently doing myself after 5 years as a developer now specialising in security.

<comment><AUTHOR> Thanks for responding. Yeah I've heard mixed things about obtaining certificates — in this case it's considered a "degree" despite having the 'Certificate...' label. Nonetheless, I know what you're saying. I've decided to do the one year course in security as I'll find the structured learning and exams a good way to discipline my learning, and as a result I'll have more time to apply those foundations industry experience rather than spending two years in college. In the meantime I'm trying to find somewhere else to work that'll hopefully help me apply what I'm leaning. I guess the need for validation in what I'm already doing is more a confidence issue that's always made me reluctant to apply anywhere else - a mentality I really need to escape! Thanks for your feedback and good luck with the AppSec!

</comment></comment><comment><USER6> I believe formal classes in good universities certainly help. You end up learning things that you would think are too boring or not directly related to your job. But in my 15 years of working and dozens of interviews, no one ever asked me about my courses or anything related to my education. I never asked anyone I interviewed about what they lerned in college.

</comment><comment><USER7> Worth it for me. I got a minor in CS, did web development for 3 years, and then enrolled in a CS master's degree for professionals at a prestigious (expensive) university. In school I purposely avoided "software engineering" type classes and focused on more theoretical, mathy CS classes. The classes exposed me to a lot of things I wouldn't have learned otherwise and the shiny master's degree probably helped me land a job at a prestigious tech company. In the end, I like school and didn't feel like I was finished at the end of undergrad. YMMV.

</comment><comment><USER8> I did university late, after programming professionnal and hobby experience, but it was in the 80s. IME, it was interesting, but not that useful. The problem is that for practical work, you don't learn more than what you already learned working, and what you really learn, the theory, you just cannot apply it in practice in the university.

Nowadays however, there are a few domains, that could be worth learning in university and open doors for nice jobs, such as deep learning, or biology (DNA, artificial life, etc).

</comment><comment><USER9> A lot of jobs ask for a degree. If you don't have one you don't get past HR.

So I would say it's a benefit, and if you enjoy the course then why not.

</comment><comment><USER10> HI,

Similar situation, sometimes just getting noticed or fighting these algorithms to get noticed is difficult. Luckily I found socialplan.co which totally helped me accelerate my career. The hard truth is there is no correlation with grades and distinctions to future income earning potential.

Become the best at what you do "skills" then promote your personal brand like a fortune 500 would, with no shame.

Cheers,

Hanna</comment>


Google Helpouts is shutting down - <AUTHOR> https://helpouts.google.com/m/home

<comment><AUTHOR> Somebody should run the numbers and figure out what are the chances a Google service survives!</comment>


What Happened After the North Dakota Oil Boom Went Bust - <AUTHOR> http://www.theatlantic.com/business/archive/2015/06/north-dakota-oil-boom-bust/396620/?utm_source=SFFB&single_page=true <comment><USER2> It's not going to go _bust_. US crude oil production is up one million barrels per day over this time last year. People don't seem to realize that what's going on is a fundamental, permanent shift in how the US extracts domestic oil. They aren't going to just pack up their technology and return to drilling 1993 style.

The industry will find a lower level normal, drop backwards on production by ~10%, and then resume growing again, at a slower pace (so long as the price of oil stays subdued).

The big players have dropped their cost by roughly $20 / barrel in just the last 24 months. In another year or two the ones that are left will be profitable at $40-$45 oil.

Which is why Saudi Arabia just announced plans to max out its oil production. OPEC is going to struggle to hold oil low enough to drown the US majors like EOG, Pioneer, Continental and Apache.

<comment><USER3> Yes, but. Production doesn't employ as many people as exploration and development. That's why the employment side of energy extraction is so prone to booming and busting.

</comment></comment><comment><USER4> Uhm, a little bit premature with this article. It hit a downturn, but its coming back again. I and others are getting offers in the secondary parts (we need IT for example) and construction is still delayed on the east side of the state because all the truck drivers are still in the west.

Yes, we remember the bust of the 80's and the state's budgeting reflects that.

</comment><comment> rm_-rf_slash As far as I am concerned, Governor Cuomo is a saint for banning fracking in New York. Eventually the ground will run out of muck or people will stop buying it, but every year brings more wine from the Finger Lakes.

<comment><USER5> I'm sure that sentiment makes sense if you're in the city. But I'm equally sure that there are a ton of people in the crumbling former mill-towns upstate that would love to have jobs and wealth pouring into their areas.

How does NY even function as a state? I came from Maine, where we bitch constantly about what we call "the two Maines," basically Portland and its suburbs, and then the rest of the state, which is thinly populated and rural. The politics and value systems are almost opposite in the two sections. Is there a dynamic like this in NY?

<comment><USER6> Over a hundred small towns enacted fracking bans, the oil industry sued to get the bans overturned. I'm sure there were towns that welcomed the oil industry (and NY operates much like "the two Maines"), but on this debate it felt like it was the citizens of NY vs the oil industry.</comment></comment></comment>


Show HN: Risp – Lisp in Rust - <AUTHOR> https://m.stopa.io/risp-lisp-in-rust-90a0dad5b116 <comment><USER3> > `List(Vec<RispExp>)`

The big question when implementing a runtime for a Lisp-like language in Rust is how the interpreter will interact with the GC. It looks like this project has avoided most of the complexity by not implementing actual lists, and allowing multiple references to the same value to exist only in restricted circumstances, hewing close to Rust's ownership model rather than a typical Lisp's. I wonder, is the plan to stay on this side of the space, as a lightweight language with potentially smooth FFI interoperation with other low-level/Rust code? Or to rewrite almost everything to support the high-level semantics of list-processing languages, with their emphasis on shared structure?

<comment><AUTHOR> Great question firethief! I think both approaches -- a) sticking close to rust and supporting beautiful interop, or b) creating our own GC and using interesting data structures (I've wanted to implement persistent vector tries for a while) -- could be very cool.

For now, this was more of a toy project. If you have an interest in pushing either of these directions, would love to talk!

</comment></comment><comment><USER4> > Finally, I have to say, I loved using Rust. It's the least mental overhead > I've had to maintain with a systems language, and it was a blast to use.

This mirrors my experience learning Rust while working on the C2Rust translator (HN discussion [https://news.ycombinator.com/item?id=17381946](https://news.ycombinator.com/item?id=17381946)). Great read!

<comment><AUTHOR> Awesome, thanks for the kind words dataking! :)

</comment></comment><comment><USER5> Passing both a &[String] and an index into the function is duplicative, because a slice already has an index in it (the start point). It would be cleaner to just use `tokens.split_first()` to yank the first token off the list, which gives you both that first token plus the remainder, then you can pass the remainder into subsequent calls, and return the remainder at the end when you're done. Or, heck, you could even take a `&mut &[String]` instead, allowing you to mutate the slice directly and not have to return anything.

<comment><AUTHOR> This is a great suggestion eridius! I'll update it to use split_first.

Note: updated the essay and left a thanks to you :)

</comment></comment><comment><USER6> I love the article, I actually tinkered with something like this a few moths ago.

I tried to navigate back to HN using the back button, however it was inoperable. I found that passing every section heading on this article adds a line in your browsing history. Please don't mess with my browser history while I'm just scrolling. If I click on something that's fine, but not while I'm scrolling. I already have a history of where I am in your article, it's called the SCROLLBAR!

<comment><AUTHOR> re: article -- thank you for the kind words TehCorwiz :).

re: scrollbar -- oi -- definitely did not intend that. Will look into this (I am hosted medium, so don't have much ability to move things around, but will see what I can do)

<comment><USER6> Thanks for the response. Yeah completely understand.

</comment></comment></comment><comment><USER7> I would've went with "Lust"...

<comment><USER8> Sorry, that name is reserved for the _next_ step in the project - <USER2> parentheses-heavy input syntax for Rust, or more plausibly, for the simplified representation thereof known as MIR. Its biggest impact on the tech industry will actually be to significantly broaden the appeal of the Rust Evangelism Strike Force; indeed, it's expected that very few programs will ever be written in Lust, and that even the programs that _are_ written in the language will be largely toy examples! But the overall effect has nevertheless been considered to be highly worthwhile, so the project will go forward.

<comment><USER9> Just curious: Isn't _MIR_ not a moving target with lots of changes going on? Perhaps a direct translation to Rust syntax would be a better choice.

<comment><USER10> MIR is not stable, that's correct.

</comment></comment></comment></comment><comment><USER11> I thought this was just going to be another forgettable "X implemented in Y", but this is actually a Rust-flavored version of Peter Norvig's classic "(How to Write a (Lisp) Interpreter (in Python))", which is an absolute treasure. Glad I didn't just skip over this!

<comment><AUTHOR> Thank you for the kind words kibwen :)

</comment></comment><comment><USER12> If you like Rust and Lisp this is also a cool project: [https://github.com/carp-lang/Carp](https://github.com/carp-lang/Carp).

<comment><AUTHOR> oo, very interesting! will take a deeper look, thanks! :)

</comment></comment><comment><USER13> I did almost the exact same thing (follow Norvig's Lisp tutorial, but in Rust) at one point, though I didn't get as far: [https://github.com/eamonnmr/atmoslisp](https://github.com/eamonnmr/atmoslisp)

<comment><AUTHOR> Awesome EamonnMR! Hope it helps kick it back up :}

</comment></comment><comment><USER14> Embedding Lisp as a scripting language is a nice way to balance performance vs. expressive power from my experience.

I recently started working on something similar [0] in Go.

[0] [https://github.com/codr7/g-fu](https://github.com/codr7/g-fu)

<comment><AUTHOR> Cheers codr7!

You're project looks great -- you even got channels! Can't wait to go deeper.

<comment><USER14> I sort of got them for free :)

g-fu adds task isolation though, more along the lines of Erlang than Go.

Remixing Lisp is one of the most interesting things you can do in software as far as I'm concerned.

</comment></comment></comment><comment><USER15> There is also quite older, but still maintained other implementation [https://github.com/murarth/ketos](https://github.com/murarth/ketos)

<comment><USER16> I've used ketos for [https://shopify.github.io/shadowenv](https://shopify.github.io/shadowenv). It was relatively nice to work with and has pretty good sandboxing/resource limiting support.

</comment></comment><comment><USER17> A bit of feedback to the author: I cringe really, _really_ hard when I see things like:

      #[derive(Debug)]
      enum RispErr {
        Reason(String),
      }

One of the beauties of Rust's type system is that you can combine _meaningful_ error types with the From trait to build zero-effort error handling. When you turn every error into a String, you lose information that future programmers (including yourself!) will be glad to have. I know it can be a little bit painful to get used to, but once you do, meaningful error handling will be at your fingertips.

To be helpful to readers of this comment and not just critical of the author, I recommend you don't overthink your error types when you're first starting to write your program. Think of the contents of the enum like a "scratchpad" where you list every failure mode you've encountered so far. While you're still developing, you can greedily match on every variant in your match statements, and it's fine. As you do this, you'll begin to notice themes that will inform the eventual refactor. Best of all, once you _do_ refactor, you won't have to re-understand your code to tease out the various kinds of failures - you'll already have a list of them!

<comment><USER17> Because I'm on my soapbox, I'll also recommend implementing ToString[1] right off the bat, too. That way you can print out useful error messages immediately.

For example, if your errors are:

      enum RispError {
          /// Syntax error returning line number and char
          SyntaxErr(u32, u32),
          /// Parens not balanced; contains number of parens needed
          UnbalancedParens(usize),
      }

You can impl ToString straight away:

      impl ToString for RispErr {
          fn to_string(&self) -> String {
              match self {
                  RispErr::SyntaxErr(l,c) => format!("syntax error at line {}, col {}", l, c),
                  RispErr::UnbalancedParens(n) => format!("use your % key more! add {} more paren", n),
              }
          }
      }

Then, when handling the error, you can

      match do_thing() {
          Ok(v) => { ... },
          Err(e) => { // TODO handle error
              println!(e)
          }
      }

where do_thing's signature looks like

      fn do_thing(...) -> Result<T, RispErr>;

It takes the same amount of code, but all your error messages are in the same place, you haven't lost information about them, and refactoring to handle them becomes super easy.

(n.b. I dashed this comment off without actually compiling the above, so please forgive any dumb errors =] )

[1] [https://doc.rust- lang.org/std/string/trait.ToString.html](https://doc.rust- lang.org/std/string/trait.ToString.html)

<comment> f-jin Instead of implementing `ToString` directly, you should implement `Display`. A `ToString` implementation will automatically be added, and you get all the formatting goodness out of the box.

<comment><USER17> That's a good idea! I don't often impl Display so it didn't even occur to me.

</comment></comment></comment></comment><comment><USER18> One interesting way to extend this is to implement 'call with current continuation' or call/cc from Scheme. It's a great challenge. I've done it in the past with rewriting the interpreter to continuation passing style. This also make it easy to implement breakpoints and a whole debugger for the interpreter. I still have it running here: [https://csokavar.hu/projects/mini- scheme/](https://csokavar.hu/projects/mini-scheme/)

<comment><AUTHOR> Great work encse -- love that you have a playground online for your language!

</comment></comment><comment><USER19> > _It's the least mental overhead ..._

Arguments to values in Risp:

      fn env_for_lambda<'a>(
        params: Rc<RispExp>,
        arg_forms: &[RispExp],
        outer_env: &'a mut RispEnv,
      ) -> Result<RispEnv<'a>, RispErr> {
        let ks = parse_list_of_symbol_strings(params)?;
        if ks.len() != arg_forms.len() {
          return Err(
            RispErr::Reason(
              format!("expected {} arguments, got {}", ks.len(), arg_forms.len())
            )
          );
        }
        let vs = eval_forms(arg_forms, outer_env)?;
        let mut data: HashMap<String, RispExp> = HashMap::new();
        for (k, v) in ks.iter().zip(vs.iter()) {
          data.insert(k.clone(), v.clone());
        }
        Ok(
          RispEnv {
            data,
            outer: Some(outer_env),
          }
        )
      }

Arguments to values in TXR Lisp (interpreter), written in C:

      static void do_eval_args(val form, val env, val ctx,
                               val (*lookup)(val env, val sym),
                               struct args *args)
      {
        for (; form; form = cdr(form))
          args_add(args, do_eval(car(form), env, ctx, lookup));
      }

<comment><USER20> They're not comparable. The C version contains no error handling, and off- loads most of its work to another function.

<comment><USER19> What work does it offload to another function that the Rust function doesn't also? We can make a table:

      C function   Rust analog

      args_add     data.insert
      do_eval      eval_forms

Rather, the Rust function actually off-loads the evaluation work to another function, _eval_forms_. I should be comparing that one to _do_eval_args_ :

      fn eval_forms(arg_forms: &[RispExp], env: &mut RispEnv) -> Result<Vec<RispExp>, RispErr> {
        arg_forms
          .iter()
          .map(|x| eval(x, env))
          .collect::<Result<Vec<RispExp>, RispErr>>()
      }

That's a lot smaller, but still very noisy. My eyes bleed!

<comment><USER21> Try this instead:

        fn eval_forms(arg_forms: &[RispExp], env: &mut RispEnv) -> Result<Vec<RispExp>, RispErr>> {
          arg_forms.iter().map(|x| eval(x, env)).collect()
        }

Or, if you don't like return value polymorphism, then:

        fn eval_forms(arg_forms: &[RispExp], env: &mut RispEnv) -> Result<Vec<RispExp>, RispErr>> {
            let mut exps = vec![];
            for x in arg_forms {
                exps.push(eval(x, env)?);
            }
            Ok(exps)
        }

It looks no more noisy than your C code, and I can't actually tell whether your C code is doing error handling. Is it? If not, try adding it. Now which is noisier?

<comment><USER19> It's at least twice as noisy. It has more operators, more different punctuators, < > brackets in addition to ( ) and { }.

Not sure what error handling you have in mind, but it's robust. We can interactively call it from gdb with some garbage values:

      (gdb) r
      Starting program: /home/kaz/txr/txr-dbg
      This is the TXR Lisp interactive listener of TXR 215.
      Quit with :quit or Ctrl-D on empty line. Ctrl-X ? for cheatsheet.
      1> (raise 5)

      Program received signal SIGTRAP, Trace/breakpoint trap.
      0x00132416 in __kernel_vsyscall ()
      (gdb) p do_eval_args(9, 9, 9, 9)
      Too few arguments in function call.
      (gdb) p do_eval_args(9, 9, 9, 9, 9)
      ** car: 2 is not a cons
      ** during evaluation at expr-1:1 of form (raise 5)
      ** run with --backtrace to enable backtraces
      2> _

The function relies on _args_ having enough room for all the values; both callers ensure that. The lookup function can't be wrong, either.

<comment><USER21> What a strange comment. When compared to my first Rust snippet in my previous comment, your C code has _more_ parens, the same number of brackets, more semi-colons, more asterisks and more inscrutable function pointer syntax. Of course, I don't actually find C's syntax all that noisy, but I don't find Rust's syntax particularly noisy either. Probably because I know both languages. But at least be fair and try to look at both with virgin eyes instead of only one of them.

The fact that it does error handling is not at all clear from its type signature, in contrast to Rust's function signature. So that's going to contribute "more noise" from your perspective, but on the flip side, it also conveys more information. Based on your demonstration, it looks like your function just aborts the program on an error, but the Rust function is a bit more versatile. It gives the caller a choice of how to deal with an error. Otherwise, I could just write this instead:

        fn eval_forms(arg_forms: &[RispExp], env: &mut RispEnv) -> Vec<RispExp> {
          arg_forms.iter().map(|x| eval(x, env)).collect()
        }

<comment><USER19> Since we're working on Lisp internals, we can accept a few parentheses.

The code has two asterisks, both in parameter declarations, indicating pointers.

It has exactly one binary operator in the body, the assignment = denoting the one local side effect (stepping the iteration variable of the simple for (;;) loop).

All else is simple function calls. Except for the function pointer declaration, and perhaps not knowing _car_ and _cdr_ , an Awk or JS programmer might grok this.

The program doesn't abort; the exception was caught in the REPL. We were thrown right out of the GNU Debugger where we caused the problem, and back into the Lisp REPL. We can demonstrate that in other ways, like this:

      (gdb) r
      Starting program: /home/kaz/txr/txr-dbg
      This is the TXR Lisp interactive listener of TXR 215.
      Quit with :quit or Ctrl-D on empty line. Ctrl-X ? for cheatsheet.
      1> (catch (raise sig-trap) (error (x) (put-line `caught error: @x`)))

      Program received signal SIGTRAP, Trace/breakpoint trap.
      0x00132416 in __kernel_vsyscall ()
      (gdb) p car(9)
      caught error: car: 2 is not a cons
      t
      2> (+ 2 2)
      4
      3> _

gdb gets confused here, though:

      3> (exit 0)
      [Inferior 1 (process 8529) exited normally]
      The program being debugged exited while in a function called from GDB.
      Evaluation of the expression containing the function
      (car) will be abandoned.

Quite understandably, it doesn't understand the exception handling and didn't notice that we jumped out; it still thinks we are executing the car function. Oh well!

</comment></comment></comment></comment></comment></comment></comment><comment><USER22> `tokenize` function looks weird. Why use replace and then split? How would you extend this to stirngs (which might contain "()" chars)? It might be OK in a toy example, but it would have been better if the author wrote an actual Reader (not familiar with Rust, but I guess it should have some readers that allow peeking 1 char ahead OR something like Java's PushbackReader).

Then `parse_list_of_floats`, if I am reading it right, this function is fail- safe, not fail-fast, right? It won't panic upon the very first reading error?

Why eval makes environment lookups? Shouldn't environment itself know how to perform a lookup?

<comment><USER23> It's basically a clone of the tokenizer from this python implementation [https://norvig.com/lispy.html](https://norvig.com/lispy.html) which was referenced in the introduction.

The same code has been seen in a bunch of simple/similar lisp interpreters in different languages.

To be honest I'm not sure if that was the first documented tokenizer using this simple approach, but it is definitely a common pattern for such things - and as you say it is naive at best, and buggy at worst. That said it is easy to get it working, and later fix it properly.

</comment></comment><comment><USER24> Lisp in Rust? Have we reached peak HN?

<comment><USER25> Nah, that will happen once someone implements a Javascript compiler written in a Scheme dialect with a VM which is written in Rust, with the entire stack compiling to WASM so it can run in the browser.

</comment></comment><comment><USER26> RispEsp is a tree using value semantics. How will RispExp evolve to support e.g. circularly linked lists? How will that interact with Rust's ownership requirements?

</comment><comment><USER27> Glad to see the rule being proved, albeit intentionally :)

> Any sufficiently complicated C or Fortran program contains an ad-hoc, > informally-specified, bug-ridden, slow implementation of half of Common > Lisp.

[https://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule](https://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule)

</comment><comment><USER28> In Lisp notation that would be (In List Rust) or maybe (In Rust List).

<comment><AUTHOR> Heck yeah Bill :) -- you know what, will update the title on medium!

</comment></comment><comment><USER29> Rust is the best lisp ever invented. Why bother another lisp inside it?

</comment><comment><USER30> I wonder why not call it _L_ isp + R _ust_

<comment><USER31> Perhaps because it's ... boring?

</comment></comment><comment><USER32> Should've gone with Lust it's way better than Risp.

</comment><comment><USER33> Why is this named Risp? Lust is much better...

</comment><comment><USER34> Hahahaha Lust !</comment>


Finland's prime minister wants her country on a four-day workweek - <AUTHOR> https://qz.com/work/1780373/finlands-prime-minister-wants-her-country-on-a-four-day-workweek/ <comment><USER2> No, a more correct article would say: Finlands Prime minister discussed a 4 day week several years ago, before she was prime minister but hasnt mentioned it as part of any political program since she became prime minister.

<comment><USER3> See also: [https://newsnowfinland.fi/politics/how-finlands-fake-four- da...](https://newsnowfinland.fi/politics/how-finlands-fake-four-day-week- became-a-fact-in-europes-media)

</comment></comment><comment><USER4> Misleading: see [https://yle.fi/uutiset/osasto/news/govt_corrects_inaccurate_...](https://yle.fi/uutiset/osasto/news/govt_corrects_inaccurate_reports_on_finnish_pms_alleged_4-day_work_week/11146856)

</comment><comment><USER5> Sweden ran an experiment with 6 hour days (on nurses) and it ended up having some productivity boosts but cost too much ($1.3m USD).

I'm curious if they tried this for an industry where the employee does not have to be physically present for all hours such as a nurse does how it would differ in terms of cost.

Source: [https://www.bbc.com/news/business-38843341](https://www.bbc.com/news/business-38843341)

</comment><comment><USER6> Misleading headline. Interesting how this has spread.

<comment><USER7> Perhaps it spreads because that's what workers want?

No one regrets working too little when they die, only that they didn't spend more time with loved ones. The point of life is not to work.

<comment><USER8> > _" No one regrets working too little when they die"_

Or to quote the always amusing Savage Chickens [1], "Years from now, when I'm on my deathbed, will I look back on my life and say 'gosh, I really wish I had put in more overtime'?".

[1] [https://twitter.com/savagechickens/status/922563259894439937](https://twitter.com/savagechickens/status/922563259894439937)

<comment><USER9> Aye fight and you may die. Run and you'll live... at least a while. And dying in your beds many years from now would you be willing to trade all the days from this day to that for one chance, Just One Chance, to come back here and tell our enemies that they may take our lives, but they'll never take.. OUR FREEDOM

</comment></comment></comment></comment><comment><USER10> It's a vision, not a plan.

</comment><comment><USER11> Besides being coercive and wrong, this law is unenforceable when applied to work such as programming that can be done at home. If a 4-day workweek law were passed, it's likely that salaries would fall and that many people would do unpaid work on their day off.

<comment><USER12> I heard this argument for the 35h work week in France. 10 years later, it proved baseless.

<comment><USER13> _it proved baseless._

Structurally high youth unemployment was the consequence. The French system is fantastic once you are over the hurdle of actually getting a permanent contract, but the barrier to entry is much higher than in comparable economies such as the UK. It just depends which segment of the population you are optimising for.

<comment><USER12> It's more about the fact we can't fire anybody, so hiring is a scary game.</comment></comment></comment></comment>


Effective Learning: Set of techniques which will dominate AI in near future - <AUTHOR> http://blog.paralleldots.com/technology/deep-learning/effective-learning-near-future-ai/?utm_source=forum&utm_medium=group_post&utm_campaign=Hacker%20News%20 <comment><USER2> Wow such a wonderful article. Very few people are aware of these recent trends in the AI community (apart from researchers ofc). Must read if you want to catch up on latest trends with some insight into upcoming trends of where the community moves towards</comment>


To errno or to error - <AUTHOR> http://www.tedunangst.com/flak/post/to-errno-or-to-error <comment><USER2> I like the "value return" approach here, and I've been considering using it for a project I'm working on. You have to provide a place for the error to go when you call the function. You can decide to ignore it, but you can't forget that it exists. I'd be interested in hearing a contrary position, however.</comment>


The Rules essence (applicable for YC too) - <AUTHOR> http://forum.seedcamp.com/forums/2/topics/21 <comment><USER2> >Also the prototype is not strong if it rides on the back of some service (facebook app, myspace widget) or has no personal value for single user (requires spontaneous collaboration from the beginning)

Wiser words have never been spoken.</comment>


Repository for Open Source Mouse Firmware and Hardware - <AUTHOR> https://github.com/biomurph/Mouse <comment><USER2> I'm the hacker behind the Open Source Mouse Repo.

I still have some ADNS2620 sensors in my stash (yes, that was a typo that is now fixed). Look into the readme and see that there is a company called PixArt that seems to be the only source for some of these parts. I did get a bite (mouse bite?) from their rep at the time of the OSHWA Summit 2 years ago, but they went crickets. This project could get resurrected if there is a replacement sensor chip. I kind of like the Arduino Leonardo + ADNS sensor, and not interested in just a breakout of an 'all in one' mouse sensor.

If yer interested in getting a full kit or an ADNS sensor, please comment on the github issue tab [https://github.com/biomurph/Mouse/issues/7](https://github.com/biomurph/Mouse/issues/7)

<comment><USER3> It's not just "a company". Avago sold the IP to Pixart (after a long protracted patent battle) and exited the sensor market.

Now all old Avago models are manufactured by Pixart.

<comment><USER4> Avago's datasheets were thorough and easy to understand. Pixart datasheets, if you can find one, are incomplete and full of grammatical non-sequiturs and ambiguities. I really miss Avago.

</comment></comment></comment><comment><USER5> Here's another really cool DIY mouse project:

[https://hackaday.io/project/171196-rx-modulus-completely- mod...](https://hackaday.io/project/171196-rx-modulus-completely-modular- mouse)

</comment><comment><USER6> You can order a ploopy[0] kit or modify their source[1]. I think a few users on r/trackballs[2] might have gotten QMK to work with it.

[0] [https://www.ploopy.co/](https://www.ploopy.co/)

[1] [https://github.com/ploopyco/mouse](https://github.com/ploopyco/mouse)

[2] [https://www.reddit.com/r/Trackballs/comments/dk4ha7/ploopy_v...](https://www.reddit.com/r/Trackballs/comments/dk4ha7/ploopy_vs_elecom_huge_now_with_qmk/f4ahzy3/)

</comment><comment><USER7> I've been wanting to try retrofitting new guts for my Kensington SlimBlade trackball, particularly making it poll and process at 1000Hz rather than 125, since now all of my monitors refresh faster than it does. I've switched to a Logitech G Pro primarily because of the marked difference in responsiveness.

The one thing that might be difficult is doing the scroll detection, since the SlimBlade produces scroll events when you rotate the ball about the vertical axis. Maybe I could get one of those kendryte thingies to do realtime inferencing on a model to discriminate scrolling from pointing.

</comment><comment><USER8> Searching "ADNS2026" results in this page and this page only. His link to SparkFun is "ADNS2620". Typo?

Also, his photo reads "ADNS2016"..

<comment><USER9> ADNS-2620 does seem to be an obsolete part on digikey: [https://www.digikey.com/product-detail/en/broadcom- limited/A...](https://www.digikey.com/product-detail/en/broadcom- limited/ADNS-2620/516-2238-5-ND/705066)

</comment></comment><comment><USER10> Even though it's mostly frivolous for a mouse...

I've gotten myself into the QMK world, and was recently thinking about the possibility of something like this.

My thought was to start with a atmega32 or something. Might venture down that path when I get a free weekend or two now that I have access to a 3d printer.

<comment><USER6> See my separate comment about QMK and the ploopy.

</comment></comment><comment><USER11> Sweet! now I can finally make my vertical mouse + numpad + modifiers + thumb scrollwheel + lasers.

</comment><comment><USER12> Seems like the logical next step is that we'll see a lot of slickly machined cases...

<comment><USER6> Most likely 3d printed.</comment></comment>


New productivity software startups - <AUTHOR> https://www.ben-evans.com/benedictevans/2019/9/27/new-productivity <comment><USER3> I worry this is going to end up with a Cambrian explosion of tools that don't interoperate with each other. This is the main side effect - anything that can be made into a business productivity app will be made into a business productivity app whether it makes sense or not.

For example - Facebook made itself into a productivity app, called Facebook at Work. It's not great, but they use it. Notepad, Excel, literally anything that is a good 'single-player' experience will eventually end up one, either built by a third party, or if they're smart and act fast, their own. It's not a bad thing, it's just probably better to let things shake down on their own for a while. We're just now getting the social aspect of work right, after a decade of Google Plus grade attempts.

(Disclosure being, with some irony, is that I make a Reddit as an engineer productivity app at [https://aether.app](https://aether.app), so I have some personal experience with this proliferation.)

<comment><USER4> This "Cambrian explosion" is exactly what we're trying to help with at Monolist ([https://monolist.co](https://monolist.co)).

The number of tools used daily is growing, which is in one way beneficial for the worker since they get a better and more specialized tool to do their work. However, it increases fragmentation and the chances of missed work.

Email is the most common solution, but that has its own downsides and seems to be used less and less for daily work. We think the solution is an ever- updating and fully synchronized "command center" for everything across every app you may be using.

<comment><USER5> I think instead of another tool to wrangle too many tools is as you already headed off: email.

Gmail already reminds me of stuff like emails I didn't respond to. I've set up some filters and scripts to do more like create a triage queue for PRs and such.

<comment><USER4> Email does indeed catch and notify you of most things, and Gmail is getting smarter every day. The one major downfall, though, is that it's stale: the minute you receive an email it's out of date, and if anything requires additional emails to send updates.

It's also those "filters and scripts" you've set up to create your own triage queue that we're trying to replace. The average user should not have to write scripts to receive and process their work in an efficient manner. That's what we're trying to solve at Monolist!

</comment></comment></comment></comment><comment><USER6> > There's an old joke that every Unix function became an internet company

Yes! I remember that. I worked at Sendmail at the time (a unix function that became an internet company) and we joked about starting a sister company called Syslog.

Given how many logging companies have sprung up since, maybe that wasn't such a bad idea!

</comment><comment><USER7> I've been using Onshape and it's INCREDIBLE. It is a fully featured CAD package with assemblies, revision control, constraints etc. It makes Google SketchUp look like Notepad. I'm just using the free version (requires your files be public) but it's VERY much like SolidWorks. It's really an achievement in web app development.

<comment><USER8> The founders also created Solidworks ;)

</comment></comment><comment><USER9> I think one of the reasons for this explosion in new productivity tools we are seeing is the remarkable progress the web platform has made in recent years. I know web developers complain about the rapid speed web technologies are moving, but I personally am amazed by what's possible today. True, it's hard to keep up with everything, but I can't wait to see what will come out of WebComponents and WebAssembly.

Also putting all software in the browser doesn't necessary mean that the users have to give up control over their software and data. Maybe there's a middle ground by making it easy for the end users to run their own software in the browser. At least this is an idea I've been working on for quite some time - <USER2> self-hosted visual (no-code) software builder called FormBeaver[0] that let's users build and host their own custom database software without any code. Currently the users need to download it and run the App Builder on their own machine for it to work, but I'm hopeful that in the near future it would be possible to put it entirely in the browser thanks to WebAssembly. The one thing that's missing in the browser right now is an SQL database. I haven't found a way to run SQL in the browser.

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

<comment><USER10> > The one thing that's missing in the browser right now is an SQL database. I > haven't found a way to run SQL in the browser.

Actually, there's a way: [https://en.wikipedia.org/wiki/Web_SQL_Database](https://en.wikipedia.org/wiki/Web_SQL_Database) (see [https://caniuse.com/#search=websql](https://caniuse.com/#search=websql) for browser support)

You can see a live example with SheetJS here: [https://sheetjs.com/sexql/](https://sheetjs.com/sexql/)

Unfortunately, Web SQL Database has been deprecated in favour of IndexedDB, which in my opinion is no real replacement because it's a NoSQL database that's nowhere near as powerful in terms of the queries you can run with it.

However, the deprecation is understandable from a browser vendor's point of view. Maintaining and developing a browser is difficult enough as it is. Having to maintain an RDBMS adds a lot of complexity on top of that for what's probably a marginal use case for most users.

That said, it might be possible to integrate SQLite by using browser extensions. That of course depends on the users' willingness to install a browser extension in order to run your software builder.

</comment></comment><comment><USER11> I'm curious how the author's definition of "presentation software" might differ from mine:

> from a stand-alone PC application that saves files to a file share into a > new collaboration-first web application. (I would really like someone to do > this for presentations)

I consider that market fairly saturated: Google Slides, Prezi, slides.com...

<comment><USER8> I would like version control, tracking and sign-off per side, common central library (change this slide and it changes everywhere - good luck doing that with OLE)... I want workflow.

Using Slides etc is like moving from Excel to Sheets instead of moving to Everlaw or Salesforce - there's no change in the workflow. Slides is just a light-weight copy of Powerpoint, 'but on the web!'.

<comment><USER12> Not necessarily for presentations. We are working on a new work-sharing and communication platform for professionals that offers document versioning , tracking, workflow and e-signature ([https://airsend.io/](https://airsend.io/)). From our customer development interviews we have found out that the "work context" is the most important thing.

</comment></comment></comment><comment><USER13> Is there anything in the backend arena that a small business couldn't do with an excel spreadsheet?

<comment><USER14> Yes, 1) be irresistibly fun to use, 2) prevent users from doing the wrong thing, 3) be an aspirational purchase.

That might sound like I'm making fun of productivity software, but I'm not—-now that instant communication is a commodity, organizational/productivity software has value mostly because it's a self- limiting tool that shapes how we think and interact so we can do what we were already capable of doing.

<comment><USER15> #2, and this comment in general, is a great point.

I recently wrote my first piece of productivity software, which I use everyday. The main benefit I get out of it is reminding myself, "This structure is how I want to think about things."

The unlimited freedom of a spreadsheet comes with downsides, at least for me.

<comment><USER16> I keep a few emacs tables and template files for doing creative workflows. It's easy to learn (once you bought into the eco system), fast to create (measured in minutes instead of hours or days), easy to use, and easy to modify.

The big downside to emacs for productivity is that it's less easy to share.

</comment></comment></comment></comment><comment><USER17> How many people prefer the desktop Slack app over the web interface?

I suspect many people are going to "rediscover" native desktop clients that are connected.

Microsoft is the dark horse here. Office is more than a bunch of productivity apps. It's an established platform.

<comment><USER18> Let's not get ahead of our self. The Slack desktop "app" is a repackaged browser running an SPA. That is the antithesis of a native desktop app.

</comment></comment><comment><USER19> I've worked in ediscovery software for years. Everlaw is definitely an up and coming player with an attractive interface, but no serious law firms/in house counsel have been using spreadsheets to conduct reviews for, oh, two decades at least

</comment><comment><USER20> > _There's clearly a point in the life of any company where you should move > from the list you made in a spreadsheet to the richer tools you can make in > coolproductivityapp.io_

Now _there 's_ a snazzy domain name (that, alas, was already taken).

But I was able to yoink the almost as catchy [http://coolproductivityapp.com](http://coolproductivityapp.com).

Hey VCs, where you at? ;)

</comment><comment><USER21> I don't know how I got anything done before Monday.com. I am dead serious to. I failed to even keep to do lists up to date in anything else.

<comment><USER22> Do you use it as an individual? As in just for organizing your own personal tasks and todos?

<comment><USER23> Also my question

</comment></comment></comment><comment><USER24> Slightly off topic, but there is some overlap between productivity and usability so some of you might be interested in my write up 10 important usability tools:

[http://smashcompany.com/top_10_usability_testing_tools/](http://smashcompany.com/top_10_usability_testing_tools/)

</comment><comment><USER25> Frame.io looks fantastic for collaborative video editing.

I've been waiting for a lot of this to move into the browser so the workhorse server machines can do all the heavy lifting.

I want to build a similar product for speedy, automated editing, and a head's up for dailies and on-set editing.

</comment><comment><USER26> Nice article. Sad to see Timelinr not mentioned, though.</comment>


Scala – The Next 5 Years - <AUTHOR> http://www.scala-lang.org/sites/default/files/odersky/scalaliftoff2009.pdf

<comment><USER2> My nose says Scala is headed in a good direction. They seem to get some important things right, it's a fast language, it's based on a widely used platform, and while there are some new things in the syntax, I don't think it's something so completely alien that it will put less adventurous programmers off.

I haven't used it for anything yet, though... if you have, what do you think of it?

<comment><USER3> I have used it for writing a compiler for a research project. It is a great language so far. Even if you stick to a subset of Scala fairly close to Java, even then its a pretty big win. There are lots of little goodies. For example, type inference is really nice. For-comprehensions are pretty sweet. Lists are pretty awesome. Optional parenthesis for method calls is nice. And so on and so forth. These little things make Java a lot less annoying.

Of course, the little goodies are the tip on the iceberg. There is a lot more to Scala, primarily its support for FP but the learning curve is also much harder for those features. Power at the cost of learning.

On the downside, sometimes Scala code is TOO compact. For example, stuff like operators for list operations can be fairly hard to read without practice.

Interfacing with existing Java libraries is also easy. I have not tried calling Scala from Java however.

Overall I recommend the language. Its mature enough to be used for real projects and its a lot nicer and whole lot more powerful than Java.

<comment><USER4> > Its mature enough to be used for real projects and its a lot nicer and whole > lot more powerful than Java.

Sure, but that's not exactly saying a lot.

<comment><USER2> Actually what says a lot is that integration with Java is pretty easy, and it's more powerful than Java. That means it's easy for the hordes of Java users to jump ship, without, say, facing a rewrite to Ocaml or Erlang or Visual Haskell ++. That's pretty important.

</comment></comment></comment></comment><comment><USER5> A whole lot of nothing! Save yourself the bandwidth....</comment>


Cassini has crashed into Saturn - <AUTHOR> https://www.washingtonpost.com/news/speaking-of-science/wp/2017/09/15/the-cassini-spacecraft-just-crashed-into-saturn/?hpid=hp_hp-top-table-main_cassini-801am%3Ahomepage%2Fstory&utm_term=.d3221ee3501f <comment><USER2> Final Images ( choose Grand Finale )

[https://saturn.jpl.nasa.gov/galleries/images/](https://saturn.jpl.nasa.gov/galleries/images/)

I wonder if it got destroyed or just lost the signal due to the atmosphere.

Amazing times to live.

<comment><USER3> Incredible. It's easy to forget that it's not so long ago that our not-too- distant ancestors looked up at the sky and noticed that these stars wandered in the sky a little bit differently from the others. What they would have thought if they'd have known that we would be sending probes to these places and sending images home.

</comment></comment><comment><USER4> we've probably seeded it now with bacteria from earth.

<comment><USER5> That's actually an interesting question - are there layers of Saturn's atmosphere where Earth-borne bacteria could survive? Someplace where the temperature and pressure are capable of supporting life, and where there might be some nutrients for them to feed on?

<comment><USER6> Well if there are any tardigrades on board they'd probably be able to survive:

> Individual species of tardigrades can survive extreme conditions that would > be rapidly fatal to nearly all other known life forms, including complete > global mass extinction events due to astrophysical events, such as > supernovae, gamma-ray bursts, large asteroid impacts, or passing-by stars. > Some tardigrades can withstand temperatures down to 1 K (−458 °F; −272 °C) > (close to absolute zero) while others can withstand 420 K (300 °F; 150 °C) > for several minutes, pressures about six times greater than those found in > the deepest ocean trenches, ionizing radiation at doses hundreds of times > higher than the lethal dose for a human, and the vacuum of outer space. They > can go without food or water for more than 30 years, drying out to the point > where they are 3% or less water, only to rehydrate, forage, and reproduce.

From Wikipedia: [https://en.wikipedia.org/wiki/Tardigrade](https://en.wikipedia.org/wiki/Tardigrade)

<comment><USER7> They'd survive for a while but in the end they'd have to live _off_ something, what would they live off on Saturn?

</comment></comment></comment></comment><comment><USER8> Earlier discussion:

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

<comment><USER3> This links to the same post</comment></comment>


Parents investigated for neglect after letting kids walk home alone - <AUTHOR> http://www.washingtonpost.com/local/education/maryland-couple-want-free-range-kids-but-not-all-do/2015/01/14/d406c0be-9c0f-11e4-bcfb-059ec7a93ddc_story.html?tid=trending_strip_1

<comment> k-mcgrady Please use the actual title: "Parents investigated for neglect after letting kids walk home alone"

</comment><comment><USER2> I walked ~2 miles to school every day at around that age (during the late 80s). Not sure there's any reason to believe that life is any more dangerous now that it was then.

<comment><USER3> I can see a reason they believe this. Just not a good one.

'When I were a lad' we got the local paper delivered every afternoon (by children, ironically enough). We watched the day's national news on TV at 6pm, followed by the local news at 6:30.

In today's world, even trivial news such as this can reach me, the same day, over 5000km away. The world feels like a much darker place, because I'm exposed to so many more evils. And even though the vast majority of them shouldn't, they do end up interfering with our already poor ability to judge risk.

Many years from now, when I'm deciding whether or not it's okay for my hypothetical children to walk to school - this story might vaguely cross my mind, in that strange way our memory is prone to - and end up factoring in my choice somehow, despite the irrelevance of some tiny muni half a world away.

Our brains just aren't good at this.</comment></comment>