How to deal with assholes - <AUTHOR> http://www.micaelwidell.com/p/24/

<comment><USER2> What is this, Sesame Street?</comment>


Matz: I cannot accept "the CoC" for the Ruby community - <AUTHOR> https://bugs.ruby-lang.org/issues/12004#note-95 <comment><USER2> From [https://bugs.ruby-lang.org/issues/12004#note-159](https://bugs.ruby- lang.org/issues/12004#note-159)

> Our community have 20+ years of history. We had a few issues in the past, > but all of them could be resolve by the communication.

> On the other hand, we had to take great care to avoid bureaucracy in our > workflows and processes. For me, avoiding bureaucracy is far immediate > danger. Of course, _I agree with you in part, so I agree to add kind of CoC > for the community._

Matz agrees with a CoC, but sees the Contributor Covenant as heavy-handed. Nothing wrong with that, no need to give this a title that's totally wrong.

</comment><comment><USER3> Weird title: He can accept "the CoC", not just the draft in that thread, he wants a few changes (no banning, for example, people may want to change their minds), and then he proposed a slightly reworded CoC that has his changes, that's all

</comment><comment><USER4> I frankly can't understand how the OP's first response after Matz's CoC rough draft is "now let's talk about enforcement." The priorities seem misconstrued to me.

<comment><USER5> It's the clearest window into the intent of the OP.

</comment></comment><comment><USER5> A fun exercise:

Look through all the CoC supporters, and see how many bugs they have filed.

Then for added fun, see how many of the supporters of a CoC have even _commented_ on other threads.

This is the very definition of astroturfing.

<comment><USER6> I don't like to comment on these types of threads on HN, but the same names pop up in the same type of comments, bugs, or whatever various flavor of the day for whatever software someone notices today.

I don't think everyone who submits a bug needs to be a significant contributor to a project, but when someone says they want to create a set of rules (that later in the thread "should be treated as law") to regulate something that seems to be working, and that person is not a contributing member of the community, something is wrong.

I don't know what overall benefit we would have if every software project had a CoC(which seems to be their goal), it's like asking all of us to bundle one with your birth certificate.

<comment><USER5> Just to answer the question, Exactly ONE (1) developer had posted in a legitimate prior bug.

There were over ten people in the thread supporting the OP.

</comment></comment></comment><comment> cat-dev-null The discussion is a good thing. There are some dangers in blindly adopting draconian Cider House Rules, because, for instance, they can be gamed as cudgels to throw out individuals for any reasons rather than promote healthy debate and social give-and-take.

<comment><USER7> True. I actually liked the progreqsl one that was liked in the thread.

<comment> cat-dev-null Yeah, me too.

-1. There is legitimate trolling, harassment, drama and d!ck moves that need to be handled with decency, common-sense and least bad measures... in open societies in real life, specific laws and enforcement haven't yet been able to eliminate #sshole behavior... it's usually handled socially. Sure it's different, but there's got to be some common sense and due-process, rather than instahellban of a core dev because someone new makes a bogus accusation.

0\. Folks should try to calmly stand up to bullyvictim behavior and excessive microagression drama.

1\. On large projects facing mostly public / non-enterprise / younger users, there could be need for formal training of project leaders or designated third-parties in conflict resolution / mediation to make peace, where possible. (Maybe open source conflict resolution as a service would be a viable startup? IDK, or a pockethotline perhaps?)

2\. 37signals showed less anonymous participation increased kindness and reduced toxic behavior... perhaps projects should link accounts to G+ / Facebook / Github?

