Missing The Evil Empire: Bring Back Microsoft  - <AUTHOR> http://www.macgasm.net/2013/02/23/missing-the-evil-empire-bring-back-microsoft/

<comment><USER2> Interesting take on the situation. Reminds me of the recent xbox post -- yet another missed opportunity to bring back the character the author speaks of, although, perhaps that's why it was missed in the first place.

<comment><USER3> things do seem a little off in Redmond these days...

</comment></comment><comment><USER3> 'Brin versus Cook' isn't exactly the same kind of billing as 'Gates versus Jobs'. Those were the days.</comment>


Becoming a Full-Stack Developer - <AUTHOR> http://coolpythoncodes.com/full-stack-developer-guide/ <comment><USER2> This is just an annoying, lightly disguised advertisement (with a sketchy pop- up begging you for permission to do some undefined thing with your computer—send notifications presumably).

Expect things like:

> Don't complain about money of getting one because I will show you how to > make money even as a student.

etc.

</comment><comment><USER3> First step: recognize that knowing JavaScript only doesn't make you full "stack", it makes you a web "developer" (at most) who only sees nails they can hit with 500 pound Node hammer with 10000 warts in the form of isEven() dependencies.

Grow your skill set and broaden your until you see what "full stack" actually means.

</comment><comment><USER4> I immediately stopped reading when I saw:

> _Most web pages use HTML4, XHTML 1.0 or HTML5_

HTML4?? XHTML? Me thinks whomever wrote this has not been a full-stack developer for a while. The easiest way to be "full-stack" is to take a Rails[1] or Django[2] tutorial where you have to write a CRUD app with some JavaScript and templating on the front-end, and then deploy that to Heroku and monitor the database for performance improvements.

