The Battle of Waterloo: A Near-Run Thing - <AUTHOR> http://www.economist.com/news/books-and-arts/21651775-appallingly-bloody-yet-decisive-battle-waterloo-june-1815-deserves <comment><USER2> If you have a deeper interest in Napoleon I heartily recommend the Napoleon podcast [http://napoleonbonapartepodcast.com](http://napoleonbonapartepodcast.com).

One of the things I learned was that the British started the wars and continuously broke the peace agreements. Still to this day most people think the reverse. It has to stand as one of the most successfully executed propaganda campaigns of history that people still think it 200 years later.

And yeah he was not short. He is listed as 5.2 but in modern units that is 5.7 which was above average height for the age.

</comment><comment><USER3> > _aimless wandering in the pouring rain of the Compte d 'Erlon..._

 _compte_ => account

Count => _Comte_

</comment><comment><USER4> I can't understand why the British allowed Napoleon to go into exile a second time. My sentiments would be more along what the Prussians wanted to do.

Instead of just being a cliche, "heads will roll for this" should have been something that Napoleon should have experienced firsthand.

</comment><comment><USER5> The article does not match the title given, you will find no condensed account of the battle of waterloo here, only vague hints and advertisements to make you buy the books referenced.

A more suiting title would be "Books about the battle of waterloo."

In short: advertisements.

<comment><USER6> The economist runs a bunch of book reviews every issue. It's an advertisement as much as any review is an advertisement. Within the context of their print issue, there'd be absolutely no way to miss that these were book reviews - it's an entire section.

</comment></comment><comment><USER7> So I can't stand it, so I'm going to blurt it out.