3\. A risk of blindly adopting CoCs is that a new, amorphous bureaucracy of unknown persons/governance itself gains a foothold into many projects, and may come back and start asking for compliance reports, more control and more changes. Some of this might be good, but it could become more about browbeating others into bending to their will a-la Yale screaming girl [https://youtu.be/9IEFD_JVYd0](https://youtu.be/9IEFD_JVYd0)

4\. Popularity of a behavior or trend is not necessarily equivalent to an ethical and/or wise change, but it is worth discussing.

5\. Paraphrasing subversion folks _An undefended community ceases to be the latter._

</comment></comment></comment><comment><USER8> > _Examples of unacceptable behavior by participants include: ... Other > unethical conduct_

This example is a bit... spongey.

<comment><USER9> The vagueness of terms and undocumented extent of what is part of 'participation in this project' are what I think a lot of people are having issues with.

<comment><USER5> Plus, Matz doesn't want to be part of a community that can kick others out.

</comment></comment></comment><comment> w-ll The same drama has been playing out in the php community for the last few weeks.

</comment><comment><USER10> Pretty solid and thoughtful response. Almost makes me want to learn Ruby. Almost.

</comment><comment><USER11> I've seen too much "CoC" for one day. Goodnight HN.</comment>


Boarding Passenger Arrested Sued After Tossing Coins in Jet Engine for Good Luck - <AUTHOR> http://thedrive.com/news/26641/passenger-arrested-sued-after-tossing-coins-in-jet-engine-for-good-luck-while-boarding <comment><USER2> What astonishes me is that not only did this happen but:

> Incredible as the thought of someone flipping a coin into a Lucky Air jet > engine for good luck may be, the final twist is that the exact same thing > has happened once before at the exact same airport to the exact same flight. > Last May, a 76-year-old woman was briefly detained for tossing coins at the > engines of Flight 8L 9960 in Anqing

<comment><USER3> Those sound like rare odds.

</comment></comment><comment><USER4> perhaps the publicity of the lawsuit will discourage others from this stupid and dangerous thing.

<comment><USER5> I think I'd install a Koi pond for nutters to toss coins in.

</comment></comment><comment> daniel-cussen The airline is called "Lucky Air." I can fathom that they would do this.</comment>


Leaving a job after two months, should I tell companies I am interviewing with? - <AUTHOR>

So I am moving to LA in a month or two. I just graduated college with a double major in math/cs. Anyone hiring in LA by the way? Should I tell companies I am interviewing with that I am leaving another company so soon? From what I have heard leaving a company so soon is poor form. Also, what is the average salary in LA for a software engineer? <comment><USER2> Yeah, that would be pretty lame. Considering you have just graduated college, you may not have much professional experience in the industry. If the employer is hiring you based on your degree rather than your actual skills then you might need a month or two just to get to a point where you can start to be useful to them.

Just tell the company what you are planning. Depending on your / their situation, they may still have a use for you. In fact, if it's something which would be a good fit with that company you might actually be able to make more money as a freelancer. If not, then maybe try to find a freelance gig either locally or remotely.

Another option would be to reach out to possible employers in L.A. to see if you can start out with remote work with the promise to move if things work out. That would be perfect because you would already be setup with a job when arriving and you would likely be able to move on a more relaxed time frame.

As for average salary, does it really matter? Jump on the Google and work out taxes, housing costs and whatever other expenses you might need / want to take on while in L.A. Need a Lambo? Add that in. Make sure to tack on savings.

If you come up with a bat shit crazy number (maybe you need to drop the Lambo) then you might need to adjust. Keep it realistic for someone in your position. You probably don't need a 5 bedroom house next to Justin Bieber just yet.

Once you figure out your number, then tack on a bit of a buffer (maybe 10 - 20%) so that you have some negotiating room and throw it out there. If it's not too crazy then they should come back with a counter-offer. If you are way off, then perhaps you don't want to work for that place anyways.

This is important because L.A. is an expensive place. Regardless of any average salary, you need enough money to live on. Further, you need enough money to make L.A. a more logical choice over another location where you could make nearly as much money but with a much lower cost of living. If you really must do L.A. and the offers aren't matching your number, then at least you will get an idea of where the market is at and do another adjustment of your expectations.

</comment><comment><AUTHOR> Well I was just asking about salary out of pure curiosity. I also don't have a recruiter, I am working with the company directly. But is there any a reason a company would not hire me if I tell them I am leaving another job so soon? Personally I dont think that sort of information can help-it can only hurt. Opinions?

</comment><comment><USER3> Don't intend to come off annoyed, although this isn't really worth anyone clicking on to read. In answer to all of the above, ask your recruiter.

</comment><comment><AUTHOR> bump</comment>


World's First Digital Circuit Breaker Could Completely Change Our Powered World - <AUTHOR> https://www.popularmechanics.com/technology/infrastructure/a27557804/digital-circuit-breaker/ <comment><USER2> The safety and improved switching speed is good, but why the fuck does it have to connect to the internet? We already have a giant risk with both vulnerable infrastructure connected to the internet and horrid IoT security practices; the solution to that problem is not to combine both issues into a single product.

Also I like how they are praising the potential energy savings of this and then mention their next big hurdle is reducing thermal losses compared to mechanical units, which pretty much implies it's turning your fusebox into a shitty space heater

</comment><comment><USER3> I'm dubious of this. To read

"Now I have no moving parts. Now I have the ability to connect things like iPhones and iPads for remote power management, which increases safety and improves efficiency. I can set the distribution panel to a schedule so the flow of power is seamless, unlimited, and shifts between sources automatically. You literally wouldn't notice. The lights wouldn't even flicker."

Note the "between sources" claim. Replacing mechanical separation with solid state to interrupt a circuit is one thing. Switching between two (presumably AC) sources is another.

Either he's talking about LOW voltage DC and being misleading while he also discusses his company's circuit breaker... or he's actually proposing a 'transfer switch' that does NOT rely on mechanical separation.

</comment><comment><AUTHOR> These folks have excellent marketing: Last week they had segments on CNN, this week it's PM. Atom might be the world's first UL listed digital circuit breaker, but it's absolutely not the first digital breaker ( [http://www.eaton.eu/Europe/Electrical/ProductsServices/Circu...](http://www.eaton.eu/Europe/Electrical/ProductsServices/CircuitProtection/DigitalCircuitBreakers/index.htm) popped up as result #2 on DDG for ex) .</comment>


The Velvet Revolution of Claude Debussy - <AUTHOR> https://www.newyorker.com/magazine/2018/10/29/the-velvet-revolution-of-claude-debussy <comment><USER2> I know it's usually frowned upon in such froo-froo articles to examine an artist's most popular works in the current day, but I really do wish the author had examined what Debussy is most known for nowadays, Clair de Lune.

It's painfully beautiful, and the piece that made me fall in love with his work as a whole.

Still, I enjoyed the article. I feel they portrayed him in the correct light. The only thing I think they may have left out, and the main reason I think Debussy's music is so good, is just the amount of room for expression of the individual pianist there is in his music. The space between his notes and chords can be wielded with cold rigidity, or suggested with a warm, soft touch, something I think is lost in more classically structured piano music.

<comment><USER3> Speaking as someone who studied music academically for a while, I imagine they left it out because it's pretty unremarkable despite it's popularity. Debussy was actually reticent to publish Suite Bergamasque (which contains Clair de Lune) as it was from is "immature period" (his words not mine.) The suite was published 15 years after its initial composition.

In terms of its importance to the literature as a whole, despite being beautiful music (I'm really not trying to discount that the music is beautiful) Suite Bergamasque still represents an extension of the Romantic style. It's not nearly as groundbreaking as the Preludes/Images/Estampes which are a serious departure from all of the music that came before. Art was never the same after Picasso tore down the establishment. Ditto music and Debussy.

<comment><USER4> This piece is to Debussy what Liebestraume No. 3 is to Franz Liszt: it's simultaneously the cloying, overplayed hit that distracts from the rest of the oeuvre, while also being the masterpiece that serious music people love to pooh-pooh.

I agree with the "painfully beautiful" characterization. I must avert my ears. I'd rather listen to any other Debussy piece – I never tire of Doctor Gradus ad Parnassum for some reason – but only because I can't bear its perfection.

<comment><USER3> I'd never claim it's not a masterpiece. Both it and the 3rd Liebestraume are in my repertoire. But since it's more in line with the Romantic idiom, Clair De Lune and Suite Bergamasque in general gets compared against the masterpieces of Chopin/Liszt/Brahms/Schumann, and against that bar I'm not sure it necessarily measures up. Debussy was obviously a/the pioneer of impressionism, and in that idiom, his work is unmatched. I haven't seen a serious argument that he could out-compose any of the composers that are the pillars of romanticism in that idiom though, and since Clair de Lune is in that style, that's what it gets measured against.

</comment></comment></comment></comment><comment><USER5> Isao Tomita's debut analog synthesizer renditions of Debussy, Snowflakes are Dancing, is one of my all time favorite recordings. Debussy translates very well into electronic forms.

<comment><USER6> As a child in the 1980's my uncle would bring me out to his garage, put a welding mask on my head and have me sit on his tractor in the dark, while he played a tape with Tomita's rendition of Snowflakes are Dancing, and pretended that we were travelling to a far off planet, which was called Oxena. This has sparked a life long fascination with Debussy's music.

[https://www.youtube.com/watch?v=hWlSenLsXCI&list=PLGltXnm_5I...](https://www.youtube.com/watch?v=hWlSenLsXCI&list=PLGltXnm_5ITYjEwdJ_lWgQBr0kwWcpYbW)

</comment></comment><comment><USER7> I've read in several places that Debussy owed Satie more than he acknowledged in assisting him on his path to radicalization. Satie himself always felt inferior to Ravel and Debussy as he lacked a formal musical education (which may itself have been a major contributing fact to his uniqueness)

</comment><comment><USER8> Art of Noise put out an okay album "The Seduction of Claude Debussy" exploring this revolution a bit ... [https://youtu.be/8hLLL6gyUvg](https://youtu.be/8hLLL6gyUvg) .

Kind of like Daft Punk's disco homage album, doesn't capture the essence of the original.

<comment><USER9> I think it's great. The soprano I could do without, but getting John Hurt to narrate was just brilliant. It's no coincidence that the best tracks are Il Pleure and The Holy Egoism of Genius. They're are not as great when Paul Morley performed on the live "Reconstructed". He's annoying, even if probably he wrote most of those words.

As for sound, I think the modern inspiration was The Prodigy, whose Firestarter had made AoN quite a bit of money. :-)

</comment></comment><comment><USER10> > "There is no theory. You merely have to listen. Pleasure is the law."

Except Debussy had a musical education that included theory from the best teachers in France and _clearly_ understood the material. Plus first hand experience sight reading Wagner's operas and probably anything else he could get his hands on.

Someone with that level of education and pianism can claim to forget about theory. Then they will go on write Reflets dans l'eau.

Meanwhile, someone who has never studied music theory _at all_ and learns to play the electric guitar will go on to write something like Purple Haze.

They both start with a prominent tritone. But Hendrix didn't have enough schooling to take it in the harmonic direction that Debussy did. And Debussy had too much education to forgo sophisticated harmonic juxtapositions and constrain himself to timbre/melody.

Edit: Actually I'm thinking of Prélude à l'après-midi d'un faune where the flute line moves up and down within a tritone. Either way, sophisticated harmony and form that has obvious connections with much of the music Debussy analyzed in theory classes.

</comment><comment><USER11> Debussy won the Prix de Rome but became restless with the musical theory and composition training he received.

</comment><comment><USER12> > _Claude Debussy died a century ago, but his music has not grown old_

Well, for some measures of "not grown old". It's not like the Top-10 has much Debussy, or that the number of well-off patrons of concert halls that play the likes of Debussy are the same in number as in Debussy's times...

<comment><USER2> Sure, but his music seems to invoke fewer images of stuffy orchestral halls stuffed with powdered wigs and Victorian sensibilities. At least for me. It's pretty timeless.

<comment><USER12> Well, consider Bach then...

<comment><USER2> Well, Bach to me DOES represent that setting in time, but does it impeccably well. Much more rigid in keeping to form and harmony, more indicative of his era. Not a bad thing. His music is equally brilliant, but much of it screams "I'm Baroque!"

</comment></comment></comment></comment><comment><USER13> Off topic, but this is hilarious:

> Physical recordings are no longer a fashionable way of listening to music, > but you will probably get closer to Debussy if you shut down the Internet > and give yourself wholly to his world.

So now listening to a CD is the real and authentic way to listen to classical music.

<comment><USER14> This is how people talk about reading physical media vs e-books these days - there's a measurable difference in comprehension between reading text with hyperlinks and reading a physical book - so this doesn't strike me as crazy, if a bit precious.

<comment><USER15> > there's a measurable difference in comprehension between reading text with > hyperlinks and reading a physical book

Have any links to studies?</comment></comment></comment>


Ubuntu low-memory install for VMs - <AUTHOR> http://erratasec.blogspot.co.uk/2013/03/ubuntu-low-mem-install-for-vms.html <comment><USER2> If you allocate more memory, programs will use it. Web browsers are notorious for abusing this, but it applies in lots of other places, including system cache.

In other words: if you allocate 1GB of RAM to a system and 256MB to another, the first will appear to use more RAM. You're reducing memory usage and performance at the same time. Whether you want that or not depends on what you want to run.

</comment><comment><USER3> It sounds like most people here don't know about Ubuntu Mini:

<https://help.ubuntu.com/community/Installation/MinimalCD>

It's a 28 Megabyte .iso, installing it gives you a server with around 20-30 MB of RAM usage. I use it for everything, and then install vim and htop and I'm good to go. I haven't noticed anything missing, so it's definitely my go-to install for low-RAM servers or VMs.

<comment><USER4> Correct me if I am wrong, but isn't that slightly mis-representative? 28 MB is just the CD size the total size is likely much larger because it downloads much of the distribution from the servers.

<comment><USER5> According to the page, it downloads packages during installation, so yes,you will probably end up with a big installation once you have everything you want, but at least you don't have to download a big ISO containing software you don't need.

</comment></comment></comment><comment><USER6> Memory analysis isn't right on this. real difference is:

561M - 487M(cached) - 23M(buffers) = 51M

vs.

50M - 21M(cached) - 6M(buffers) = 23M

2x difference (4M of which is vmtoolsd)

<comment><USER7> Yes, this is how you're supposed to read memory usage in 'top' and 'free'. One must substract caches and buffers from the 'free memory' value. A lot of people read the values wrong and think that they're running out of memory.

<comment><USER8> Obviously there is the man page, but could you explain that a little more fully? (or link to something that does)

I think I may have been misreading the numbers, but I don't quite follow your recommended approach.

<comment><USER9> <http://www.linuxatemyram.com> explains it.

<comment><USER8> Thanks! Exactly what I needed and entertaining too!

</comment></comment></comment></comment></comment><comment><USER10> He made the two vms with different amounts of ram: the small one has 256M and the big one has 1G.

That's what the OS is supposed to do, fille a large portion of the unused and available memory with disk cache.

My ubuntu install uses almost 8 gigs in cache, what a pig!

BTW - if he installed open-vm-tools with the balloon driver it would recover all that disk cache ram as soon as the hypervisor was under any amount of memory pressure.

<comment><USER11> Agreed, keeping programs (once they've been exited) and data in cache is a good thing as it means that you don't have to read them from disk again in subsequent runs/accesses.

And given that a cache is a mirror of existing data (as opposed to buffers which are temporary storage space), the cache can be instantly flushed by the system if you need that ram for anything else.

This means that it's good if the memory resources the operating system needs to function are low, since it then has more memory for caching.

This flies in the face of the often heard comment -'it doesn't matter if operating system X is a ram hog, I want my memory to be used'.

I also want my memory to be used, but by the applications I run, not the base operating system. If the operating system is lean, the more memory is available to the applications you launch, aswell as the system being able to keep as much data as possible cached to prevent slow disk reads.

</comment></comment><comment><USER12> Okay, so what's the downside? Half the disk usage and 10x less memory, something is left out. What is?

Very good tip though, I always overlooked the F4 modes and never knew there was a minimal mode.

<comment><USER13> The downside is that nothing is installed by default. You have basically the bare minimum to boot and run.

Need Apache? you will need to install it. Need to send email? You will need to set that up. Need python? Ditto. And hope you like working at the command line because you have no X. Etc.

It's a nice way to get a system that does just what you need it to do and nothing more, but "minimal" installs are rarely useful all by themselves; they are a starting point.

<comment><USER14> IIRC, Ubuntu _Server_ does not install X11 and it does not install Apache (unless you chose "Web Server" role or tick "Apache" checkbox in "Custom" role at install time) or any MTA or MDA.

<comment><AUTHOR> That's correct

</comment></comment></comment></comment><comment><USER15> A debootstrap'ped ubuntu quantal is just 260M. That's much less than the 680M that are used by the minimal installation.

<comment><USER16> The cloud images are like 200mb, too: <http://cloud- images.ubuntu.com/quantal/current/>

<comment><USER15> Is there any documentation available how these images were built?

</comment></comment></comment><comment><USER17> As others have mentioned a debootstrapped install can be much thinner, but even debootstrap will pull in some needless stuff. For example /usr/share/doc, or support for every internationalization even though your server app always runs (or should always run?) with C locale – there's 100mb right there.

<comment><USER18> Gentoo Linux to the rescue.

<comment><USER19> Except with Gentoo, you have to install all the header files for every library you use, which easily outweighs any benefit you get from not having to install certain locales, etc. When I saw that my 2GB install of Gentoo was equivalent to a 500MB install of Ubuntu I abandoned it.

Also, if you are a developer, do you really want to be a one man/woman IT show just to get your laptop up and running? Gentoo is a great learning distro that is slightly more abstracted away than Linux From Scratch, but that's where its usefulness ends. Doing a proper "compile newer version of GCC, then recompile GCC with it, then recompile GCC again" voodoo is just tiresome after the first time. Yes you may lose some performance, but chances are your time is worth way more than what the setup takes.

<comment><USER20> > Doing a proper "compile newer version of GCC, then recompile GCC with it, > then recompile GCC again" voodoo is just tiresome after the first time. Yes > you may lose some performance, but chances are your time is worth way more > than what the setup takes.

I agree the recompiles take time, but it's not like you are going to sit in front of the computer and stare at the console output window while emerge is running.

<comment><USER19> Compare a multi-hour bootstrapping process of Gentoo with the under 10 minute installation of Ubuntu. When you are trying to quickly bring up a new server (especially as the old one is failing), this counts.

Also from my years of using Gentoo, you had to babysit a large portion of the initial installation.

<comment><USER21> Along with having to spend a load of time re-reading the documents because you aren't installing your system on a weekly basis.

</comment></comment></comment></comment></comment></comment><comment><USER22> A front page story on "Hacker News" recommends installing minimal versions of Linux to cut down on VM resource usage, and gets votes. What next? Get computers to behave exactly as you want them to by configuring them according to your needs?

<comment><USER23> It's a system admin tip that's valuable in proportion to the number of Ubuntu VM images you have running. For some folks here, that's quite a few.

Note that in Erratasec's case, they need to have a diversity of VMs for real hacking. Go check out the the Ubertooth One mentioned in the article, it's badass.

In my case, I was just going to be installing one in the next few days and was looking for ways to reduce drive space used on my SSD.

</comment></comment><comment><USER24> This may have much more to do with the install _process_ than how much memory an _installed_ system needs. For example, old RHEL install images required at least 512MB or more to install, because it would uncompress a gigantic bootstrap/initrd into memory instead of running cloop'd or off the disk.

An installed system only needs enough memory for the kernel and whatever apps you need to run. Install it with a lot of memory, then reduce the memory footprint to fit your application.

</comment><comment><USER25> I think you need to test the netinst Debian image, the iso is only 180 mb, there's even a biz card version which is 50 mb, I generally use this for testing.

</comment><comment><USER26> Does anybody have a vagrant box with this setup?

<comment><USER27> I usually just modify the ram arguments for the actual machine.

vb.customize [ 'modifyvm', :id, '--name', node[:hostname], '--memory', node[:ram].to_s ] We use this to perform cluster testing locally with 4 to 6 128mb nodes. :)

</comment></comment><comment><USER28> This article makes me believe the author does not understand how memory allocation on Linux works. It should not be a mystery that a VM with 4x memory utilizes more available memory.

</comment><comment><USER29> There is also Ubuntu Core [0] (my install uses 140MB on disk, 25MB RAM). It has no installer, so you have to do everything yourself — from partitioning to boot loader installation.

[0] <https://wiki.ubuntu.com/Core>

</comment><comment><USER30> Since we are on the subject. How much memory for a VM would be optimal for a git server running on 12.04? This would just be for personal use. Can it get by with 256 MB allocated?

I know there is a lot of "it depends" on this.

<comment><USER31> The OS installer will need more, but that should fine.

</comment></comment><comment><USER32> Why not just use the Server version?

<comment><USER33> Judging by the pictures (well the text also) he is using the server version

<comment><USER32> Ah, thanks, totaly overlooked that. :)

</comment></comment></comment><comment><USER34> This sounds really great!

</comment><comment><USER35> when it comes to slim bloatfree distros, Id rather just install archlinux. because there isn't a smaller footprint than core.</comment>


France's top court rejects core of law targeting online hate speech - <AUTHOR> https://www.reuters.com/article/us-france-tech-regulation/frances-top-court-rejects-core-of-law-targeting-online-hate-speech-idUSKBN23P32O <comment><AUTHOR> > France's top court rejected most of a draft law that would have compelled > social media giants such as Facebook and Twitter to remove any hateful > content within 24 hours, it said on Thursday.

> The ruling by the Constitutional Council, which said the law interferes > excessively in free speech, is a setback for President Emmanuel Macron. He > has vowed to make France a leader in containing the spread of illicit > content and false information on the most used platforms.</comment>


How zsh is more useful than bash - <AUTHOR> http://www.slideshare.net/jaguardesignstudio/why-zsh-is-cooler-than-your-shell-16194692 <comment><USER2> WTF?

I wrote this slide deck. It was a presentation I made for a monthly "tech lunch" my team has.

I made it after a couple of weeks of messing with zsh. It was for an audience of 4 other people who knew less about zsh than me. I can't believe someone posted it to HN!

That explains the "this slide deck is getting traffic" email I got from Slideshare this morning.

<comment><USER3> I enjoyed the slides. Great job!

Many people like me are new to whole Unix system and need trainings like this. I did not even know that I can upgrade my bash via homebrew.

I don't dare to switch to zsh yet. I'm afraid if it messes up all my bash_profile, rvm stuff and Vim configs. I have a bad memory with fish_fish

<comment><USER4> Zsh was a drop in replacement for me. Worked perfectly with everything you just mentioned.

</comment></comment></comment><comment><USER5> That's actually the first time I've seen a decent set of reasons why zsh is worth using. Well done.

Almost every other "Switch from bash to zsh, it has this awesome killer feature" article I've seen has raved about a feature that's available in Bash & has been for years.

I'm starting at a new job in a month or so, I shall try & use it as an opportunity to switch to zsh since I won't have any can't-live-without bash shortcuts in place at that point.

(Last time I tried switch to zsh, it took OMZ to get it useable, but it also made it too slow to live with. Hopefully starting with a clean slate will do the trick)

<comment><USER6> You can easily drop your existing BASH aliases, etc, into .zshrc and not even notice that you've switched to zsh.

As for "Oh My Zsh," I've never seen any reason to use it, as zsh works fine without any add-ons.

<comment><USER7>
      | As for "Oh My Zsh," I've never seen any reason
      | to use it, as zsh works fine without any add-ons.

I'll second this. I've never found a need to use "Oh My Zsh," and I've been using zsh for a few years.

</comment></comment></comment><comment><USER8> While zsh may be more 'useful', I find it a bit too smart. Many of the features are very interactive, and introduce a non-determinism that messes up my ability to fix errors. An example is command correction. I (usually) know when a command is wrong, and go to fix it without thinking. Being asked if you really meant some other command interferes with this, and while seemingly helpful, makes you wonder if a shell should really be doing that.

The directory listing shares the same problem. Once you have a list, it's just as easy to type the path then it's to cycle through the list (not that zsh stops this), it's just another interactive feature.

Then there is path-completion, which removes the / on the end of tab-completed paths. Since rsync treats a directory with / different to that without one, this feature annoys me to no end when using zsh.

I understand that all these are options, and could easily be configured. I just wonder how other people feel about them. Does anyone actively use these features? Do you find they can occasionally get in the way?

<comment><USER9> The command correction really bugs me in ZSH. 99% of the time it's wrong, and it doesn't learn even after the hundredth time of me telling it "no that's not what I meant, stick with the original". I keep thinking I should try writing a Bayesian filter for it or something, which would be a fun little project, but too low priority.

Also annoying when I start a command with sh, hit tab to command complete it with a .sh script in the current dir, and the command completion shows not just the .sh script but a bunch of shell commands as well. Pretty sure 'sh' should filter all those out and return only 'example.sh'. I don't recall this happening on bash.

Love all the plugins and things like oh-my-zsh, though.

<comment><USER7> Maybe I'm just not enough of a 'power user,' but I've been using Zsh since 2008 ~ 2009, and I rarely encounter the command-correction. The couple of times I've had it invoked were times where it correctly fixed a typo.

<comment><USER9> It does fix typos for me too, but most of the time asks weird things like, I typed 'aptitude' did I mean '.aptitude'? It loves misinterpreting some of my commands as dotfiles. Huh?

Then again I have a knack for unintentionally breaking computers, so maybe I've done something in env or rc that's messed it up...

<comment><USER10> Using the following got rid of a lot of my correction woes:

        alias sudo="nocorrect sudo"

That is why you were getting the .aptitude one, you can use it for other commands that it gets the corrections wrong often.

I've since moved to vanilla bash+bash completion since it is everywhere and zsh completion seemed to annoy me more than help me.

<comment><USER9> Awesome, thank you!

</comment></comment></comment></comment></comment></comment><comment><USER11> I like process substitution feature in zsh. In bash you can write:

vimdiff <(ls /bin) <(ls /usr/bin) [ It is an example. In real world, I use this feature for comparing outputs of one version of program with another one ]

And this will create two pipes, where output of each ls will go. Unfortunately, vimdiff sometimes needs to do second pass on the files, so this command won't work properly when outputs are large.

But in zsh you can write

vimdiff =(ls /bin) =(ls /usr/bin)

and this will create temporary normal files, instead of just pipes, and vimdiff will work fine.

<comment><USER12> That seems like a good reason for switching to zsh!

<comment><USER11> Actually I use bash for my daily work, so I run zsh from bash:

zsh -c 'vimdiff =(ls /bin) =(ls /usr/bin)'

A couple of similarly useful features, and I'm swtiching to zsh. But now I am too lazy to make proper configuration.

</comment></comment></comment><comment><USER13> I think the zsh-vs-bash debate is centered on minimalist vs. full-featured. For instance, the git completion example is very ugly in zsh to me. I know what git commands do, and I'd much prefer for the completion to take 1-2 lines total than one line per possible command, as in the zsh example. The prompt examples are similar -- my PS1 is

      local green="$(tput setaf 2)"
      local reset="$(tput sgr0)"
      export PS1="\[$green\]>>\[$reset\] "

And a multiline prompt, let alone one with right-justified elements, is pretty gruesome to me.

The first slides about availability on Macintoshes don't resonate, because I'm going to have MacPorts on any dev box and use that to install the latest. It's more likely I ssh to a server that has Bash 4 and no Zsh than anything else, so it also makes sense to know bash and have a good .bashrc ready to scp up there if I'm going to be doing a lot of work on the server.

zsh spellcheck is very annoying, thankfully it can be disabled. This is my preferred spellcheck solution ;^) <https://github.com/mtoyoda/sl>

All that being said, zsh is a really cool piece of software. It's one of those things I've always wanted to really stretch to its limits, but I've never been able to hang with it for more than a few months, which I doubt is enough time to really become accustomed to the workflows zsh allows (like the /u/b/... expansion example in the slides).

<comment><USER7>
      local green="$(tput setaf 2)"
      local reset="$(tput sgr0)"
      export PS1="\[$green\]>>\[$reset\] "

Could be this in zsh:

      export PS1="%{%F{green}%}>>%{%f%} "

\- %{%} replace \\[\\] \- %F{color} sets the foreground colour \- %f resets the foreground colour

I would go with something like:

      export PS1="%{%(?.%F{green}.%F{red})%}>>%{%f%} "

It will be green if the last command exiting successfully, otherwise it will be red.

There's also better history support (from my zsh config):

      # History
      # <comment><comment>~

      HISTSIZE=1000
      SAVEHIST=1000
      HISTFILE=$HOME/.zsh_history

      setopt SHARE_HISTORY        # Share history across sessions
      setopt HIST_IGNORE_SPACE    # commands starting w/ a space don't go into history

      # SHARE_HISTORY seems to imply both of these, at least that's how the manpage
      #   reads, so let's comment them out for now.
      #
      # setopt INC_APPEND_HISTORY   # Incrementally append history to file
      # setopt EXTENDED_HISTORY     # Save the timestamp and duration of commands to history file

<comment><USER14> Actually, except the `SHARE_HISTORY` option (which can be emulated), everything else is available in Bash.

<comment><USER7> Sorry, I just copy-pasted the whole thing. I know that most of the other options are available, though I didn't know that the HIST_IGNORE_SPACE was available in bash.

<comment><USER15> In bash you'd use HISTCONTROL=ignorespace

<comment><USER7> According to the manpage, ignorespace doesn't treat multi-line commands very nicely.

<comment><USER15> You would have to disable the cmdhist option for that to matter:

      shopt -u cmdhist

Or I guess be working with a bash old enough to not support cmdhist.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> The article with Knuth's program and Doug's reply is: [http://dl.acm.org/citation.cfm?id=315654&CFID=329016541&...](http://dl.acm.org/citation.cfm?id=315654&CFID=329016541&CFTOKEN=58713819) (Don't have a non-paywall version.)

Regarding the claim about Knuth's program being long, it is worth considering that (1) his program was primarily a demonstration of literate programming style, which contains considerable embedded documentation (2) the program needed to build significant basic infrastructure to support itself, including IO, sorting, case equivalence (including a table with each upper-case and lower-case letter), etc.

Doug's criticism and comparison of Knuth's solution vs. his own is insightful worth reading.

</comment><comment><USER17> Problem is zsh is not omnipresent like bash is. I'm sure that if you use zsh you also use Plan 9, code in D, write LuaTeX in Emacs and wear a monocle.

<comment><USER18> I don't get your point. I use zsh+oh-my-zsh, and I don't know what Plan 9 is, don't code in D, never used LuaTeX (esp. not in Emacs), and I don't happen to wear a monocle.

In fact I find zsh much easier for _beginners_ and people who don't master the arcane intricacies of *nix.

<comment><USER19> I -think- the (albiet, overly exaggerated) point is that if you only know zsh, you could potentially be at a disadvantage if you need to use someone else's terminal. Especially a remote server.

<comment><USER20> zsh is mostly a superset of bash. you will get by.

</comment></comment></comment></comment><comment><USER21> One thing I don't see mentioned nearly enough is, if you're using extended globs, it's possible to tab-complete virtually all of it, which doubles as a handy reference.

For example:

        setopt extglob
        cd *(<tab>
        ~~ massive spam of possible glob qualifiers ~~

and it works for variable expansion modifiers as well:

        print ${(<tab>
        ~~ completion candidates for parameter flags ~~
        print ${<tab>
        ~~ complete any currently set variable in the current env~~

Another thing I like is the array types for things like $PATH that are historically colon-separated, typically lower-case versions of the var name for the interesting 'magic' ones.

        vared path

vs

        vared PATH

to see the difference.

        print -l $path # much easier to read

</comment><comment><USER22> I see your zsh and I raise you fish: <http://ridiculousfish.com/shell/>

Try it. It's better.

<comment><USER23> > It's better.

What's "better" about it?

<comment><USER24> 1) A pretty great experience even before you start customizing. I only add a git status section to my status line and set some environment variables in my config.fish file.

2) An effort to clean up and orthogonalize shell syntax. The potential portability means I usually still make bash scripts when I'm sharing for others, but for my own stuff it's great.

3) Suggested completions. I start typing a command and if it's one I've used before in that directory it appears in faint gray letters on my command line and I just have to press ctrl-f to bring it up that way.

4) Probably a consequence of (1), but it feels very fast to me compared to when I used zsh. The author also talks about using threads and minimizing disk access to speed it up, but I don't really know how it compares to zsh on that level.

<comment><USER25> I don't care about experience before I start customizing because I am very certain that I will want to customize. A smaller configuration file does not benefit me at all.

I don't find zsh to be slow even on an older machine, so I'm puzzled what you mean by that.

Which only leaves the suggestion feature, which is interesting but not enough for me to pick up yet another shell with syntax that is even more different from the rest.

</comment></comment></comment></comment><comment><USER26> I use bash as my everyday shell since 1996. I keep on reading the "how great zsh is" articles. And I always try zsh. But after a few minutes/hours, I go back to bash. It's really hard to change.

<comment><USER20> Just using zsh as a drop-in replacement for bash is pointless. You'd need to discover its features and customize it to get added value.

As a simple example, in bash if you use tab completion and there are multiple options, pressing tab again just reminds you that there are multiple options accompanied by a passive aggressive beep (it used to be this way at least). zsh lets you cycle through the possible completions.

<comment><USER27> > As a simple example, in bash if you use tab completion and there are > multiple options, pressing tab again just reminds you that there are > multiple options accompanied by a passive aggressive beep

This should fix it in bash: bind '"\t":menu-complete'

</comment></comment></comment><comment><USER28> Path replacement is also possible in bash, as in:

        cd site1 site2

if you just add this line to your ~/.bashrc:

        function cd() { if [ $# -eq 2 ]; then builtin cd ${PWD/$1/$2}; else builtin cd $1; fi }

<comment><USER3> that way all zsh functionality is "possible" if you write those functions.

<comment><USER29> There's no equivalent for the nifty tab completion where you can navigate around though. That's one of the few things I envy from zsh as a bash user.

</comment></comment></comment><comment><USER30> I find the way ZSH does completions for git kind of frustrating. It's a bit overzealous and so when you try to complete a remote branch lie:

"git co br<tab>"

It finishes with:

"git co origin/branch"

Whereas what I want is:

"git co branch"

because I have git set up to automatically create a local branch and set it up to push to the remote when I do that. Just a small annoyance. Overall I find ZSH has cool features that don't actually work that well, or at least they don't do all that much for me. Spell checking, for example, is rarely that useful since it tends to show up for commands that work fine. It really needs an option to say "never correct this" but it doesn't.

That said I still use it, don't see any reason not too. I mean, Powerline for ZSH looks gooood. Just not sure it's _that_ much better than other shells.

<comment><USER31> Not to mention that it sometimes gets super slow for no apparent reason.. which lead me to turn it off.

</comment></comment><comment><USER32> Only through zsh did I find out about tab auto-complete.

When I used bash, whenever I needed to uncompress a tarball I downloaded, I would type in the full, ~50 character filename. Only through zsh did I find out about tab autocomplete, and when I had to use bash on a friend's Mac, to my surprise, autocomplete worked.

I still use zsh, though.

<comment><USER7> For a while bash autocomplete was around, but you had to know to source it from /etc, which seems dumb. Now this stuff is sourced automatically[1].

[1] And sometimes they use it as a 'cheat.' virtualenvwrapper (on Ubuntu, and I assume Debain) is dropped into /etc/bash_completion.d/ instead of somewhere in $PATH. Meaning that it's auto-sourced for bash users, but zsh users need to know where it is, and source it. It seems stupid to put it in the bash_completion directory. Sure it has _some_ completion stuff in it, but the bulk (and purpose) of the file is to setup a bunch of wrapper shell functions. It's like they didn't have a formal place to put it so they just jammed it _somewhere._

</comment></comment><comment><USER33> I love using zsh (in combination with oh-my-zsh) on OSX but the only thing I've noticed after using it a year is that it's becoming very very slow. As in, it usually takes me 5-10 seconds to login to a new session (locally) and be able to see the prompt and type something.

Tab auto completion takes a second or two (even for files).

Combined with the git plugin I have enabled (which does "git status" on every prompt in a git folder) it's almost unbearable to work with.

I've looked into it a couple of times, there are some people with the same issues on oh-my-zsh's github, but I could never really solve it.

Would any pro zsh user know what my issue could be? I'm seriously considering going back to bash, I use it at work and it reminds me how fast the terminal can be.

<comment><USER34> I moved from OMZ to Prezto for this reason (its a fork of oh my). But prezto is slow too.

The only recourse I think is to go back to a clean zsh and build your own .zshrc. There are other leaner zsh "frameworks"[1] I have read of, but i intend going back to stock zsh soon.

1) - see zshuery and zsh-m on github.

</comment></comment><comment><USER35> After using zsh for a while I moved back to bash. The main reason is that I want to learn bash well, because I might be writing shell scripts in the future and I don't want to use zsh specific features in my scripts so I don't want to get used to them.

<comment><USER36> > I don't want to use zsh specific features in my scripts

How is this a worry?

The topline in your bash script is '#!/bin/bash'

Which tells the system 'run this with bash'.

<comment><USER35> Well I think there are if statements, loop conditions, and wildcard expansion that works in zsh but not in bash. So you could get used to something working in zsh, then you write an sh script with that thing, and then it doesn't work, and you have no idea why.

Example, I _think_ __/ (recursive globbing) works by default in zsh but not in bash. If you have __/ in a bash script without setting the right options then your script won't work and you will have no idea why until you've wasted a lot of time debugging.

<comment><USER36> When you insert this in the first line of your script

        #!/bin/bash

The specified program is run. From that point on, the bits you're executing in that script are 'bash' no matter what the shell you called it from is.

I've been running zsh on my local system, and happily writing [bash, csh, perl, ruby] using this trick.

</comment></comment></comment></comment><comment><USER37> The killer feature to me is scp completion, e.g.

      scp someuser@someserver:<tab>

… will ssh into the server, fetch the file list and offer it for completion locally (granted you have set up public key authentication)

<comment><USER38> Turn on bash autocompletition and bash does this perfectly.

</comment></comment><comment><USER39> I've been using zsh for a while now, mostly without using any special feature that isn't available (maybe with some tweaks) in bash. The additional value for me is that I get all of this out of the box, or with not much effort. That's to oh-my-zsh I've got a nice looking theme (agnoster). Thanks to "zsh- syntax-highlighting" I get syntax highlighting, thanks to "history-substring- search" i got a nice way to search in my command history. All of those just took less than one minute to set up on my machine.

Luckily enough, I don't have to work over servers which may or may not have zsh, so i don't need to worry about that. Whenever I have to use a PC with bash (or any other *sh), I can easily get the same result, with a slightly- worse user experience.

Also, as a nice tip, zsh will complete "kill" and "killall". So that I don't have to fire up htop every time I want to kill a process.

<comment><USER40> I have yet to find a useful feature that I don't already get in bash (assuming you are capable of sudo apt-get install bash-completion).

Fish (that I don't use regularly), however, has useful features.

</comment></comment><comment><USER12> Path expansion, can easily be fixed with something like this in bash: CDPATH=".:..:~:~/Desktop:~/Documents:~/Documents/Prj:~/bin:/usr/local:/usr/local/share:/opt/local"

         for realm in ~/Library/Caches/temporaryitems ~/* ~/Desktop/* ~/Documents/* ~/Documents/Prj/* ~/Library/* ~/Library/Scripts/* ~/Library/
         do
             for folder in $realm
             do
                     if [ -d ${folder} ]
                     then
        *             CDPATH="$CDPATH":"$folder"
                     fi
             done
         done

As for completions of git and such, that relies totally upon where you got your completion from. There gotta be better arguments than this, and I am really sure there is.

I am on Mac OsX, and I downloaded and installed bash 4.2, and I have never experienced any problems with that.

</comment><comment><USER41> My favorite feature that wasn't mentioned is completions for `kill`. For example, in bash I would have to `ps -ef | grep command_I_ran` then `kill -9 process_id_of_command_I_ran`. Bonus points if you can do that in one command! In zsh, you only need to do `kill -9 partial_command_i_ran[tab]` and it will complete it for you. Also, !$[tab] and the like. Also, you can set the theme to random to get a surprise every new window.

<comment><USER27> Just use pkill.

</comment></comment><comment><USER42> The only thing that is keeping me from 100% zsh is that zsh is not everywhere and bash is. When you switch companies, sometimes admins/IT are not flexible in allowing zsh to be installed on build/vnc servers. Can anyone share some tips on how to manage dotfiles for zsh with backwards compatible bash so that you can truely have a portable config?

</comment><comment><USER43> Normally, these slideshares are difficult to follow since the subtleties of an actual presentation are missing. This is not the case here: kudos to the author. After reading the comments that I can transfer over all my .bash_* information, I will be doing so.

</comment><comment><USER44> The site1 site2 substitution slide is at best disingenuous; I believe in bash you could type

^site1^site2

and get the same result.

<comment><USER45> Not at all. ^site1^site2 would only work if it was your last command.

The idea, I believe, is when your browsing around multiple versions of the same directory structure. The 'cd site1 site2' allows you to jump directly to the equivalent directory in the other structure.

The equivalent in bash would be something like: cd `pwd | sed 's/tmp1/tmp2/'`

<comment><USER46> In bash: cd ${PWD/foo/bar}

</comment></comment></comment><comment><USER47> My personal favorite zsh specific feature is the REPORTTIME environment variable. When set to a nonzero number it'll automatically print a summary after a long running command.

My own <http://imgur.com/6LCS1cj>

<comment><USER48> Hmm doesn't work for me, is it an option you need to turn on?

<comment><USER47> As randuser points out it's an environment variable. There's another one called TIMEFMT which lets you format the output.

Some examples: [https://github.com/search?q=TIMEFMT+extension%3Azshrc&ty...](https://github.com/search?q=TIMEFMT+extension%3Azshrc&type=Code&ref=advsearch&l=)

</comment></comment></comment><comment><USER49> I'm really glad I switched from bash to zsh a few years ago. zsh is, IMHO, a tiny bit better than bash in many areas. Because I use it all day every day, these little bits better add up to a lot of benefit.

</comment><comment><USER50> She sells 'zed' shells by the sea shore?

Oh, wait. Right. Lost in pronunciation. :P

</comment><comment><USER51> I really enjoy the regex completion.

Example: $ rm * .gch dir/* .gch

<tab>

$ rm file1.gch file2.gch file3.gch file4.gch dir/file5.gch

I really enjoy it when I'm removing something sensitive and just want to make sure.

<comment><USER27> In bash, you can use 'C-M-e' to expand just like the shell.

</comment></comment><comment><USER52> Bah! Give me Ksh.

<comment><USER53> I much prefer ksh myself, in particular for scripting. Fun fact about how bash is broken:

      export a=0
      cat $file | while read line
      do
        a=$(expr $a + 1)
      done

Bash will fork the while loop as a separate process, inheriting (copying) its own environment, and the variable will only update locally, not in the parent process.

<comment><USER12> I thought every shell that is sh compatible would fork a while, and a for loop, as a matter of fact any loop into a sepearate process.

This comment however reminds me of some behaviour of bash 2.03 or earlier, where this behaviour was flawed, if you suddenly changed execution path during a recursion in a shell script. Sorry I can't describe it better, and that bash version, that was before 2.03 is long gone now!

<comment><USER54> Isn't the issue the pipe, not while?

      export a=0
      while read line ; do
        a=$(expr $a + 1)
      done < $file
      echo $a

(Some old shells fork on < but bash isn't one of them).

<comment><USER12> I think the pipe was the issue.

Nice to know that bash doesn't fork loops that are being used with redirection, and not piping!

</comment></comment></comment></comment></comment><comment><USER55> I switched back from zsh _to_ bash, and I miss it terribly. Problem is, I need to run both virtualenv and rbenv, and they're both designed for bash, and don't work properly with my zsh for some reason.

<comment><USER36> I don't know what those are, but why not start them with a bash script, that you launch from zsh?

<comment><USER55> They're designed to mess around with your shell variables and environment to virtualize an environment for ruby or python. Unfortunately, they're not totally compatible with my customized zsh setup, and I don't have the time to rebuild and test a zshrc from scratch. Launching bash with them would be moot since I'd just have to spend my time in bash anyways, then.

<comment><USER36> Ah! Thanks.

</comment></comment></comment></comment><comment><USER56> Does zsh have bash's ESC+.?

<comment><USER57> Yes. Not only that but it has something even cooler: ESC + Q

Let's say you are about to finish a really long command and realize you should have done one other command first.

ESC + Q clears the current line, lets you enter a command, and then inserts the cleared line again on the next prompt. You have to try it to realize how cool it is.

<comment><USER56> > Yes. Not only that but it has something even cooler: ESC + Q

ESC+. does not work for me with zsh.

zsh 4.3.11 (i386-apple-darwin12.0)

Maybe it's the version.

ESC+Q also doesn't clear the line.

At the same time, the OP links slide deck fails for me at the cd /u/lo/b part. It simply doesn't work.

<comment><USER48> You probably didn't turn it on when you ran the config wizard thingy.

<comment><USER56> What config wizard thingy?

I figured this was a default setting.

</comment></comment></comment></comment></comment><comment><USER58> yes, bash is great except it's not default sh.

<comment><USER59> lolwut

<comment><USER60> Bash is the gnu shell which is a superset not posix which is basic no frills mixture of minimal ksh and bourne syntax.

BSD has the almquist shell as it's /bin/sh and tcsh as it's /bin/csh. Various commercial vendors licensed the korn shell from bell labs. The korn shell is public domain and open for 13 years now. The default sh on most UNIX boxes are either ash or a hard link to ksh which emulates the POSIX definition of sh. zsh and bash also provide the option to hard or soft link so depending on your distro you may have /bin/sh linked to bash.

Debian at one point repackaged the BSD almquist shell as their system sh calling it dash mainly for speed and stability. I believe they removed it as their programmers apparently couldn't program system level scripts without their non portable bashisms or maybe just one of the NIH moments where everything must live under a single mono-cultural license and identity.

<comment><USER61> (about Debian use of dash) > I believe they removed it ...

No, /bin/sh still points to dash in the latest and just released Debian stable (Wheezy). It seems to me that this transition was already completed in Sequeeze but I haven't checked.</comment></comment></comment></comment>


Ask HN: How to optimize press coverage? - <AUTHOR>

tentatively set to be profiled in Mashable's 'Spark of Genius' feature tomorrow for http://GoRankem.com
putting together a checklist for the team: -tweet, fb share, google +1 & stumbleupon from the article -include a mention in gmail status -mention in google+ circles -pass along to reddit
what are some other ways to keep the momentum from a writeup spreading as far as possible? thanks in advance!
-adam <comment><USER2> The main thing to do after this is leverage this and get written up again and again.

You can google search for "How to contact a journalist/blogger." Basically, you want to appear everywhere within two months of the first major news story.

<comment><AUTHOR> yeah, was already planning to pass along the mashable story to other industry specific writers and ask 'em "did you catch our mashable writeup?" and hopefully it could snowball from there.

i know when lifehacker picked us up out of the blue a year ago, a number of random smaller stories resulted from the domino effect.

i'm mainly concerned with how we can make sure the story is just spread across as many channels as possible as it's still fresh.

any message boards or communities that would help spread? (obv HN could be a great source...)

<comment><USER2> Look into Micro Opportunities b[http://www.gabrielweinberg.com/blog/2010/10/startup-micro- op...](http://www.gabrielweinberg.com/blog/2010/10/startup-micro- opportunities.html)

To keep something going you have to make it news again. In some ways this is easier, because it already was news and this is more of an update. In some ways its a lot harder because it is time sensitive.</comment></comment></comment>


Minimalism: It Works - <AUTHOR> http://kirindave.tumblr.com/post/2544990560/minimalism-works

<comment><USER2> I don't understand what people like KirinDave are referring to when they discuss Minimalism. Anything beyond drill-down UX exercises like eliminating information clutter in visual design seems to immediately break down. Assuming we're talking about something more general than eliminating the widgets from our blog sidebars... What ARE we talking about? I guess I could imagine it going one step higher, into a campaign to stop ourselves from reading blogs and Hacker News when we should be working, ie., the logical evolution of our collective obsession with GTD and similar systems from a couple years ago: a slightly doctrinaire insistence on techniques for productivity. Which is great, especially if you're a 'knowledge worker' (I'm not).

But I still lose the plot when we start actually using the word big-M 'Minimalism', or when we start invoking Zen. Zen is many things: spiritual practice, proto-psycho-exploration, a system of psychology, a system of ethics and epistemology—but I'm not sure it has anything to do with anything that the leading Neo-Minimalists have deemed worthy of inclusion into their morning workflows. Keeping a blog, for one, is not a very Zen thing to do. In fact, the practice of Zen is in part anathema to nearly every technique of thought that a knowledge worker employs in his job. It's a refutation of the construction of narrative, of pattern-recognition, of comprehension, and finally of cognition. It's an attempt to obliterate our own understandings of the world, to destroy our conceptions of objects, uses, signs, signifiers, others and ourselves, to be replaced with pure being and hopefully compassion. And it's DEFINITELY at odds with the all-inclusive rapid-fire content- association that is at the heart of tumblr culture. But I don't see how the practice of Zen has anything to do with the way one orders one's workspace, if one never considers what one is doing with one's mind, or one's content. I don't see what possible use, that is, it would be to invoke Zen and minimalism when describing how we choose our text editors if we allow what we're writing to remain entirely unconsidered.

Which is not to say that I think these Neo-Minimalists are a sort of religious hypocrite for not practicing Zen in all walks of life. The people whose blogs I see reflecting the practices of Neo-Minimalism seem like interesting, intelligent people, writing about the same sort of thing we have been writing for years: technology, culture, memes, funny videos, food, beer. I just don't understand what they could possibly think all the fuss is about in any realm beyond what window manager they've decided to use.

I've heard a couple people talk about getting rid of all the things they don't use, which seems nice, too. But it's a housekeeping exercise. You can't possibly expect me to believe that only having five shirts in your closet will make you a different person, or even a different worker. What is the _there_ here? I haven't heard anyone discuss eating the same thing every day. Or listening to the same music. Or paring down their vocabulary. What does one do? What is there besides being able to create uninterrupted expanses of negative space (which I concede are very nice) and then appreciating their aesthetics?

<comment><USER3> I mostly agree with you except for this "You can't possibly expect me to believe that only having five shirts in your closet will make you a different person, or even a different worker. "

stripping away everything that you don't actually use in your day to day life has a remarkable psychological effect.

<comment><USER4> Those things you threw away also have a 'remarkable psychological effect' when you need them.

"Where'd I put those snow chains?"

Possessions make life simpler.

<comment><USER5> Possessions don't automatically make life simpler.

Possessions that you use regularly, value, and are worth more than the trouble they bring you might make life simpler. Possessions that are merely things you're storing "in case you need them", and are moving from one place to another, certainly don't make your life simpler.

I've known many people (including myself) who have found themselves in a position where they wanted or had to move and discovered in the process that when it came down to it, they could happily live without half of the stuff they had accumulated over the years. I did that in my most recent move, and a year later I do not miss any of it, and am still getting rid of things (30+ computer science books recently, and am now moving onto the photography equipment that just gather dust in the closet).

<comment><USER4> The few possessions I don't use regularly also happen to be the ones that are the easiest to move. Not to mention these sorts of things tend to already be in a box in my closet, practically packed and ready to go.

Aside from the negligible space they take up, they certainly aren't having a negative effect on my everyday life, so removing them would have no tangible benefit. In fact, their loss would deprive me of the artifacts of what's been a fairly interesting life so far. Any bulky items (eg small appliances, furniture) that would create any sort of hassle have already been given away to friends who would find them useful.

But I'm not sufficiently self-absorbed to call this a 'movement'. In the words of BSNYC^, it's just a matter of categorizing my things under 'Shit I Need' and 'Shit I Play With'. There's nothing complicated about that.

^ [http://bikesnobnyc.blogspot.com/2010/08/new-smugness- keeping...](http://bikesnobnyc.blogspot.com/2010/08/new-smugness-keeping-it- to-minimum.html)

</comment></comment></comment></comment></comment><comment><USER6> I was wondering when an article like this was going to show up on the HN front page.

The follow-up article gets it right. Minimalism is at its core a "process of prioritizing your life and working towards concrete goals without giving in to distraction", NOT just blindly getting rid of stuff. It is immersion, but only in one thing at a time. It is about reducing your tendancy to over-extend yourself, and focusing on the things you really need, both intellectually and physically.

Can we all just admit that the original article, [http://vivekhaldar.tumblr.com/post/2525332092/minimalism- is-...](http://vivekhaldar.tumblr.com/post/2525332092/minimalism-is-not-a- viable-intellectual-strategy) , was just link-bait intended to elicit a response and/or rise from the HN community? The original article contains so little method to it's analysis and represents such a fundamental misunderstanding of minimalism that it bears little water intellectually. Not to be rude, but I'm surprised it made it to the front page.

<comment><USER7> "Minimalism" as it is described here is just a personal version of technocracy - the arrogant belief that you actually know enough to produce explicit, precise long-term plans. Kept under control, and used for shorter terms (say a year detailed, and two more sort of general and subject to change as you learn more) it can be useful; otherwise it often is just a personalized version of the old Soviet "Five-Year Plans".

ADDED: Rereading this, I think I missed my point slightly; the problem with minimalism as described here is that it locks you in too much to your current plan; it reduces your flexibility to adjust your plans as you learn more about your problem space.

<comment><USER8> You're free to change your priorities at any time. For example, I decided to change aspects of my life so I could lose weight.

We need to be aware of value propositions and how they change. No one is saying you have to lock yourself in stone. Indeed, the minimalist approach increases your flexibility; you've invested the minimum to reach your goal, so if you abandon the goal you've lost the minimum you could invest.

</comment></comment></comment><comment><USER9> This Museo thing has to stop. It's cute, it looks real friendly in titles, but dear god, do not typeset an article in it.

<comment><USER8> It looks fine on Mac and Linux. If you are using Windows, keep in mind that entire site is subtly tuned to irritate IE users.

<comment><USER10> yes, it renders and looks fine but museo it's not the best choice for big blocks of text. Comics sans also renders great and you wouldn't use it here, right?

<comment><USER8> Ok. I'll change it to comic sans. Thanks for the advice!

</comment></comment></comment></comment><comment><USER5> I agree that the article by Vivek is totally misinformed.

I've taken a couple stabs at minimalism (of possessions) in my life, staring when I moved from Austin to Seattle in 1995. I'm doing so again after relocating from Seattle to San Francisco a year ago.

There is absolutely no doubt that I've been happiest during those periods when I've had the fewest 'things'. I look back at the time when I downsized from a 1000 sq. ft. apartment in Seattle to 500 sq. ft. studio as the most productive and enjoyable time of my life.

Since moving here to SF, my wife and I have almost halved the space we occupy from a 1600 sq ft townhouse in Seattle to a very comfortable 850 sq ft. in San Francisco. I continue to get rid of the stuff and replace it with either 'virtual stuff' (e.g. electronic books) or just happily do without (e.g. espresso machine).

The main reason I 'upsized' from the small apartment to the large townhouse was that I felt like at my age at the time (30) I was 'supposed to'. I was the only one of my friends/work-mates that hadn't gotten married and/or had children, and bought a house. Oh, what a mistake! Now, ten years later, I'm so glad I'm back to shrinking the possessions in favor of a leaner, simpler life. For the first time since I was 16 I do not own a car. I have no debt (and with the exception of the townhouse and a couple years of credit card debt, I haven't since 1998).

I'm totally sold on continuing down this path, as she is as well. We don't plan on having children. We are both 40+ and enjoy the idea of moving around some more, perhaps even relocating overseas in time.

<comment><USER11> I'm also sold on the minimalism of possessions, but somehow I'm not as sold on the aesthetic and cultural/work-habits stuff that articles like this tie in, which I don't think necessarily have to go together. I don't want to own tons of stuff that I have to spend money on, haul around when I move, etc., _but_ I actually like clutter, distractions, etc. The way I combine those preferences is by outsourcing the clutter: for example, instead of owning a huge library of books, I spend my time in libraries that other people own (universities, public libraries, the occasional book-heavy coffee shop). I couldn't imagine _working_ in a minimalist environment!

I haven't made much use of it myself yet, but hacker spaces do that with offices to some extent as well. You can have a minimalist apartment, but still work in a hectic, filled-with-stuff place like Noisebridge.

</comment></comment><comment><USER12> No big surprise that a disciple of neo-modernism would present their arguments with a title straight out of an apple marketing campaign.

<comment><USER8> Sorry if you feel this way. I have no control over what title someone will submit my story as. My title was the counter-claim of the article I was rebutting.

</comment></comment><comment><USER4> Read a few of these to know everything you need to know about minimalism: [http://www.google.com/search?q=minimalist+site%3Abikesnobnyc...](http://www.google.com/search?q=minimalist+site%3Abikesnobnyc.blogspot.com)

</comment><comment><USER13> I think there are basically two reasons why one maintains a minimal set of possessions.

One is dumping out most of your stuff because while part of you would still like to have them you think you'll be happier that way. (And because others are doing it also so there must be something on to that.)

The other one is having learned to _not need_ that stuff any longer.

</comment><comment><USER14> The original article criticizing minimalism was written with more depth and more sense of humor than this article written in response.

My take on the two articles: [http://www.johndcook.com/blog/2011/01/01/periodic- minimalism...](http://www.johndcook.com/blog/2011/01/01/periodic-minimalism/)

</comment><comment><USER15> Each author is using their own definition of minimalism. There's no point in arguing over whose definition is better.

<comment><USER8> The argument isn't "What is minimalism." The argument is, "What are these people doing that they call minimalism?" Vivek's criticisms are mostly valid for his perception of the movement, and I think he's a reasonable guy, so I tried to update and correct his perception.

This is not a sisyphean task unless Vivek has a very strong motivation to ignore my explanation.

</comment></comment><comment><USER16> Minimalism is not necessarily about doing without, its about maximizing utility in the things you do have.

Minimalism is having one very good screwdriver instead of a whole drawer of lousy ones that you're "meaning to go through one of these days".

</comment><comment><USER17> To me applied minimalism in whatever endeavor just means finding the simplest possible thing that works. I think most of us can see the value in that.

</comment><comment><USER18> Life is what happens to you while you're busy making other plans - John Lennon

</comment><comment><USER19> tl;dr

<comment><USER19> But seriously, this is why I don't especially care for minimalism: '[a]t its core, Minimalism is about being aware that every decision you make is a value proposition, and that you need to judge how the consequences fit with your goals.'

Focus is good, but an excess of it results in tunnel vision. It also leaves little room for whimsy or humor.

<comment><USER20> Another way to think about it is when you do something all the time it becomes a second nature. You don't always have to ponder hard on every decision you make, some decision becomes default choice.

I don't know about minimalists not having a sense of humor (actually first time I heard this) but I agree you are less likely to do things just for _shitz and giggles_ ; but I don't know if thats such a bad thing. Some people just don't enjoy doing things for _shitz and giggles_. I guess it boils down to personal taste and preference?</comment></comment></comment>


Ask HN: Any book recommendations for Geek Humour? - <AUTHOR>

I loved the sillyness of Douglas Adams, the even more old school sillyness of PG Wodehouse(wasn't geek but still pretty good).<p>I've searched and read some random sci-fi humour but wasn't blown away. Perhaps I was reading the wrong things. Do you guys have any suggestions? <comment><USER2> Terry Pratchett.

[http://www.lspace.org/books/reading-order-guides/the- discwor...](http://www.lspace.org/books/reading-order-guides/the-discworld- reading-order-guide-1-5.jpg)

Specifically for geeks I would start, perhaps, with "Going Postal".

</comment><comment><USER3> Charles Stross, The Atrocity Archives and others in the Laundry series. Not foolishness, but a good sense of humor. For foolishness, try Robert Asprin's Myth Adventures.</comment>


My GF learned to code in 3 months. This is what she came up with. - <AUTHOR> http://nukaco.la/

<comment><USER2> I really like the skills section <http://nukaco.la/skills.html> I wish this was standard practice for resumes, even though it's subjective assessment it's really easy to compare relative strengths and weaknesses, for example it's very easy to see "dabbled in haskell, very proficient in garage band" just by glancing

<comment><USER3> I like it, but in 3 months she got 2/5 in rails, 2/5 in javascript and 2/5 in git? I doubt thats even possible...

I've been working with each of those for ~6 years and I'd still only put myself at a 4 and if I was being generous. It's funny the longer you work with something the more you realize how little you understand it. I probably would have put myself at a 2/5 in those categories 5 years ago, but looking back, I'd rate myself at 1/5 instead.

<comment><USER4> As if rating one's skills in a particular subject with a 1-5 rating under no context bears much meaning... it's so arbitrary as to be insignificant (but it _could_ be a cool concept if not abused). It also depends on one's motivation for representing their skill level; for example, jobseekers probably overestimate their skill levels.

It would be great to have a standardized rating system based on a few different tiers wrt a language/framework/etc.:

      1 - Wrote some really basic code in the language
      ...
      5 - Wrote some really, really advanced code in the language

<comment><USER5> I mean how advanced can you be in a scripting language ? There is no memory management, no low level systems knowledge required. Can you give me an example of writing really really advanced code in Ruby or Python ?

<comment><USER6> > Can you give me an example of writing really really advanced code in Ruby or > Python ?

I will take your comment at face value and will answer accordingly.

First, here's a direct answer to your question: take a look at [0], and you will se an example use of metaprogramming.

In this file ModelBase is a metaclass, which is used to create new _classes_ at runtime.

[0] [https://github.com/django/django/blob/master/django/db/model...](https://github.com/django/django/blob/master/django/db/models/base.py)

Also, you may have to reevaluate your definition of a scripting language. I will try to guess as to what it could mean to you currently:

        A script language is interpreted, a non-script language is compiled

First we have to define interpreted as it could mean many things itself. The most restrained vision of interpreted is a language that would take one line (or enough to form an understandable command), eval() it (which means parsing the line, executing it and changing some internal state) and then proceed to the next one. There's a second case, there are languages that parse the whole content into an tree (precisely an AST) and proceed at evaluating it. A compiled language will have to first parse the code into an AST, then proceed in transforming each node of the tree into a set of smaller instructions, then encoded as bytes. The resulting bytes are called bytecodes and they can be either native or executed on a virtual machine (which translates them to native bytecode). Fewer and fewer languages falls in the first case; PHP3-, older JavaScript, Perl 5 and Ruby 1.8 (MRI) in the second one; PHP4+, Perl 6, Python, Ruby 1.9 (YARV), modern JavaScript, Java, C# in the last one with a VM; C, C++, D, Go and Objective-C in the last one as native code.

        A script language has limited tools, a non-script language has a sizable standard library

Take for example (ba)sh: it is really a glue language that controls flow and calls external programs. Those are called shells. As convenience and for performance, shells often include in their own code implementations of previously or current external programs (e.g _test_ , aliased to _[_ ) or allow to control or use features specific to the shell. Those are called builtins.

Now you can compare the size of the C/C++ sdtlib and e.g Python, Ruby or Java. The latter ones are an order of magnitude bigger than standard C and C++.

        A script language has no external library facilities, a non-script language has third party library facilities

The only thing resembling library features of bash are sourcing an external file and executing external program (which is native enough to extend the language itself since command-calling is first-class in shell languages). On the contrary python has extremely advanced library facilities called modules and packages, which create namespaces that you can selectively import. Ruby is simpler and arguably less advanced as it relies on a 'require' and a 'load' function that will trigger loading and interpretation of a file, while namespacing lies in the hand of the developer who manually nests classes and modules. This is similar to the 'source' feature of bash, but also of the #include preprocessor directive of C, which is not even really part of the compiler and literally stitches the content of a file into another. Usually this #import is done to include so-called header files that describe prototypes of function lying in a library. What's interesting there is that the library feature is actually not even part of the language, but of the infrastructure surrounding the compiler, and precisely the linker. Indeed compiling to native code results in object files which are totally independent of the actual language and totally dependent of ABI calling conventions (which is really unrelated to the language). This way you can link objects having been built from fortran or C, or C++, or whatever. So it turns out C #include is actually closer to bash 'source' in that regard, with the onus of library management being not on the compiler but on the linker.

        A script language has no types, a non-script language has types

Bash actually has types, precisely strings and arrays and it's up to each program to parse the strings into somethign meaningful. Now what you may be distinguishing there is weak typing vs strong typing. Let's take PHP, which when given "3"+2 spits 5 (or "5" I can't recall). Try that in C and you will get an error/warning/core dump (ironically '3'+2 in C would give both a warning and '5' because of ASCII and char really being bytes). Yet try that in python and ruby and you will get an error (an exception precisely). PHP is weak-typed and Python, C and Ruby are strong-typed.

Now maybe that's because we're not declaring types and not having function/method signatures that makes it a scripting language. Really what's at play here is static vs dynamic typing. Python and Ruby are dynamically typed, while C is statically typed. But Objective-C is dynamically typed too.

        A script language is used to write scripts

Maybe you encountered #!/bin/sh in scripts, and also #!/usr/bin/python and concluded 'Ha! They're scripting languages!'. Amusingly enough, it's quite easy to build a thin wrapper to gcc that will make it possible to start a file with #!/usr/bin/c and subsequently write code in C. Does that make C a scripting language? Maybe, but that makes it equally easy to make _any_ language a scripting language.

        A script language is not written in itself, a non-script language is written in itself.

This is called self-hosting. You could argue that C is written in C, while Bash, Python and Ruby are written in C. Well too bad, as D is written in C, C# is written in C and C++, Java is written in C, and even g++, the C++ compiler is written in C. (for each one of course, part of their standard library is written in their own language). At the same time, Python has PyPy which is able to produce native code straight from Python code, and various other languages are self-hosted. Now you could argue that we're using C because of performance, but that's not even true, since PyPy regularly outperforms CPython. In fact we're only often using C because there has been a tremendous amount of work thrown into C compilers (notably regarding conversion of code to each native platform) so it's merely by convenience that we reuse them.

        A script language has no memory management, a non-script language is low-level

So, C and C++ have memory management, while Python does not. So much for Java and C#, which would become scripting language by that criteria. Also, as for low-level Python can use things like mmap and has ctypes which allows you to tap into system devices (via e.g /dev) and native functions (which, as mentioned above may or may not have been written in C, since at that point they're just native code respecting a convention allowing them to be called. If anything such code could have been generated by PyPy) like malloc and free, so you can go low-level in Python if you wish.

So I think we have made quite a round-up of things, and hopefully enouch to demonstrate that well, while Python and Ruby are effectively able to be used (and quite efficiently so) to write scripts, they are clearly just not only "scripting languages", but full-blown, extremely advanced and potent programming languages.

<comment><USER5> Great roundup. Its nice to see all this points. One big difference between scripting and non-scripting languages is that, in scripting languages you can modify the structure of the program at runtime, while in compiled languages you are stuck once you compile it. C++ does have metaprogramming through the use of templates and those programs look immensely complicated, but it can't introduce new data types and logic at runtime. I kinda dislike C++ from beyond templates as the code looks super ugly.

The ability to modify the program at runtime (and elegantly) is a huge advantage over compiled ones and allows you to express new category of solutions. Programs that change itself is in my opinion pretty advanced.

So it seems, Python and Ruby allows the programmer to free the mind from the low-level housekeeping and focus 100% on logical thinking and give incredible expressiveness. I would buy that. I wonder how often an above average python/ruby programmer use its metaprogramming / reflection capabitlies?

<comment><USER6> > I wonder how often an above average python/ruby programmer use its > metaprogramming / reflection capabitlies?

Daily.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Almost invariably when we see posts like these on Hacker News, the person actually had prior programming experience, but just happened to start taking it serious for the last [small number] [unit of time].

Thus is the case here. <http://news.ycombinator.com/item?id=4050952>

However, it's impressive for a first project. I hope you stick with it.

</comment><comment><USER8> This is a good example of how people should learn coding. Not doing examples but doing something that is very goal directed (for her doing a website). Exercises should help you understand how to do a final goal. This is pretty impressive for only 3 months of study also.

<comment><USER9> I've been bugging my friend that he should learn to code a website for the past few years. And for the past few years, he's been stating that "its not for me" or that "I'm not the techie type". I hear this all the time from people who don't know anything about coding.

A few months ago I showed him a demo of my website (artJutsu.com WIP) and showed him the basics behind the code. I also showed him how to create a simple site. The dev site (on my laptop) has many different concepts that I'm still hammering out. To him it looks complex, so I told him that it doesn't have to be.

I gave him the following advice for why one does create a program. "Just think of a "simple" problem that you'd like to fix. It doesn't have to be super robust, or super smart, or super technical. Just try to solve this problem through an elegant interface."

For me, artJutsu (once I get the main part completed) will solve a variety of small problems. Yes, there are things in it that is very complicated, but that comes from research. We're in an amazing time as developers where we can access a rich array of resources just with a simple Google search. The great thing is, the simplest solution usually solves the problem just as well.

I always was the type of person that hated reading those coding books and doing lesson after lesson with very little getting done. For the most part, you don't really know WHY you need to know techniques and theory. Its just way too confusing. I find getting down and dirty building something teaches you a lot more. Theory is great, but what good is it if you don't know that you need to know it? I believe that getting your feet wet will enhance the traditional learning experience.

Anyway, after a month of coding, my friend has created a pretty good "list" site for his wife. He's at the point where its getting tough to maintain his code, but he loves it. The joy of creating a useful tool to solve a problem is what we thrive on.

</comment></comment><comment><USER10> Actually she might learned to code in 3 months, but shes coding much longer I guess. e.g She wrote in her XING profile that she started studying informatics in 10/2010. Despite that, consider marrying her :)

<comment><USER11> Yup, I started studying bioinformatics in 2010. I chose bioinformatics, because I was interested in biochemistry and biology and wanted to learn how to code. To my disappointment uni did not teach me much practical things and programming courses (Haskell) were really boring. I would find myself sitting over a really dull homework in the middle of the night thinking "It's so stupid and boring. I really don't want to do this. I want to do more fun stuff... like coding a game or so.". Well trying to code a game in Haskell turned out to not be the best idea. Especially if you don't know how to code yet... and then I just stopped going to classes. 3-4 months ago I wanted to make a band, but had a hard time finding musicians. So I decided to learn Rails and HTML etc to build a web application which could help me (and others) find some musicians. In the end I never really officially launched it but learned a lot and found that I enjoy coding. :)

<comment><USER12> Don't blame it on Haskell. Everyone has to learn the fundamentals. Haskell is suited for making games, it's just not the mainstream language for that. See <http://www.haskell.org/haskellwiki/Frag> . Yes, 3D games have lots of tricky state handling and OpenGL doesn't map well to Haskell. But doing a point-and- click adventure in Haskell is not harder than doing it in C++.

I really doubt your classes were stupid and boring. Maybe you were the one who was stupid and boring :P

<comment><USER11> I have to say I like Haskell and I don't think it's boring at all. I just wanted to learn more than they were teaching us in uni. :) Haha, I even played around with HOpenGL...

</comment></comment></comment></comment><comment><USER13> I think this might be a one-off case, as she mentions RMS as a reason for not being on Facebook or Twitter.

</comment><comment><USER14> Turn On -> Nyan Cat. LMAO!

Edit: I should have included the URL for context: <http://nukaco.la/maniac.html>

<comment><USER15> I personally like how nyan cat becomes vampire cat when you turn off the light...

<comment><USER16> I can't find the key to the safe

edit: I'm having too much fun.

<comment><USER11> Talk to one of the pictures. :)

</comment></comment></comment></comment><comment><USER17> Title is misleading because your GF was utterly awesome before that.

</comment><comment><USER18> Wow she is awesome. This music hack day project is intensely beautiful <http://nukaco.la/projects.html> It is a musical umbrella! That synths sound as it is hit by water!

</comment><comment><USER19> I'll just come out and say it - I'm jealous of you.

</comment><comment><USER20> I think it's great work - but why does the developer need to be introduced as 'my GF'.

She's clearly very technically capable - why not introduce the site on it's own merits?

</comment><comment><USER21> Seriously? 3 months to know so many things including what Richard Stallman says ... admire.

</comment><comment><USER22> I'm most impressed with the 8-bit sound umbrella.

<comment><USER23> I saw that umbrella in Amsterdam @ MHD. Sadly, they just showed how it worked but not how it was made.

</comment></comment><comment><USER24> I'm insanely jealous of your gf. I've been doing programming as a hobby for nearly 10 years and haven't knocked out anything as cool at that. Nice skills section too. I might make that as an extra attachment page to my CV. Ask her, Python or Ruby and why for me.

</comment><comment><USER25> 3 months of programming and already had a glimpse of Haskell, I'm really impressed. I'm struggling to find time to learn it a little, and during the last 10 years since I first heard about it I hadn't had enought time (the only haskell code I "do" is xmonad.hs :)

</comment><comment> angry-hacker Well she is clearly tech savvy lady: <http://nukaco.la/projects.html> So probably it was not very hard for her =)

</comment><comment><USER26> Care to share how she learned so quickly?

</comment><comment><USER27> Daniel Tammet learned to speak Icelandic in a single week. Unfortunately, like your girlfriend, he didn't share much of a guideline for others working towards similar goals.

<http://www.youtube.com/watch?v=qMz3gjl9x-M>

</comment><comment><USER28> She has a lot of skills for 3 months.

</comment><comment><AUTHOR> Thank you all for being so nice! :')

</comment><comment><USER29> This is really impressive for three months, and the little charts on her skills page are funny!

</comment><comment><USER30> Aliz, this is awesome and your bf is awesome for supporting you in learning to code. Also - speaking ANY Icelandic is kind of a big deal! Hope I'll meet you sometime

<comment><USER31> > speaking Icelandic is a big deal

Only if you are not Icelandic. :)

</comment></comment><comment><USER32> That's really incredible. I love the Skills page, very creative.

The only thing that bothers me is that I can't select text... A little unnerving, actually.

</comment><comment><USER33> It's amazing how much folks can learn in such a short amount of time. I wonder if she was learning full-time or on the side.

</comment><comment><USER34> Really, really?

Congrats to her

I remember doing "something similar" in MSX Basic about 20 years ago =)

</comment><comment><USER35> I liked some of her other projects more, like the little Maniac Mansion thing, or her Rails app haveband.

</comment><comment><USER36> Nice! The skills section is really nice! And please take care of your gf, she's awesome! :')

</comment><comment><USER37> In 3 months I've only got how to create data types, functions, and conditionals. Haha.

</comment><comment><USER38> Can you ask her to outline the process she used to learn to code this tool?

<comment><AUTHOR> Basically, for ruby and javascript we had (very informal) coaching sessions together roughly once a week (around 2 hours each). I would walk her through core syntax problems (how to use functions, objects, arrays) and give her some hints of what APIs to look for. And then she went and researched and tried a lot of stuff (sometimes more than 8 hours a day) and would ask me when she got totally stuck. I would then try to not give direct answers but hint at where to look for or how to develop some sort of divide-and-conquer strategies. And then I was kinda amazed at the results ;)

<comment><USER39> I wish I had a buddy like you!

</comment></comment></comment><comment><USER40> She learned all by herself?

</comment><comment><USER41> You have an awesome and intelligent girlfriend. Congratulations.

</comment><comment><USER42> Can you tell us how she/you went about learning to code?

</comment><comment><USER43> I think your gf is your hand. However, very nice work.

</comment><comment><USER44> Great execution, that's what it's really all about!

</comment><comment><USER45> Hard to believe, i'm really impressed.

</comment><comment><USER46> Great work. Also, nice site name. :)

</comment><comment><USER47> hach lukas. sweet.

</comment><comment><USER48> Awesome work!

</comment><comment><USER49> keep her!</comment>


Inside the Federal Bureau of Way Too Many Guns - <AUTHOR> https://www.gq.com/story/inside-federal-bureau-of-way-too-many-guns/amp <comment><USER2> The journalist is deluding herself : here in Europe we have guns registration (and cars too for that matter) and it doesn't stop mass killings.

<comment><USER3> This was not only about mass shootings, but about crimes with single victims. By the time it reaches them, the crime has already been committed, so no it won't prevent anything. But a more efficient system could produce more leads.</comment></comment>


A Blockchain Building in Bushwick - <AUTHOR> https://www.nytimes.com/2018/05/25/realestate/a-blockchain-building-in-bushwick.html <comment><AUTHOR> This is what I've been working on lately in the blockchain space. Would love to get thoughts and opinions from the HN crowd.</comment>