[1] [https://www.railstutorial.org/](https://www.railstutorial.org/)

[2] [https://developer.mozilla.org/en-US/docs/Learn/Server- side/D...](https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django)</comment>


First hire to first fire - <AUTHOR> https://canny.io/blog/hire-fire/ <comment><USER2> Really appreciate the openness here on the part of the founders. Insightful to see what early-stage founders are thinking and hoping for from their hires, and it feels candid.

<comment><AUTHOR> Thanks for reading. We're not writers so we've found it more natural to just share our stories. We hope they're insightful!</comment></comment>


Unexpected Lessons from 100% Test Coverage - <AUTHOR> https://blog.eyas.sh/2020/01/unexpected-lessons-from-100-test-coverage/ <comment><AUTHOR> I gather most people on HN don't like Medium. For those who find its reading style easier, a mirror link is available here [1].

[1]: [https://medium.com/p/unexpected-lessons-from-100-test- covera...](https://medium.com/p/unexpected-lessons-from-100-test-coverage- eebeee211b7a)</comment>


Flasky goodness (or why django sucks?) - Kenneth Reitz - <AUTHOR> http://reinout.vanrees.org/weblog/2012/06/06/flask-django-sucks.html <comment><USER2> I don't know much about Django/Flask, but the arguments presented seem to apply to Rails as well. At my company we're moving off of Rails completely in favor of SOA structured architectures where the web views and APIs are built on Sinatra.

<comment><USER3> If you decided for Sinatra then I'd give Express on Node a try. Sinatra inspired, a large ecosystem with Node and very fast. Or: it's just a pleasure to work with.

</comment></comment><comment><USER4> Current discussion: <http://news.ycombinator.com/item?id=4076834>

</comment><comment><USER5> the actual slides are currently #1 on HN</comment>


A thread for Junior Developers/Engineers - <AUTHOR> https://twitter.com/jamesmh_dev/status/1080455811048984576 <comment><USER2> Generally I agree with this thread of advice, but I'm a little fed up with people constantly asserting or implying that coding is the easy part, and culture is the super hard part.

Get a grip. Coding is a challenge for junior developers. I see nothing constructive in spreading this idea. Not only is it nonsense, it seems to further the stereotype that programmers are all academically smart and socially incompetent.

Edit: Please see Camille Fournier's earlier take on this, as she says it better than me: [https://mobile.twitter.com/skamille/status/10047311365625610...](https://mobile.twitter.com/skamille/status/1004731136562561025)

<comment><USER3> It also furthers the notion that "coding is easy" and if it doesn't come easy to you then you simply aren't a good programmer and will never be one.

<comment><USER4> I think this really means that while coding is hard it is the fun thing, it is a hard thing that is fun to do and easily can lead to flow states which we interpret as "fun". That's great, as you advance in your career though it turns out many times coding isn't the most valuable thing you can be doing with your time but rather things like explaining, teaching, guiding. Things that aren't so easily defined as fun. So coding is easy not as in the simple vs difficult way but in the "easy going" way.

</comment></comment></comment><comment><USER5> > Maybe every morning they take the first 30 minutes of their day to tell you > about what movie they watched last night? E-v-e-r-y-d-a-y.

Funnily enough I always think these are some of the best 30 minutes of my day. Certainly beats having to talk about your favorite design pattern first thing in the morning.

<comment><USER6> Yes, unless you're someone who wants to do something at that point in time.

I have a co-worker who gets fidgety for beers every Thursday around 15:00. He starts walking around, loudly talking with anyone and telling stories. That's super-annoying for me because 14:00-17:00 is the time I'm most productive.

Woes of an open office ¯\\_(ツ)_/¯

<comment><USER7> Same here. I used to get in at 6. 6-7 was the most productive hour of the day because general staff got in at 7. But my co-worker always wanted to talk right when we got in.

 _Woes of the open office_

</comment></comment></comment><comment><USER8> I am planning to write a site that helps people understand the career beyond the code. I have five sections planned.

1\. Not Yet Engineer 2\. Junior Engineer 3\. Practitioner Engineer 4\. Senior Engineer 5\. Principal Engineer

I intend to index my thoughts as a philosophy guide and playbook for situations since that is what I tend to focus on in my one on ones with the people that I mentor.

It's funny that as I have gotten older, I focus less on the 'what' and 'how' and focus on people growth, and now my primary export is enabling people to become effective senior engineers.

<comment><USER9> You know that most companies don't have such nice technical hierarchies.

When I worked for BT back in the day there where effectively two grades for non management "professional staff" going from mpg1 to mpg2 was brutal approximately 20-30 in the SE division (50k FTE) every 18 months or so.

<comment><USER8> True, but that doesn't mean the behaviors are not mutually exclusive.

For instance, there is a time in your life before you know how to code and there is a time where you think you know how to code and then have to interview. I call this "Not Yet Engineer".

There is then a time when you think you know how to code, but you lack discipline to execute within a team framework and a business context. I call this the "Junior Engineer" phase.

After Junior Engineer, you are useful and can build things. Once you have discipline and have knowledge, then are a "Practitioner Engineer". This, for many people, is a terminal state and some companies call this senior engineer. However, I have seen many people go from inflated titles to Software Engineer at Amazon.

Beyond Practitioner Engineer, the core aspect of being a "Senior Engineer" is the ability to lead one or two teams to build.

Principal Engineers then talk at an organization level and think of things beyond two teams. The focus here is on strategy rather than day to day execution.

Sadly, most companies don't understand the need for a parallel power structure to compete with management.

<comment><USER9> That's all very well but I was arguably at "Practitioner" level at 23 in my first job (which did have the sort of tracks you suggest)

I did look at continuing down that track to CE status (I was / am a junior member of the mechanical engineers) but it wasn't worth it

And very few tech employers is going to support its development staff like say a big consultancy will for its civil engineers.

BT did have its Msc but that was targeted at the Labs really - that's the Uk version of Bell Labs BTW

</comment></comment></comment></comment><comment><USER10> 1\. Communicating clearly in 'business language' is essential when the junior developer interfaces directly -- not through an intermediary -- with business people and stakeholders. This tends to happen in heavily siloed BigCos, especially in places where IT is just a business unit among many, much more so than in SV or startups. But it's also a skill that one rarely has an opportunity to use in isolation, away from the pressures of estimation, project management, of implicit requirements-gathering by listening to business units segue to different business problem, and sometimes of fudging and obfuscation and make-believe falsehoods to soften the impact of reality. These are complex dynamics usually played at the senior team lead level. Most team leads know this, and don't subject junior engineers to this game with no help.

2\. These sorts of high-level expectations tend to get peddled around a lot, not the least bit because it's both noncontroversial advice and a desirable baseline, but they aren't even always necessary. Often, the systems one will work on already exist, they already don't conform to an idealized model because of a series of fixes and mistakes made under pressure. These points are a stand-in for saying you should design and code in a way that future maintainers can make sense of what was written. Sometimes that's using patterns and strategies that are well known, instead of a contrived variation. Sometimes that's staying true to the existing design of the product and the codebase, because tacked-on parts in a different style will increase complexity of the whole.

3\. Interfacing in the design and mechanical sense, and achieving that design consensus using interpersonal relations are really two separate skills, and once again it's reasonable to expect that consensus to be set not solely by junior staff between different business units. After all, interfaces and system boundaries ought to have business significance -- not only because of the implications of Conway's law, but also because interfaces and their outputs are often the only orgwide-visible products of the business unit. They must stand up to, or meet the challenge of future pressures such as planned re-use and enhancements, some of which will conflict with the intentions behind the original design.

</comment><comment><USER11> > Get to know your problem so well that fixing the problem by writing code is > the last resort

> This means having to problem-solve with business people and doctors, for > example.

> It might mean having to learn more skills: marketing, product design, > business planning, etc.

I like this point. In an enterprise there are multiple ways to solve a problem without code.

</comment><comment><USER12> "Get to know your problem so well that fixing it by writing code is a last resort"

I love this stance.

</comment><comment><USER13> If requirements are not clear, stop coding and start asking questions. If your company track stories in JIRA then tag PM or anyone from the business who can help you clarify the requirements. From my experience, PMs are not sure what the exact requirements are. So asking them questions open up a channel of back-and-forth discussion.

<comment><USER9> "If your company track stories in JIRA" I think that's your problem right there.

If your building a product or major feature and not a bugfix you should have a proper version controlled design document or documents to work from and also a lead or architect to get guidance from.

<comment><USER14> Right after Excel, JIRA is one of the most abused tools out there. I _wish_ specs were in version control, but we too use that "ticket per feature" workflow at my job. I rather a Confluence page outlining what we want.

</comment></comment></comment><comment><USER15> "Coding is the easy part"

Yes...but, only for really good engineers.

<comment><USER16> I've been reading other devs code for about two decades now. Universally all the code I see is not quite up to the standards I have for "good code" though some of it is better than others. Most devs give up on getting better writing code too easily, or more importantly they focus on the wrong things. There is always room for improvement no matter how good you are.

Focus on making your code clearer, not fancier or "faster". Don't prematurely optimize your code by eye. Generally just being conscious of the major performance no-nos to avoid and being able to use appropriate tools (like a profiler) when and if you actually need to tune performance is all you need. Instead concentrate on making your code highly readable, self-documenting plus fully documented (the best of both worlds!), as well as composable and maintainable and you'll be well set. Not just will you make other developers happy and improve the code base overall (fewer bugs, easier modifications for inevitable feature changes in the future) but you'll make your future self happier when you have to come back to that code.

By far the biggest mistake I see developers make is making their method/function bodies too long. Extract your methods people, it's not that hard and it's a great habit to get into. It takes skill to get good at it but a decently named small function makes code more readable and more reliable. And getting into the habit of making little functions that just take a few inputs, do stuff, and return a value makes your code way easier to unit test as well.

<comment><USER17> > Extract your methods people, it's not that hard and it's a great habit to > get into. It takes skill to get good at it but a decently named small > function makes code more readable and more reliable.

For me it actually makes code less readable. It makes the system more complex (because you've added extra function definitions and function calls) and just jumping back-and-forth between those small function calls makes code harder to read. I would much prefer to have a larger method that just does things in order, and, for readability, have its body divided into sections, each in isolated brackets (so that variables have local scope) and commented if necessary.

<comment><USER18> I think all humans are bounded by 7+/-2 chunks of working memory which I think correlates to upper bound of understandability. Personally I break up methods where I see more than 5-7 unique params/variables/concepts. Also usually co- locating related methods will help which is what OOP does.

</comment></comment></comment></comment><comment><USER14> On that note what are good books to develop communication skills? Are there any that are specifically targeting tech business communication as well?

</comment><comment><USER19> Don't think I am trying to diminish the importance of this post but Gerald Weinberg has talked about all these concepts a long time ago in his books. Sadlly, I discovered him (through DHH book recommendations) at a much later stage in my career.Gerald Weinberg should be a required reading to all software engineers.

</comment><comment><USER20> It's difficult to handle by junior developer itself.

</comment><comment><USER16> My one major criticism of this advice is that it significantly downplays the importance of communicating clearly among technical people. It's tempting to think this is "easy" but I've seen countless examples among top developers at all sorts of prestigious corporations proving that it's anything but.

Some common mistakes I see people make:

Excess aggression, ego, and emotion. Check your ego, disconnect your self from instances of your work whether it's your code, your proposals, or your ideas. And be kind to others in criticisms, don't criticize (and especially not denigrate) other people criticize their code or their actions. Instead of saying "this is bad, why would you write this garbage?" say "here's a way to do it that I think is better for X/Y/Z reasons". The work is just the work, it's a collaborative effort to improve it. There should never be shouting or hurt emotions when hashing out designs or doing code reviews, work towards that goal.

Insufficient context. Make a habit of regularly summing up context in ongoing discussions and injecting it into the thread (email, IM, meeting, what-have- you). Do this explicitly when looping in new people to a discussion. The worst thing is to be looped into some long email thread and having to follow through the winding and convoluted discussion just to acquire context that could have been summed up by someone in the know with a few sentences. Even worse is when significant amounts of context are missing from the conversation because they happened in person or in other media or happened in previous discussions.

Unspoken assumptions. Much like summing up context stating your assumptions is critical to communicating effectively because it's so easy to assume that your little bubble of understanding is universal but it rarely is. And unspoken assumptions are one of the easiest ways for two people (or orgs) to be party to the same discussion and come out of it with completely different conclusions about what will happen next. And on that note, be clear when you're asking anyone anything, whether it's a question or a deliverable. Address them directly, use a question mark. You'd be shocked how often people fail at this sort of thing, especially in large discussion threads. Don't just leave pseudo-questions dangling, waiting for whoever is responsible to pick it up. Be direct, if you don't know who the responsible party should be, ask, maybe nobody knows and it needs to be determined/negotiated. If you know then make sure. And, of course, be polite.

Not going on the evidence. A close cousin to riding on unspoken assumptions, especially problematic in troubleshooting and debugging scenarios. Definitely a common mistake I see all the time in CS graduates (who, ironically, aren't very good scientists). Use the scientific method. Don't just make assumptions and tell stories that are convenient or kinda sorta make sense to you. Don't just "satisfice" by resting on the first semi-plausible answer you land on. Dig in, find the truth. Start with a hypothesis (or several), acquire evidence, figure out if you can for sure confirm or falsify your hypothesis (and competing ones) through the evidence. Keep coming up with other things to check that could provide additional evidence one way or the other, and competing hypotheses as well. Keep going until you have a rock solid "case" and can prove your theory. I have seen even very experienced developers screw this up countless times. They come up with some vaguely plausible cause for a problem and then spend way too much time operating as though it's true, without validating it first. And then they waste a ton of time and effort trying to "fix" the wrong thing. Just as often devs will put in a hacky workaround for a defect which just papers over the underlying problem. Pursue defects to their root cause, file bugs in your tracker to keep track of that information and put fixing it on the radar of the team/org/management so at least they are making a conscious choice if they choose not to fix it.</comment>


Show HN: Pymterm – A multiple tab terminal emulator implemented in Python - <AUTHOR> https://github.com/stonewell/pymterm <comment><USER2> This seems to support Windows(1), but running setup.py yields a "OS-X only" (not verbatim) error...

(1) Looking at the source, it implements a nice abstraction over Sessions, which can be backed by either pty (unix) or named pipes (windows). Bonus points for not using the heavy-weight libwinpty.exe which can be found in similar projects (e.g. jediterm)

<comment><USER3> OS X only is because setup.py is using py2applet, which seems to be for creating app bundles on OS X.

</comment></comment><comment><USER4> No screenshot?

</comment><comment><USER5> Is there anything that differentiates this from gnome-terminal, iTerm, etc?

</comment><comment><USER6> On the ToDo list is search history. Isn't that the shell's job? Or are we talking about something different?

<comment><USER7> I think that means ability to search within the terminal scrollback buffer.

<comment><USER6> I read this yesterday, and then today for the first time I wished I had a way to search my scroll buffer. :)

<comment><USER7> "A lot of times, people don't know what they want until you show it to them."

\-- Steve Jobs

</comment></comment></comment></comment><comment><USER8> instructions to build on mac?

<comment><USER3> >python setup.py py2app.

No idea about dependencies, I don't have access to an OS X machine.

</comment></comment><comment><USER9> Should the title be a show hn?</comment>


Show HN: Pocket Rice - <AUTHOR> http://www.pocketrice.com.au

<comment><USER2> How does this work?

<comment><USER3> It looks like you answer trivia questions. There are ads shown during the session at the bottom of the screen, like in a lot of android apps, which end up paying for the rice.

Source: [http://www.pocketrice.com.au/about.html](http://www.pocketrice.com.au/about.html)</comment></comment>


Remind HN: Instagram's new Terms of Service take effect tomorrow, Jan 16 - <AUTHOR>

The new terms differ from the original terms in that Instagram don't assume ownership of your photos; they still involve merging Instagram's infrastructure with Facebook, though. In their own words:
"- Nothing has changed about your photos' ownership or who can see them.
- Our updated privacy policy helps Instagram function more easily as part of Facebook by being able to share info between the two groups. This means we can do things like fight spam more effectively, detect system and reliability problems more quickly, and build better features for everyone by understanding how Instagram is used.
- Our updated terms of service help protect you, and prevent spam and abuse as we grow.
This is just a small preview. Our new Privacy Policy and Terms of Service will be effective on January 16, 2013."
One alternative is to create an RSS feed based on what Webstagram provides: http://web.stagram.com/n/nasagoddard/.
The Instagram blog post: http://blog.instagram.com/post/38143346554/privacy-and-terms-of-service-changes-on-instagram. <comment><AUTHOR> Link:

<http://web.stagram.com/n/nasagoddard/>

[http://blog.instagram.com/post/38143346554/privacy-and- terms...](http://blog.instagram.com/post/38143346554/privacy-and-terms-of- service-changes-on-instagram)</comment>


Gemini PDA Android and Linux keyboard mobile device - <AUTHOR> https://www.indiegogo.com/projects/gemini-pda-android-linux-keyboard-mobile-device-phone#/ <comment><USER2> I'm backing this. It seems too good to miss. This is what I've wanted for years: an up-to-date PDA with a keyboard just like the old days. In the process I've had:

\- Motorola DEXT

\- HTC Desire Z

\- Blackberry Passport

(I've backed other crowd-funded projects that have flopped. Of course there's risk, but that's the whole point of crowdfunding. If this doesn't work out, I'm glad that they tried.)</comment>


Yes, Valve is still making games - <AUTHOR> https://www.polygon.com/2017/5/3/15514956/valve-steam-half-life-3-dota-2-left-4-dead-3-sequels <comment><USER2> "Valve doesn't have to do anything"

I've never heard anybody say this about a company before.</comment>


A Roster of TLS Cipher Suites Weaknesses - <AUTHOR> http://googleonlinesecurity.blogspot.com/2013/11/a-roster-of-tls-cipher-suites-weaknesses.html

<comment><USER2> _The second nit with AES-GCM is that, as integrated in TLS, implementations are free to use a random nonce value. However, the size of this nonce (8 bytes) is too small to safely support using this mode. Implementations that do so are at risk of a catastrophic nonce reuse after sending on the order of a terabyte of data on a single connection. This issue can be resolved by using a counter for the nonce but using random nonces is the most common practice at this time._

I don't know how do you integrate AES-GCM with TLS, but I have to say

1\. The secure AES-GCM supports 96-bit nonces. It's 12 bytes, not 8 bytes mentioned in the article.

2\. Nonce is nonce. It shouldn't be chosen at random (as random IVs). As long as nonces are not reused, GCM should be secure.

3\. I don't believe implementing a secure random number generator is more efficient than maintaining an incremental counter.

Edited for typos

<comment><USER3> > The secure AES-GCM supports 96-bit nonces

That's correct. However, TLS takes four bytes from the handshake key material and uses them as the first four bytes of the nonce. The remaining 8 bytes are all that vary over the lifetime of the connection.

<comment><USER2> Do you know why is TLS doing that?

But even without the 4 bytes, 64-bit nonce seems enough for me, as long as it's not chosen at random.

For comparison, if the nonce is chosen randomly, the security level is only 2^32 (supposing the 4 bytes based on the key materials remain unchanged).

<comment><USER3> I believe it was done so that AES-GCM could be implemented in a FIPS module and would not need to depend on the uniqueness of provided nonces. Either that or some standard said that nonces must be unique. (I wasn't around for the discussion.)

I agree that a counter is perfectly safe.

</comment></comment></comment></comment><comment><USER4> There's a table at wikipedia (though it obviously lacks the detail in the post)

[https://en.wikipedia.org/wiki/Transport_Layer_Security#Ciphe...](https://en.wikipedia.org/wiki/Transport_Layer_Security#Cipher)

<comment><USER5> For even more detail I like OWASP's cheat sheet [https://www.owasp.org/index.php/Transport_Layer_Protection_C...](https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet#Server_Certificate_and_Protocol_Configuration)

</comment></comment><comment><USER6> It's worth noting that that Jacob Appelbaum, who has worked on the Snowden documents alongside Laura Poitras, claims that TLS has been broken in real time by the NSA: [https://twitter.com/ioerror/status/398059565947699200](https://twitter.com/ioerror/status/398059565947699200)

In which case AES-CBC is almost certainly preferable to RC4, even with its flaws.

<comment><USER7> Never say never, but, this seems unlikely.

The nature of the RC4 flaw isn't such that attackers grind on a single ciphertext with fast compute. The problem is rather a series of statistical biases that recur at intervals in the keystream. The time you spend attacking RC4 isn't due to compute, but rather due to the number of samples you need to collect to leverage the biases to recover plaintext. You can imagine improvements on the attack that would require fewer samples, but probably not improvements that would get you down to double-digit samples.

There may indeed be a lot of room for attacks on RC4 to improve, and improve in ways that outpace (nonexistent) countermeasures. I think RC4 is scarier than CBC padding timing. But a real-time attack on RC4 would seem to imply a radically different attack on RC4 than any the literature has hinted at.

</comment></comment><comment><USER8> How related are these encryption vulnerabilities to encryption we may do in our own software (stuff that necessarily doesn't depend on SSL connections)? As in, is AES-CBC still okay to use if I'm using it correctly in a program that is self contained (ie it's not going to the net and using AES-CBC to encrypt the communication between server and program)?

<comment><USER9> The RC4 vulnerability is in the algorithm, not in TLS. Do not use RC4 in your own software. (If you absolutely must, you can avoid this vulnerability by using a variant of RC4 that discards the first several thousand bytes of keystream, but please just use something else.)

The AES-CBC vulnerabilities are specific to TLS, so as long as you don't repeat the same mistakes TLS made, you won't have the same vulnerabilities. Specifically, encrypt-then-MAC (instead of MAC-then-encrypt) to avoid padding oracle attacks like Lucky 13, and actually choose new IVs for each message instead of using the previous message's last ciphertext block (to avoid BEAST). Or better yet, use a high-level crypto library that doesn't make you worry about this stuff.

<comment><USER8> Yeah the one I'm using is encrypt-then-MAC for AES-CBC, so I guess I'm good in that aspect.

</comment></comment></comment><comment><USER10> When I was looking through a list of browser supported PFS TLS suites, I came across this one which is apparently supported across versions of IE that otherwise don't support PFS:

DHE-DSS-AES256-SHA

I know DHE is slow, but what really sticks out like a sore thumb is DSS. Is it known to be broken?

<comment><USER11> That ciphersuite has the following problems:

\- DHE: the way ephemeral DL-DH works in TLS is unfortunately misdesigned. The client first offers DHE-* ciphersuites, then the server sends a DL group and public key in that group. The problem arises because now the client cannot:

* reject that group as having too small a modulus to possibly meet the client's security requirements,

* reject that group because it doesn't support one that big (Java SSL stack does this -- doesn't support >1024-bit modulus DH -- and is therefore broken with some more aggressive servers when they select DHE ciphersuites),

* check that the subgroup is of a suitable size to meet the client's security requirements (I'm not sure if SSL predated the Lim Lee paper here, but certainly later SSL standards didn't bother to fix it)

\- DSS: fine, but the security-performance profile is similar to RSA, with the exception that verification in DSA is much slower than RSA. That's the reason it's mostly overlooked in favour of RSA.

\- AES: as mentioned in the article.

So, yes. It's about as good as other SSL-era ciphersuites; which is to say: slow, badly designed and mostly broken :)

<comment><USER9> > DSS: fine

With the caveat that DSA fails exceptionally catastrophically if the random number generator is bad. If you re-use the same random number for different signatures, an attacker can recover the private key. Given how subtle RNG bugs can be, it's probably imprudent to choose it over RSA.

<comment><USER7> That's true of ECDSA as well, and, in a larger sense, true of RSA --- the "Minding Your P's and Q's" research seemed to boil down to an RNG weakness. It is also, for what it's worth, largely true of all the modern AEAD modes.

</comment></comment></comment></comment><comment><USER12> Nit: "Paterson", not "Peterson".

<comment><USER3> Doh! Thanks. I'll ask PR to fix that.</comment></comment>


Apple's use of Swift in iOS 12 - <AUTHOR> https://blog.timac.org/2018/0924-state-of-swift-ios12/ <comment><USER2> I have been writing code for over 10 years and I can comfortably say that Swift is one of the best languages today than many other languages at a much later stage in their life (hey there Java!). I'm not talking about the standard lib, I'm talking primarily about the language and how well one can express their ideas with it without shooting oneself in the foot.

The only reason I suspect that Apple is not all over Swift is that many of their programmers are the type of coders who like falling back to C when they feel they need a performance boost. Perhaps they like the message-like nature of ObjC. Dunno. I can say that I've been able to get apps to 0 fixable crashes with Swift (some crashes are system level), not something I've ever done with ObjC, let alone Java for Android.

<comment><USER3> It was a couple years ago, but I spoke with one of their engineering managers about Swift adoption within the company. His response was that it was being used for new apps/projects, but not so much for existing codebases.

Having worked on a large Obj-C codebase that began adopting Swift, there are definitely some headaches involved in Obj-C/Swift interop, and you often aren't getting many benefits of Swift unless your new code has few to no dependencies on / is not depended on by Obj-C code, unless you can refactor it into Swift.

Given how quickly it seems they've been forced to ship, I can understand not wanting to deal with these issues, or not having the time to address them.

<comment><USER2> There are three advantages that I saw immediately upon switching to Swift:

\- It was easier to hire developers

\- Code was less prone to null pointer exceptions

\- There were fewer assumptions when deserializing JSON into a struct/object

<comment><USER4> We moved a very large iOS app over to Swift, and the first two benefits are really huge. I know people have opinions on these things, and both sides are right, but the really strong typing and enforced nullability have been hugely important to getting junior engineers contributing to the codebase.

Not saying that it's an unsolvable problem elsewhere, it's just an anecdotal benefit we got

</comment></comment></comment></comment><comment><USER5> A perfectly good rooster, considering that Swift only became usable at v3.0, two years ago.

I've developed since for version 1, small utilities, and even for those projects, it was not enough.

Version 4 and it's my favorite language to develop for.

<comment><USER6> I can't wait for Swift 5 when we finally get ABI stability, that's the last major issue that's holding Swift back.

<comment><USER7> That'll definitely be nice, for people already using the language, but I don't know of anyone actually held back by that. I'm more concerned by issues like lack of a good concurrency story, and lack of a good cross-platform story (differing behavior on Darwin/Linux, no Windows support).

</comment></comment></comment><comment><USER8> For me, to make swift a total contender it need good support for non-apple platforms:

[https://www.reddit.com/r/swift/comments/8zb9y1/state_of_swif...](https://www.reddit.com/r/swift/comments/8zb9y1/state_of_swift_for_androidlinuxwindows_on_2018/)

For that, I'm exploring with rust now, but certainly is far harder than use swift.

I also look at nim, yet I think is too inmature for use in ios/android?

<comment><USER9> I don't think it's too immature. People have successfully targeted iOS/Android with games in Nim.

<comment><USER8> I judge from what little I can find. Exist a good reference in how do it?

Even if a keep rust I think nim cover a nice spot to add to the toolbet.

</comment></comment></comment><comment><USER10> Given the maturity of iOS it's not unexpected to see the uptake of Swift so slow. Though it's lacking a "total binaries" number.

Swift is a great language to work in.

<comment><USER11> I have to comment on this. Swift is one of those languages that make me look forward to opening up Xcode in order to start writing code. It's just such a fantastic language, and it's hard to explain why until you've actually started writing code in it.

<comment><USER12> Honestly curious: What makes it such a fantastic language?

<comment><USER11> I think optionals are my favorite feature. That may be due to me coming from a Java background (which also has optionals since 8, but I feel it's rather clumsy compared to Swift and other modern native languages).

By doing optional chaining you can do something like: if let name = result.person?.firstName { ... } which only evaluates firstName if person is not nil, and then stores the result in name which is immutable.

It's easier to avoid mutable code in Swift than in many other languages. For this reason I would love to start working with Swift on the backend at some point in the future.

I like extensions, being able to extend any class I want by just typing it into any file I want. This helps with iterative development and trying something out.

Speaking of iteratively, if I want to try something quick, I can also drop down to a shell and start the Swift REPL to experiment.

I like how built-in functions like zip and mapValues are available, so it in some ways has a Pythonic feel. I like the syntax of building strings by just taking a variable name and going let s = "Hi there \\(name)!".

There are lots of other things I enjoy, such as subscripts (see why here: [https://docs.swift.org/swift- book/LanguageGuide/Subscripts.h...](https://docs.swift.org/swift- book/LanguageGuide/Subscripts.html)) and

Some things I would like to see improved is Xcode itself and also Swift's capabilities in the backend.

<comment><USER12> Thanks for the answer!

I've been waiting impatiently for a better Swift backend ecosystem, because I'd love to use it for web development as well.

<comment><USER13> I'm having a great time in Vapor 3.

<comment><USER14> Vapor is pretty amazing. Super fast and pretty fun to work with; also a very friendly community. Ray Wenderlich's team as well as Paul Hudson also have some great books on server-side Swift for those looking to learn this stuff.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> I assume we'll see it being more used by Apple at the system level a year or two after they got the ABI stable. Somewhere around iOS 14 or 15 maybe.

</comment><comment><USER16> While I think dyld is probably short for "dynamic load", I initially read it as 'Dylan Language Deamon" when I read the phrase 'shared dyld cache'.

I know Apple was heavily involved in the Dylan language several years ago. Does anyone know if Swift was influenced by Dylan ?

<comment><USER17> dynamic libraries on macOS are dylibs. There is a debate whether 'ld' is short for load/loader, or link editor. So you can either read it as the dynamic library load tool or the dynamic link editor.

A shared dyld cache would be a cache of metadata used for linking, but not sure if that is for link-time or runtime.

</comment></comment><comment><USER18> 66 binaries out of how many in total?

</comment><comment><USER19> Has there been widespread adoption (or migration to Swift) in "large" companies for their flagship products outside apple?

</comment><comment><USER20> What about macOS?

</comment><comment><USER21> I wonder if there is a way to correlate the number of bug / issues related to binaries with Swift. It'd be interesting to see if Swift correlates positively with bugs/crashes.

<comment><USER22> If anything, since a lot of stuff is being rewritten from scratch, a lot of new bugs appear that were not there. At least that's my experience on the Mac with software that has been rewritten in Swift.

Obviously, it's not Swift's fault for that, but even if people at Apple make rookie mistakes such as using force unwrap operator, it tells something about the language.

<comment><USER10> > Obviously, it's not Swift's fault for that, but even if people at Apple make > rookie mistakes such as using force unwrap operator, it tells something > about the language.

It's still often suggested by Xcode if you use an optional which has not been unwrapped in any way. "Click here to make error go away" adds an !.

<comment><USER23> Good point. Fortunately this fixit was improved over the summer: [https://forums.swift.org/t/resolved-insert-is-a-bad- fixit/10...](https://forums.swift.org/t/resolved-insert-is-a-bad- fixit/10764/102) I believe it made its way into Swift 4.2/Xcode 10.

<comment><USER10> Good stuff. Now to fix my only other pet peeve which is declaring IBOutlets with a ! by default. In the ideal world IBOutlets would be checked compile time unless they're declared with a ?

<comment><USER23> Well, they have to be Optionals one way or another, because they can't get hooked up until after init[0], and Swift won't allow that. But yeah, I imagine this is on someone's todo list somewhere. IB already knows whether things are connected properly, and actually so does the source editor, since it shows the little circles in the gutter.

\--

[0] Unless you could invert the order of the unarchiving...not sure what difficulties that would cause.

</comment></comment></comment></comment></comment></comment><comment><USER24> Glad to see Apple moving away from ObjC (when it makes sense to).

This seems to contrast MS when they released .NET but shied from using it in their own systems (though I might be wrong)

<comment><USER25> SQL Server Management console, Visual Studio, Windows Phone 7, Silverlight.

Then there was Longhorn, which failed more due to internal politics than due to technical issues, as Midori later has proven just to be killed by management, as decribed by Joe Duffy postmortem reports.

WinRT/UAP/UWP are built on top of improved COM, and .NET has a native personality for them, using AOT compiler for WinRT/UAP (MDIL) and UWP (.NET Native).

Most of the new UWP stuff is written in .NET Native, with C++ taking care of the UWP runtime infrastructure, and the DirectX composition engine (Visual Layer).

The majority of Windows UI team UWP and FluentUI demos are usually done in .NET Native.

<comment><USER24> Thanks for these examples. Do you know since when was SQL Server Management Console done in .NET? (to be fair the last one I used was around 2008)

Silverlight was more of a platform than an "internal product" and it was based on .NET so it was only natural (it doesn't seem to have taken off though)

And yes .NET makes COM usable (well it is usable using MS libraries in C/C++, otherwise, forget about it :) )

<comment><USER26> Actually Visual Basic made COM usable :)

<comment><USER25> I would say Delphi did it better, until VB 6.0 that is, but then again I am biased. :)

</comment></comment></comment></comment></comment><comment><USER27> Would be nice to know what share of total binaries that represents.

On a side note, iOS 12 was great but seems riddled with memory leaks that eventually require a reboot every few days.

<comment><USER28> I've been running iOS 12 since the early betas and only rebooted for OS updates. Sure it's not an app or something?

<comment><USER27> There's one particular mobile game that is suspicious... However, this issue was nonexistent with iOS 11. The memory diagnostic app shows the "Other" section constantly growing and not being released.

<comment><USER29> > The memory diagnostic app shows the "Other" section constantly growing and > not being released.

Are you sure you're not talking about storage space? I don't know what memory diagnostic app you're talking about.

</comment></comment></comment></comment><comment><USER30> What's the solitary binary that used Swift in iOS 9?

<comment><USER31> Calculator: [https://twitter.com/jckarter/status/650142048444526593](https://twitter.com/jckarter/status/650142048444526593)

</comment></comment><comment><USER32> A bit useless. Are they using it in the top ten (mail, web, cal, clock, etc.)? How much of Swift compared to ObjC code? Those are the real answers I would expect to read in your article.

<comment><USER33> And all those answers are IN the article.

> _Are they using it in the top ten (mail, web, cal, clock, etc.)?_

No.

> _How much of Swift compared to ObjC code?_

Much less.

It makes sense too. You don't rewrite perfectly good programs in a new language just for the fun of it.

<comment><USER34> >perfectly good programs

The Holy Grail of software engineering</comment></comment></comment>


Apple will be a TRILLION dollar company by 2015 - <AUTHOR> http://www.businessinsider.com/altucher-apple-will-be-a-1-trillion-company-2011-5

<comment><USER2> ... and will reach a quadrillion by the mid 2050's...

:-/

I don't think Apple can grow to three times its current size in 4 years unless the market itself grows a lot. As for valuation, well, we can all agree Apple is already worth a trillion dollars just out of its coolness, but we must also agree nobody will pay more than 300 billion for it.

</comment><comment><USER3> This reminds me of all the people shouting "Dow 20,000!!!" right before the market exploded.</comment>


Turbulent luminance in impassioned van Gogh paintings - <AUTHOR> http://arxiv.org/abs/physics/0606246

<comment><USER2> This is a really cool idea!

I wish that they had spent a little more time examining non-turbulent images; really, once the analysis software is written, I'd expect to see all of van Gogh's work piped through it, and a handful of other paintings, both impressionist and not, all graded on turbulence.

I'd like to see an actual numerical comparison to the gaussians, rather than letting us guess at "yeah, that one looks pretty close".

One non-turbulent image for comparison (classified as non-turbulent "as it can be seen") is not really enough.

And there's no link to the code! When are researchers going to understand that they haven't exposed their process to review until they've given reviewers access to the code?</comment>


Liquid Death Raises 9M to make canned water - <AUTHOR> https://techcrunch.com/2020/02/20/liquid-death-series-a/ <comment><USER2> If it becomes popular, won't every water distributor just copy them?</comment>


Eight Types of Intelligence Make the Entrepreneur - <AUTHOR> http://www.caycon.com/blog/2011/03/eight-types-of-intelligence-make-the-entrepreneur/ <comment><USER2> That covers all types of intelligence a man could posses.. Could anyone list anything else that is not a subset of the eight??</comment>


Dear Ed Bott: No, Windows 8 is not the new XP - <AUTHOR> http://www.roughlydrafted.com/2012/10/22/dear-ed-bott-no-windows-8-is-not-the-new-xp/ <comment><USER2> > Microsoft needs to focus on what it is good at, and stop chasing Apple just > because it wants to be good at what Apple is good at.

But the author spent the first half of the essay arguing that the market Microsoft is good at is going away. If that's correct (and it's a big _if_ ), Microsoft has no choice but to learn to be good at different things. You can criticize how effectively Microsoft has done this - and that critique consumes the latter half of the essay - but you can't simultaneously argue that Microsoft needs to change what it does and that Microsoft needs to keep doing what it's good at.

<comment><USER3> The thing is, Microsoft _is_ doing what they're good at. They're good at giving a consistent experience across whatever hardware, no matter what, and damn any technical debt or consequences they incur in doing so. I think someone posted a video of them actually running the upgrades from Windows 1.0 through to 7 on youtube somewhere.

Throwing touchscreen devices into the Windows wheelhouse and trying to write one OS that runs across them and desktop machines is actually very much a bet on MS's core competency.

<comment><USER4> "A consistent experience across whatever hardware?"

I take it you never tried to use one of the thousands of Vista laptops sold with 1-1.5 gigs of RAM?

</comment></comment></comment><comment><USER5> >buying new PC hardware bundled with the Windows 8 "we won't say Tax but that's what it is when you levy a fee on all products within a market because you exercise dominion over it as a quasi-authority")

Really? So does my car have a tire tax, just because it comes with tires on it? If you're buying a PC, 99.99% of all people expect it to come with an OS. In fact, it's cheaper to buy a PC preloaded with Windows ($35) than it is to buy an unloaded PC and buy a copy of Windows ($150). There are major manufacturers making Linux PCs. There are major manufacturers that will sell you a box loaded with FreeDOS. There's even a major manufacturer that sells pre-installed, well-supported, and beautiful Unix PCs (I've heard they're one of the richest companies in the world). It's not like Microsoft is literally taxing computers, they're charging an incredibly small amount of money and in return you're getting their OS preinstalled like most of the market wants.

Can we get over the Windows Tax thing? It's pretty much akin to saying Micro$oft. Funny in middle school, but it makes your argument much less attractive now.

<comment><USER6> I bought a ThinkPad recently in Europe, and there was no way for me not to buy Windows. I don't need it and I don't want it. I don't even have it: I wiped the hard disk immediately after getting it. I could choose what memory I wanted, what screen I wanted or how much hard disk I wanted (SSD or regular HDD), but I could not choose not to get Windows. The same is true for the great majority of laptops.

Over the years I've wasted a lot of money buying copies of Windows that I never used and that I never wanted.

I very much doubt that this is so because of convenience: it is so because it gives more money to Microsoft.

It's outrageous.

So, yes, I wish we could get over the Microsoft Tax thing. Call it Microsoft Mandatory Purchase or Microsoft Gratious Gift for Mere Pennies if you wish, it doesn't matter.

<comment><USER7> Oddly enough, I bought a MacBook last year, and there was no way for me to not buy OSX. I don't need it, and I don't want it. I installed Windows 7 immediately after getting it.

Of course, I knew that when buying a MacBook I would end up paying a small amount for the development of OSX even though I had no intention of using it.

I had options, you had options. We chose the option we did because in balance that was the best option for us respectively.

<comment><USER8> Is it wrong to point out that you would have had better options if manufacturers made this bundling optional? And that the range of options seem to decrease over time? (Eg. you can't buy Windows RT and install it on an iPad).

<comment><USER5> The ARM market is different due to many drivers and specs not being open- sourced. In some cases, the drivers for the SoC are hidden behind an NDA and you have to be a hardware partner to get access to these drivers. Trying to install Windows RT on an iPad would likely result in finding driver incompatibilities.

</comment></comment></comment></comment></comment><comment><USER9> Personally, I feel this author is far too biased. He spends too much time in bringing Apple into context even when unnecessary. His theory that there is a 'Post-PC' era and iPads are replacing computers is just plain BS.

>Microsoft needs to focus on what it is good at, and stop chasing Apple just because it wants to be good at what Apple is good at.

This line just destroyed his credibility. The false ideology that these writers have, that is, everyone is chasing Apple these days should be corrected. I think Microsoft is just trying to make their Windows Operating systems better by introducing a new UI.

It is stupid to label anyone as a copycat of Apple just because they are trying to perfect their products.

To support my arguments, here is another article explaining very well why there is no 'post-pc' era:

[http://www.winsupersite.com/article/windows8/windows-rt- redm...](http://www.winsupersite.com/article/windows8/windows-rt-redmond- problem-144554)

It is actually not in support of Windows/Microsoft, but it explains very well why there is no 'post-pc' era.

FYI: I own 2 windows based desktops, an iMac, an iPad and 4 Android phones. There are a lot of things my iPad will never be able to do like my PC.

<comment><USER10> I hate the use of the term "Post-PC Era". The PC is not going anywhere. The PC is a tool. It's like you were using Swiss Army knife all this time and now you have a dedicated Phillips head screwdriver and a real wrench now. We just have better tools now for specific scenarios:

Are you going to use a spreadsheet on on your IPad?

Are you going to use your laptop to make a call you are stuck on the side of the road?

Both Jobs' Truck/Car metaphor and Microsoft's "PCs are everywhere" are both correct.

<comment><USER11> I see your point, but the phone example actually plays into the post-pc argument. And when it comes to spreadsheets, I'd argue that there are tons of people that don't do much with this. Sure, apple or whatever post-pc company might appear might not take over the corporate world, but it might still be a scary thought to microsoft that the post-pc devices, tailored to needs (iPad: simpler creation and consumption, iPhone: on the road calls and other stuff) could take a significant chunk of their revenue. Betting on just corporate, and not the creative sector at that, might be putting too many eggs in one basket.

So I agree that the post-pc device can never take over certain functions, but it can replace enough to make microsoft worry.

</comment></comment></comment><comment><USER12> > _"But it's worse that that. iPad sales have hit conventional PCs so hard"_

This is so over-blown. Apple has sold something like 80MM iPads since the device was released. On the other hand, there were 90 million PCs sold _in the first quarter_ of 2012.

Tablets are great, but they aren't replacing PCs any time soon. For all we know, the market will be tablet-saturated after Christmas.

> _"Microsoft can't command those prices anymore because of competition. Apple > now hands out OS X upgrades for $29, forcing Microsoft to sell its new > Windows 8 Pro upgrades for just $40."_

In 2001, Apple was selling OSX for $129. The low cost of operating system upgrades was something that happened gradually, over time.

</comment><comment><USER13> "But he appears to be oblivious to a signifiant new problem facing Windows 8: people and businesses aren't buying as many PCs as they once were. They're buying iPads."

I don't know what office you work in.. but no; iPads have not replaced PC's. Yet. There are too many applications that just don't work well enough on a tablet device. This will change of course. But not today.

Granted a lot of people in the office have ipads, but most bought it themselves. And use it with a PC. Not in place of.

<comment><USER14> That's certainly true for the office. But, as the author points out later in the article, many PCs were bought to serve as cash registers and info terminals, and those are replaced by tablets more and more.

So IMHO it's not that far fetched to say that individuals and businesses are buying _less_ PCs than they were when Win XP came along. Doesn't say they aren't buying them anymore, just less.

<comment><USER13> Really? I was just at the mail the other day, and I didn't see one iPad being used as a cash register.

The only place I see people using their iPads to cash out are at the farmers market. And that makes sense since you are outside and need something portable.

But I do agree, businesses are buying less PC's but not because they are replacing them with iPads. Because they aren't spending the money. The glut in the PC market is that everyone has one. It's saturated (I'm talking the Western World here, not developing countries). Now you buy one as a upgrade. And businesses only upgrade when they must.

MS's job is to provide a compelling reason to upgrade. Time will tell if Windows 8 does this (I doubt it actually. Maybe when more apps are built for it).

<comment><USER15> "Really? I was just at the mail the other day, and I didn't see one iPad being used as a cash register."

the comment above you also talks about 'tablets', not 'ipads'. Tablet-style things (ie rather small devices with a touch screen) have been used for cash registers and as controls in the industry for quite some time. A lot of them were merely PC's, running some sort of Windows. This might start changing now since tablets are getting more widespread, hardware getting cheaper etc.

</comment></comment></comment></comment><comment><USER16> How many words do you need to write to say "Microsoft Bad-- Apple Do no wrong" over and over?????

And all of those words and zero mention of Linux or Android...

<comment><USER17> Daniel Eran Dilger is a massive Apple apologist and fanboy. And I say this as an Apple fanboy.

</comment></comment><comment><USER18> Windows 8 is simply _better_ than what Apple and Google are offering now. Enthusiasts such as Bott are having a hard time explaining this because they are not use to Microsoft having a superior product. And, Apple apologists are beside themselves trying to figure out how Microsoft designed a better looking OS.

It is funny that our loyalties to brands make it difficult to just step back and say "man, that is cool". So, let me do it for you: "man, Windows 8 is cool".

</comment><comment><USER19>
        "Windows Phone is doing so badly that Nokia, Microsoft's
        largest and staunchest mobile partner, actually sold more
        of its abandoned legacy Symbian devices (3.4 million)
        than its new Windows Phone Lumia phones (2.9 million) in
        the last quarter."

That stat actually looks relatively impressive to me. 2.9 mil Lumia phones in a quarter? Why is this stat presented as "doing badly"?

<comment><USER20>
      2.9 mil Lumia phones in a quarter? Why is this stat presented as "doing badly"?

2.9mil smartphones is not a terribly good number if you consider how the market has grown, and how big Nokia used to be. In Q1 2011 they sold 24mil smartphones, and last quarter only about 6mil, over half of which were still Symbian. So, a pure-WP Nokia would now be only about 10-15% of what the company was in the "good old days".

Samsung sold about 10mil Galaxy Notes in a year (so, ~2.5mil/Q), and that "phablet" is quite a niche device. And Verizon alone sold more iPhones in Q3 than Nokia sold Lumias worldwide.

Maybe WP8 will change this, but I'm doubtful.

<comment><USER19> I understand that the 2.9mil figure is small compared to the figures for the other makers _today_ , however, what were these figures for, say, the second or third generation of android devices? For a relatively new entrant, a market take up of 2.9mil in a quarter makes me think MS might rise in the phone space. Any economies of scale advantage that Apple might have bought itself would likely put Android makers and WinPhone makers on the same footing, margin wise. Can the market tolerate more than 2 major players? Quite easily, i think (given symbian is kn its way out). If you include a country like India where iphone calibre smartphones are not the dominant kind, it doesnt look like a lost game for MS. Besides, they have other assets to leverage off, like office sync (which i hear is good), azure, etc.

<comment><USER20> There are many open questions here, but for example I'm not putting a lot of faith for WP in places like India or China, as the license costs and hardware requirements make it targeted for the high end of smartphones (for now).

Also, the situation with young Android or iOS is not exactly comparable to the one now, as then the markets were still dominated by featurephones, and so there were lots of "new" customers to convert. Now for example in USA the market is 50% smartphone, and people already have invested into one of the ecosystems. Getting those users to switch is a lot harder.

<comment><USER20> I may have been wrong on this one, seems Nokia is indeed intent on bringing WP to those countries: [http://www.slashgear.com/nokia-announces-inexpensive- lumia-5...](http://www.slashgear.com/nokia-announces-inexpensive- lumia-510-windows-smartphone-23253267/)

However, 200$ is still too much.

</comment></comment></comment></comment></comment><comment><USER21> Microsoft-bashing zingers from the article ...

"The problem with the PC isn't that the market desperately wants a new version of Windows that looks different and has a higher version number. The real problem is that the well has run dry, and new versions of Windows won't fix this. And really, if they're too different, they'll just accelerate the shift to Post PC devices."

"There is not going to be huge annual increases in PC shipments anymore. Everyone knows this. What they don't always seem to see as clearly is that you can have a personal computer without having a box under your desk blowing hot air away from an Intel CPU."

"Windows Phone is not just unpopular, it's so toxic it lethally crippled what was not too long ago the world's leading smartphone manufacturer."

"Not to worry, the Windows Enthusiasts tell us. Microsoft doesn't need a lack of competition, high ASPs, expanding revenues, nor even any support via Post- PC devices. The legacy pile of PCs out there will magically blow money in Microsoft's direction once Windows 8 hits because that's what happened in the past."

"There are tremendous problems facing the Surface. The first: it's based on a lie. It's called "Windows 8 RT," but consumers associate "Windows" with two things: a familiar interface and the ability to run Windows apps. Surface RT supports neither."

"The non-RT, Intel x86 version of Surface not only isn't available yet, but it's going to be too thick, expensive and heavy to compete with iPad, just like any other Ultrabook or previous Windows Tablet."

"Saying that the Surface is a combination of Microsoft's Xbox 360 hardware savvy and its Windows Phone software savvy is like one of those jokes about a train engineered by Italians, serving English food, managed by Portugal and financed by Greece."

</comment><comment><USER22> _"Saying that the Surface is a combination of Microsoft's Xbox 360 hardware savvy and its Windows Phone software savvy is like one of those jokes about a train engineered by Italians, serving English food, managed by Portugal and financed by Greece."_

Good analogy.

<comment><USER23> I think it is probably more than a little unfair although there is some truth which makes it funny.

I independently commented quoting that sentence but deleted it when I saw you beat me to it.

</comment></comment><comment><USER24> _And today, you're already seeing cash registers, terminal emulation, and other dummy tasks being performed by iPads rather than PCs._

Not arguing against the entire point of the article, but that seems like a highly localized phenomenon. In fact, I haven't seen PCs used for this in over 10 years either.

Maybe I'm missing something.

Anyway. The article seem full of half-truths and inaccuracies intermixed with opinion to support his point. I'm not saying he's _all_ wrong, but he has enough wrong to lose most of his credibility.

<comment><USER25> _In fact, I haven't seen PCs used for this in over 10 years either._

I see them all the time, in Safeway, Albertson's, Wal-Mart, Kroger's, Rite- Aid, etc. They're running custom register software & a network-boot OS, but reboot them and they still run through the same bios POST and start-up messages as today's desktop PCs.

</comment></comment><comment><USER26> > _" There is not going to be huge annual increases in PC shipments anymore. > Everyone knows this."_

It might make sense to point out that what everyone knew a few years ago was that Apple was dead. It might make sense to point out that this week Microsoft will begin shipping a true post PC operating system, Windows RT, to hardware OEM's, and that Microsoft will have first mover advantage.

Yes, it might make sense to point out these things, but everyone knows them.

</comment><comment><USER27> I would describe the danger to MS/Windows a little differently.

Windows was fairly protected by being a big natural monopoly. Making a good OS is itself a difficult task. Making a good OS & getting an application market to grow around it in a deal-breaker rich environment is nearly impossible. There were no ways to climb the hill other than straight up the steep face.

Smartphones/tablets are an angle of attack. An easier way to climb the hill. Android & iOS matured without having to compete with windows. Now two of MS's most dangerous competitors can both launch new smartphone derived PC (keyboard & mouse) operating systems with 80% of the work (in both OS building & in app ecosystem building) already done.

Even worse, there may be room for new mobile OS' to get going. The market isn't tending to the same kind of monopoly as PCs.

I predict that iOS, Android and/or yet-to-succeed OSs are going to hop from tablets & phones to TVs and other devices. Its only a matter of time before we see one gaining traction on laptops. Apple could probably release a $500 post- PC PC within a year that will double (in units) Apple sales out of the gate. Google could too (though it probably wouldn't hit the ground running as fast).

Eventually, this market will fold in on itself and we will have several OS families. I would be surprised if any one (including windows) gets as firm a grip on any market as microsoft did.

This doesn't mean that MS dies. They are (despite the criticisms) a very competent company. It just means they compete with 2-5 different companies for market share in a bigger market. consumers win.

</comment><comment><USER28> This is the reasoning behind Win8 being so bad. Microsoft has abandoned the desktop in a fairy dream to chase the iPad.

<comment><USER15> Do they really have abandoned the desktop? Not so sure about that. Also read discussion here: <http://news.ycombinator.com/item?id=4660072>. Is Windows 8 really that bad? Not sure either.. Opinions are at least mixed, so let's not start calling things a fact yet, for something that not even has been widely adopted.

</comment></comment><comment><USER29> I am hoping that the same thing will happen with mobile devices as with pc's and you will be able to buy a device and load it with the software you choose. I don't like any of the mobile OS's they all feel too restrictive in terms of storing and manipulating files and turning on and off functionality.

</comment><comment><USER30> (note: I work for Microsoft. but I certainly don't represent them and in fact I think they'd probably rather I didn't run my mouth here :) Also just because I work for Microsoft doesn't mean I know what I'm talking about when I talk about Microsoft either, it's hard enough to even keep track of what the specific team I'm on is really doing sometimes let alone the whole company so keep that in mind :) also I'm drunk :) )

The frustrating thing about reading Daniel Dilger's articles is that he's actually a good deal more knowledgeable than most tech pundits and occasionally even insightful, but his worldview is so Apple-centric that he's blind to having any idea what his blind spots are. This article is a case in point, almost everything factual in it about Microsoft is wrong, to wit:

* Zune wasn't a low-budget project (it was actually funded fairly lavishly, in part because it _was_ meant partly as a kind of pilot project for developing new Microsoft design aesthetics / patterns / practices)

* Zune wasn't based on web technologies (it used Yet Another Internal UI Framework _). Neither is Windows 8 really (there is a web-based UI framework, along with a native one, but they both sit on top of native APIs)

_ Windows 8 has nothing in common with Zune codebase-wise, and UI/design-wise though there's a family lineage between them it was developed independently from the Zune->Windows Phone line (which itself has changed a lot over the years) and diverged quite a bit

* he still apparently thinks the new Windows UI is a "thin layer" on top of old Windows, which I think he still imagines as Windows XP or whatever. in previous posts he was having fun comparing it to Bob. I think that's fundamentally wrong - while the new environment isn't really separate from existing Windows it's imo misleading to think of it as a "thin upper layer", because developing it involved making deeper changes & refactorings to every layer of the system (ARM support, window hardening, MoCOM, PLM, app model, async, etc.)

* see, not only does his ignorance lead taking jabs at MSFT that don't make sense, it leads to him missing out on potential avenues of attack that WOULD make sense - he could make fun of the ridiculous UI framework fragmentation problem Microsoft has, which is an area where Apple actually has its shit together and has for some time.

</comment><comment><USER31> Honestly I think even Microsoft fan boys don't think that windows 8 will be an immediate win.

Windows 8 is the painful stepping stone that windows needs to step on in order to move forward and stay competitive.

<comment><USER32> Have you tried it? Because I did installed it at home since the public beta and it is not painful at all. Actually it is very reliable and fast. We can argue whether it would be successful or not but I can't see how it is painful.

<comment><USER33> I agree. I don't see any reasons why I would choose to use Windows 7 over Windows 8. Even if you don't use the Metro interface for anything besides launching apps, it is still a better OS.</comment></comment></comment>


Ask HN: Best analytics tools for SaaS? - <AUTHOR>

I'm working on a B2B SaaS app (rails) and it seems like there's an overwhelming number of options -- KISSMetrics, MixPanel, HubSpot, Clicky, Chartbeat, Hummingbird, A/Bingo, CrazyEgg, Optimizely, even good ol' Google Analytics.
Has anyone figured out a good working set of tools that pair well and don't lead to bits of the user experience across many different platforms?
Where does all the talk about these different services happen? (irc, forums, blogs, etc.) <comment><USER2> If you're looking at optimization apps, there's a bundle for sale for the next ~24 hours at <http://appsumo.com/>, where you can get Performable, CrazyEgg, Visual Website Optimizer, Clicky, and UserTesting for $25. They aren't _full_ licenses, but you're still getting $500+ worth of apps for $25. If you only convert one new user because of the tools in the package, it'll have paid for itself.

I don't know of a centralized site where people talk about specific UX / funnel optimization apps, but would love to know of such a place.

</comment><comment><USER3> check out some pointers at [http://answers.getapp.com/Looking-Web-Analytics- software-ser...](http://answers.getapp.com/Looking-Web-Analytics-software- services-q618.aspx)</comment>


Integrating Spine & Rails using a JSON Ajax API and scaffolding - <AUTHOR> http://vimeo.com/30976192

<comment><USER2> Thanks for the screencast Alex, the documentation and examples around spine.js are really helpful.</comment>


Developer strikes it rich with iPhone game: Makes $250K profit in two months. - <AUTHOR> http://www.cnn.com/2008/TECH/11/18/iphone.game.developer/index.html <comment><USER2> Now that the mainstream knows that this is some type of gold rush, we'll see a lot more crap being thrown at the app store.

</comment><comment><USER3> Is it just me, or every time I see a story like this in the mainstream media, I think of O'Reilly's comments at the Web 2.0 Summit about getting serious. I mean, it's great for iPhone and Facebook application developers. Hats off to them for producing a great product, but how much real world impact does it have? I feel like students are more likely to spend their time trying to make the next big Facebook app, as opposed to solving the next big problem. Still, obviously give credit where credit is due, and clearly this guy did a good job.

<comment><USER4> Well, it's not _me_.

This former banker taught himself a new platform, realized an idea, and created a game that obviously many people are entertained by. The real-world impact? He got to quit a job he (apparently) didn't like very much, created a product that entertains people, and got to start his own company.

What real-world impact are you looking for, exactly? What's the "next big problem?" Should we all be trying to cure cancer? Save the environment? Create true AI? This may come off condescending, but I truly do want to know.

I have yet to find a single useful Facebook app, but that doesn't mean there are no apps which other people, perhaps thousands, consider to be useful improvements. Presumably, every successful product solves some sort of real world problem for some number of people, otherwise why would anyone pay for it?

Seriously, what should I be doing instead? I'm not smart enough to create SKYNET and since I'm not a pharmaceutical company there's no money in finding the cure for cancer. If entertainment and "poking" aren't enough for Tim and you, then that's on you guys to do something more with _your_ lives. As for me, I'm perfectly happy to help people find cheaper tickets.

<comment><USER3> No worries, you don't come off as condescending.

There is no doubt that this man has been successful and he seems to have changed the course of his life for the better. I am happy for him. However, consider the long term impact of cases like these. It's not about his success, it's about the type of behavior his success will inspire. People will look at him and they wont see someone who started his own company, they will see someone who made $250K in two months. Above all, people are attracted to short term profits (it's what got America into the current economic crisis). Someone who might have tried to start his own company will instead go for the quick profit creating Facebook and iPhone applications. He may be happy with his large payday, but the loss to society is large. At the end of the day, I'd rather have people starting new companies.

My concern is that cases like these will be sensationalized in the media and result in the incorrect perception that "social networking application things" are the best thing to go into. Hell, maybe this guy has real world impact. After all, people who don't normally play games are emailing him to tell him how much they enjoy it. But the way the media has presented his example will not inspire people to create value, rather, it will inspire them to go for the quick profit via the next big Facebook app.

I will admit I was a bit careless in my first post. Even entrepreneurs not skilled enough to come up with "the next big thing" should still strive to work towards solving real world problems. At TicketStumblr, you do have a real world impact. You are solving a situation that cause markets to fail: when people have incomplete information. Your service allows people to find cheap tickets because you give your users enough information to judge the market accurately. That is the type of real world impact I am talking about.

<comment><USER5> This feels like a _value judgment_ to me.

Did any of the following 'solve the next big problem'?: Jerry Seinfeld, Seth MacFarlane, Claude Monet, Francis Ford Coppola, Kubrick, the list goes on...

This guy made something that entertains people (although he's probably not yet in the league of those above ;). It seems to me that you're not valuing works of _entertainment_ as highly as some other works. That's a judgment on your part, which makes your, "should still strive to work towards solving real world problems" sound quite judgmental. I like to think there is more to life than efficient markets (even though I _love_ efficient markets)

<comment><USER3> Fair enough, and perhaps I am being a bit too harsh. :-) I would point out that I haven't wished anything but the best for this guy, and have congratulated him several times in my comments. I also like seeing a Second City showing in downtown Chicago as much as the next guy :-). I can't say I have any specific criticisms with regard to entertainment. What bothers me is when things of little value are assigned a very high value.

I will say this: entrepreneurs are people with particularly powerful talent; with that power comes a responsibility. Imagine the choice between developing a Facebook application that lets friends buy digital icons of drinks for their friends (why not just real drinks :-p) versus an Facebook application for FreeRice [1]. A responsible entrepreneur would develop the FreeRice application, even though profit might be smaller. A more concrete example can be seen in Google. They own the most valuable piece of real estate on the internet (their homepage), yet they don't monetize it. Their restrictions on content on AdSense are stricter than they are required to be by law. The list could go on.

As tdavis pointed out, there will always be people looking for a quick buck. Let them monetize the things that don't really matter. Instead, skilled entrepreneurs should tackle the more difficult problems and monetize things that create value and have real impact on lives.

I may be stretching your analogy, but I would compare Google search to the works of Claude Monet and most Facebook/AppStore applications to paint by number. If the media keeps sensationalizing paint by number, eventually people will believe in it.

[1] <http://freerice.com/>

<comment><USER6> I don't see the point of the freerice game. Why don't they just donate the money directly? I suppose the rice is paid for with advertising, but all the ads seem to be from wellfare organizations, so they are paid with donations that otherwise could go into rice directly. The only time this would REALLY yield some rice would be if somebody playing the game would end up donating money to one of the sponsors.

Anyway, that is a bit off-topic. Yesterday I had a discussion with friends who were all very depressed about their prospects on the job market. Basically they saw it as a given that everybody would either be jobless or be forced to work 60 h weeks and take shit from their bosses. So apart from the entertainment (which I personally value, too), I think it is a worthy achievement to show that there can be an escape from living as a drone. (Too bad none of my friends were programmers or engineers, but that is another problem).

As for trading drink icons on facebook, I don't know. But maybe it would serve the networking and socialising of human beings, which in turn might yield other positive effects. Maybe Unicef could win some sponsors for rice by giving out free drinks to people on Facebook, for example.

</comment></comment></comment></comment></comment></comment><comment><USER7> Here's a question -- what percent of iPhone developers see this sort of success? Would be interesting to know. C'mon Apple, please share the data with us?

<comment><USER8> We may end up 'finding' the magical secret of making money in any medium; make good stuff.

Are complete crap apps making tons of money? Probably not. I don't see the surprise in well-made or original apps being successful.

I guess the surprise may come from the fact that this amount of success is relatively unheard of in the mobile market. Shows that the iPhone is a new ballgame, or at least an old ballgame prettified and brought to the masses. Mobile sucked before, now someone's created something that doesn't, and there's not much to compare it to.

</comment></comment><comment><USER9> Man, CNN is sooo behind the news cycle. Steve announced this like a month ago. The private release of his Onyx platform is going into testing in a couple days.

<comment><USER10> There are no links in the article either. (Not counting the garbage "other news in this category" links that stay in-house)

<comment><USER11> I didn't even read the article because it was on CNN, anything from CNN is sus enough, even more so with such a hyped title.

</comment></comment></comment><comment><USER12> 250K would pay half of one of my (arguably over-inflated) mortgages. I wouldn't refuse money like that, but it's far from 'striking it rich' when you factor in what people paid for homes 24 months ago.

</comment><comment><USER13> I talked to a guy who wrote a 'map' route finder for the Psion 3c in about 1996-1997. It paid his mortgage...</comment>


Google's 'Project Loon' balloons will ring the globe within a year - <AUTHOR> http://www.technologyreview.com/news/531041/emtech-googles-internet-loon-balloons-will-ring-the-globe-within-a-year

<comment><USER2> I've loved this project every since i first heard about it. I'm glad to see it being implemented so soon!

</comment><comment><USER3> End around mobile carriers?

Wouldn't mind ditching mine, that's for sure.

<comment><USER4> Would need a whole lot of ballons to do that....

(About 10M? 30M?)</comment></comment>


Show HN: TheElevatorGame.com results - <AUTHOR> http://joshrweinstein.com/post/18578417213/theelevatorgame

<comment><USER2> "If we assume that everyone in US cities with >500,000 people makes two elevator round-trips per day, the US is losing out on 270 days of worker days per day or $13 million per year. Each elevator used wastes $160 per year. If your elevator was installed x years ago and your contractor charges you y per hour and takes z hours to invert the buttons, should you inver them? Return ((25-x) _160-y_ z >= 0);"

Sorry but this is absolute garbage. I hate when people take a meaninglessly insignificant value, and then extrapolate it out to come up with a ridiculous dollar value, to try to prove a point.

270 worker days because of elevator buttons? Imagine how much the US loses because people sit on the toilet for 2 mins longer every day because they play Words with Friends. I assure you that lost productivity completely outweighs any time spent figuring out which buttons to press on an elevator.

Another error on your part is that you even said yourself that familiarity with the button layout will improve the time. So basically, if the same person is using the same elevator over and over again, it can't improve much further after a few attempts. It's only the first 10 times that the person actually might take more time, and after that it has reached the optimal level.

Sorry to be blunt, but you should abandon this project. It's not useful at all.

<comment><AUTHOR> hey steve, first off - thanks for reading the whole way through and in such detail. i completely agree that there are more important matters in the world. the real point of the piece is at the end when i talk about the importance of evaluating all the experiences that you encounter and how you approach the design thereof. the dollar value may not be the most scientific of conclusions, but just trying to give a tangible sense of what the effects are. it's also somewhat light-hearted, in case that wasn't clear.

in terms of further pursuit of the project, didn't have any plans for the buttons in particular except to underscore the importance of user experience design

</comment></comment><comment><USER3> Wonder how this changes when you take basement levels, strange starting floors, or different popular floors into account? My current building has three basement floors, which are below the ground floor on the button panel, my Uni building's ground floor was actually floor 2 (it was built on a hill!), and the local shopping center has the bottom floors dedicated to parking, so the usual pattern is reversed: 50% of the traffic goes to the top floor to access the shops.

</comment><comment><USER4> If you start counting microsecond savings, shouldn't you also account for the fact that people looking for a Lobby button _in a real elevator_ (and not on a website) would actually be looking at the bottom of the panel, because that's where a Lobby button typically is. If the button is not there, then a person will have a WTF moment, followed by a mental stumble, followed by a guess that the Lobby is actually on the 2nd floor, followed by time needing to look the panel over and so on. Even if the button is at the bottom, but of a different shape, size or if it has a LOBBY on it, it's still a hassle, because that's not what's expected of it. If you ever been to Vegas with its humongous "Casino Floor" elevator buttons, you should be able to relate to this with ease.

The whole thing is basically an <http://en.wikipedia.org/wiki/Spherical_cow> example. It is silly.

<comment><AUTHOR> this is accounted for towards the end of the blog by way of insisting on the importance a real-world use case experiment and determining how people adjust to the configurations over time

</comment></comment><comment><USER5> Having two separate lobby buttons which take you to the same floor is _extraordinarily_ confusing to me. I had to make sure I wasn't misunderstanding something because it seems like an obviously bad idea. But no, that's the plan:

"Adding a big lobby button at the top will make it faster to identify and hit the lobby button, while persisting the existing lobby button on the bottom."

The clear solution is to make the existing lobby button twice as wide, right? I'd have been very interested to see the results of a layout like that.

That said, elevator buttons are in need of redesign. I have never in my life hit the "hold open" or "close now" buttons because something about the triangles confuses me about which is which, in the short time I have during which they'd take effect.

<comment><AUTHOR> It sounded good in my head...I guess the results showed that having two lobby buttons was not the right way to go! Glad to hear you support the redesign :D

<comment><USER5> Well good for you for trying an experiment about it.

You might like the book _The Design of Everyday Things_ which is about issues like confusing elevator buttons.

I just flipped through my copy, actually, because I wanted to quote a passage at you, but I couldn't find it so I guess I was wrong: I had thought one principle of good design was a one-to-one mapping of interface features to functionality. Two buttons doing the same thing would break this concept, but maybe it's not a principle after all.

</comment></comment></comment><comment><USER6> Hey thanks for the shout out! I was wondering when you were going to post results.

There are some really cool visualizations in the linked opani page: [http://opani.com/ryan/elevator- analysis/results/#key=elevato...](http://opani.com/ryan/elevator- analysis/results/#key=elevator)

I think the most relevant part of this for web folks is the gamification aspect (obviously its what I was interested in in your previous post). I'd love to see a version of this where you show 50% of users "play 20 times to get an easter egg" and give the other 50% no incentive. How much does it actually increase engagement?

<comment><AUTHOR> haha of course, thanks for the active commenting on the last thread! i think that's a good example, but it seems pretty clear that your hypothesis was correct :D

<comment><USER6> Well its an obvious insight. But the actual increase in time spent on page is what would be interesting.

<comment><AUTHOR> We have the session lengths in terms of time as well -- all the data is on git

<comment><USER6> But you had the gamification stuff in place for everyone right? So there'd be no control group.

</comment></comment></comment></comment></comment><comment><USER7> Elevators should have touchscreen panels allowing an easy change of interface.

<comment><USER3> Physical buttons with braille are probably a bit easier for blind users. You could have the elevator read out the label of each button on the screen as it was dragged over, or use voice recognition. However, since a decent number of lifts have braille labels, a blind user would expect to be able to run a hand over the buttons, guess roughly where there button should be, and read the braille label - and once they'd found that button, they could then remember its physical position (two buttons from the left, three from the top) for future use.

Physical buttons also require very little power when not in use, and their cost scales relatively well regardless of number of buttons - whereas a touchscreen panel three or four feet high for a very tall building would be pretty pricey. Touchscreens do have the advantage of no moving parts, so they're waterproof and have no internal wear and tear over time (assuming a sufficiently tough protective screen), but monitor illumination dims then breaks fairly quickly, and any protective plastic/glass shield over the touchscreen could get pretty scratched up.

<comment><USER8> I believe a haptic tablet experiment is in order...</comment></comment></comment>


Show HN: Coffee Filter, useful coffeescript functions for user interaction - <AUTHOR> http://mgeraci.github.com/Coffee-Filter/

<comment><USER2> The library name is quite misleading. I was expecting extensions to the CoffeeScript language. But instead this is just a bunch of javascript functions written in coffeescript for use with JQuery. A better name might be "JQuery helpers".

A nicely designed site though.

</comment><comment><USER3> A lot of these seem really useful -- a nice set of things I've grumbled at having to write myself before as well as things that I haven't had a need for but I could very easily see being useful.

Out of curiosity, is there a reason you're actively marketing it as CoffeeScript helpers? For people using it as a drop-in library, it shouldn't make a lick of difference whether it's written in CS or vanilla JS, especially since you have the compiled JS in the GitHub repo. That isn't to say that you should be obscuring the fact, but right now the name says to me that being written in CoffeeScript is a significant part of the value being provided, which doesn't really seem to be the case.

<comment><AUTHOR> Thanks a lot. The CoffeeScript marketing is threefold:

\- I think CoffeeScript is really cool, so I like spreading the language.

\- I wrote them in CoffeeScript for a Backbone app also written in CoffeeScript, so for what it's worth it's more "authentic"

\- I thought Coffee Filter was a cute name

Glad you might find them to be useful!

</comment></comment><comment><USER4> These all look pretty useful but they all seem kind of unrelated and the project strikes me as kind of unfocused. It would be cool if the these features were added to a larger project like Bootstrap.

<comment><AUTHOR> Totally. It's not necessarily meant to import into your project whole hog, it could just as easily have been a set of gists. So feel free to pick and choose ones that you might find useful!

</comment></comment><comment><USER5> Nicely done, these look like useful functions. I think it would be helpful to split them out as separate downloads so I can integrate them piecemeal.

</comment><comment><USER6> Why are all the function names in snake_case instead of camelCase?

<comment><AUTHOR> That's a holdover of the project from which I extracted these, reachably. We decided to use snake case across html css and javascript to keep things standard - feel free to judge that decision.

Given that people will most likely be using this in more traditionally camel cased situations, I think I will go through and change that this weekend. Thanks for pointing that out!

<comment><USER7> Please keep the snake_case. Think of all the things that CoffeeScript borrowed from ruby while omitting the snake_case. We aren't that far from being able to write most frontend code with snake_case. All it would take is a Backbone fork and a jQuery wrapper to get us most of the way there!

<comment><AUTHOR> Interesting perspective! I agree, but think the majority of people prefer semantics by language.

</comment></comment></comment></comment><comment><USER8> Coming soon... TypeWriter - templates for TypeScript

</comment><comment><USER9> I generally don't get much value out of things that look like pet libraries on here, but there are a few utilities in here that I have genuinely missed having in the past, so kudos there.

Completely offtopic though, the 'drip' icon actually bugs me, and I actually had to stare at it for a minute before I realized why -- you've got brewed coffee dripping from a pristine filter. S'weird.

<comment><AUTHOR> Haha, that's an MVP animation. The next iteration will have a filter that slowly gets saturated and THEN drips.</comment></comment>


Cures Act Offers Tax-Favored Vehicle for Small Employers to Pay Premiums - <AUTHOR> http://healthaffairs.org/blog/2016/12/09/cures-act-offers-tax-favored-vehicle-for-small-employers-to-pay-premiums-and-more/ <comment><USER2> The article title, absent its context (a health care blog), is confusing.

Instead read it as, "HCA-modifying 'Cures Act' Offers new Option Benefiting Small Employers"</comment>