Yesterday, or maybe the day before, HN had another article by the _Stop Drawing Dead Fish_ guy [http://worrydream.com/](http://worrydream.com/), which is one of those things that when you see it you say, "Of course he's right." Today we have these reviews of fresh books about a major battle and while they are probably very good (I thought to buy the BC one, myself), _they are dead fish._ It's a battle, and a complex one! Why are there not dynamic maps of the field, where you can fly through like on Google maps and that are situated depending on where in the book you are when you click on them? Why is there not a timeline so that on each page you can click to see what is happening at that moment on other parts of the field? Why can't you click on people's name and have a little bio pop up? At least put names in color so I can tell who they fought for? Why can't I click on a place name and hear it pronounced?

Why are there not videos of soldier's uniforms, and of armaments of the time? Music people sang as they marched into battle? If you carry this book to the field, will it tell you, "you are now at the spot Wellington stood on at 12 noon"?

I get that one reason is the lack of a format. I write some math materials and while I have looked, that I know of there is no format that is (1) typographically acceptable (that I have seen, that lets HTML and the Word formats out), (2) dynamic (PDF under Linux won't go), and (3) reasonably open. Very frustrating.

Maybe I've got it all wrong, and I certainly do not have the technical chops to do anything about this, but it seems, to me anyway, like there is a hole here. Anyway, end of blurt.

<comment><USER8> So...basically, the days of Flash apps and navigation, like when local restaurants would pay some dev godknowshowmuch to make a whizbang Flash app that made it impossible to find just the phone number or address without clicking some obscure button placed in an erratic location?

The technology to make what you want is possible. It's been arguably possible for a very long time. But it's hard to make, and hard to design. And that's even before considering mass usability aspects.

I may be getting old but text with graphics and linear scrolling are just fine. I expect to be entertained by linear movies and TV shows and podcasts for a very long time. We've had the technology and capacity to store "choose- your-own-ending" movies on DVDs for a very long time...and yet, that almost never happens, for reasons of usability, consumer enjoyment, and production overhead.

Hell, we've had the ability to do pop-ups and choose-your-own-adventure books for centuries now. And I'm glad most novels and books have been linear page turners.</comment></comment>


Apple must recall or fix all 2011 Macbook Pros with Graphics Failures - <AUTHOR> https://www.change.org/p/timothy-d-cook-replace-or-fix-all-2011-macbook-pro-with-graphics-failure?recruiter=70115427&utm_campaign=mailto_link&utm_medium=email&utm_source=share_petition

<comment><USER2> I had this problem on my MBP from 2008. I spent $175 with a 3rd party fixit shop and am happy to say it's still kicking as I'm writing this. I was pretty bummed when it happened but I'm happy to say I have a computer from 2008 that is still useful in 2014 and runs the latest software just fine.

</comment><comment><USER3> Problems with Macbooks are not just limited to the graphics card. Many of my colleagues have had either hardware or software problems with theirs. I am not trying to start a flame war, I am just making an observation.

The Macbook I bought in 2007 was the best computer I've ever owned, and it still works! I wish I could say the same about my wife's new Macbook purchased last year. It will freeze for minutes at a time, the app store won't load, and safari will not open no matter how long we wait, so we have to use chrome.

</comment><comment><USER4> I think we should the same thing with the retina "gohsting" issues that is occuring in the first macbook pro retina sold.

</comment><comment><USER5> Will anything actually happen if in fact this reaches 25,000 signers? Doubtful, but I signed anyways.

<comment><USER6> I don't know if it would. But Apple has been pretty successful with keeping this issue low-key as of now. Maybe if enough external channels are used they might feel pressurised enough.

</comment></comment><comment><USER7> Is that page available in English?</comment>


Chinese woman, 24, returns home after living in internet cafes for a decade - <AUTHOR> http://www.scmp.com/news/china/society/article/1881751/chinese-woman-24-returns-home-after-living-internet-cafes-decade <comment><USER2> Just shows a Chanel ad for me (iPad mini 2)

<comment><AUTHOR> I'm not related in any form to the website. I just shared a link because I found the story funny/interesting.

PS: The story is displayed just fine on Firefox with uBlock</comment></comment>


Why we will never see a 15-hour work week - <AUTHOR> http://www.sphere-engineering.com/blog/15-hour-work-week.html?

<comment><USER2> Indeed, but the point is that we're about to see a systemic change.</comment>


Show HN: Whapp-irc – A simple WhatsApp IRC gateway - <AUTHOR> https://github.com/lieuwex/whapp-irc <comment><USER2> It looks like this opens a copy of WhatsApp Web and instruments it as its client. And it uses compiled class names like `._2EZ_m` to interact with the DOM. Unless I'm missing something, this will probably break weekly or every time they release a new build of the frontend. Not sure if there's a better way?

<comment><USER3> One alternative is sandboxing the js code (or using existing browser or networking logging capabilities) to reverse engineer network requests and write a more raw client instead of piggybacking onto the web client, that would still have risks of changes but less likely than this.

<comment><USER4> > reverse engineer network requests and write a more raw client

People already have done that. The most famous example is the yowsup [1] python library. The problem with these client implementations is that WhatsApp is banning any numbers that use them [2]. So most recent attempts to use WhatsApp outside of the official clients revolve around using WhatsApp Web somehow. That appears to work better, but even here if you are using it on a long term basis, WhatsApp might ban you.

Ultimately, WhatsApp is a bad host when it comes to using their service outside of the official app. This is really sad for people like me who don't want to install WhatsApp on their phones because it sends too much of my data to Facebook... probably that's precisely why they are so strict, to get all the data because that's all they get (the service is gratis after all). That and spam.

[1]: [https://github.com/tgalal/yowsup](https://github.com/tgalal/yowsup) [2]: [http://google.com/search?q=yowsup+name+ban](http://google.com/search?q=yowsup+name+ban)

<comment><USER5> How can the server component of WhatsApp tell that the client is using the Python library you mention? If that library implements the protocol correctly, shouldn't it be indistinguishable from the official web client to the server?

<comment><USER4> Creating a _correct_ implementation of a protocol is one thing, creating one that is _indistinguishable_ from another implementation another. E.g. for TCP/IP you can find out the OS just from the additional information even though implementations are correct [1]. I guess they are doing something similar. And even if your protocol implementation were perfectly indistinguishable from the other one, usage patterns might reveal differences. E.g. if you have a bot then bots will most likely reply immediately after you issue a command. If you add a constant wait time, it's still distinguishable from humans typing at varying times. Same for uniformly randomly distributed wait times, I'm sure there is a distinction (I'd say it's correlated to message length for example). All of this is visible without looking at the message contents, which are obviously not available to the WhatsApp service.

[1]: [https://en.wikipedia.org/wiki/TCP/IP_stack_fingerprinting](https://en.wikipedia.org/wiki/TCP/IP_stack_fingerprinting)

</comment></comment></comment></comment></comment><comment><USER6> My solution was to run WhatsApp in emulator and enable adb over tcp and send adb commands from server directly to emulator. I automate sending messages and pdf files from our erp system. and for receiving messages we just have a Whatsapp web available for one of our employee so he can reply and escalate whatever.

<comment><USER7> What's a shame here is that the "WhatsApp Business API Client" [1] would actually be the perfect tool for personal projects like this. Unfortunately, its still being reserved for use by only larger businesses planning to use it at scale, so they can be meaningfully paying customers.

Offering low-volume non-customer-facing free access to a product like this would likely make everyone here quite happy.

[1]: [https://developers.facebook.com/docs/whatsapp/getting- starte...](https://developers.facebook.com/docs/whatsapp/getting-started/)

<comment><USER4> Indeed, it would be great to have something like this for non-business customers as well. Right now it's very much targeted at large businesses atm and seems to want a beefy computer, so you can't really install it on your RPI.

[https://developers.facebook.com/docs/whatsapp/faq](https://developers.facebook.com/docs/whatsapp/faq)

> For single-instance production server setup, we recommend at least 250 GB > SSD, 16 GB RAM, and 4 core CPU.

[https://www.facebook.com/business/m/whatsapp/business- api/](https://www.facebook.com/business/m/whatsapp/business-api/)

> In order to ensure a high quality experience for businesses and users, we're > in a limited public preview. If you'd like to work with us, submit more > information about your business for consideration as we continue to expand > our availability.

<comment><USER7> The beefy computer requirements are really just the result of needing to invent pie-in-the-sky specifications for the website, and wanting to avoid any bottlenecks when running at high load. Remember, most of the current customers are trying to actively communicate with an enormous number of contacts.

The truth is that the product does not actually need much RAM, and storage is a direct function of the number of conversations and messages you're handling with the product. The main bottleneck is really just I/O for the databases. For the use cases of everyone here, it absolutely could run on an RPi. Easily.

</comment></comment></comment></comment><comment><USER8> Time to finally add a bot to my WhatsApp group chat!

<comment><USER9> My thoughts exactly! What do you recommend in terms of IRC bot building tools?

<comment><USER10> There are a whole bunch of tools but you really only want something simple that gives you an infinite loop that runs every time a message comes in and gives you access to the current message as an object

</comment></comment></comment><comment><USER11> fwiw, a similar project for bridging WhatsApp into Matrix is [https://github.com/tulir/mautrix-whatsapp](https://github.com/tulir/mautrix- whatsapp).

</comment><comment><USER12> why hasn't there been anything like this for iMessage? or any 3rd party applications at all, really.

<comment><USER13> Is iMessage even a thing outside the US? Everybody in Europe uses WA or Messenger, at least

<comment><USER14> The iPhone has about a 56% market share in the US, compared to a 26% market share in Europe (with the UK being the outsider with 52% market share).

That makes a huge difference: in Europe it's very unlikely that everyone out of any group of friends has an iPhone, making Whatsapp, Telegram etc the goto solutions for group messages.

Apple is also huge in Japan, but I don't know what kind of chat apps are used there.

<comment><USER15> Line, mostly.

</comment></comment></comment></comment><comment><USER16> Is there any chance Whatsapp the company will try to take this down and if they do is there any chance it might survive?

Whatsapp has been notorious for taking down third party APIs and any tools that allow message automation.

</comment><comment><USER17> Very nice project.

I would like to move away from WhatsApp for privacy reasons and out of principle.

Could I use this to set an auto-reply message to users contacting me, redirecting them to my new messenger e.g. Signal?

<comment><USER18> If you don't mind having a phone (or emulated phone) being on at all times running the whatsapp native app, and if you make an IRC bot that automatically replies to things, yes that's possible.

</comment></comment><comment><USER19> Why did you build this? What are you using it for?

<comment><AUTHOR> I wanted to chat using WhatsApp comfortably using my Weechat setup.

</comment></comment><comment><USER20> should call it WhatsIRC

On that point though, what do people think when they see WhatsApp the name? I get the whole whats up thing, but whenever I see the name I think "What's App???" as in What is App???</comment>


Mac OS X Sudo Password Bypass - <AUTHOR> http://packetstormsecurity.com/files/122965 <comment><USER2> This is quite a common way to bypass sudo (get access to a user who already logged in as sudo and reset clock), I remember seeing the same exploit (or variations) time and time again, for multiple systems.

</comment><comment><USER3> I'm very surprised that the 'sudo' timeout feature wasn't implemented against the system's RTC using something like CLOCK_MONOTONIC. Or put differently, the idea that you'd use absolute time to implement a requirement that's defined in terms of relative time seems a bit absurd. Anyone have any clues as to why this wasn't implemented that way?

For reference, CLOCK_MONOTONIC is defined in time.h and is part of the POSIX standard.

From the 2004 version of 1003.1:

      CLOCK_MONOTONIC
        The identifier for the system-wide monotonic clock, which is defined
        as a clock whose value cannot be set via clock_settime() and which
        cannot have backward clock jumps. The maximum possible clock jump
        shall be implementation-defined.

[http://pubs.opengroup.org/onlinepubs/009695399/basedefs/time...](http://pubs.opengroup.org/onlinepubs/009695399/basedefs/time.h.html#tag_13_76)

Edit: This is also an excellent example of why "nullability" is a really, really important concept. If the choice was to delete the timestamp file rather than set it to a magic number which is also an allowed value, this issue could be avoided by simply treating "missing timestamp file" as a timestamp value of -inf.

Edit 2: Just doing a bit more reading on this... on many platforms CLOCK_MONOTONIC resets on reboot, so that's no bueno unless combined with a surefire reboot detection method (if you know of one, go answer my StackOverflow question here [1]). You'll also want to fail the check if the time value read is less than the one stored (indicates overflow or other tampering, and overflows _should_ be far enough apart that this will never happen). It's also subject to NTP time slewing [2] which could be another attack vector. Some systems have support for a CLOCK_MONOTONIC_RAW which is not subject to slewing, however I don't believe this is part of the POSIX standard, and if you were to use this there's a decent chance it wouldn't be very accurate on systems with cheap/noisy/otherwise-inaccurate RTCs.

1: [http://stackoverflow.com/q/18539724/203705](http://stackoverflow.com/q/18539724/203705)

2: [http://www.ntp.org/ntpfaq/NTP-s-algo.htm#Q-CLOCK- DISCIPLINE](http://www.ntp.org/ntpfaq/NTP-s-algo.htm#Q-CLOCK-DISCIPLINE)

<comment><USER4> CLOCK_MONOTONIC is not available on OS X. Also, isn't CLOCK_MONOTONIC_RAW fetching the counter from rdtsc instruction on x86? (And therefore can go backwards in time if your process is migrated to another CPU).

Keep in mind, also, that the CLOCK_MONOTONIC is not part of the core POSIX standard, so OS X is technically "compliant" even though they didn't implement it. Add this to a list of annoyances, such as no pthread_cond_timed_wait().

You can, however, get a monotonic clock by getting access to the clock service on mach.

<comment><USER3> No CLOCK_MONOTONIC in OS X?

 _In a David Tennant voice:_ Wait, what?? What?!

      ~$ grep CLOCK_MONOTONIC /usr/include -rn
      ~$

Ahh, it's in the POSIX realtime extension... Dammit.

Apparently [1] one solution would be to #IFDEF DARWIN the following, as on Darwin SYSTEM_CLOCK is _supposed_ to be a monotonic boot clock.

      #include <mach/clock.h>
      #include <mach/mach.h>

         ...

      clock_serv_t cclock;
      mach_timespec_t mts;

      host_get_clock_service(mach_host_self(), SYSTEM_CLOCK,
      &cclock);
      clock_get_time(cclock, &mts);
      mach_port_deallocate(mach_task_self(), cclock);

Not sure if processor affinity would affect that code (don't have time right now to do the in depth reading on it), but you could always set affinity to CPU0. Though then you'd have to make sure to run the sudo'd command as a child process and appropriately reset affinity to default before a call to exec...

<comment><USER5> On OS X, use mach_absolute_time() to get a monotonic clock. A lot of APIs in OS X use the monotonic clock, e.g. CoreAnimation wraps mach_absolute_time() as CACurrentMediaTime() and uses that to calculate animation start times and delays.

</comment></comment></comment></comment><comment><USER6> _" If [...], it is possible to become the super user by running `sudo -k` and then resetting the system clock to 01-01-1970"_

Can users reset the Mac OS X system clock without being an admin?

<comment><USER7> You need to be an administrator, but you do not need to be root. This exploit lets you start from an administrator account for which you don't have a password (but have gained access to through other means, like exploiting an app run by an administrator user) and then leverage that into root access, something that normally requires the password for the account.

<comment><USER8> You can actually prevent the exploit from working by locking the "date and time" tab of the system preferences. The exploit will then cause the usual password popup to appear. (On 10.6 at least.)

</comment></comment></comment><comment><USER9> sudo offers updated binaries for OS X 10.5 and up so you don't have to wait for Apple: [http://www.sudo.ws/sudo/download.html#binary](http://www.sudo.ws/sudo/download.html#binary)

If you don't trust the binaries, I found it easy to update the vulnerable sudo v1.7.0 on my OS X 10.6 machine by building from source and overwriting the one supplied by Apple:

0) Backup /usr/bin/sudo (temporarily; you'll want to delete the old sudo after verifying the new one works), and backup /etc/sudoers just to be safe

1) Download the source for sudo v1.7.10p7 linked on sudo's homepage: [http://www.sudo.ws](http://www.sudo.ws)

2) Untar, ungzip, go to resulting source directory

3) Run configure, telling it to overwrite the vulnerable sudo

        configure --prefix=/usr/bin

4) Compile

        make

5) Install

        sudo make install

6) Delete the old sudo you backed up in (0)

See also the sudo installation notes here: [http://www.sudo.ws/sudo/install.html](http://www.sudo.ws/sudo/install.html)

<comment><USER10> If you use `configure --prefix=/usr/bin`, you'll end up with sudo installed in /usr/bin/bin/sudo. Instead, try

       ./configure --prefix=/usr

to use the /usr hierarchy (/usr/bin, /usr/sbin, /usr/share, etc...) instead of the /usr/local hierarchy.

Also, if you're able to run an executable in the current directory without specifying its location, as in configure instead of ./configure, then you have . (pwd) in your $PATH, which isn't recommended because a malicious executable might be in the directory you're in, and it might be named something like ls. Just listing the directory could have you owned.

<comment><USER9> You're absolutely right on all counts. You caught me writing that sloppily from memory. Thank you for the corrections!

</comment></comment></comment><comment><USER11> Here's a workaround until Apple updates sudo, add the following to you /etc/sudoers file:

      Defaults timestamp_timeout=0

</comment><comment><USER12> The user has to be an admin and have executed sudo previously for this to work. I hope that anybody who's smart enough to have access to this command (and admin membership) is equally qualified to parse scripts that may exploit this vulnerability...

<comment><USER13> A few points:

\- The default user created at setup of OSX is in the admin group.

\- Certainly the 'has run sudo' is a bit of a restriction, but even running something like the Homebrew install script runs sudo. (Maybe 'users that run Homebrew without understanding sudo' is an even smaller restriction, but a few members of my research group live in exactly this intersection!)

\- Do you habitually read every line of source code your computer would execute before you run that code?

<comment><USER12> I was unaware of being placed in the admin group by default. Is the admin group similar to the wheel group or is there also a wheel group for sudo access?

And yes, I very seldom run scripts copied from somebody else so when I do, I make sure I know what is being run. Granted, I'm a Linux and Windows user so the OSX philosophy might be different.

<comment><USER14> The admin group is what it's used for sudo by default.

</comment></comment></comment></comment><comment><USER15> Appears to be fixed in 10.8.5, the MSF posted doesn't work under 10.8.4 for me either.

</comment><comment><USER16> Can someone explain why resetting the clock will give sudo access without requesting a password?

<comment><USER17> When you run sudo, a timestamp file is generated that sudo will then check on subsequent runs of the command allowing the user to continue to run privileged commands without having to type their password every time for a given amount of time (typically 5 minutes). Running `sudo -K` removes the timestamp file to force the user to re-enter their password on the next run of the command, but starting with version 1.6, `sudo -k`, which was an alias for `sudo -K` (I think), was changed to reset the timestamp file to the epoch (January 1st, 1970, 01:00).

This vulnerability allows a user that already has sudo ability to infinitely allow themselves the ability to run any command they already have privilege to run under the given system's sudo configuration without a password forever, because resetting the system clock to the epoch tricks sudo into thinking that sudo has just always been authenticated to run without a password.

This vulnerability does not allow users that already do not have any sudo privileges to obtain them, nor does it allow any users with sudo privileges the ability to run any command with sudo if they are restricted to certain commands.

</comment></comment><comment> vhost- Does anyone know how they fixed this in sudo? I would be interested in knowing how they do a TTL without using the system time for comparison.

</comment><comment><USER18> How much sense would it make to annotate a variable as being representative of a "present time" and then have the compiler insert a check that the variable must be greater than the time at which the file was compiled (plus or minus some fuzz to account for daylight savings and time zones)?

<comment><USER19> Repeat after me "timestamps should always be UTC. Time zones and DST should be left to the display layer".

In any case, as a security measure, preventing the clock from being set before the compile time is a bandaid for a bullet hole.

</comment></comment><comment><USER20> Setting the system clock in Mac OS X doesn't require root privileges?

</comment><comment><USER21> Does anyone else here us EE mobile? When I try to access this story it says it's 'only suitable for over 18s'. Is there something dodgy in the comments?

</comment><comment><USER22> No security that needs time should be based on an insecure clock. Is there any kind of network "verified time" facility using PKC?

<comment><USER19> You'd need interactive signatures to prevent replays of very old timestamps, which significantly hurts scalability of the signed timestamps. However, I suppose with a weaker trust model one could have a federated signed timestamp service, where you could get timestamps over TLS/SSL.

</comment></comment><comment><USER23> Well... this is dangerous...

</comment><comment><USER24> Why not add:

sudo -K

to .bash_logout

<comment><USER25> 1\. Because that doesn't fix the vulnerability, only narrows the window in which the exploit works.

2\. Because it breaks the "ttl" feature of sudo for people who log in and out frequently (e.g., create and destroy terminal windows).

3\. Because .bash_logout is only executed when a login shell exits.

Perhaps a similar but more elaborate solution could work to better mitigate this, though.

<comment><USER26> This is probably good enough for most purposes if the user is somewhat informed.

Always use a new shell for sudo. Always exit that shell when done.

</comment></comment></comment><comment><USER27> Unable to access this url from UAE :-(

<comment><USER28> Also unable to access it from a Virgin train in the UK: 'restricted' because the site is considered 'malicious or inappropriate'.

Can't help wondering if this is how things will be under the upcoming UK Internet 'safety' measures (assuming Cameron survives that long.)

</comment></comment><comment><USER29> This non-bug was discussed last year.

<comment><USER30> Are you sure about "last year"? I thought the bug was assigned CVE-2013-1775 and discussed in late Feb 2013.

<comment><USER17> "Last Year", in internet time maybe. Here's the original CVE:

[https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-17...](https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-1775&cid=3)

</comment></comment></comment><comment><USER31> doesn't work on 10.8.4 for me</comment>


Customer service isn't a department - <AUTHOR> http://jackealtman.com/customer-service-isnt-a-department

<comment><USER2> The problem with customer service being 'separate' is that it quickly loses value. In that sense, OP is correct but one needs to take it further. Once you support a customer, you are supposed to help her for more than just 2 days! You need to take it to conclusion regardless of who you are, even if it means that it takes days or weeks. The best part of that - you build a relationship with that person and if its a B2B thing then you could even add them on LinkedIn, right? ;-) Heck, you could even do some Marketing/Sales for your company and ask them for a testimonial about how good the customer service was! There are even tools for such things - Customer Rivet ([http://www.customer-rivet.com](http://www.customer-rivet.com)), or Testimonial Monkey ([http://www.testimonialmonkey.com](http://www.testimonialmonkey.com)) etc.. End of the day, what I learnt (the hard way) is that you need to support customers not just because its company policy but because it helps you out personally.

</comment><comment><USER3> I don't know if I feel the author fleshed out this conclusion enough to get his point across firmly. Sitting where I am right now I want to disagree only because a lot of his thoughts are hastily concluded and don't reflect a reality of customer service.

Already posted here user `shortsightedsid` talks about how 2 days really isn't very long to conduct "Good" customer service if you are interested in building customer relationships. A big difference between a nameless call center and personal connections is recognizing a name. Saying to Joey that you spoke with Samantha last time isn't necessarily helpful if they don't even work in the same department. Joey relies on Samantha documenting the interaction well enough that he can take off and act like he's already up to speed on the matters. Departments have their distinct advantages to the piece-by-piece solution he describes.

And even now, in my small company I'm required to field customer calls when they're technical in nature. I have my primary clients that I know quite well, I've met many of them face to face and shaken their hands but when I've got deadlines or critical issues hanging over my head I shudder each time my line rings to field another call.

The end he talks about Chess grandmasters and the dedication it takes to do it well. The analogy to me came off wrong where he advocates a jack-of-all-trades method of dealing with customer service yet insists the overall corporation should maintain a master level expertise. How does that occur without establishing a concrete set of protocols and dare I say, departments?

The idea is sound, it probably works in certain cases but overall I think the issue of customer service has been done better in the department model than the diversified one.

<comment><AUTHOR> Non-CS people doing CS will give a worse experience in a single specific case, but will improve the overall customer experience in the long run.

I'm not arguing that companies should get rid of departments, just that they should take CS seriously. I think having all members of the team talk to customers is the best way to give the whole company an orientation toward customer service. 37signals, Stripe, and others do this too, not just Amazon.

</comment></comment><comment><USER4> Attitudinal topics are just some of the cross-cutting concerns, like customer service and security, that often become Tragedy of the Commons if not taken seriously. In large organizations, there does need to be a "Chief _____ Officer" for relevant concerns that has support, authority and wisdom to teach their domain and helps other departments. Not just a title, paperwork, busy work or a mandatory meeting.

</comment><comment><USER5> In addition, entrepreneurs should not dismiss the value of user-testing as part of customer service. So often a startup will have an idea for a product/service and work tirelessly to implement their vision of it without ever taking it out and testing it with users at each step in development. I've learned this lesson myself and it is surprising how often developers misunderstand their users.

</comment><comment><USER6> Yes!

There's one Lean Manufacturing guy who talks about plant safety. He says that years ago they got a great reduction in accidents by eliminating the Safety Officer position. He explanation was basically that if just one person is responsible for something, that means everybody else feels like they can ignore it. By eliminating the position, everybody became responsible.

</comment><comment><USER7> This is the main reason why I love Dogecoin. It is the great customer service that can be found. I do not know another cryptocurrency that offers this business function.

</comment><comment><USER8> Self serving drivel. No function is contained within a single department.

</comment><comment><USER9> No, it is not. It should be an app.

<comment><USER2> An app is just a tool. You still need people to work with customers.

<comment><USER9> That is exactly where the problem is. Ever tried to find human customer service at Skype.com?

<comment><USER2> I guess my perspective is more from handling customers when they use our software development kits. We developed software devkits and our customers built embedded applications using silicon and software. In such a case, there is no way to get away from supporting customers because that's what we did.</comment></comment></comment></comment>


How physics lost its way (2018) - <AUTHOR> https://blogs.scientificamerican.com/cross-check/how-physics-lost-its-way/ <comment><USER2> pbs spacetime on this topic recently:

[https://youtu.be/_izocEgArtQ](https://youtu.be/_izocEgArtQ)

[https://youtu.be/CJx3gLkebIA](https://youtu.be/CJx3gLkebIA)</comment>


location.href='https://www.alexa.com/siteinfo/'+location.hostname+'?ver=classic' - <AUTHOR> <comment><AUTHOR> I wrote this bookmarklet yesterday and I find it pretty useful. When you click it, you see the Alexa rank for the website your are currently on.

Since it is short enough to fit in the HN title, I did not put it on GitHub or something.

If you are not familiar with bookmarklets, here is how you use them:

        1: Bookmark any page
        2: Right click the bookmark and chose "edit"
        3: Give it a nice name (Like "Alexa")
        4: Paste the code into the url field
        5: Prefix it with "javascript:"

So the url looks like this:

        javascript:location.href='https://www.alexa.com/siteinfo/'+location.hostname+'?ver=classic'</comment>


GitHub Game Off - <AUTHOR> https://github.com/blog/1303-github-game-off

<comment><USER2> Apple Store Credit? I'd rather take cash thanks.

<comment><USER3> Yes, it seems strange that github would be giving away prizes that are so... closed.

<comment><USER4> There are more legal restrictions on giving away cash.

<comment><USER5> If Github is willing to give away hardware _or_ Apple Store cash, then I would hope they can be flexible with another form of payment. They're only dealing with five winners, after all.

</comment></comment></comment></comment><comment><USER6> Oh man I'm psyched about this. I love game jams, and GitHub's event will surely draw people new to the concept. The more the merrier!

I'm honestly a little turned off by the prize though. I'd rather there be no prize at all but instead some internet recognition maybe (like Ludum Dare). Perhaps they'll introduce some alternative prizes later on?

<comment><USER7> So give yours to charity when you win it. It's great motivation for a lot of people who would otherwise not be that psyched to participate.

<comment><USER6> I understand where you're coming from, but my point wasn't "I don't want an iPad", but rather that I feel like these prizes specifically cheapen the feel of the jam, especially considering how big github is. I don't know, I guess I've never participated in a game jam with a prize. But seeing as Ludum Dare pulled >1000 participators last jam, it doesn't seem like game developers need too much of a monetary incentive to jam.

In any case, I'm happy that this is happening; prize or no prize :)

</comment></comment></comment><comment><USER8> > You have the entire month of November...

So... it's not November yet. Can you start?

EDIT: They answered this here: <https://github.com/github/game- off-2012/issues/15>

> I should clarify that. Yeah, you can start now :)

</comment><comment><USER9> No joke, on my "ideas to hack on" list, I have: "A game of some kind based on Github pull requests"

I think this could be good.

</comment><comment><USER10> Can anyone recommend me some good game development books for someone who wants to create "small" games as a hobby? By "small" I mean that my goal is to be able to create games for ocasions like the GitHub Game Off, or some small indie games

<comment><USER11> There's a book here that looks good - published by Packt - <http://www.packtpub.com/game-jam-survival-guide/book> ... its by Christer Kaitila, a game developer with 17-years experience. I don't think its got any technical information. I haven't read it myself, but these headings from the table of contents look like good advice...

\- Go with what you know

\- Don't try a new language

\- Don't worry about making it beautiful!

\- Keep It Simple, Stupid!

\- No-art (rectangles) gameplay proof-of-concept

\- Heinous hacks and ugly code are A-OK.

</comment></comment><comment><USER12> I presume the projects that are built are intended to be public repositories, but it is not clear from the contest rules. Is that correct?

<comment><USER13> The original repository you have to fork (github/game-off-2012) is public. You can't make forks of public repositories private, so you're right.

<comment><USER14> The nice thing about git is that it is distributed. Meaning, you don't have to push to your public fork until just before the deadline if you concerned about your ideas being stolen.

<comment><USER15> If you are afraid that your idea will get stolen, don't participate. If its that good, it still will be stolen at the end.

<comment><USER16> I don't see a reason to be afraid about stolen ideas. The way i see it you would enter something like this just for the kicks....not for the prizes..and it's not like the prizes are millions..soo.. :)

</comment></comment></comment></comment></comment><comment><USER17> Anybody want to put a HNers team together for this?

<comment><USER18> I'd be interested! I've got plenty of free time on evenings and weekends the entire next month.

<comment><USER17> Cool, send me an email (check my HN profile), and we'll discuss.

</comment></comment></comment><comment><USER19> No Ipad mini? Those prizes are _so_ last week.

<comment><USER20> Hence the store credit!

</comment></comment><comment><USER21> This is quite cool, the coding alternative to NaNoWriMo.

<comment><USER22> That's what I thought as well.

Also, for anyone who has ever considered doing NaNoWriMo, I strongly suggest you give it a try. It's an amazing experience that not only seriously improves your writing skills, but it also helps you appreciate the craft of storytelling when you read books or watch movies or whatever.</comment></comment>


Show HN: Visual Studio Refactoring Essentials - <AUTHOR> http://vsrefactoringessentials.com/

<comment><AUTHOR> VS Refactoring Essentials is an open source extension for Visual Studio 2015 that provides refactorings, analyzers and quick fixes for your C# and VB.NET code.

</comment><comment><USER2> Is this an FxCop / Stylecop alternative or a Reshrper alternative?

<comment><AUTHOR> FxCop was analyzing IL to come up with suggestions to code smell (which very much broke down when the compilers started generating state machines for eg async/await). Roslyn-based analyzers do this on source code. Thus they work great in finding code issues.

That is one part of Refactoring Essentials. The other part is refactorings, and yes, that is very much like Resharper. (StyleCop is not something we do today)</comment></comment>


HTML5 page structure without hassles - <AUTHOR> http://blog.mostof.it/html5-page-structure/

<comment><USER2> This template is using the <section> element incorrectly, see: [http://www.whatwg.org/specs/web-apps/current- work/multipage/...](http://www.whatwg.org/specs/web-apps/current- work/multipage/sections.html#the-section-element)

"The section element is not a generic container element. When an element is needed for styling purposes or as a convenience for scripting, authors are encouraged to use the div element instead. A general rule is that the section element is appropriate only if the element's contents would be listed explicitly in the document's outline."

</comment><comment><USER3> I've always found:

<http://playground.html5rocks.com/#semantic_markup>

A good resource too.

</comment><comment><USER4> Forgive my ignorance, could someone let me know how older non HTML 5 browsers will treat <header> <article> etc?

Will they just lay them out as divs? If not this seems like a pretty serious barrier to entry for HTML5.

<comment><USER5> Here's a fantastic explanation: <http://diveintohtml5.org/semantics.html#unknown-elements>

The TL;DR is that all browsers treat unknown elements as inline elements, so for older browsers you'll need to explicitly define elements like header, section, etc as display: block.

IE has an extra wrinkle, where it won't apply CSS styles to unknown elements. The fix, which Modernizr applies, is to create dummy elements of each new type in JavaScript _before_ they appear in the page.

Once that's done, IE happily applies styling to the new elements.</comment></comment>


A list of publicly known but unfixed security bugs - <AUTHOR> https://github.com/ludios/unfixed-security-bugs <comment><USER2> > These packages exist in a state of permanent insecurity because they don't > keep up with the ~6-week browser update cycle.

I was expecting this to be a list of known issues of some severity that hadn't been fixed. This seems to be a general criticism of projects, one of which has seen its maintainer step down.

</comment><comment><USER3> It's just a dumb laundry list without clear place for any details if I wanted to add any. For example recent versions of KDE Konsole terminal emulator do the pasting right - the text is first displayed highlighted and really gets pasted only when you press Enter.

<comment><AUTHOR> > without clear place for any details if I wanted to add any

You're looking at a GitHub repo that accepts PRs...

</comment></comment><comment><USER4> It would be nice if they were grouped by severity (remote exploits vs phishing vs user interface bugs, for example)

</comment><comment><USER5> At least with Windows, UAC isn't considered a security boundary by Microsoft, it's more of a generic item there to make users aware that the software they are going to run is asking for special permissions.

</comment><comment><USER6> I like this, this could be useful. The easier it is to access this kind of information the better.</comment>


Where do users look first? - <AUTHOR> http://www.gazehawk.com/blog/where-do-users-look-first/

<comment><USER2> Unless the test subjects were looking at a blank screen these results are misleading. Most websites are designed with visual focus at the top left (logo) and middle of the page, therefore people look there first _because_ the design leads their eyes there. If there is no visually leading content on the page, I imagine the results would be much more random-looking.

<comment><USER3> GazeHawk intern here -- I wrote the article.

I have to disagree. The entire argument of the article is that people learn a specific pattern for looking at websites that they don't use in other contexts; putting a blank screen in front of them wouldn't trigger this pattern.

The test subjects were looking at a large variety of websites. Some used the top-left logo design and some didn't, but this didn't seem to make a difference -- almost everyone looked up and left with their second fixation. I might update the post to make this more clear.

<comment><USER4> I'd be interested to know a couple of things. First, what types of sites were the people in the study were looking at? My gut feel is that I look at news sites in a different way than I look at product sites, for example. Second, for product sites, where do users look when they are seeking a call to action? When I first view a page I am looking for information. went I want to take action, I scan around looking for a button or link.

</comment></comment></comment><comment><USER5> I'm guessing that the study was conducted with readers of a left-to-right language. I wonder what the results of a study on right-to-left or top-to- bottom readers would be.

<comment><USER6> Yes, the article says so explicitly. I'd expect right-to-left readers to essentially mirror left-to-right readers' movements, and a quick look at the design of e.g. www.al-jazeera.net supports this. (Amusingly, the only thing in the top left is labeled "English".)

</comment></comment><comment><USER7> At art school, we were taught that in movies and paintings, a person's gaze tends to enter in the upper right, and loop around in a C shape, exiting the frame on the lower right. Therefore, it's the job of the artist to compose the image to sweep the viewer back up on the right side, to repeat the cycle.

We didn't do eye tracking studies to confirm this, but in analyzing intuitively "good" images vs. "bad" ones, the good ones invariably catered to this kind of eye movement.

Websites control the eye so differently (and more rigidly) than how representational images do, that I wouldn't expect the two to generate similar viewer interactions.

</comment><comment><USER8> _> The conclusion we can draw from all this math is that overwhelmingly, people look at the top left of a website before moving on to other features. That's where they expect navigational information to go; it's where they expect to orient themselves. It's also where you can capture their attention; and it's where you should put your stuff._

And yet, GazeHawk's navigational info is at the top right. :)

</comment><comment><USER9> I would be interested to see the same data used with Asian websites where they read right to left to see the differences. I wonder if the print style of reading varies from how they consume websites.

</comment><comment><USER10> I think there's a chicken-and-egg issue here, as most websites are designed with left or top navigation.

It's also dependent on the subject matter and expectations of the subjects. Alfred Yarbus did eye tracking studies in the 60s that show that there is no "default" saccade path: <http://en.wikipedia.org/wiki/Eye_tracking>

</comment><comment><USER11> Awesome Info!</comment>


Clojure-turtle – Logo programming language in a Clojure context - <AUTHOR> https://github.com/google/clojure-turtle <comment><USER2> Using Clojure as the first language is interesting. Being one of the most expressive and efficient (I am not talking about clock cycles here) languages I've used, I think it will set a great mindset for programming.

Clojure is declarative, you tell what you want, not how you want it. It uses immutable data structures and functional programming. It teaches you a sane, safe and beautiful way of working on the problems rather than working against/around/because of your language (e.g building OOP design patterns rather than just solving the problem at hand).

Some people might disagree, but Clojure is a very hands-on and practical language. There's not much syntax or quirks to learn; just a big standard library of very useful functions for processing and transforming data.

<comment><USER3> > There's not much syntax or quirks to learn

Except if you don't know Java.

<comment><USER4> This is a common misconception. I've never written a line of Java in my life, but have been a professional Clojure dev for several years. I never need to interact directly with Java, because most of the libraries you want to use do that for you anyway, and the language itself is self-supporting and comprehensive to not require interop for nearly everything.

<comment><USER3> I don't know why you assume that I haven't tried Clojure and found the requisite Java knowledge to be a barrier. How did you get into developing Clojure professionally? Personally, learning on my own through resources like Clojure for the Brave and True, I found it difficult.

<comment><USER5> I'd love to hear things you disliked or found confusing. Just for the sake of seeing through others eyes.

<comment><USER3> It's been a while since I tried to get into Clojure/Cljs but when I did I remember errors like the one in this article being cryptic:

[https://8thlight.com/blog/connor- mendenhall/2014/09/12/cloju...](https://8thlight.com/blog/connor- mendenhall/2014/09/12/clojure-stacktraces.html)

> Caused by: java.lang.IllegalArgumentException: Don't know how to create ISeq > from: clojure.lang.Keyword

What's an ISeq? I can guess that' it's part of clojure's implementation from java.lang.IllegalArgumentException, but that's what I'm talking about when saying that clojure isn't a great first language because of how you have to both understand a little bit about clojure and a little bit about java, when it comes to errors and namespaces.

<comment><USER4> Clojure doesn't have the most obvious errors in the world to a newcomer, that is true. A good book on Clojure will quickly remove any confusion about what ISeq means, but a bit of practice makes those low-level understandings not required.

The article you mentioned accurately says this:

> Although Clojure's errors are notoriously unfriendly, they're easy to read > with a bit of practice

Once you realize that much of what happens in Clojure is based on data sequences, it becomes clear that an individual keyword is _not_ a sequence, so it was probably used incorrectly somewhere.

That's an interesting article comparing the errors from Ruby with Clojure. They are about the same, the only difference is that Clojure gives you a lot more information in the form of an ugly stack trace. Fortunately, many editors in Clojure automatically hide the stack trace and only show the error.

After you've seen errors a few times in your first week using the language, fixing them becomes second nature. This is one of the tradeoffs using a dynamically typed language: there will be more debugging of runtime problems. In return for that, you spend less time on other things. The fact that there are very successful languages in both the dynamic and static typed camps shows that benefits can be found everywhere.

<comment><USER5> I wonder what would happen if vanilla clojure came with a commonlisp style debugger on error. CL errors can be intimidating but the interactive debugger makes things almost fun.

<comment><USER4> Figwheel has time-travel debugging, which is nifty. To be honest, my debugging is quite basic and quick, I've been doing it long enough that when I see an error it's clear what the fix is almost immediately. I suspect this is what happens in most languages regardless of their error handling mechanisms.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> Turtles in #lang typed/racket:

[http://docs.racket- lang.org/furtle/index.html?q=turtle#%28de...](http://docs.racket- lang.org/furtle/index.html?q=turtle#%28def._%28%28lib._furtle%2Fmain..rkt%29._turtle%29%29)

</comment><comment><USER7> Was I the only person who did not understand the draw of Logo as a kid? Having to use it in school made me feel like the world viewed me as a lobotomy victim.

And today, whenever one of these teaching-kids-to-program language/environments comes out, I always wonder, "is a real language really beyond the 8-10 year old's grasp?" More importantly, wouldn't using something real be more interesting to kids? The excitement of computers was, for me, about what you could do with them, and if that meant having to learn some scary looking "computer language" then—By God—I would! And it would be exciting!

The turtle did nothing for me except count the minutes before I could go and do something else. Thankfully we had a public library that had computer books. They weren't the best, but they were about real computer things.

I wish someone had introduced me to Lisp as a child. It's so fundamental. I remember thinking in similar terms, and would have had my mind blown on so many different levels if someone had introduced me to Lisp when I was 8-10, or even younger.

<comment><USER8> > Was I the only person who did not understand the draw of Logo as a kid? > Having to use it in school made me feel like the world viewed me as a > lobotomy victim.

> And today, whenever one of these teaching-kids-to-program > language/environments comes out, I always wonder, "is a real language really > beyond the 8-10 year old's grasp?"

> I wish someone had introduced me to Lisp as a child. It's so fundamental. I > remember thinking in similar terms, and would have had my mind blown on so > many different levels if someone had introduced me to Lisp when I was 8-10, > or even younger.

Logo is a real language, and it is _extremely_ similar to Lisp; a lot of people even just refer to it as a Lisp dialect. There's a lot more to Logo than turtle graphics, the same way there's a lot more to Racket or Python or any other language that has a turtle graphics package.

Basically, you were more or less introduced to Lisp when you were a kid, and having to use it in school made you feel like the world viewed you as a lobotomy victim.

The problem you encountered probably stems less from Logo and more from being taught Logo by teachers who barely knew it themselves, and who didn't care about or understand anything beyond turtle graphics, so that's all they're able to teach to students.

Here's a good introduction to Logo by Brian Harvey with an emphasis on symbolic computation: [https://mitpress.mit.edu/books/computer-science-logo- style](https://mitpress.mit.edu/books/computer-science-logo-style)

<comment><USER7> Thank you! What you describe regarding my experience might very well be possible. And I will look at Logo again. I am sure you are right regarding its design and foundation.

You quoted my question about teaching-kids-to-program languages, but didn't really address it. Are they necessary? Might they not be detrimental? A kid who's interested in programming: wouldn't they be a lot more excited by, say, HTML and JavaScript—which brings the ability to make websites (!!) —than say, moving a robot, virtual or real.

Then again, it is inherently hugely fun to interact with computers in a REPL- style manner, too. I just never felt inspired by the turtle and only kind of resented it. I wanted to learn about bits and bytes and to understand computers.

</comment></comment></comment><comment><USER9> This is great, very small code. The choice of Clojure would make it a bit difficult for a beginner, but hey, then you know a real language.

> This is not an official Google product (experimental or otherwise), it is > just code that happens to be owned by Google.

#1 reason for a hacker to not work for Google, you could program "Hello, World" and they wouldn't sign off on it.

<comment><USER10> The fact that they open-source their code is enough. Imposing the requirement that they must support everything they open-source will mean they will open- source less.

Why should everyone support everything they open-source as an official product? I contest everything you say. This is not the #1 reason. It's not even _a_ reason.

<comment><USER9> You've misunderstood my comment. I'm saying that Google has a reputation for claiming rights to just about anything you present to them. It's that petty IP policy that has this fun little project under their ownership. For many people, particularly those involved in open source, Google's reluctance to let go of employees' side projects is a strong reason to not work there.

<comment><USER11> It is part of the fine print in the job contract for developers and is pretty common in most companies. You don't create a side project while being employed there without the company claiming ownership of it. It is part of a safety net for the companies so that they don't take a loss by an employee claiming copyright of code they wrote for the company during work hours.

According to law if there is no such clause the developer may claim ownership of code he wrote even if he was employed. The contract protects the company from that but also applies to any code written by employees generally (not a nice thing but prevalent).

<comment> vertex-four It's very, very common that if you send an email to the relevant people, they'll sign off on whatever so long as it's not relevant to the business. They don't _really_ want to retain control over your random side-projects.

Google, on the other hand, seems to believe that absolutely everything its employees ever do is relevant to its business.

<comment><USER12> Google has IARC ([https://opensource.google.com/docs/iarc/](https://opensource.google.com/docs/iarc/)), which is a formal process of sending email to the relevant people, and results in a much better legal position than "Bob said it was ok".

<comment> vertex-four Indeed they do - the issue being that according to a handful of Googlers I know, it's surprisingly difficult to get anything through that process.

<comment><USER13> That's really strange, since we've approved >96% of requests, and except for when someone is on vacation, it's usually within 3 days now.

Given how many reply to the approval emails that they found it fast and happy, i definitely find this surprising.

In any case, you are welcome to have those employees reach out to me, i'd love to understand their experience what went wrong.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><AUTHOR> Anyone knows why the ClojureScript code has the same macros (repeat and all) in seperate files? Why can't everything be in the core.cljc file?

[https://github.com/google/clojure- turtle/blob/master/src/clj...](https://github.com/google/clojure- turtle/blob/master/src/cljs/clojure_turtle/macros.cljc)

[https://github.com/google/clojure- turtle/blob/master/src/clj...](https://github.com/google/clojure- turtle/blob/master/src/cljc/clojure_turtle/core.cljc)

<comment><USER14> It was in order to get the CLJS REPL to feel more like the regular Clojure REPL: [https://github.com/google/clojure- turtle/issues/15](https://github.com/google/clojure-turtle/issues/15)

The CLJS-macro story is still a little tricky -- CLJS targets the JS runtime, but you can't easily define macros in a self-hosted CLJS REPL (ex: one that you'd embed in a webpage). Lmk if there is a cleaner way now.

<comment><AUTHOR> Awesome enhancement. I'll keep that in mind. Thanks for the clarification.

</comment></comment></comment><comment><AUTHOR> related: 20 things to do with a computer (1971) from MIT AI Lab

[https://dspace.mit.edu/bitstream/handle/1721.1/5836/AIM-248....](https://dspace.mit.edu/bitstream/handle/1721.1/5836/AIM-248.pdf?sequence=2)

</comment><comment><USER15> It is exciting that people inside Google is using Clojure. The more Clojure gets popular, the better for the programming community as a whole, even if its usage means indirectly giving more fuel to Oracle.

<smug-mode> On the other hand it also means we will thus be able to one-up Google by using Common Lisp... </smug-mode>

<comment><USER16> Google already uses Common Lisp for flight search (acquired from ITA Software). They even have a fairly good style guide written by one of the maintainers of ASDF (amongst others):

[https://google.github.io/styleguide/lispguide.xml](https://google.github.io/styleguide/lispguide.xml)

</comment></comment><comment><USER17> Logo was my first programming language. #Nostalgic Thanks Google and thanks for Clojure implementation.

<comment><USER14> BASIC was my first programming language. Starting with the days of the Commodore 64, Apple IIe, and MS GWBASIC, but I never understood it well enough beyond a number guessing game or so. Then I had a class on Logo, and I was doing cool stuff on my own, and it was so fun! Yeah, I love Logo.

During the time of that Logo class, I tried writing a BASIC program for a programming competition with my new-found confidence. But it was such a spectacular fail that my 11-year old self was literally crying.

I find both Logo and Clojure are profound, simple, and powerful in their own ways. A friend and I are working to take the next step with this project and make this a little more accessible/usable. ;)

<comment><USER18> BASIC was my first language too, but LOGO was the first language I attempted to make an interpretor for (also, incidentally, LOGO was the first language I took a class for, just for fun - something Radio Shack offered for the Color Computer, which was the machine I owned).

</comment></comment></comment><comment><AUTHOR> related (via /r/Clojure): [https://docs.racket- lang.org/turtles/Value_Turtles.html](https://docs.racket- lang.org/turtles/Value_Turtles.html)

</comment><comment><USER19> But, but... Clojure is dying language. Someone been crying about that all over the internet just a few weeks ago. Why Google using a dying language?

<comment><USER19> I've been sarcastic of course. I'm one of those lucky bastards who's got luxury of writing Clojure(script) all day long and get paid for it.

</comment></comment><comment><USER20> my first programming language was logo. nice job dude!

</comment><comment><USER21> Yet another example of how interfaces and ADTs (together with layered DSLs) are _the_ central concerts in classic CS.

<comment><USER22> Honest question: what is nonclassic CS?

<comment><USER21> systemd

More seriously, everything which made MIT to switch from Scheme to Python in the fundamental CS courses.

</comment></comment></comment><comment><USER23> is is significant because it shows google is testing clojure, or is it something else?

<comment><USER14> If you try the interactive examples on the main Readme page all the way to the end, you'll see there's a gradual, subtle shift from cutesy Logo to Clojure- style functional programming. But I owe more doc-writing along those lines, and they that would make that fuller & clearer.</comment></comment>


A $700 Juicer for the Kitchen That Caught Silicon Valley's Eye - <AUTHOR> http://www.nytimes.com/2016/04/03/business/juicero-juice-system-silicon-valley-interest.html?ref=technology&_r=0 <comment><USER2> If people are willing to pay $400 for this[1], which is a manual juice press kludged out of a $12.95 automotive jack.[2], they might go for this $700 device.

And that's before they've hooked the user on the proprietary packs. The thing has DRM, and requires WiFi and an Internet connection just to validate the packs. It has no other legitimate need for an Internet connection. Since it doesn't do anything on its own, it has nothing to say to the user remotely.

Even the guy who invented the Keurig is now fed up with the company. And Keurig was forced to give up on the DRM.[3]

[1] [http://www.amazon.com/Welles-or-Peoples-Juice- Press/dp/B001A...](http://www.amazon.com/Welles-or-Peoples-Juice- Press/dp/B001ACDLX0) [2] [http://www.amazon.com/Torin-T90203-Hydraulic-Bottle- Jack/dp/...](http://www.amazon.com/Torin-T90203-Hydraulic-Bottle- Jack/dp/B0002H3364) [3] [http://www.theverge.com/2015/2/5/7986327/keurigs- attempt-to-...](http://www.theverge.com/2015/2/5/7986327/keurigs-attempt-to- drm-its-coffee-cups-totally-backfired)

<comment><USER3> You're forgetting about _chi_ and _lifeforce_ , those alone are worth the extra $300.

Throwing away a plastic container after every serving is what _chi_ is all about, those other products simply don't have it!

</comment></comment><comment><USER4> You can eat the fruits and vegetables whole, juice and all, and you don't need the machine and its plastic pouches. I don't get it. Why throw away all the fiber?

<comment><USER5> You lose a lot more than just fiber in the juicing process: [http://nutritionfacts.org/video/juicing-removes-more-than- ju...](http://nutritionfacts.org/video/juicing-removes-more-than-just-fiber/)

<comment><USER6> Not all processing is bad ...

 _" Studies show that like frozen produce, canned produce – provided it is free of added salt and sugars – has a nutrient value that is often as good as, if not better than, that of fresh produce."_

[http://well.blogs.nytimes.com/2013/05/27/really-the-claim- fr...](http://well.blogs.nytimes.com/2013/05/27/really-the-claim-fresh- produce-has-more-nutrients-than-canned/?_r=0)

</comment></comment></comment><comment><USER7> This makes me feel genuinely sad.

Say what you like about the first dot-com bubble, but those founders were at worst naive. In today's SV, we seem to have actively embraced malevolent business models. Make something slightly more convenient, then use subtle psychological tricks to exploit your customers.

A $700 juicer with DRM? Individual plastic pouches for a few ounces of vegetables? You can dress that up with new-age buzzwords, but it's an awful way to make a living. A mountain of waste and expense just to avoid the inconvenience of chewing your food.

There's a vulgarity to all of this. A naked, grasping search for recurring revenue at any cost. I recently saw a book entitled _Hooked: How to Build Habit-Forming Products_ with a front-cover endorsement by Eric Ries. Those are the ethics of Philip Morris, without a hint of embarrassment.

Maybe we've picked all the low-hanging fruit. Maybe there are no more good businesses left. Maybe you can't make a profit by selling a useful product at a fair price. Maybe the future of business is just wringing money out of people with dark patterns. I hope not.

<comment><USER8> I hate this almost as much as I hate the Keurig machines. Not only because the coffee is terrible and it's incredibly wasteful, but also what it was about American culture.

</comment></comment><comment><USER9> I juice with the "Breville BJE200XL Compact Juice Fountain 700-Watt Juice Extractor." $99 on Amazon[0] (4.5/5 star rating out of 4,835 reviews). You don't have to chop anything--it's large enough to fit in small apples, pears, beets, etc. Carrots go straight in. Clean up is a breeze with three large easy parts (I clean while drinking my juice). It makes 25 oz of juice max versus 8 oz of this "Juice Box."

So in other words--I love juice but will be sticking with my cheapo juicer.

[0] [http://www.amazon.com/Breville-BJE200XL-Fountain-700-Watt- Ex...](http://www.amazon.com/Breville-BJE200XL-Fountain-700-Watt- Extractor/dp/B000MDHH06/)

</comment><comment><USER10> Don't mean to be contrary here, but why do all of these "back to nature food" things seem, upon closer inspection, to factor down being a way for rich people to once again give mother earth another good poke in the eye with a sharp, plastic, non-degradable stick?

How is this not just Keurig-ing the process of tossing veggies from the local into your blender into a cross-country, plastic-generating, fuel-burning waste-a-thon to prove how very extra-special and enlightened you are? C'mon. Chi? Life force? In a disposable plastic pouch dropped off by Fed-Ex? Dawkins would have a field day.

Sorry for the rant.

<comment><USER11> That's exactly what it is, K-Cups of juice, and it's genius. People love throwing things away instead of cleaning.

And like K-Cups, Juicero has already created a system to lock out generic veggie bags past their patent with the barcode scan to check freshness.

The $700 might be worth it if you were able to use your own reusable veggie squash bag, in addition to their premixes. But, it seems like the smart machines themselves might be sold at-cost if they've built out a distribution network for expensive pouches.

<comment><USER12> $700 is selling them at cost? Seems terribly unlikely

</comment></comment></comment><comment><USER13> For me, eating healthy and exercising routinely requires a lifestyle change. It almost seems contradicting, but if I am going to consistently eat healthy, it needs to consume a larger portion of my life. By sacrificing the money and time to choose and buy vegetables/fruits, prepare, and consume them , I am more likely to continue this process because I don't want to waste that sacrifice.

So for me, products like Juicero that reduce the healthy part of eating to a sacrifice-less convenience would make it a novelty item that wouldn't force me to change my lifestyle and therefor fail to create consistency and tenacity in my healthy eating habits.

From my buying perspective, this product would be just grouped in with the other 'magic' pills and 'get-rich-quick' solutions to becoming healthier.

<comment><USER14> So your philosophy is, "I only do healthy things if they're also painful"? That doesn't seem productive.

<comment><USER13> Sure, you can boil anything down to a contrived sentence that misses the point, but I never once mentioned it being painful. It's much more about building habits, and it's up to you to decide if habits are meant to be painful or not. Choosing healthy ingredients, researching recipes, cooking while I listen to a podcast, and then enjoying a nice meal with good company isn't what I consider painful.

</comment></comment></comment><comment><USER15> Just use a blender, seriously. These hundreds of millions of dollars could be used to do something useful for society.

</comment><comment><USER16> This must be a joke, $120m in funding so you can turn solid food into liquid food, which actually detracts from the food, for just $700.

<comment><USER17> Not to mention that if this catches on those packaged vegetables would be the easiest thing to replicate.

</comment></comment><comment><USER18> The first thing I thought was surley this is an April fools but here is an article about them from January

[http://www.businessinsider.com/juicero- raises-120-million-20...](http://www.businessinsider.com/juicero- raises-120-million-2015-1)

It seems insane to pay $700 for a press and then paying for expensive chopped up vegetable and fruit in a bag... just so you can consume a whole lot of sugar.

<comment><USER19> [https://www.juicero.com/the-packs/just-greens/](https://www.juicero.com/the- packs/just-greens/) 2g of sugar per 8oz. While it is the only one with even close to that amount, it's the one I'd get (I used to make a juice very similar). That's barely any sugar.

Everyone writes off juice as having "a ton of sugar", and yeah, if you make it with only fruit it will. If you use vegetables, the thing that is hardest to eat a lot of, then you are fine.

$700 is alot, although any high quality juicer is going to be in the range of 300-500+. A hydraulic press juicer is going to be the best you can get, extracting everything out of the fruit and vegetables without building up heat.

The cost of the bags are at about $5-$8(I see $5 and $6 on their website so far). Which isn't really that bad. There is zero cleanup, chopping, and planning . I juiced daily for about 2-3 months straight for breakfast, and it takes up a lot of time and money. It was about 30-45 minutes to chop and prepare everything, then sit and run it through the juicer, then disassemble the juicer to clean everything.

The costs for all vegetables added an extra $30-$40 a week to my grocery bill. But I ate the same juice every day as that is what I could prepare for. It was a struggle to make sure everything was still good, and I was throwing away food weekly because it goes bad (sizes of packaged produce varied so it was tough to plan). I wasn't buying organic vegetables, so I saved a bunch of money there.

Honestly for the time savings and the hassle free way to consume, I think the product can work. This would be a great addition to many companies break rooms, and far healthier than any of the other options they provide. I have no idea whether then can make back all the money that's been invested, but we shall see.

<comment><USER9> How many ounces of juice did you drink per day? $5-$8 for 8oz of juice seems pricey. That's the size of a "Short" Starbucks drink... I don't even want my coffee that size.

<comment><USER19> more then double that, probably should have mentioned that haha

</comment></comment></comment></comment><comment><USER20> I like juice and I like kitchen gadgets but wow, this thing is expensive. The only thing it would buy is not having to hassle with owning and using a juicer.

One is still left with the per drink cost, which at these prices does not quite compete with simply going to a juice bar.

This is a very niche and expensive product. I'd worry about the company being around long enough to realize the benefit of owning it.

</comment><comment><USER21> The fact that this thing has raised $100 Million in funding is why I can't take anyone seriously when they talk about VCs, especially when they talk about them making decisions.

</comment><comment><USER22> This is one of the funniest articles I've seen the NY Times publish in months. It seems intentionally written to be referred back to when people ask in future decades about the Roaring Teens Funding Bubble.

Relevant: "Fruit juice isn't much better for you than soda. Let's stop pretending otherwise." [http://www.vox.com/2016/3/25/11305614/soda-juice- energy-drin...](http://www.vox.com/2016/3/25/11305614/soda-juice-energy-drink- consumption-nutrition)

</comment><comment><USER23> I wonder if people who are into juicing really want to have vegetables cut way in advance as they're less nutritious that way. It's nice though that they show the farms the vegetables come from. But anyway I think smoothies are healthier.

</comment><comment><USER24> NYTimes has evolved quite a bit since Paul Graham failed to crack them in [http://www.paulgraham.com/submarine.html](http://www.paulgraham.com/submarine.html)

</comment><comment><USER25> Get out of my way! Off to create the Guicero(sic) Replacement Pouch. Buy once. Chop chop. Press press. Rinse twice. Repeat. Just $65. Dishwasher-safe version $119. Call now, and you'll receive a 2 month farm-to-table membership valued at $200.

I think I need about $20MM and four boxes of Ziplock bags to get started. Who's with me!

<comment><USER26> This is why they have a camera in the juicer to take a picture of the juice packet's QR code which it sends over your wifi to verify with Juicero headquarters that you are using an authentic juice packet. I'm sure with a hack saw, a soldering iron, and a decent knowledge of reprogramming embedded systems you could turn it into a less smart juicer.

<comment><USER25> Meh. Keurig tried the same thing. People cut the lid off a legit pod and taped it on the lid of the refill thingamabob or in the DRM-Keurig machine itself. I accept the challenge!

(I was also facetious. If this isn't an long con April 1st joke, I'll convert all my tech stock into cash next week because I've seen this nonsense in the first bubble...)

</comment></comment></comment><comment><USER27> KP's Podcast "Ventured" talks a bit about the Juicero pitch.

[https://soundcloud.com/venturedpodcast/pitching-a- vc#t=4:00](https://soundcloud.com/venturedpodcast/pitching-a-vc#t=4:00)

</comment><comment><USER28> There could be a small market for that product after all. Think there are a lot of people in SoCal that would pay insane amounts for trendy products like this.

</comment><comment><USER29> Exactly. This is the epitome of waste.

Fuck these terrible 1%-er vegans and the horse they walked gently over here with.

<comment><USER30> Please don't post flamewar-style comments to HN.

We detached this comment from [https://news.ycombinator.com/item?id=11400605](https://news.ycombinator.com/item?id=11400605) and marked it off-topic.

<comment><USER31> Can you retitle this to say "Juicer" instead of "Juice Box"?

Saying "Juice Box" is just click bait so people will gasp at the idea of a juice box so expensive, then you read it and realize it's actually a juicer.

(Sorry for putting this as a reply to this thread - not sure how else to ask for a retitle.)

<comment><USER30> Sure. But in the future, it's best to email email@example.com with requests like these.</comment></comment></comment></comment>


Why Great Sign Language Interpreters are so Animated - <AUTHOR> http://www.theatlantic.com/health/archive/2012/11/why-great-sign-language-interpreters-are-so-animated/264459/

<comment><AUTHOR> Video: [https://www.youtube.com/watch?feature=player_embedded&v=...](https://www.youtube.com/watch?feature=player_embedded&v=20HjI9UNPKA)</comment>


The worst part about Google's Inbox assassination - <AUTHOR> https://www-computerworld-com.cdn.ampproject.org/v/s/www.computerworld.com/article/3304980/email/google-inbox-assassination.amp.html?amp_js_v=0.1#amp_tf=From%20%251%24s&ampshare=https%3A%2F%2Fwww.computerworld.com%2Farticle%2F3304980%2Femail%2Fgoogle-inbox-assassination.html <comment><USER2> I try to switch to gmail every month from inbox. I assumed google was going to kill it, now it's confirmed. The main things missing

\- Easy way to snooze a msg (it gets disabled in weird states) \- easy way to leave notes to myself \- Actually make it easy to manage an inbox 0.

I have to wonder how many people are in my place</comment>


My lunch with AMP Team after "Google may be stealing your mobile traffic" post - <AUTHOR> https://www.alexkras.com/i-had-lunch-with-google-amp-team/ <comment><AUTHOR> Here is the original HN discussion - [https://news.ycombinator.com/item?id=12722590](https://news.ycombinator.com/item?id=12722590)

</comment><comment><USER2> Don't delete and resubmit posts to HN. This is the third time I've seen this post in as many days.

<comment><AUTHOR> Guilty, wanted to change the title and give it another go. Didn't expect anyone to see it more then once.

<comment><USER2> HN does allow a small number of reposts; just not with using deletions to hide that fact.

<comment><AUTHOR> Noted</comment></comment></comment></comment>


Adding and Verifying Bank Accounts - <AUTHOR> http://blog.dwolla.com/api-update-adding-verifying-bank-accounts/

<comment><USER2> The "verification" method seems to verify by checking two deposits. This means anyone with read-only access to your account can now verify ownership via Dwolla. I believe PayPal is the same way.

This kind of verification makes things like the Bank of America lame phone access system turn into a real escalation of privilege.

Although, I'm not sure there's much easier ways to prove ownership of an account.</comment>


Dopamine framework: Fast prototyping of reinforcement learning algorithms (2018) - <AUTHOR> https://ai.googleblog.com/2018/08/introducing-new-framework-for-flexible.html <comment><USER2> I would really like the opportunity to get into RL. At work my team uses GANs and RNN/LSTMs almost exclusively. Any suggestions for specific RL online classes at Coursera, eDX, or Stanford?

I especially like that this framework is set up for experimenting with four popular models and the means to measure how well your models are doing.

<comment><USER3> I came across this a few days ago: For Reinforcement Learning specifically, the standard text is Reinforcement Learning: An Introduction[1]. Dave's UCL Course on RL[2] is great too (playlist of all lectures)[3].

Source: Julian Schrittwieser works on Deepmind at Google [http://www.furidamu.org/](http://www.furidamu.org/)

[1][http://incompleteideas.net/book/the- book-2nd.html](http://incompleteideas.net/book/the-book-2nd.html)

[2][http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html](http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html)

[3][https://www.youtube.com/watch?v=2pWv7GOvuf0&list=PL7-jPKtc4r...](https://www.youtube.com/watch?v=2pWv7GOvuf0&list=PL7-jPKtc4r78-wCZcQn5IqyuWhBZ8fOxT)

<comment><USER4> Thanks for this list. I'd like to get up to speed on RL and see how we can apply it for path planning and control of our gliding parachute UAVs.

<comment><USER5> Ooh! I want one of those for high altitude balloon payload recovery. Got any small ones or hobby grade projects doing this that you're aware of?

<comment><USER4> No hobby ones I know of, although I haven't looked into the hobby space too much. All I can say about smaller systems is give our BD guys a call... =D</comment></comment></comment></comment></comment>


Apple pushes recycling of iPhone with 'Daisy' robot - <AUTHOR> https://www.reuters.com/article/us-usa-minerals-recycling/apple-pushes-recycling-of-iphone-with-daisy-robot-idUSKBN1Z925S <comment><AUTHOR> @dang - dupe of [https://news.ycombinator.com/item?id=22024522](https://news.ycombinator.com/item?id=22024522) but it wasn't caught on submission</comment>


Cryptography Breakthrough Could Make Software Unhackable - <AUTHOR> http://www.wired.com/wiredscience/2014/02/cryptography-breakthrough/

<comment><USER2> Previous discussion: [https://news.ycombinator.com/item?id=7153657](https://news.ycombinator.com/item?id=7153657)

<comment><USER3> And the most interesting comment for me is from pbsd:

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

"It's worth reiterating that this is very much not practical by any standard, and doesn't look anything like the usual software obfuscation used today, even white-box. This thing requires at the very least that multilinear maps and fully homomorphic encryption are anywhere near practical, which is not the case today (and may end up being like quantum computing, always 10 years away)."

<comment><USER2> If you're interested in crypto, you should probably set a bookmark on 'pbsd and read all his comments. Especially if you find me annoying, because I have a habit of setting him up for great comments by being wrong about things.

<comment><USER4> I'm not sure I can handle that kind of pressure :)

</comment></comment></comment></comment><comment><USER5> The papers are over my head, but they both at least mention homomorphic encryption. As far as I can tell, program obfuscation is a related, but distinct mathematical problem.

Has anyone read and understood the impossibility proof[0] from 2001 they linked? My lay understanding is that we've got addition tackled for homomorphic encryption, but multiplication eludes us so far (i.e. algebraic groups but not fields).

If program obfuscation is related to homomorphic encryption, does the impossibility proof of "black box obfuscators" say anything about that multiplication problem?

[0] [http://link.springer.com/chapter/10.1007%2F3-540-44647-8_1](http://link.springer.com/chapter/10.1007%2F3-540-44647-8_1)

edit: thanks tptacek, the previous discussion suggests that this is would be a more ambitious result than "mere" homomorphic encryption.

<comment><USER4> It's obfuscation that is dependent on fully homomorphic encryption (FHE), not the other way around. Therefore, Barak's impossibility proof is irrelevant to FHE.

With respect to FHE, before 2009 we already had some tools. We had RSA, which is multiplicatively homomorphic (this property is the reason behind the need for good padding!). We also had Paillier, which is additively homomorphic. We even had Boneh-Goh-Nissim, where you could do any number of additions plus _one_ multiplication! In 2009 Gentry completed the picture with a partially homomorphic system, based on lattices, where you could do a number of additions _and_ multiplications before losing "precision". Perhaps more importantly, he also gave us the bootstrapping notion, which allows you to achieve a fully homomorphic encryption scheme from a partially homomorphic one, provided you have enough "precision".

Now, what the article talks about is not strictly covered by Barak's theorem, since it's a different notion (also defined in Barak's paper): indistinguishability obfuscation. Barak proved that black-box obfuscation is impossible in the general case (i.e., for every possible program). Black-box obfuscation is the usual intuitive notion we have of obfuscation: given an obfuscated problem, you can't obtain any more information from it than if you were just querying it as a black-box.

Indistinguishability obfuscation is more subtle: given two different programs _that compute the same function_ , you can't tell whether an obfuscated program is the obfuscation of the first or the second one. This at first sounds pretty useless as an obfuscation scheme, since it gives us few guarantees, but the authors took advantage of this notion to get some useful functionality out of it (namely functional encryption, and later other things).

Even more impressive is the fact that they now have managed to prove that a variant of the original scheme is actually black-box secure [1]. How is this compatible with Barak's result, you ask? The black-box proof of [1] is in the multilinear model, which means it is under the assumption that the attacker can only do a limited set of (algebraic) operations. A poor analogy would be to show that some code obfuscation scheme is secure, but only as long as the attacker is limited to using static analysis.

[1] [https://eprint.iacr.org/2013/631](https://eprint.iacr.org/2013/631)

</comment></comment><comment><USER6> Okay, let's calm down. While the result is great, this article does a pretty bad job describing it. "Could" is pretty darn important in the title. We're nowhere near applications here. For those not willing to read the papers, the original Quanta article[1] is better.

I'm flagging this because it's so horribly editorialized.

[1] [https://www.simonsfoundation.org/quanta/20140130-perfecting-...](https://www.simonsfoundation.org/quanta/20140130-perfecting- the-art-of-sensible-nonsense/)

</comment><comment><USER7> I don't understand, at all. If two programs are semantically equivalent then traditional deobfuscation techniques like symbolic execution, constant propagation + folding, dead code removal, etc. should take you pretty far. Throw in some peephole and pattern based rules specifically targeting this obfuscator and you're good to go.

The main link is pretty shit so I may be missing something important. I plan to read the other links provided when I have time, but feel free to help me out by explaining how wrong I am, if that's the case.

</comment><comment><USER8> This is great and all, but what we really need is cryptography to make the titles on science reporting unlinkbaitable.

</comment><comment><USER9> For those interested in a simple introduction to Zero Knowledge Proofs, check out: [http://pages.cs.wisc.edu/~mkowalcz/628.pdf](http://pages.cs.wisc.edu/~mkowalcz/628.pdf)

</comment><comment><USER10> This would be a major boon for video game console makers and game publishers.

<comment><USER11> It's much bigger than that. Read past the third paragraph, it's really interesting.

</comment></comment><comment><USER12> A lot of assumptions and hype in the article.

Usually a bad sign.

</comment><comment><USER13> Wow this could be huge</comment>


Ask HN: Resources for learning Networking? - <AUTHOR>

I feel like I understand a fair bit about networking, but the more I learn the more I realize I know very little.  A few months ago I wrote a bit of the code in Docker that sets up a container's route table in an effort to teach myself more, but I'm not entirely sure where to go from here to keep learning.
What are some good resources around networking that you've found helpful?  Should I just keep exploring man pages?  Are there better and more directed resources out there you've used to go from clueless to dangerous?
Thanks! <comment><USER2> If you have some time, I suggest you read [http://www.amazon.com/Computer- Networks-Edition-Andrew-Tanen...](http://www.amazon.com/Computer-Networks- Edition-Andrew-Tanenbaum/dp/0132126958)

You might also want to follow a CCNA course online.

</comment><comment><USER3> [https://www.cs.purdue.edu/homes/comer/netbooks.html](https://www.cs.purdue.edu/homes/comer/netbooks.html)</comment>


Ask HN: Company not responding after 6 hrs interviewing. Can I name and shame? - <AUTHOR> I had 2 telephone interviews and one timed Hackerrank 4 hour challenge which I aced (all green ticks). This was a significant investment on my side having to take time off work each time. After all this, the company has just gone radio silent. I'm mature enough to understand this is a rejection, but I find it unacceptable to not drop off a polite rejection email and it is becoming increasingly common in tech. This is a very wealthy small sized company with a dedicated HR department and not some small startup struggling on a shoestring budget. <comment><USER2> What does "radio silent" mean? You should give them a week, send an email query (still interested in me?), and wait a week for a response. This covers any anomalies on their side such as illnesses and emergencies, and let's them know you are still interested.

Beyond that, You don't hire someone based solely on a coding challenge. What else happened during the interview process? What questions did you ask? "Why are you hiring?" is a good one to get the feel for who you're dealing with.

If you've tried to make contact in good faith, given them time, and not received a reply after a while, flush 'em and move on. Name names if you want, however if the company is small, you've just created an avenue for anyone involved to reverse-engineer who you are, and respond here also naming names. Your anger might be justified, but don't shoot yourself in the foot because of it.

</comment><comment><USER3> Going nuclear over normal hiring practices doesn't really say that much about the the company or prove that its actions/inactions were not reasonably prudent.

Good luck.

</comment><comment><USER4> Perhaps you are their backup if their preferred candidate bails.

</comment><comment><USER5> At the very least you can review them on Glass Door.</comment>


Ask HN: What are your best 'cooking for hackers' links, books and tips? - <AUTHOR>

My friend who is a hacker of sorts pinged me for help and all my resources list is gone or I can't find it right now (I'm in a hurry to go out). Can HNers help? :) <comment><USER2> Tartine Bread <http://www.amazon.com/gp/aw/d/0811870413>

The Bread Baker's Apprentice [http://www.amazon.com/gp/aw/d/1580082688/ref=mp_s_a_1?pi=SL7...](http://www.amazon.com/gp/aw/d/1580082688/ref=mp_s_a_1?pi=SL75&qid=1347121401&sr=8-1)

<comment><USER3> Both of the above are excellent. Harold McGee's 'On Food and Cooking' is the foundational classic of the genre.

</comment></comment><comment><USER4> Check out the site Cookers for Engineers.

<comment><AUTHOR> It's <http://cookingforengineers.com>

</comment></comment><comment><USER5> From Oreilly: Cooking for Geeks [http://www.amazon.com/Cooking-Geeks-Science- Great-Hacks/dp/0...](http://www.amazon.com/Cooking-Geeks-Science-Great- Hacks/dp/0596805888)

</comment><comment><USER5> <http://theveryhungrygradstudent.wordpress.com/>

</comment><comment><USER6> purely tongue in cheek, but the title fits the bill: [http://www.abebooks.com/Giga-Bites-Hacker-Cookbook-Jenz- John...](http://www.abebooks.com/Giga-Bites-Hacker-Cookbook-Jenz- Johnson/1393676726/bd)</comment>


Ask HN: Know a Free Mobile Analytics Service? - <AUTHOR>

Hey,
I plan to launch a mobilized version of my web-application within the next week. I've never done mobile-friendly webapps before, and I'm assuming the Google Analytics I'm using for the main site won't suffice for mobile platforms. So if I'm wrong, does anyone know a good Mobile Analytics service that's free and reliable?
Thanks as always, Mike <comment><USER2> While there have been advances made on both ends, js based statistic engines do have lingering problems for mobile apps. That said, there are a number of workarounds: [http://www.vdgraaf.info/google-analytics-without- javascript....](http://www.vdgraaf.info/google-analytics-without- javascript.html)</comment>