Getting Comfortable With SSH - <AUTHOR> http://jcsalterego.github.com/2011/02/04/getting-comfortable-with-ssh.html <comment><USER2> Good article overall, but there is one major problem with the section on public-key auth; it's rarely a good idea to use blank pass phrases on your private keys, for two good reasons:

1\. The security implications. Without a passphrase, anyone who manages to snare a copy of your private key can use it to access any servers where you've authorized it with no further credentials needed. Not good. Using a passphrase turns SSH auth into a poor man's two factor system: what you have (the key file), and what you know (the passphrase).

2\. It breaks agent-forwarding, which is the system that gives you the ability to SSH onwards from the remote machine to other machines without (again) being asked for your password. This has practical implications when using SSH to drive things like application deployment over git, when you have to ssh onward from the server to your git repository. Doing things this way sidesteps the awkward use of deploy keys, and is actually easier to set up and use as well as being more secure. With agent forwarding, there's no need to keep your private key anywhere except your 'home' machine, and yet you get the same benefits your would if you had it everywhere.

The annoyance of having to type in your passphrase every time is greatly lessened by the use of a key agent on your 'home' machine. OS X has provided a key agent since 10.5 I believe, and stores the passphrase in your Keychain (you know you're doing things right if an OS X dialog box prompts you for your passphrase when running SSH in the terminal). Gnome has one built in as well, and ssh-agent is always around for people who want to roll their own.

If there's interest, I'll write up a blog post about how to get this stuff set up. It's not really easily discoverable stuff, but it _is_ really simple and useful once you get it up and running.

<comment><USER3> If you are going to go the terminal way with ssh-agent I highly recommend using keychain (<http://www.funtoo.org/en/security/keychain/intro/> ) which is quite easy to setup and use, and much easier than having to do ssh-add and so on every time you want to use a specific key.

<comment><USER4> Keychain is the best. It also works with gpg-agent, if you're old and cranky enough to still think gpg is worth using.

<comment><USER5> I didn't realize I was old and cranky...

I've been using gpg-agent with a smartcard for ssh authentication for the past six months or so. It's the way, the truth, and the light.

Real two-factor authentication. The key can't be compromised without trying to physically take apart the chip on the card and somehow access the internals. Three wrong password attempts and the thing locks. Three wrong attempts with the admin unlock code and the card self-destructs. So even if I lose the card or someone jacks it, it can't be brute forced.

(Yes I don't need that level of security, and I'm not even being paranoid; it's just neat. Makes me feel like James Bond or Batman or some shit like that every time I ssh somewhere. Yes I'm that lame... )

And since it's still using a standard RSA key for ssh authentication, I don't need to install anything special like experimental pam modules, on the host machines. Just copy the public key into authorized_keys. That's nice since I don't have full admin rights on a lot of my host machines.

<comment><USER6> Sounds interesting? Got a reference? Thanks.

<comment><USER5> There is a howto on the gnupg site, but frankly it's a little out of date. It focuses enough on hardware to scare people away, but these days most readers are libccid compatible, so it's a non issue. Setup is actually pretty simple.

Basically you either get a card and reader:

[http://shop.kernelconcepts.de/product_info.php?cPath=1_26...](http://shop.kernelconcepts.de/product_info.php?cPath=1_26&products_id=42)

Or get an all-in-one cryptostick:

[http://www.privacyfoundation.de/crypto_stick/crypto_stick_en...](http://www.privacyfoundation.de/crypto_stick/crypto_stick_english/)

And setup your gpg keys on there, either by generating them directly on the card or transferring existing keys. These are simple commands documented elsewhere. In addition to the normal signing and encryption keys, you also generate an authentication key.

Then 'ssh-add -L' will spit out your public key in ssh format to copy on the host machines as usual.

After that you just make sure that you'll use gpg-agent instead of ssh-agent. The man page for gpg-agent shows you what you'll want to add to .bashrc.

Then when you ssh into a machine, gpg-agent will take over, pop up a little dialog called pinentry, you enter your code, and you're good. When you go to lunch, remove card, and ssh authentication with that key no longer works.

</comment></comment></comment></comment></comment></comment><comment><USER7> I liked the article but I thought he spent too much time on getting the hostname short. Just install bash_completion and then all ssh/network stuff starts completing based on your known_hosts. His "annoying.hostname.example.com" becomes "ssh ann<tab>" which is still shorter than anything he had there.

I'm glad he did mention my favorite config file option for setting the username:

        Host example.com
          User = someweirduser

That way I don't have to remember to "ssh email@example.com" because some client set up a weird user for me--I just "ssh example.com" instead.

<comment><USER2> Small point: the syntax of .ssh/config doesn't use equal signs; the actual format of that stanza would be

      Host example.com
      User someweirduser

Another subtle point about SSH config -- only the first matching entry (in top-to-bottom order) for a given parameter is taken from .ssh/config. If you have multiple Host entries that match for a given hostname, the first matching User, Port, etc, entry will be the one that ssh uses.

</comment></comment><comment><USER4> One of the most impressive SSH tricks I've seen is the ControlMaster option. It saves your authentication information on a per-(user, host) basis, which lets you share one connection among multiple ssh/scp/rsync commands and TRAMP sessions. This is less useful if you use passwordless keys or ssh-agent (please use ssh-agent), but becomes much more useful if the host you connect to doesn't support key-based auth.

        # multiplex connections to one host
        ControlMaster auto
        # where is that file
        ControlPath ~/.ssh/master-%r@%h:%p

Other useful things in my .ssh/config, check the manpages before you use them:

        # use compression
        Compression yes
        # really really compress it
        CompressionLevel 9
        # forward X stuff
        ForwardX11 yes
        # yes, really forward X stuff
        ForwardX11Trusted yes

<comment><AUTHOR> The only issue I had with ControlMaster, IIRC, was that when I killed the original connection, it would take everything else down with it.

There's a good chance I was just doing it wrong™ though.

<comment><USER4> The behavior I've seen is that when you log out, the process doesn't end until all other clients to the connection have exited. I've observed what you describe if I then ^C it.

The way I usually do it is by opening something over TRAMP before opening any other ssh windows. That way, Emacs will handle the connection maintenance and I don't really need to see that it's up. If it dies, I just try saving something and it'll re-establish the connection.

If you don't use Emacs, you can always just start a dummy connection first and minimize/disown it.

<comment><AUTHOR> That sounds about right.

Good tip about TRAMP, although I tend to exit out of my emacs sessions frequently. For my long running ssh tunnels, I just screen them.

<comment><USER4> Ahh, then you want to learn about emacs --daemon and emacsclient. :-)

</comment></comment></comment></comment></comment><comment><USER8> A lot of guides online make the 'mistake'(a minor one) of still using DSA instead of RSA. The patent has expired. I assume a lot of those guides are out of date.

So, thanks for using RSA in the article!

EDIT: I just did some digging. Apparently DSA cannot be used to encrypt. One more reason to keep using RSA, I suppose.

<comment><USER5> Technically your keys are only used in the handshake. After that you'll get the same strength encryption regardless of the algo used for the original handshake. So using DSA doesn't mean that your connections are now unencrypted.

The problem with DSA is that you can only have a key size of 1024 bits per the original standard. That's starting to get a little weak these days. (Keep that in mind if youi're using PuttyGen to make your keys!) This has since been changed, some systems use "dsa2" and higher bit counts, but it seems OpenSSH doesn't directly support that, at least according to the man page.

Anyway, the new version of OpenSSH just got ECC, which seems to be the future of public/private key encryption. So soon people will be talking trash on RSA. (I kid...)

</comment></comment><comment><USER9> Another tip:

An ssh session's escape sequence is "<Enter><tilde>", which if you refer as "<X>", you can do the following:

1\. Kill an unresponsive ssh session: <X><period>.

2\. Enter an ssh command line, to open new forwarding ports among others: <X><C> Then enter <question-mark> for help.

<comment><AUTHOR> I use this all the time. It's amazing.

</comment></comment><comment><USER10> found a couple of cool tricks in the article, mainly using the -t flag to set up a chain of servers to pass through when machines are NATed or firewalled.

Seems kind of weird in the tunnel section that the -D flag was not mentioned which creates a dynamic tunnel that can go to multiple hosts when set up as a socks proxy in a web browser.

<comment><USER2> Shame on me for not reading that section in closer detail. The -t method of forwarding SSH through has a number of limitations, and isn't really the golden path for getting past gateway servers. What you instead want to do is add the following as a config option for the host you're trying to reach:

      "ProxyCommand ssh <gateway_machine> nc %h %p"

You can do this by adding the above line in the relevant place in ~/.ssh/config, or on the command line like so:

      ssh -o "ProxyCommand ssh <gateway_machine> nc %h %p" user@destination_machine

<comment><USER11> In fact what you really want is not to use nc but ssh's -W option:

        ProxyCommand ssh -W %h:%p <gateway_machine

<comment><USER2> _Interesting_ \-- I did not know about this one. Looks like it was implemented in OpenSSH 5.4, which isn't yet in Ubuntu LTS or OS X (the two environments where I spend most of my days), so it may be a little bleeding edge for general use just yet. Good to know, however.

</comment></comment></comment></comment><comment><USER12> If you learned something from this, be sure to read [http://www.jedi.be/blog/2010/08/27/ssh-tricks-the-usual- and-...](http://www.jedi.be/blog/2010/08/27/ssh-tricks-the-usual-and-beyond/)

</comment><comment><USER13> I used this video guide to setting up PuTTY w/ Pageant on Windows: <http://vimeo.com/4856534>

It's from a series on setting a a Linus VPS for noobs, and I found it indispensable. My only problem is that my Linode runs so trouble free, that I rarely need to go in and mess with it, so even though I've been running a VPS for a year, I still have a limited knowledge of Linux administration.

</comment><comment><USER14> Any halfway decent tech team manager or sysadmin should make a very clear company-wide policy against passphraseless SSH keys for developers.

Github compares it to leaving your password in a file on your computer for attackers to find, but it's MUCH worse than that. Such a password file could be anywhere on your computer and an attacker would have to search for it and may never actually find it unless it was clearly labelled.

SSH keys are defined in your SSH config file and attackers know exactly where that lives. Using a passphraseless ssh key is more like leaving your password on a sticky note attached to your monitor.

This article is spreading bad advice here to users who don't understand why, and the author should update his post and retract it.

<comment><USER15> Help me out here: if an attacker can get into my account on my OS X or Linux box, he can run sudo, which means he can replace my ssh client with one that will capture my passphrase the next time I use it.

Can you give a concrete example of a scenario in which an attacker will be able to read my SSH config file but not be able to get into my account? Suppose the SSH config file is not backed up.

I am not saying you are wrong about the need for a passphrase, BTW.

<comment><USER16> On Linux you need to enter your password to run sudo. If someone can read all the files in your home directory but not make you enter sudo, then they can see your ssh keys but be unable to replace /usr/bin/ssh

<comment><USER15> Thanks. I have been using OS X where sudo does not ask admin accounts for a password.

</comment></comment></comment></comment><comment><USER17> You could use plink for setting up reverse ssh tunneling. The documentation on putty and plink has more details.

</comment><comment><USER18> +5 AGILITY.. nice touch XD</comment>


Looking for a web end-to-end framework - <AUTHOR> http://tryingthings.wordpress.com/2013/10/30/looking-for-an-end-to-end-framework/

<comment><USER2> I like your suggestions. I have tried and quickly abandoned so many of these new dime a dozen frameworks. They claim to work like magic, but, usually right off the bat, with the "hello world" example, I find myself thinking, "Why do I have to do _that_ every time? Shouldn't it do that for me?"

Also, there are the frameworks where you have to install every package manager and library (which I've never heard of) under the sun and then follow instructions like "Just jimify Belch in your Crandal project..."

<comment><AUTHOR> Yeah, I don't mean "jimifying Belch" would be necessarily bad, as long it would be really making a difference. More often than not it's however just boilerplate - understandable in a startup project for lack of resources, but certainly not something to see in a framework claiming to be "stable".

<comment><USER2> True. It's just kind of an idiosyncrasy I've noticed among these "easy, magic" frameworks. Those things do usually get ironed out, but they are a barrier and probably something that could be easily thrown into an install script.</comment></comment></comment>


PVS-Studio static code analyzer for C, C++ and C#: the cases for Free use - <AUTHOR> http://www.viva64.com/en/b/0457/ <comment><USER2> The site also mentions bugs found in open source projects using PVS-Studio [0]. The ones found in GCC [1] are particularly noteworthy.

[0] [http://www.viva64.com/en/examples/](http://www.viva64.com/en/examples/)

[1] [http://www.viva64.com/en/b/0425/](http://www.viva64.com/en/b/0425/)

<comment><AUTHOR> And LLVM too :) [http://www.viva64.com/en/b/0446/](http://www.viva64.com/en/b/0446/)

</comment></comment><comment><USER3> An acceptable compromise. I've read some of the reports done on various projects and found PVS-Studio interesting.

As an individual developer, I'd been interested in the product, but hadn't convinced myself to invest in the time to install/learn a new tool that I didn't know the price of.

This, though, is something I can easily place in my source, get the usage, and if it seems usable, contact you for the price and make a decision then.

</comment><comment><USER4> Seems fair. I like it! Will definitely give this a shot.</comment>


Bacn is the New Spam - <AUTHOR> http://blog.glider.io/bacn-is-the-new-spam/

<comment><USER2> Another blog, another false top-left-logo click that I thought would take me to the product.

If you can't pay attention to a detail like that, how can I expect the product itself to be any less frustrating?

Show us you're paying attention. I beg of you.

<comment><USER3> I clicked the picture of bacon at the bottom of the article hoping to see a massively blown up photo of a pile of greasy bacon, and was actually redirected to the app!

I would be interested to see click-through data on that... :)

<comment><USER4> I will try and get you that data :)

</comment></comment></comment><comment><USER5> Yes, they're absolutely right. Not having bacn in my INBOX is wonderful. But I have that already, using Gmail filters. Glider could automate it for me, which would be valuable. I don't think I'd value it at $9/month, though. Maybe I'm not in the target market for this.

</comment><comment><USER6> Nice to see more competition in this space. I've found newsletter email filtering to be a godsend and it's changed how I deal with email.

I used to setup tons of filter rules manually, but now I just subscribe to anything of interest, and don't worry about the consequences.

Sanebox _[1]_ allowed me to do this. It uses a ML algo over any Imap account (I'm using it on Gmail) so it's email client independent. It works incredibly well.

No affiliation with SB, just a happy customer and it's 1/4 the monthly price to boot.

 _[1]<http://www.sanebox.com/> _

</comment><comment><USER7> Why do people write the word "spam" in all-caps? It's not an acronym...

<comment><USER8> Actually, it is. It stands for "Stupid Pointless Annoying Messages".

...At least, that's what I've always thought it to be, anyway. Now that I go back and check, I can't quite find a source for this claim.

<comment><USER9> My understanding is that it's derived from 1970s database programmers "spamming the database" with dummy data. The original term comes from Monty Python's Spamalot skit, I believe.

</comment></comment></comment><comment><USER10> Doesn't gmail's smart labels provide this functionality? I've LOVED having "Promotions" skip the inbox and land in their own label.

<comment><USER11> I find that Gmail's smart labels work very nicely for me.

</comment></comment><comment><USER12> I installed glider.io and, as of now, I'm not sure why it is better than simple Gmail labeling / filter. But on the other hand, it is better that "smart" outlook.com classification (which cannot even figure out where to put mails from email@example.com). So there might be something about this is the future.

</comment><comment><USER13> Gonna have trouble acquiring users at $9/month.</comment>


Ask HN: What happens to mono that .net is now cross-platform - <AUTHOR>

Microsoft has made .NET opensource and crossplatform, now what happens to alternatives that was provided before to offer .NET on other platforms. Oh one last thing, does this mean I use my c# code and compile it for linux now? <comment><USER2> Felix the Microsoftie here. You've been able to use C# code and compile for Linux for a while now - thanks to Mono. The challenge is that the Windows implementation has one code base while Mono has a complete separate code base.

The Mono community was essentially forced to re-implement .NET because no open source implementation was available. Customers have reported various mismatches, which are hard to fix because neither side can look at the code of the other side. This also results in a lot of duplicated work in areas that aren't actually platform specific. The best way to build a cross-platform stack is to build a single stack, in a collaborative manner. Mono and .NET aren't one, but they'll be able to work together in an unprecedented way. There's Linux stuff in Mono that we would like to use (and vice versa).

To answer your last question: Yup.</comment>


The answer is π^2/6: What's the question?  - <AUTHOR> http://www.blog.republicofmath.com/archives/4801 <comment><USER2> If you click through to the mathworld page [1], there's a pretty awesome geometric interpretation of the Riemann zeta function:

"If a lattice point is selected at random in two dimensions, the probability that it is visible from the origin is 6/π^2. This is also the probability that two integers picked at random are relatively prime. If a lattice point is picked at random in n dimensions, the probability that it is visible from the origin is 1/ζ(n), where ζ(n) is the Riemann zeta function."

[1] <http://mathworld.wolfram.com/VisiblePoint.html>

<comment><USER3> That's not really the geometric interpretation of the Riemann zeta function, but rather the series \sum_{k=1}^\infty 1/k^n. Riemann zeta function makes sense not only in positive integers greater than 1, but also on the almost whole complex plane, and identifying complex zeros of zeta function is of main interest.

<comment><USER2> Okay, so it's an interpretation of Riemann zeta on positive real integers. It's still neat. ;)

</comment></comment></comment><comment><USER4> From the article: "Here's a simple yet revealing question to ask people at all levels of mathematical attainment: 'The answer is 10. What is the question?'"

I know I'd love to hear HN's answers.

<comment><USER5> Here's one: How do you express the number of digits that exist in any given base, in that base?

<comment><USER6> If you're using Arabic numerals, that is.

</comment></comment></comment><comment><USER7> Theorem without proof is unsatisfying.

<comment><USER8> This includes a brief sketch of Euler's argument as well as a several formal methods of proof:

<http://en.wikipedia.org/wiki/Basel_problem>

</comment></comment><comment><USER9> A little harder: the answer is pi^2/(12 log 2). What's the question?

</comment><comment><USER10> Standard way to do this is with Fourier series on the sawtooth wave.

<http://math.mit.edu/classes/18.03/spr10/lec_22.txt>

</comment><comment><USER11> For all values of n=pi?

<comment><USER12> The title says "π" (pi), not "n" (en).

</comment></comment><comment><USER13> I like this a lot, it seems like a classic example of divergent thinking, in a subject (math) that doesn't traditionally involve a lot of it.

<http://en.wikipedia.org/wiki/Divergent_thinking>

<comment><USER12> _> divergent thinking, in a subject (math) that doesn't traditionally involve a lot of it._

I strongly disagree with that.

Divergent thinking as well as creativity is very important in mathematics and has always been. Solving problems - this is what mathematics is all about. So creativity is vital, and more important in math than in many other professions that call themselves "creative".

It is a common misconception that math is about following calculation steps and simple algorithms. This is "math" as taught in school, and it is okay because those are the very basics. However, as soon as you join mathmatical competitions, or even start studying math, things are different: It is no longer about _using_ math but about _understanding_ and maybe even _extending_ math.

That means: defintions, theorems and proofs. And, of course, always keeping some examples, visualizations, simplified views, and heuristics in mind. Those help you to stay on top of things, so you don't get lost in this forest.

To find proofs, or even just good definitions (which is sometimes as important), you have to be _very_ creative. Learning other proofs means getting lots of ideas about what could work, but as soon as all well-known tricks are exhausted, there are still lots of open questions whose definite answer (i.e. proof or counter-proof) will need yet another genius. Or just another student whose thinking diverges into directions that others haven expoited yet. Or maybe they also thought about that, but didn't take this seriously or didn't try hard enough.

Dedication to an concrete problem at hand is in no way a contradiction to divergent thinking. It is more about the combination of convergent and divergent thinking. Sticking to only one of those, and you either won't get far enough, or be lost into totally secluded corners without even noticing.

Also don't be fooled by math competitions (which are very different from plain calculation competitions!). Students may get excercises that are fairly well- known to mathematicians. However, in the view of the students those are new, unknown problems they almost certainly haven't heard of up to that point. They might be well-prepared with lots of standard tricks and maybe know about similar-looking issues. But in the end of the day, they have to be creative - very creative - to find their proof.

It is not uncommon for the jury to receive a solution from a student the original creators haven't thought of. Usually, such an exceptionally creative solution leads to a special award on the competition.

Also, usually the students get multiple tasks, so when they get stuck with one excersice, they can skip to the next one. When they later come back to the first one, it usually makes a lot more sense and have some more ideas to explore.

<comment><USER13> I think the author of the post was talking about middle and high school students, who don't really see proofs. (I don't think triangle proofs in Geometry class count) My high school math felt mostly mechanical, and involved nothing like the kind of activity the author wrote about.

<comment><USER12> I agree that math in high-school should emphasize more on the creative part. It is harder, but for those students interested in it, showing to them what math is _really_ all about seems to be the only way to keep them motivated. And math competitions help a lot in that regard, at least in my country (Germany).</comment></comment></comment></comment>


If the world's population lived like American's do - <AUTHOR> http://www.bbc.co.uk/news/magazine-33133712

<comment><USER2> Please don't rewrite titles.</comment>


YouTube to Introduce Limited Film Rental Service - <AUTHOR> http://www.nytimes.com/2010/01/21/technology/internet/21youtube.html <comment><USER2> If I started a store with 5 movies to rent that no one has ever heard of and advertised a limited supply people would think I was crazy.

<comment><USER3> Au contraire - there may only be 5 movies to rent now, but the jkey difference is that you can check out the inventory without the trouble of having to go to the store. If you hear that one of those movies is awesome, wouldn't you consider watching it? Or what if next week there are 10, next month 20? Sooner or later you're going to see something you like.

I'm all in favor, since I'm in indie film production myself - I'd much rather sign up via Youtube and promote via the internet than spend ages chasing distributors for a very low budget project. Indeed, the film I'm working on right now might benefit from this. I've been waiting years for such an option.</comment></comment>


SOPA: Obama could pay for decision in Hollywood cash - <AUTHOR> http://www.politico.com/news/stories/0112/71635.html <comment><USER2> This brings up several questions. How much tech industry lobbying dollars are there, and how does it stack compared to the Entertainment industry? More importantly, how much non-monetary sway do they have on Washington?</comment>


Glenn Beck's New Company, Markdown, Basically Belongs To John Gruber - <AUTHOR> http://www.betabeat.com/2011/05/23/ooops-glenn-becks-new-company-markdown-was-taken-by-john-gruber-long-ago/

<comment><USER2> I predicted something like this in an old HN comment:

<http://hackerne.ws/item?id=2247654>

<comment><USER3> Amusing, but far-fetched. Gruber wouldn't weep on camera on a daily basis to emotionally hook the vulnerable. If anything, his style tends towards the dispassionate.

Regarding the article, I'm amazed that owning a twitter username today is made out to be almost as if he owned the domain. Is twitter that important?

</comment></comment><comment><USER4> Something tells me Glenn Beck's star power will help his new website quickly catapult to the top of search engine rankings.

</comment><comment><USER5> Trademark law has classes for a reason. I'm sure Beck is perfectly within his limits to operate a company called Markdown that has nothing to do with Gruber's version. Also, why doesn't Gruber own Markdown.com? Seems like an obvious oversight.</comment>


Fukime - hacking Hacker News with a cool startup name - <AUTHOR> http://fukime.tumblr.com/post/8534997631/hacking-hackernews-with-a-cool-startup-name

<comment><USER2> I read it as "fuck me". Is that the joke?

<comment><USER3> If this was read as a Japanese phrase, it would be pronounced as fu-ki-may. Nonetheless, using this as a hook is a gimmick at best.

<comment><USER2> Fu-ki-meh, actually, which is why I don't really get it.

</comment></comment></comment><comment><USER4> The marketing aspect is definitely a positive, but I'd fear it may make adoption of your services in the corporate world a little difficult.

<comment><USER5> Corporates are real people too, and people enjoy humor. That's one thing we've realized with our name change. We were formerly the incredibly boring "Transparent Financial Services..." and our website was the terrible <http://transfs.com> until last September, when we changed our name to the more fun name of FeeFighters (<http://feefighters.com>). We're in the B2B space, and have customers that range from HN startups to large nonprofit museums and public companies. They are all run by PEOPLE who love that we don't take ourselves too seriously.

On the flip side, we actually had one VC who turned us away because he hated our new name... but Fukime him.

The larger problem I see with your name is that people won't know how to pronounce it/spell it. Buy all the alternates and redirect them, but also take this feedback into account - you might find it worthwhile to change your name.

<comment><USER4> I agree with your overall point. But, like you said, people may not know how to pronounce it. Imagine all of the people that may pronounce it "fuck me" and simply may not take it seriously.

I think the overall marketability of a humorous/cool/different name is great, as long as it isn't in the realm of possibly being distasteful to a large number of people.

I think many may discredit the company immediately, thinking it is a joke or satire.

</comment></comment></comment><comment><USER6> You could have the best technology in the world but the name would never pass the smell test on due diligence.

Professionalism means as much as technology when it comes to things I would base a product on.

</comment><comment><USER7> I alpha tested the product and I love it.

It's good for it to have a memorable name because it kicks ass and has some killer candies. It shows how simple the cloud computing on mobiles should really be.

I'm looking forward to use Fukime Candies, regardless of their name.

</comment><comment><USER8> there's the saying that any publicity is good publicity, but I still fail how funny posts or things like this really help people differentiate and want to use your service, as a mobile cloud computing company. Yes I know about your company and the name, but you still haven't convinced me to adopt.

</comment><comment><USER9> Your 24 hrs fame on HN is probably adding zero value to your startup. I don't understand why ppl get so excited when they got techcrunched, nonetheless HNed. Anyway change your name, I thought that was obvious reading into the comments of that thread.

<comment><USER10> If your customer base largely consists of the kind of people who read HN, there's really no better place to launch.

I had immense success launching my startup naming business here[1], the conversion rate on clicks from HN exceeded 1%...

On the other hand, when my Photoshop business made the front page[2], it didn't bring in a single new sale. Essentially, it all comes down to who your real target audience is.

[1] <http://news.ycombinator.com/item?id=2257572>

[2] <http://news.ycombinator.com/item?id=2063061>

</comment></comment><comment><USER11> Oh that's a real company? I thought it was just a hoax/joke because of the name.</comment>


A Bit of Heresy: Functional Languages are Overrated - <AUTHOR> http://www.benrady.com/2010/06/a-bit-of-heresy-functional-languages-are-overrated.html

<comment><USER2> A really incoherent article that's wrong in a lot of ways. The title is misleading because the author's main beef is with the idea that functional languages are the "solution" to the concurrency "problem." He admits that he's tried to learn both Erlang and Haskell and given up because the languages are too hard, too complex and "absolutely full of academic shitheaddery" and points to the reference manuals of Haskell and OCaml as proof (edit to add: Erlang is the opposite of "academic shitheaddery". Totally born and bred for business!). I might come off as an asshole for saying this, but if attempting to learn and then giving up on Erlang and Haskell is your only experience with functional languages then you're not in a position to comment on it. Keep digging into Haskell until you run into a Monad Transformer stack a mile long or spend some time with Clojure.

The author then conflates Actor based concurrency with functional programming in general. Let me lay my bias on the table right now: I'm sick to death of hearing about Actors. Erlang put them on the map and I think Scala made them popular, but Scala missed the point. Erlang's actors are only one piece of its distributed-ness; there's a lot more to Erlang that lets it scale as well as it does: a VM tuned for a large number of green threads, a transparent network stack, the supervisor model etc. Scala has none of these. Not only that, but actors themselves only solve one tiny problem in the world of concurrent (really, for actors, distributed) computing. They do nothing to address shared state. Finally, neither of these languages is really, truly functional.

If the author has titled the post "Actors are Overrated" I might have agreed with it.

<comment><USER3> Completely agree. The author mentions that he tried to learn Erlang and Haskell (we don't know how much he tried), uses the technical specs of Haskell and O'Caml, and then makes a side swat at Scala.

It looks like at the beginning of this year he had decided to learn Haskell as a way to explore functional programming: [http://www.benrady.com/2010/01/language-of-the- year-2010.htm...](http://www.benrady.com/2010/01/language-of-the- year-2010.html).

I simply don't think being unable to learn a language qualifies you to bash it. It'd be more fitting for him to post about the first point in whatever Haskell resource he is using where he became confused.

</comment></comment><comment><USER4> The error here is confusing the language for the paradigm. He all but concedes that functional programming is a good idea and you can do it in current languages. True. When you do that, you have a functional program. The "functionalness" or "objectness" or "logicness" of a program is a characteristic of a _program_ , not the implementation language. When you do object-oriented C, it isn't a "hack", it really is object-oriented C. You just don't have language support, you're doing objects by hand, with the corresponding disadvantages (syntactic pain) and advantages (no privileged concept of objects means you can do your own thing, which can be useful; want 'prototypes'? just do it! arguably easier in C than C++). When you do functional Javascript, it really is functional programming, you just don't have the same language support. When you refuse to mutate values and treat a language's values as immutable, even though the language permits you to mutate them, you have immutable values; the essense of immutable values is that _you can depend on them not being mutated_ , not that the language makes it syntactically impossible to express mutation. This has obvious advantages if you want to use an immutable style, but is not strictly necessary.

Proof: It all ends up running on assembler anyhow, which isn't functional or OO or logical or any other paradigm. All of those things are categories of programs, not intrinsic attributes of the environment.

The author isn't being anywhere near as contrary as I think he'd like....

<comment><USER5> The title of his article is that functional _languages_ are overrated and he specifically points out that functional _techniques_ are available in other languages, so I don't think you can say he's confusing the two concepts.

<comment><USER6> Yet he has a bias and it shows in his comments on Scala:

 _And if you're working in a hybrid language, what assurances do you have, really, that your system is really thread safe? Indeed, the risk compentation effect might give you a false sense of security, giving you a system that actually had more concurrency problems that one written in a "dangerous" language._

The phrase "hybrid language" in the original text is a hyperlink to Scala. By author's own admission, the languages he has tried were Erlang and Haskell. He hasn't mentioned either trying or not trying Scala, but the article seems to imply the latter.

The problem with what he said is that he seems to be dismissing "hybrid" languages like Scala as equally overrated or worse than pure functional languages like Haskell. Just like Jerf pointed out, it's the paradigm that matters more than the language. A language like Scala is designed to make FP paradigm easy to do, without being a pure functional language. As far as I know, it's not designed to make your programs "thread safe". I believe that the author wouldn't have made his claim about "risk compensation" if he had actually studied Scala and tried it out.

<comment> loup-vaillant > Just like Jerf pointed out, it's the paradigm that matters more than the > language.

Note however, that languages are extremely good at making us use their prefered paradigm.

<comment><USER6> Which is why we have hybrid languages to help us combine paradigms.

</comment></comment></comment></comment></comment><comment><USER7> _"The languages are just too complex, too terse, and absolutely full of academic shitheaddery. I mean, seriously, what the hell."_

The author links to the _formal specification_ of Haskell and decides pattern matching is "academic shitheaddery"?

Is the formal specification of Java any better? [http://java.sun.com/docs/books/jls/third_edition/html/gramma...](http://java.sun.com/docs/books/jls/third_edition/html/grammars.html)

<comment><USER8> Java (being rife with academic shitheadery itself) may not have been the best choice if you're trying to suggest the author doesn't have a point.

<comment><USER7> I picked Java because a) I know where to find it, b) the author mentions Java positively and c) the C++ standard costs $18.

Any formal language spec will look ugly and hard to read. That's just the nature of formal specs.

<comment><USER9> R5RS is a pretty light read.

</comment></comment></comment></comment><comment><USER5> In this interview: [http://www.infoq.com/interviews/armstrong-peyton-jones- erlan...](http://www.infoq.com/interviews/armstrong-peyton-jones-erlang- haskell)

Simon Peyton-Jones, the father of Haskell himself, dismisses the idea that avoiding mutable state automatically buys you easy concurrency:

 _But it turned out to be very hard to turn that into actual wall clock speedups on processes, leaving aside all issues of robustness or that kind of stuff, because if you do that style of concurrency you get lots of very tiny fine-grained processes and you get no locality and you get very difficult scheduling problems. The overheads overwhelm the benefits,_

There are some useful and novel ideas in the FP languages but they're no silver bullet. Whatever the conventional solution for concurrent programming turns out to be, it will have to be exploited in languages more accessible to the median programmer than Haskell.

<comment> loup-vaillant Beware: you say "concurrent", but SPJ was talking about "parallel". Not exactly the same.

<comment><USER5> "Concurrent" is the word he uses repeatedly. What distinction do you make between "parallel" and "concurrent"?

<comment> loup-vaillant "Concurrent" is about observable behaviour. Like with a web server, serving many many requests concurrently. When SPJ is talking about concurrency, he is most likely talking about shared state with software transactional memory.

"Parallel" is about optimizing an otherwise linear, or atomic program. Like map-reduce, which can be run on a single CPU or on a distributed cluster. When SPJ is talking about parallelism he is most likely talking about nested data parallelism.

The distinction between the two can be made without ambiguity with the terms "task parallelism" (concurrency), and "data parallelism" (parallelism).

<comment><USER5> _When SPJ is talking about concurrency, he is most likely talking about shared state with software transactional memory._

If you read the interview he is talking about the kind of implicit concurrency FP advocates often suggest you get for free with FP.

 _I suppose Haskell initially wasn't a concurrent language at all. It was a purely functional language and we had the idea from the beginning that a purely functional language was a good substrate for doing concurrency on. But it turned out to be a lot harder to turn that into reality than I think we really expected because we thought "If you got e1+e2 then you can evaluate e1 at the same time as e2 and everything will be wonderful because they can't affect each other because it's pure."_

They had to add things like STM and explicit concurrency management because _you don't get this for free just because you're doing FP_.

<comment> loup-vaillant Oh. He says "concurrent" to talk about data parallelism. (Bayesian update in progress…)

</comment></comment></comment></comment></comment></comment><comment><USER10> I'll speak to the languages I know here.

Haskell is a research language. It has become usable for practical purposes, but at heart its still a research language. Haskell focuses on isolating side effects over practicality or ease of use. For certain classes of problems, that turns out to be the most practical thing. Want to be sure certain parts of your program don't access /dev/nuclear_missiles? Haskell is your language. Is your app mainly centered around a complex GUI? Maybe you should look elsewhere.

I notice no mentions of Clojure in the article aside from including it in a list of functional languages. Clojure is a practical language designed for getting stuff done. It offers the most comprehensive solution for managing shared state I've seen in any language and does its best to get out of your way.

<comment><USER11> "Want to be sure certain parts of your program don't access /dev/nuclear_missiles?"

Actually, if you want to make sure that parts of your program don't access /dev/nuclear_missiles, I think that E is your language. In Haskell, it's as easy as `unsafePerformIO $ hGetContents "/dev/nuclear_missiles"`, which at least warns you that it's unsafe but doesn't really give any assurances otherwise. And if you're in the IO monad anyway, you don't even need the unsafePerformIO.

</comment></comment><comment><USER12> If you think shared state is hard to scale and you are arguing for message passing, then what's wrong with Erlang? In fact, you can't conflate Erlang, Haskell, O'Caml and Scala together as FP.

By being immutable by default, FP makes message passing simpler and in some cases forces you not to do shared state, so FP helps you do concurrency that way. Closures are old news and are in almost everything now anyway (I'd include Java anonymous inner classes, they just have a nasty syntax, although good for grouping methods, e.g. mouse events).

Other than immutability by default and closures, what makes a language functional anyway? Because if you take the languages you suggested together, that's all I see them having in common.

<comment><USER7> _...what's wrong with Erlang?_

Strings:

        1> [98, 114, 111, 107, 101, 110] == "broken".
        true

Records are not real records, just compile time labels placed on top of tuples. The syntax, seriously, three different line terminators?

Python and Haskell both make great go-to languages, and you can solve a wide variety of problems in them. Erlang is the language you suffer with when you truly need massive concurrency and distribution.

<comment><USER5> Haskell seems to have too many rough edges to make it nice for real-world work. The inconsistent error handling (errors vs maybe vs either), weak record syntax, and ruthlessly strict stance on mutability don't sound like things I want to wrestle with on a large scale.

Scala, on the other hand, seems to strike more reasonable compromises on these points and has all the java stuff to draw on when you need it.

<comment><USER13> > inconsistent error handling

I don't understand how offering several choices is synonymous with inconsistent. If you really really want "consistency", establish a policy for your code and stick with it. All three have distinct uses, and each is better for certain things than for others.

Anyhow, there's nothing particularly special about the Maybe or Either monads; you should be able to easily implement either of those yourself, and calling them a feature of the language---beyond the fact that they happen to be in the standard library---is somewhat specious.

<comment><USER5> Error handling is one thing you want to have handled consistently across all code, including third party libraries. I may be able to enforce a convention in my own code but the typical app uses a dozen or more libraries.

[http://stackoverflow.com/questions/3077866/large-scale- desig...](http://stackoverflow.com/questions/3077866/large-scale-design-in- haskell/3083909#3083909)

<comment><USER12> Consistent error handling is needed if you are returning 0 for success and -1 for failure. Or was it 1 for success and 0 for failure? But there's nothing wrong with a type signature that precisely describes what you can get back. Only argument I'd have with Either is it's not obvious which is the error (although left is the convention and baked into the monad), although in practice you'll be returning "Either ParseError ParseTree" which makes it rather obvious. Also, do-notation over the Maybe monad is just perfect for simple error handling, but sometimes you need to return more than None. Happily, you can switch to Either without changing a great deal. But you can't mix them easily, and that is a suckful thing about monads indeed.

<comment><USER5> So what do I do if I want to write a function that takes another function as a parameter, and some of the possible functions use Maybe and some use Either? What would this code look like?

<comment><USER7> f: (a -> m b) -> ... -> m Result

Maybe and Either are both monads and by convention Left errCode is the fail method of the Either monad. This will work exactly as you think it should. It will also work with, e.g., io actions that might fail.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> Im all for heresy, even though i don't agree with the author, his heresy is useful, we must avoid programming religions. It at least helped me understand a cultural problem programmers have at the moment with FP. The downfall of OOP was that it was misunderstood by all the imperative programmers. Even though it was adopted, it was misused. The downfall of FP will be that it is misunderstood by all the oo programmers, if it gets adopted it will get misused.

I never found FP hard to learn or use. I know now that it was because when i got introduced to it, i only had about a year of imperative programming experience and no OO experience at all. I was a rather fresh mind. My advice to all OO programmers willing to learn FP is to approach it with a fresh mind, it may save you a lot of headaches. Imagine you know nothing about programming, you may be surprised how close to the truth that is for some of us(including me).

</comment><comment><USER15> Why is our time being wasted with this article.

The author himself says that he is too dumb to understand functional languages. He knows so little that he keeps carping on about concurrency, when that is nowhere near any of the central reasons why functional is valuable. Better support for concurrency is an accident, a side-effect. What makes functional important is the ability to create living abstractions, and understanding how functional allows you to do that and why it is important makes you a better programmer in any language.

There is no heresy here, only ignorance. The author is basically saying functional languages are "overrated" because he is unable to understand them. There are definitely valid arguments to be made against the functional paradigm, but he has made none of them.

</comment><comment><USER16> > I think the downfall of some of these languages is that they get wrapped up > in being "functional" rather than focusing on solving a particular class of > problem. They abandon convention and common sense for complex type systems > and functional purity.

He's obviously not really looked at Clojure, then. The design philosophy of Clojure can be summarized as "functional programming is great; people also need to get stuff done."

</comment><comment><AUTHOR> I don't think FP is all about concurrency - it's about more than that. In my experience it reduces the possible bugs in code (type inference / checking, referential transparency) - these aspects make concurrency easier to achieve, but that's not all there is to FP.

<comment><USER17> Unfortunately though, FP is being sold as panacea of concurrency problems, at least in Java world.

I think that FP is much more than that, it actually helps me solve problems in a very different and elegant way. I don't know how you classify this benefit but for me it was analogous to solving a problem with recursion or loop; while both can solve problems, recursion seems to be much more intuitive and elegant way - Same for FP vs Imperative approaches.

<comment><USER18> I'd agree to that, and solving problems in FP always made me think harder to get an elegant solution. Though, it also means that you're uncomfortably close to math. I think to fully exploit/understand FP, the programmer also needs to be good at understanding the mathematical models/formulas behind FP. Otherwise, I think he cannot truly exploit the potential of the tools he's using. I haven't spent a lot of time doing FP to justify that opinion fully, but whatever FP I did made me wish I took my math classes more seriously.

</comment></comment></comment><comment><USER19> I would have loved this if the blog post contained more technical details and some code snippets about the tradeoffs involved. Functional languages cover a broad spectrum. There are often multiple concepts being explored in a language, then there is the issue of cultural heritage of the respective communities, and the fact that FP languages have traditionally had multiple implementations with different tradeoffs. as an example -> lisp and scheme are functional without being immutable. scheme favors a small spec while lisp includes large number of inbuilt primitives. Clojure introduces persistent datastructures and interesting new concepts like agents and integration with the jvm. I know too little about haskell and ML to make any informed comments about them but they appear espouse static typing unlike lisp / scheme. So if you have a particular beef about a functional language, look further and you will find one that doesnt share those traits.

</comment><comment><USER20> _The languages are just too complex, too terse, and absolutely full of academic shitheaddery. I mean, seriously, what the hell._

(Where "seriously" and "hell" are links to the Haskell and O'Caml language documentation.)

God oh god I wish every language I used could be specified as precisely as the Haskell example. I didn't bother figuring out what the notation meant, but if I used Haskell, I could afford the time to understand it. Seriously, Perl and C++ have equivalent complexities; you just aren't expected to understand them. Experienced programmers steer clear of unfamiliar constructs, which works well _enough_ , but it would be so much nicer to actually understand stuff.

</comment><comment><USER21> The future of programming is when both my mum and my little brother can write small code that does some particular task for them. Neither of them will ever understand functional programming. That's basically the answer to what paradigm will win.

<comment><USER6> Do you honestly believe that? The history of programming is littered with failed attempts to do that. For example, does "Microsoft Acess" ring any bells?

The future of programming is definitely not to turn users into programmers.

<comment> loup-vaillant Oh yes it is. Users should be programmers. All of them. Just so they can write those little scripts. It's a question of independence.

You probably wanted to say that the future is not to dumb down programming to the level of my "mom". I agree with that.

<comment><USER6> Maybe I have a weird family, but my mom does not want to write any scripts. She just wants the damn thing to _work_.

For her and many other people I know, it's a bit like driving a car. If you want to drive a car, you have to know certain basic rules and that's it. The guys who do maintenance and repairs are the ones who know what happens under the hood and you take your car to them whenever necessary.

I also know lots of people who know what happens under the hood and love to tinker with their cars. I'm not one of them myself. I do that with computers, but not with cars. I don't see why computers should be a special case where everyone has to know how to tinker with the "stuff under the hood".

<comment> loup-vaillant First, what we want an what's good for us are two different sets of things. Especially when you don't have total information.

Second, programming does not always mean tinkering stuff "under the hood". Advanced spreadsheets are front-end _and_ programming at the same time. Even that:

      $ cat * | grep "groceries" | sort

is a program (though a rather trivial one). "Real" programs will still be professional and hobbyist stuff. But scripting can be everyone's business.

Third, computers are fundamentally different from any other device: they are general purpose. They can process any information you care to feed them, in any way you care to program them to.

Finally, when our moms want to do something the computer can't presently do, but could, they have 3 alternatives: give up, acquire a program that does the job, or program it themselves. For many many jobs, acquire a program is the only viable solution. But for small, specialized tasks, the existence of a dedicated program is less likely. So if our moms want the damn thing to "just work", they have no choice but to program it.

Knowing how to use computers (and the internet) is becoming as important as knowing how to read. Because computers are general purpose machines, knowing how to program them is an important part of knowing how to use them. It's a big investment, but so is reading.</comment></comment></comment></comment></comment>


HN: help design a case to make an iPad a portable 2nd display for the Macbook - <AUTHOR> http://www.quirky.com/ideations/238032

<comment><USER2> This looks like a cool idea. I have both Mac book air and iPad, but I need synergy like this!</comment>


An informal survey of z-index values found in the wild - <AUTHOR> https://psuter.net/2019/07/07/z-index <comment><USER2> With css scripting languages becoming a core part of the build set up I'm amazed how many people still use 100 / 1000 / 10000 / 999 style z-index values.

[https://gist.github.com/davidweatherall/dfc469b7a4451b169ae5...](https://gist.github.com/davidweatherall/dfc469b7a4451b169ae5d51445bf3f34) Is my go to sass function for creating a simple to use z-index map.

<comment><USER3> I'm guessing most people don't particularly care about z ordering. All they want is something that says "this should be on top of everything else". Or more rarely "this should be underneath everything else".

Aside from the extremes they are happy with the natural order, I think.

</comment></comment><comment><USER4> This was fascinating, thanks. Made me think about why I used 99 as my max -- I think it's because back in the SNES days, all the RPGs used 99 as a limit.

<comment><USER5> Someone should do an anthropological study.

"Final Fantasy? The Enduring Influence of JRPGs on Web Development Practices."

</comment></comment><comment><USER6> Note: The following statements are for sake of argument and I realize that they are likely not practical.

I think is a result of the fact that styling is outside the domain of front- end software engineering. I don't mean this literally; clearly it is part of the job description. What I mean is that as a software engineer my primary skillset is in programming and CSS generally has very little to do with programming.

This is true semantically (CSS lacks good support for variables, functions, conditionals, etc.). However, it is also true in terms of of how designs are generally structured. For example, layout tends to be "I want exactly this spacing at this breakpoint and this spacing at this other breakpoint" instead of "I want the spacing to scale according to this equation of screen size".

</comment><comment><USER7> 9\. lol keep trying. 99. Doesn't work. 99999. Breaks modal.

...

9999\. Ahhhh....Just right.

</comment><comment><USER8> > At rank 39, we have 8675309, which I personally didn't recognize as being > particularly noteworthy. However, with over half a million collected uses, > it clearly is meaningful to many.

Is this value there due to some stock value in some well used piece of software such as a cookie notice plugin for Wordpress?

I had not realised this was a '42' grade special number before and I wonder how it is so popular in CSS.

<comment><USER9> Sing it. It's Jenny's phone number - [https://en.wikipedia.org/wiki/867-5309/Jenny](https://en.wikipedia.org/wiki/867-5309/Jenny)

e: wiki

</comment></comment><comment><USER10> I would have liked to see the first graph in number order instead of rank. Being in rank order doesn't tell me much. Later is the graph with all numbers in number order, but I think that first graph with just the top 50 would be far more interesting in number order.

<comment><USER11> There you go: [https://psuter.net/images/z-index-fig-1-alt- preview.png](https://psuter.net/images/z-index-fig-1-alt-preview.png)

<comment><USER12> Has anyone tried calling the phone number used for a z-index in this chart? Seems like a very specific number to be used that many times. It would be amazing if the css was #ForAGoodTimeCall { z-index: 2147483647 }

<comment><USER13> Max 32 bit signed integer in decimal.

</comment></comment></comment></comment><comment><USER14> Amazing job you did there. That's oddly interesting to measure a data we use without common convention, it really draws out the human tendency of picking up a number.

</comment><comment><USER15> Would be interesting to know the selector grouping count as well, I would assume most would be for things like '.overlay' or '.dropdown' etc

</comment><comment><USER16> I'm impressed by the author's crawling of 112 million webpages, but I can't help but wonder if it's really necessary. Surely the same distribution could be found with a smaller sample?

<comment><USER17> He used a precompiled set to query so the cost wasn't that high.

</comment></comment><comment><USER18> The story about 8675309 is pretty interesting, but I prefer 6345789.

</comment><comment><USER19> Really disappointed that 9001 did not make the list. :)

</comment><comment><USER20> From the article :

> Perhaps you will succeed where I failed, and find a way to include in a > chart the largest z-index value I found, namely 10^1242-1.

> Yes, that's 1242 times the number 9.

Come on, I know maths are no longer needed to be a developer, but this is ridiculous.

<comment><USER21> Although the wording is ambiguous he probably (correctly) meant that the number is 1242 9's long: 999999... and not 9^1242 or 1242 x 9

<comment><USER20> Oh, I did not understand this way, but you are indeed correct. My bad.

<comment><USER22> This is why I care so much about grammar. Author wrote "1242 times the number 9" but meant "the number 9 1242 times". A very minor difference, just the order of the words, but such a change in meaning!</comment></comment></comment></comment>


CloudFlare response times are getting worse - <AUTHOR> http://www.x-pose.org/2012/06/cloudflare-response-times-are-getting-worse/

<comment><AUTHOR> I know this is from 6 months ago, but thought it would be interesting to get some discussion around it.</comment>


What Is Poverty (2000) - <AUTHOR> https://www.city-journal.org/html/what-poverty-11845.html <comment><USER2> Gotta love the lively language:

> [...] see someone toss aside the can whose contents he has just consumed, as > a Russian vodka drinker throws down his glass.

> City Journal is a publication of the Manhattan Institute for Policy Research > (MI), a leading free-market think tank.

</comment><comment><USER3> I don't agree with the article, but it throws an interesting question. What is poverty. Our poverty is dread. You don't have a job, because nobody wants to hire you, because you are useless. You cannot do the one thing everybody must absolutely do, so that they can do more things, the real things that bring joy.

And the world will tell you every minute every hour of the day, in a constant stream of products and lifestyle broadcast in every available medium. "This is where the fun is. You need _that_ to be happy. Come join the freedom and excitement."

</comment><comment><USER4> This article is just a huge pile of shit. It's just a bunch of one-off stories trying to convince you the average welfare recipient is trash and that's why they're poor and that the welfare state is the actual cause of their suffering, but with zero evidence and zero sources.

Absolute garbage.

<comment><AUTHOR> The source in question is the author himself, when he was working as a physician in Britain

<comment><USER4> Great, a bunch of ancedotes, still absolute garbage.</comment></comment></comment>


Neovim backend for Qt Creator - <AUTHOR> https://github.com/sassanh/qnvim <comment><AUTHOR> It runs your own `init.vim` inside Qt Creator, all your plugins (except the ones that work with highlight or other stuff that Qt Creator handles itself) will work.

</comment><comment><USER2> What advantages does this offer wrt Qt Creator's fakevim?</comment>


Michael Bloomberg is trying to buy the presidency - <AUTHOR> https://www.theguardian.com/commentisfree/2020/feb/09/michael-bloomberg-donald-trump-presidential-election <comment><USER2> Is that a problem? Can't be worse than the last guy who bought the Presidency.

</comment><comment><USER3> Isn't Trump also trying to buy his second term. By buy I mean spend insane amounts on ads and "bought" news.

This elections will truly decide whether America is government by the people for the people or a government for the corporations and the ultra wealthy.

I hope a non-billionaire gets a chance.</comment>


City with World's Worst Traffic Has a Solution: Build Artificial Islands - <AUTHOR> https://www.bloomberg.com/graphics/2019-manila-reclamation/ <comment><USER2> Current Bloomberg title: "Manila Has a Fix for World's Worst Traffic: Build Artificial Islands"

</comment><comment><USER3> I thought we were getting islands in SoCal... that was a let down.</comment>


Things I Won't Work With: Dimethylcadmium (2013) - <AUTHOR> http://blogs.sciencemag.org/pipeline/archives/2013/05/08/things_i_wont_work_with_dimethylcadmium <comment><USER2> Read the whole set:

[http://blogs.sciencemag.org/pipeline/archives/category/thing...](http://blogs.sciencemag.org/pipeline/archives/category/things- i-wont-work-with)

Especially the one on FOOF. [http://blogs.sciencemag.org/pipeline/archives/2010/02/23/thi...](http://blogs.sciencemag.org/pipeline/archives/2010/02/23/things_i_wont_work_with_dioxygen_difluoride)</comment>


Ask HN: help needed on VM placement algorithm - <AUTHOR> Hello!
I'm working on a "cloud computing" management system and need help on a VM placement/provision algorithm.
Let us assume we have a cluster of N physical servers. Each server has a single type of resource - slots (Note that in real world servers have more resources CPU/memory/disk/etc...). Let a server have M slots. Servers can run virtual machines, every VM occupies from 1 to M slots. Once the VM (with k slots) starts on a server, the number of free server slots is reduced accordingly. When the VM stops, the occupied slots are freed.
VMs can live-migrate across servers. For example, when there is no server with M free slots (every server runs at least one VM), and we need to start an M-slot VM - there we need to rearrange VMs across a cluster.
The goal is implement a VM placement policy to satisfy the following requirements:
* utilize server resources in a uniform way, e.g. if we have 3 servers and 3 single-slot VMs we should place them on different servers.
* minimize number of VM migrations as it is a costly operation.
It looks like the problem in question has something to do with multiple knapsack problem, so I'm looking for some kind of heuristic algorithm.
Any advise / papers / working solutions ?
Thanks in advance,
Kirill <comment><USER2> I will look into your problem. Perhaps I can work out an integer linear formulation that you can feed into a standard solver for linear optimization problems.

If you want to read papers on the subject, look for 'scheduling' or 'production planning'. 'Bin packing' and 'cutting stock' might also be related.

Do you need an online solution or do you know all demands in advance? Also what do you do when not enough slots are available for all VMs? That could happen either because the number of slots in demand is higher than the supply --- or a bit more subtle: Say you have n servers, and n+1 VMs each taking M/2+1 slots. The total number of slots suffices, but still your VMs do not fit the machines.

<comment><AUTHOR> Thanks for your reply, eru!

> Do you need an online solution or do you know all demands in advance?

The online solution, as we don't know the type of load in advance. It resembles tetris in some way, meaning that we don't know which piece you'll get next.

> Also what do you do when not enough slots are available for all VMs?

If it's not theoretically possible to host all VMs like in examples you provided, nothing can be done. But it's not an algorithmic problem, in real world new servers should be bought in that case.

<comment><USER3> Wait, this is very simple:

Always pick the server with the most slots open.

Only when no server has enough space to accomodate the next machine, but together they have enough space, should you apply a packing algorithm.

<comment><AUTHOR> That's not that simple.

Let us imagine the following configuration.

We have 3 servers each of 4 slots, below is the state of each server (the state of a server is a set of VMs it's running)

[3], [2, 1] and [2].

Say we need to place a new 3-slot VM to our system. We'll pick the third server as less-loaded and try to accomodate the second server. Together they have enough space, but we can't provision the VM withour using all 3 servers. The solution here is

1) migrate a 1-slot VM from server 2 to server 1

2) migrate a 2-slot VM from server 2 to server 3

3) place the new VM to server 2

<comment><USER3> Don't get me wrong, a correct packing algorithm for this is far from trivial!

What would you say is more important: minimizing the amount of slots to move or the number of VM's?

<comment><AUTHOR> That's not a simple question. But I would guess having one 2-slot migration is better than two 1-slot migrations...

</comment></comment></comment></comment></comment></comment><comment><USER3> Is it first come first serve?

Very interesting, I'll see what I can work out..</comment>


IndexedDB working examples [with updates for Firefox 12 and Chrome] - <AUTHOR> http://nparashuram.com/IndexedDB/trialtool/index.html

<comment><USER2> How does it work on IE ?</comment>


Chalkboard drawings frozen in time for 100 years discovered in Oklahoma school - <AUTHOR> http://www.washingtonpost.com/news/morning-mix/wp/2015/06/06/eerie-chalkboard-drawings-frozen-in-time-for-100-years-discovered-in-oklahoma-school/ <comment><USER2> Looking at the multiplication circle, it doesn't appear to have any products written. The numbers on the outside are almost definitely factors (note the lack of 10, and the relatively high frequency of 7 and 8, which are generally the hardest to memorize.) So I don't think it's a way of teaching multiplication directly, but more likely is a way of testing.

My best guess is that the teacher would call a student up to the board, and then (using some sort of semi-random process, like slapping a ruler against the board) use the wheel to generate a problem for the student to solve (5x7, or 8x9). It looks like a more complex/extensible version of this worksheet: [https://www.superteacherworksheets.com/multiplication/circle...](https://www.superteacherworksheets.com/multiplication/circle- multiplication_TWZFT.pdf)

<comment><USER3> Why are 7 and 8 the hardest to memorize?

<comment><USER4> No discernible pattern and the numbers very quickly get large, I imagine.

2 is always even. 3 only gets to 30 after 3 x 10. 4 has a quick pattern (4>8>2>6>0>..). 5 always ends in a 5 or a 0.

7's pattern is long 7>4>1>8>5>2>9>6>3>0>.. with no sense to it and the numbers get big fast.

8's pattern is short (8>6>4>2>0>..) but the numbers are unwieldy getting into the 40s really quickly.

9's pattern is easy: start with 09. Add one to tens-place and subtract one from ones-place. So it's long, but pretty: 9>8>7>6>5>4>3>2>1>0>..

I skipped 6 because it seems to me that 6 would probably be pretty difficult for the same reason 8 is difficult. Its pattern is short (6>2>8>4>0>..) but there's less sense to it than there is to 8's pattern, and the numbers get large rather quickly.

At least, that's the reasoning I've always figured. I have no idea.

<comment><USER5> Just one idea: you don't come across things in multiples of 7 that often.

UK: eggs come in 6s. Pizzas get cut into 4s and perhaps 8s for a really huge one, so multiples of those numbers get seen around. Half is sort of easy (all my adult students can usually find half of a figure, especially if I encourage them to think of paying it out in money with £10 notes and £1 coins). 5 fits into the decimal system nicely. Threes are easy to count up.

<comment><USER6> > Just one idea: you don't come across things in multiples of 7 that often.

Days of the week?

<comment><USER5> You got me there!

But just thinking around weeks, apart from a fortnight do you actually count the days in multiples of 7 or just think about months or a period of weeks?

<comment><USER7> I became good at sevens working in a pharmacy store room in a large hospital where we did continue to count in weeks. Boxes of 112 were common. Inside you would find blister packs arranged in rows of seven with the days of the week printed.

<comment><USER5> Nice example!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Short related story. When I was in first grade in the 80's, all of our chalk boards were being upgraded to white boards. The teacher used it as an opportunity to be a kind of time capsule. We each wrote our names and something personal on the boards. Later they placed the white boards over them. It wouldn't surprise me at all if those boards are still there to this day.

</comment><comment><USER9> The cursive writing is beautiful, what a wonderful little find. It's always a joy to find some echo of the past tucked away right under your nose.

<comment><USER10> The writing is "Spencerian Penmanship" and is considered a distinctly American form. Its influence is still recognizable in the Coca Cola and Ford logos. Many homeschoolers still buy reprints of the classic manual for use in their curriculum.

[http://www.amazon.com/Spencerian-Penmanship-Theory-Book- copy...](http://www.amazon.com/Spencerian-Penmanship-Theory-Book- copybooks/dp/088062096X/ref=sr_1_1?ie=UTF8&qid=1433664087&sr=8-1&keywords=spencerian+penmanship)

[http://en.wikipedia.org/wiki/Spencerian_script](http://en.wikipedia.org/wiki/Spencerian_script)

I've been using the script for all of my handwriting for over a decade, even filling out cursive-prohibited official forms without issue. The swift transition from being notorious for "Dr.'s handwriting" to being sought after to fill out wedding and funeral cards was startling.

<comment><USER11> > I've been using the script for all of my handwriting for over a decade

Maybe a stupid question but, how? I have pretty horrible handwriting, certainly doctor level; how did you manage a swift transition?

<comment><USER12> Personal experience with handwriting change:

My writing became stylised in my teens, as I'm sure is true with many others. It sloped backwards, and I used a Greek style e and d, purely out of aesthetic reasons.

In my adult life I noticed this made my writing really slow. This became a problem when I sat some exams in adulthood: my hand cramped as I tried to scrawl as fast as possible in the time limit.

I deliberately investigated faster, more comfortable writing styles. Internet consensus, which I note agree with, indicated that joined-up, forward-leaning (italic) cursive was the way to go. The saw-tooth shape that underpins most letters is easy and feels natural -- if you're right handed.

It took me about 6 months of deliberate effort before the transition was fully embedded, and I'm still very pleased that I made the change.

</comment></comment></comment></comment><comment><USER13> I feel like there's so much beauty unintentionally lost to the movement of time. It's always remarkable when it pops back up again.

</comment><comment><USER14> I find it surprising that they didn't clean the old chalkboards before putting new ones over them. In fact, modulo the holes in one of them (which might've been created during the installation of the new ones), these old chalkboards look perfectly usable to me...

<comment><USER15> It is not uncommon for institutions that receive public funding to replace things that are not broken in order to avoid budget surpluses that could decrease their funding the following year.

<comment><USER16> Yep, can confirm. I worked in requisitions in a maintenance shop in the military, and September was always a ridiculous time.

"Hey, we have $120,000 to spend. Make it happen." I would then go to the different section chiefs and ask what they needed as spares. Some were reasonable requests, others were ridiculous. If we didn't spend the money, the budget would decrease the next year, and it would be hell getting that money back when a really expensive part died.

The hilarious thing is that the Inspector General's office is responsible for preventing this thing from happening... but if you go talk to their requisitions personnel around September, they're doing the exact same shit as everyone else.

</comment></comment></comment><comment><USER17> So the chalkboards that were just removed have been used for 100 years?

</comment><comment><USER18> There is an article by the Public Domain Review[1] where they present an old book about sketching on a blackboard.

I've been wondering how often would a regular teacher make such elaborate drawings. Considering this completely arbitrary and small sample, I guess the answer is "often".

[1] [http://publicdomainreview.org/collections/blackboard- sketchi...](http://publicdomainreview.org/collections/blackboard- sketching-1909/)

</comment><comment><USER19> I have to wonder how this might possibly relate to Native Americans? Especially in light of the pilgrim history boards that were discovered. 1917 was just 10 years after Oklahoma became a state, it was called Indian Territory prior to that [1]. And Indian boarding schools [2], where they tried to wash the "savage" away, were a big thing back then. To this day oklahoma has a very high Native American population and current reservations/nations reflect Indian removal [3] as there are many nations there that did not come from that area.

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

[2] [https://en.wikipedia.org/wiki/American_Indian_boarding_schoo...](https://en.wikipedia.org/wiki/American_Indian_boarding_schools)

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

edit - added 3rd citation

<comment><USER20> Either that, or the renovation that covered the boards up took place in December (a theory supported by the calendar drawn on one of the boards), and that just happened to be what was on the boards at the time.

</comment></comment><comment><USER21> The multiplication table baffled me but the cursive writing strokes and lines are beautiful. Beautiful, possibly because its close to 100 years. There are teachers who write that way now too.

</comment><comment><USER22> the penmenship is still considered as a central part of primary education in many asian countries, notably in japan, south/south-east asia, I think in china and korea too.

<comment><USER23> I'm reading the _Arabian Nights_ , and a recurrent theme within them is the consideration given to not only script penmanship, but in knowing multiple scripts (one of a number of interesting revelations from the stories).

</comment></comment><comment><USER24> The calendar has Sunday as the first day of the week. Interesting.

<comment><USER25> I'm curious where you're from that Sunday isn't considered the first day of the week? I know Monday is often treated as such since it follows the "week end" but (in my very limited experience) I've never actually seen anything claiming that Monday is actually first.

<comment><USER26> Monday is first in Britain, which makes for annoying Web ui when the site isn't localised properly (and it's easy to leave it in en_US and not realise the problem).

I once booked a flight on the wrong day because part way through the booking process the first day of the week in the calendar changed.

Nursery rhymes with this order: [http://en.m.wikipedia.org/wiki/Monday%27s_Child](http://en.m.wikipedia.org/wiki/Monday%27s_Child) [http://en.m.wikipedia.org/wiki/Solomon_Grundy](http://en.m.wikipedia.org/wiki/Solomon_Grundy)

Chinese use 星期一 / "weekday one" for Monday.

<comment><USER27> > Chinese use 星期一 / "weekday one" for Monday.

Sure, Monday through Saturday are numbered 1 to 6, but Sunday is "weekday Sky" or "weekday Heaven", which is considered to come before "weekday one".[1]

[1][https://en.wikipedia.org/wiki/Week#/media/File:First_Day_of_...](https://en.wikipedia.org/wiki/Week#/media/File:First_Day_of_Week_World_Map.svg)

<comment><USER28> Portuguese uses ordinal numbers to name days from Monday to Friday, starting from Sunday: Monday is segunda-feria (second day), Tuesday is terça-feria (third day), all the way to Friday, or sexta-feria (sixth day).

Interestingly, there's no first day: Saturday and Sunday are sábado and domingo, respectively.</comment></comment></comment></comment></comment>


A blast in Tianjin sets off an explosion online - <AUTHOR> http://www.economist.com/news/china/21661490-blast-tianjin-sets-explosion-online-fired-up

<comment><USER2> by the way, have you seen a "21 ton TNT" crater :

[http://www.wsj.com/articles/tianjin-blast-destruction- from-a...](http://www.wsj.com/articles/tianjin-blast-destruction-from- above-1439654034)

Looking at it i'm pretty sure there should be at least 1 more trailing zero in the TNT equivalent number, and the 21 ton is just a small portion of the explosion energy, ie. it is the portion which went into the ground and formed the seismic wave.

<comment><USER3> The explosion and smoke plume was picked up by Japan's new weather satellite too. [http://www.citylab.com/weather/2015/08/satellites-spot- the-t...](http://www.citylab.com/weather/2015/08/satellites-spot-the-tianjin- explosions-foul-brown-cloud/401303/)

<comment><USER4> The make and model of my car in my driveway was picked up by the satellite Google was buying from in 1997.

I don't understand why "It was seen from _space_!" is at all a part of the story today.

<comment><USER5> > I don't understand why "It was seen from space!" is at all a part of the > story today.

Becuase most people still do not realize that the space is closer to their home, than holidays resort they have visited this summer.

</comment></comment></comment></comment><comment><USER6> James Kennedy has this analysis of the explosion [ [https://jameskennedymonash.wordpress.com/2015/08/17/the- chem...](https://jameskennedymonash.wordpress.com/2015/08/17/the-chemistry- behind-the-tianjin-explosions/) ], including the possible chemical reactions and the amount of energy released.

<comment><USER7> Curious that he couldn't "find" the enthalpy of reaction for the ammonium nitrate. Surely he could calculate it from the sum of the products minus the sum of the reactants.

<comment><USER8> Sum of products is surprisingly hard to do for something like ammonium nitrate.

Among other things, there are actually multiple distinct breakdowns:

          NH4NO3 ---->   HNO3 +   NH3
        5 NH4NO3 ----> 2 HNO3 + 9 H2O + 4 N2
        2 NH4NO3 ---->     O2 + 4 H2O + 2 N2
          NH4O3  ---->    N2O + 2 H2O

I suspect you could do fairly well by assuming that it follows reaction 3, though. Like with assuming complete combustion.

</comment></comment></comment><comment><USER9> The article make it sound like the incompetence of the Chinese officials is something particularly bad or remarkable.

For my experience those level of incompetence is just what you should expect.

Western world have no idea what China really means...

</comment><comment><USER10> Nice try by the author to convince people to believe whatever the social media threw at them.

</comment><comment><USER11> Funny how a "we are dying" note reads like.</comment>


Tools for Switching from Windows to Mac Development - <AUTHOR> http://www.josebrowne.com/from-windows-to-mac-dev.html

<comment><USER2> I am the lone Windows user in my office. I could use a post on how to go from Mac Development to Windows. Only half kidding.

I don't want to make this a Win vs. Mac thread, but I think it is important for both sides to understand there are things that are good about each.

The Mac guys get a closer to Linux environment, which makes much of the stuff that is happening on Web servers behave more closely in dev to the way they do in production.

Windows has a long history of dev tools, so there are some really great Large File (>4 GB) editors, memory inspectors, inspection proxies (Fiddler for example) which make my Mac devs jealous from time to time.

But I am routinely jealous of how easy it was when I was on a Mac to do installs of Libraries using Yum and such. Plus since we are a mostly Python Shop that is quite a bit easier on a Mac.

I am a long time user of Visual Studio, but there are a lot of great IDE's now so you do have choices, and because many of those are Multiplatform you do have more choice, even if your team mates don't share that choice. (Sublime, Pycharm, Eclipse)

<comment><USER3> The one thing that I absolutely cannot stand about my OS X workflow is that to this day, I still have not found a good hex editor. On Windows I used HxD, but there's nothing that really fits the bill. That, IDA Pro (I don't have an OS X license and from what I hear the OS X version isn't too spectacular anyways), and Visual Studio are what make me occasionally boot into Windows.

<comment><USER4> HexFiend[1] doesn't do the trick? (I have only occasionally need for a hex editor, but it serves well when the need arises.)

[1] <http://ridiculousfish.com/hexfiend/>

<comment><USER3> I believe I tried it once, but the UI wasn't very appealing to me. The key features I'm looking for are: fixed width of 16 bytes, clean interface, process inspecting (not sure how easy that is to do to be honest) and raw disk access.

</comment></comment></comment></comment><comment><USER5> I'd like to mention SourceTree[0] for a GUI DVCS. I typically drop to the terminal for git usage, but every so often use SourceTree when I need something that is easier achieved with a mouse.

[0] <http://sourcetreeapp.com/>

<comment><USER6> SourceTree makes staging chunks/lines in git a snap -- I use it to do that every day. I couldn't imagine the tediousness of doing that on the command line.

</comment></comment><comment><USER5> As someone who uses Terminal.app, what are the benefits of using iTerm2? After looking at the features of iTerm2[1], I see a lot of it as superfluous.

That said I can see a usecase in the Growl notification feature for testing etc.

[1] <http://www.iterm2.com/#/section/features>

<comment><USER7> It is far faster at scrolling with non-ASCII characters, helpful when scanning logs of such characters.

It has a better find interface.

It is almost exactly like Terminal.app in most respects, which I appreciate.

<comment><AUTHOR> Thanks for pointing these out m8. Cheers.

</comment></comment></comment><comment><USER8> You'll probably want a graphical diff tool. I use Araxis Merge, because I've used it for 15 years or so, but I'm sure there lots of other good options.

I can still remember the day our lead developer (at my previous job) led a mutiny and we switched from Windows to Macs. A great day in my life. ... I'm sure you'll enjoy developing on your Mac.

<comment><USER9> If you use Xcode, it has a visual difftool that is pretty good. I never use anything for git besides cli and Xcode.

<comment><USER6> That would be FileMerge, which also does folder diffs -- although not as good as Beyond Compare (one of the few apps I miss having from Windows dev).

</comment></comment></comment><comment><USER10> My personal 10 tools for Mac dev (in no particular order):

1\. Sublime Text 2 2\. Tower 3\. Kaleidoscope 4\. iTerm2 5\. Oh-my-zsh 6\. Xcode 7\. MAMP Pro 8\. CodeKit 9\. Homebrew 10\. CodeRunner

Honorable mention to: xScope, Sequel Pro, Transmit

<comment><USER11> Any particular reason for Kaleidoscope over filemerge?

<comment><USER10> I'm a big fan of Filemerge. I also really like Changes. I just prefer Kaleidoscope's UI better. It has all the features for my needs in the recent version 2 release. Black Pixel makes fine software and Kaleidoscope is no exception.

<comment><AUTHOR> Indeed.. but $70 is a hard pill to swallow for a pretty file comparison utility. I was thinking somewhere more around $30.

</comment></comment></comment></comment><comment><USER12> Dash app[1] is brilliant. It's an all-in-one place for language documentations. Very useful.

[1]: <http://kapeli.com/dash>

<comment><AUTHOR> I think if i had known about this before it would have been in my top 10! This is awesome! #thanks

</comment></comment><comment><USER13> I'm trying to do windows development and I'm learning that if you don't try to force it into a unix-lixe env, it works fine.

I installed chocolatey [1] a package manager. With that I install python, git, and vim and I'm up and running. My vimrc and gitconfigs almost worked copied straight out of linux. I use cmd. My advice is not to use cygwin and the other stuff like it...

[1] <http://chocolatey.org/>

<comment><USER14> I don't agree with this advice at all. That you are stuck with cmd is really all that needs to be said.

On the other hand, Cygwin's gotten to the point where it, plus mintty, are actually pretty good--Cygwin used to be a real pain to work with (I mean, _bad_ ) but it's improved by leaps and bounds over the last few years. You can get a bash or zsh shell that work remarkably closely to OS X or Linux and just about every tool you're likely to run into will work as you expect. Contrast this to direct Windows ports of your software, which are frequently compromised to work in the fairly deranged environment of the Windows shell.

<comment><AUTHOR> I'm afraid i'm going to have to agree. Cygwin is wayyyy better that vanilla cmd on windows.

</comment></comment></comment><comment><USER15> And remember clicking the red X does not kill the process...

<comment><USER16> That's true except when it's not true. Some apps are single window applications, and clicking the red x will in fact quit the app. For example, System Preferences.

</comment></comment><comment><USER17> Don't forget MACVIM. Vim on windows is terrible. Now that you're on OSX it's going to be fantastic.

<3 Vim

<comment><USER18> Can someone please explain to me the advantages of using MacVim over Vim through terminal?

<comment><USER19> It comes with a gui?

There isn't really any huge advantage (at least for gVim, I run linux...), it's just nice to detach it from the terminal.

Mostly, I can change the window size without it affecting the size of my terminal, and add some extra tweaks if wanted.

</comment></comment></comment><comment><USER20> The only development tools you'll ever need: a terminal, vim and the GNU toolchain (gcc, gdb, make, screen etc).

<comment><USER21> Not making any graphical assets?

<comment><USER20> I don't understand your point. You can make UIs with CLI tools as well as IDEs? My post was trying to say that the GNU toolchain is portable across all major systems. Switch to it and you never need to ask what tools you should be using to develop on XYZ.

<comment><USER21> Images/icons/video.

<comment><USER20> I thought we were talking about development not graphic design

</comment></comment></comment></comment></comment><comment><USER6> Not mentioned yet: HexFiend for hex editing, Cocoa Packet Analyzer and Wireshark for packet inspection.

</comment><comment><USER22> I disprove.

If you wanted a Unix environment you could have installed Linux.

<comment><USER23> OSX == Unix. [1]

OSX != Linux.

[1] [http://arstechnica.com/apple/2007/08/mac-os-x-leopard- receiv...](http://arstechnica.com/apple/2007/08/mac-os-x-leopard-receives- unix-03-certification/)</comment></comment>


Show HN: Turn your pen into a touchscreen stylus - <AUTHOR> http://more-real.com

<comment><USER2> I can only imagine how pissed someone would be when they accidentally touch their phone or tablet with the wrong end of the Sharpie. Would rather put it on an actual pen than a permanent marker. Seems way too easy to make that mistake, since the ends even look fairly alike.

By the by, Sharpies are pens? Is it like one of those "all squares are rectangles" things?

<comment><USER3> Exactly what I was thinking. If you forget to put the cap back on your Sharpie, you suddenly have a nice black line on the screen of your brand new iPad Mini.

<comment><USER4> Luckily, markers are not permanent on glass. Some glass cleaner or even regular rubbing alcohol will clean it off. Now if you have a screen protector, all bets are off...

<comment><USER5> It seems to me like having a screen protector should be the best case. Isn't this the sort of thing they are for? Peal it off and stick a new one on; much easier than scrubbing down your screen.

<comment><USER4> Possibly. In my experience, screen protectors are fiddly to put on, and when I had one I never wanted to have to replace it. Far too easy to get bubbles. There's also some amount of cost involved in replacing it, no matter how small. Rubbing alcohol is just something you typically have lying around your house, the marginal cost is less than a penny. A quick wipe with an alcohol- moistened tissue is all it takes.

<comment><USER5> Hmm. Maybe they should make screen protectors with built in screen protector protectors. Each time something gets messed up you just peal off one of the several layers, like some sort of flaky biscuit of screen protection. :)

</comment></comment></comment></comment></comment></comment><comment><USER6> Show HN should be where you show your cool personal projects and stuff like that, not a place where you advertise your company/product.

</comment><comment><USER7> This is really nice, but it would be even better if you made a non Sharpie version. I would get it if it worked with a normal pen because I never use a Sharpie.

</comment><comment><USER8> Although this is a neat idea (I converted a sharpie to a stylus last year, replacing the pen tip itself) and you've made a pretty beautiful website, the product inferior to the latest stylus usability improvements on the market.

Last week my Hand Stylus (<http://handstylus.com/>) arrived. Unlike other styluses (stylii?) on the market, the tip is on a swivel mount, meaning you never experience the "flop" or roll of the nib as you change direction. After using this, I would never consider a fixed nib stylus again.

</comment><comment><USER9> I just saw a video review of this here - <http://thetechblock.com/morereal- stylus-cap-for-the-ipad>

</comment><comment><USER10> The price point is way out of line. $25 ???

<comment><USER4> I wouldn't say so. A low-volume product takes engineering costs into the price point, and while engineering might have been reasonably cheap here, I doubt it was free. Replacement tips are quite cheap as well ($6).

It's marketed as a premium tool and selling at a low volume. I don't know how quality it actually is, and I probably wouldn't buy one, but if I were in the market for a capacitive stylus, I wouldn't balk at $25. Pogo styluses (are crap) sit between $10 and $20. And they're useless for writing due to being squishy.</comment></comment>


Guidewire Group Announces Innovate100 List - <AUTHOR> http://www.innovate100.com/2010/12/guidewire-group-announces-innovate100-list/ <comment><USER2> No US companies in the top 5.

I saw the Seattle Pitch Slam, which Optify won. They finished #28 overall. Props to them.</comment>


Ask HN: What's a good cross platform alternative to C#? - <AUTHOR>

C# is a relatively high level language which is exceptionally suited for games. Are there any alternatives which are as good as it on Linux? Suitable for game development of course. Or completely different languages that are good for game dev if you think that. <comment><USER3> Lua has LÖVE ([https://love2d.org/](https://love2d.org/)), a 2D engine. Python has PyGame ([http://www.pygame.org/](http://www.pygame.org/)). Both are cross platform interpreted languages. If you are planning to develop for mobile, unfortunately there's no cross platform.

<comment><AUTHOR> I'm doing 3D games though, with OpenGL. Would definitely use LÖVE if I was doing 2D games.

</comment></comment><comment><USER4> People often describe C# as "Java done right" \- so Java? Certainly cross platform.

<comment><AUTHOR> The problem here is "done right". Java is certainly not as polished as C# in a lot of senses.

<comment><USER4> True but everything is there if you dig deep enough.

You say you are looking for an alternative to C# and with Linux support - <USER2> is that - what are you looking for in addition to what C# has to offer on that platform?

[Edit]Comment indentation limits stop me replying to the reply below so. OK, you can't run visual Studio on Linux but you can code in C# against the .NET framework. Have you looked at the Mono project?

<comment><AUTHOR> I have looked at it, yes. But it seems like it's not very well integrated with Linux. On Linux I usually prefer to use a text editor for editing code. So I would prefer a language which suits being edited in one.

</comment></comment></comment></comment><comment><USER5> Simple. C or C++. Highly portable, C++ is widely used by Game Devs.

<comment><AUTHOR> I would probably pick C++ then. Like it better than Java, but unfortunately not as good as C#.

<comment><USER5> Lua?

<comment><AUTHOR> Kind of nice. Does it have OpenGL support though?

<comment><USER5> Yes, there is a LuaGL binding. Angry birds is written with Lua so it can't be too bad.

</comment></comment></comment></comment></comment><comment><USER6> Mono?</comment>


In a Few Days, Credit Freezes Will Be Fee-Free - <AUTHOR> https://krebsonsecurity.com/2018/09/in-a-few-days-credit-freezes-will-be-fee-free/ <comment><USER2> I had no idea this law had passed.

If free credit freezes are the only thing we got out of the Equifax breach, that's still a lot better than I thought we were going to get. Free freezing/unfreezing is huge - it turns it from being something that can be prohibitively expensive into something that anyone can do.

And I can do it from a website instead of calling someone on the phone every time? This is a very happy surprise.</comment>


The only iPad review you need to read - <AUTHOR> http://kottke.org/10/04/lorem-ipad

<comment><USER2> _"Duis aute irure dolor iPad in reprehenderit in voluptate velit esse CEO Steve Jobs dolore eu fugiat nulla pariatur. Windows 7 ha ha ha."_

Indeed.

</comment><comment><USER3> Google translate has Haitian Creole but not Latin? No offense to Haitian Creole, but Latin seems like a pretty important language to be lacking. Anyone know a site for translating from Latin?

<comment><USER4> Perhaps you should also look at the number of people who speak Haitian Creole and the number of people who speak Latin.

Then, you may also want to look at the number of people who speak Haitian Creole as their primary (or only) language and compare that with the numbers for Latin.

That may give you a better appreciation for the reasoning behind Google- Translate's prioritization (though I should add that I'd also be surprised if they didn't include Latin)

<comment><USER5> You should look at how many people who speak Haitian Creole have access to computers and the internet and compare that with people who speak Latin and have access to the net.

<comment><USER6> You'd be surprised at how prevalent Internet usage is in places like Haiti...

<comment><USER7> You'd also be surprised at how difficult it is to get wifi in ancient Rome.

</comment></comment></comment></comment></comment><comment><USER8> Oddly, I actually learned some stuff from reading this, 'cause it made me look up Shenzhen and Jony Ive.

</comment><comment><USER9> More coherent than some I've read ...

</comment><comment><USER10> Ha ha Kottke channeling the channel 9

<http://www.youtube.com/watch?v=ctaszjeaDK0></comment>