I built a amp+cab+effects simulator for guitar on a Raspberry Pi 4B - <AUTHOR> https://thingamagig.com/story.html <comment><USER2> I want to say this looks like a great product. I was very surprised at how "complete" it seems. I manage one of the most iconic guitar stores in the world and have been selling gear and generally been a gear head for 15+ years. Needless to say I was extremely skeptical when I read the title of this article.

If you can market this and produce it at scale I guarantee you'll sell millions of these things to the middle of the road guitar center learning to play guy. That demographic is fucking huge and probably represents 80% of the guitar based economy.

I would market it that way. I would market this as an easy fuss free interface for conjuring classic tones to learn and play with your favorite artists. If possible a Rocksmith style learn along feature would be amazing.

Really impressed with the simple interface, the apparent ease with which you dial up reasonably good jcm 800 and acoustic type sounds, and how the Alexa script seems to automatically dial in a tone to match the backing track.

Really well done. If you get it to market hit me up I guarantee I can sell these things.

<comment><AUTHOR> (I asked him to email me, he did, now I've removed the address for spam reasons.)

<comment><USER2> Nice to meet you. I sent you an email. Let me know how I can help.

<comment><USER3> This just makes me happy. I always love seeing people help others. :-)

</comment></comment></comment></comment><comment><USER4> Great article, I wish I'd seen the mid-project posting to HN. I was skeptical about the Alexa integration but that seems to work well.

> ludicrously difficult to set up. Laptop + low-latency Linux + Ardour + > QLC+...

This resonates [sorry] with me. Linux sound today seems painfully reminiscent of Linux X-Windows 20 years ago. There's a lot of painful voodoo, competing control systems and legions of mostly out-dated forum threads of dead-ends, anecdotal advice, misinformation. I'm hoping that the next Ubuntu Studio will Just Work on the laptop that I have put aside for it and that I won't have to waste more time in the Pulse/Alsa/Jack soup.

I was aware of Guitarix but have not yet played with it. My youngest is learning electric and we've got to the point where we can play together, with me pounding out the bass line on an old classical we had lying around(!). That is a blast but I wasn't really intending to become a bassist. If I were to pick up an electric guitar to fool around on, can Guitarix drop me down an octave and make me a pretend bass player? (I had a quick poke around the Guitarix wiki, couldn't see anything). There must be DAW processing plugins to do this, but I'd really like to be live. Are there other solutions? (apart from buying more instruments I mean...).

Oh, and I love this:

> So I bought a 3D printer and became a CAD guy, I guess

"I had a hard problem to solve... so I... casually nuked it" :)

<comment><USER5> >There's a lot of painful voodoo, competing control systems and legions of mostly out-dated forum threads of dead-ends, anecdotal advice, misinformation. I'm hoping that the next Ubuntu Studio will Just Work on the laptop that I have put aside for it and that I won't have to waste more time in the Pulse/Alsa/Jack soup.

I've had a lot of success using kxstudio

[https://kx.studio/](https://kx.studio/)

Along with cadence to manage Jack and alsa and Catia/Claudia for managing studios and ladish sessions.

It can be installed on top of an existing Ubuntu based system without much trouble and after setting it up it works flawlessly for me. I've been using this setup for a few years now.

>legions of mostly out-dated forum threads of dead-ends, anecdotal advice, misinformation

I completely agree with this. Any guide that still recommends qjackctl or manually fucking around with alsa and midi bridges should be completely disregarded. There's zero reason to need to do this any more and there hasn't been for at least half a decade now.

It's really too bad, honestly the flexibility offered by Jack and the huge range of audio software on linux allows for workflows I'd never been able to do on windows. It's pretty much the entire modular linux philosophy applied to making music and it's closest i've come to the same kind of workflow you get with hardware equipment.

Just fiddling around with different plugin routings can give you some pretty cool sounds that can be patched into any Jack aware software you have.

<comment><USER6> Does anyone have a good guide to understanding the Linux audio ecosystem?

I know Linux fairly well from a server standpoint, but I tried to do some audio stuff recently and couldn't make head nor tail of it.

<comment><USER7> FYI: Yamaha's advanced synths (Motif and Montage) are based on real-time linux.

I bought an MX49 and they include the GPL and a download link.

But if you're expecting a random linux flavor to just work with audio, I don't know if that's reasonable, since nobody packaged or tested it with that in mind.

</comment></comment></comment></comment><comment><USER8> I have played with guitarix in the past, and having looked at some of its tube amp simulation code, I have great respect for the amount and quality of work that has gone into it. That said, in my opinion, its modeling capabilities are not on par with the main software sims out there.

My portable solution is an Intel Compute Stick coupled with a Vox AmPlug I/O for 24-bit/48KHz input, powered by a 10Ah powerbank. I use Bias FX 2, but one could use Amplitube or Helix Native just as easily. I attach these to my strap and it is completely out of the way when I'm playing. The whole setup on the hardware side cost me <$130, and in return I get the best modeling software can provide. It is however a pain to control.

Probably the "cleanest" portable solution would be the Boss Waza Air headphones. There are no wires at all!, and all modeling is done on the headphones themselves. At $400, they are on the expensive side though.

If one wanted a small amp, it is probably hard to beat Positive Grid's Spark, which can now be had for ~$200 and is also voice-controlled (a gimmick if you ask me). An even cheaper solution would one of Laney's Mini or MiniStack amps, which hook up to an Android or an iPhone that runs ToneBridge. That's a lot of effects and modeling for ~$60.

<comment><USER9> Thanks for sharing your setup, that sounds awesome! I'm curious, how is the latency? Also, how are you getting sound out of the compute stick?

<comment><USER8> At 48KHz the setup can sustain 128-entries buffers, or <3ms. Sound travels at about 1ft per sec, so this is the equivalent of hearing an amp that is <3 feet afar. I cannot perceive the latency. The AmPlug I/O has a 3.5mm headphones port.

<comment><USER9> That sounds very cool! Which compute stick do you have, the Intel Atom Z8350? Also, have you experimented with ways to change effects on the fly?

<comment><USER8> I used an STK2M364CC. CPU usage never seems to go above 50%. Control is still a pain, but one way to change effects on the fly is to use rtpMIDI and TouchDAW on a phone.

<comment><USER9> Right on, thanks for sharing your knowledge on this!

</comment></comment></comment></comment></comment></comment><comment><USER10> This is really interesting — thank you for building it. It seems some of the comments here are living up to HN's reputation. May that prove to be a good omen, as it has been in the past.

The main thing I'm wondering is whether there's a way to record with this (so here's my wishlist). Often I'll be practicing along to another song, or just noodling around, and I'll really wish I had recorded what I just played. Would be amazing if I could say, "Alexa, record that", or "Alexa, record the last 90 seconds".

Similarly: "Alexa, record this." (and then after X minutes if I forget to stop the recording / no input is detected Alexa asks if I still want to be recording).

"Alexa play a metronome at 80 bpm and record this". "Alexa, play the last track and record a new track" (gotta make this very clear so as not to confuse overwriting the original vs recording additional layers). Sync the recording folder w/ Dropbox so it's ready for my DAW. Save two streams: one clean of the raw guitar (so I can tweak to my heart's delight later), one with the applied effects.

I'm curious to dig into the tones more; a lot of apps are goodish but don't quite get it right. S-Gear is the best plugin I've found. Also, I'm a huge fan of the amPlug 2 line from Vox. $40 for really impressive tones via a battery powered gadget as big as a few matchboxes. Sounds great hooked up to speakers and good enough to use in recording. But they don't give you a lot of options in terms of effects.

Great project! Hope the above is useful — I'll be following along!

</comment><comment><USER11> For comparison, here's what the current very best in this field looks like: [https://www.fractalaudio.com/iii/](https://www.fractalaudio.com/iii/)

$2K (and an absolute steal at this price), high end DSPs, high end multichannel ADCs/DACs. Thankfully, lots of knobs and buttons, and no Alexa of any kind. Sounds amazing. I have one.

</comment><comment><USER12> Cool project, well done!

Reminded me also of the Jesusonic [0] FX processor, by Justin Frankel [1] of Winamp, SHOUTcast, REAPER, ...

[0] [https://www.cockos.com/jsfx/](https://www.cockos.com/jsfx/)

[1] [https://1014.org/](https://1014.org/)

</comment><comment><USER13> Check out Bela also for low latency audio.

[https://bela.io/](https://bela.io/)

</comment><comment><USER14> I wonder if it would be possible to build a six-item menu selector that worked by picking up when you tap a string. This would get in the way of alternating between selecting an amp and trying that amp, but maybe there's some way to detect when a string has been tapped from behind the bridge?

<comment><AUTHOR> I thought about this too. Multiple choice A, B, C, etc... just play the chord. :)

But that's pretty challenging from an engineering standpoint and Alexa skills can't be controlled externally yet. I briefly added a footswitch and could get Thingamagig to cycle through the tones of a particular song with it, but the Alexa screen won't update on that "outside" information.

Amazon has said they'll consider it but my gut says that's way down the list of things they're trying to do.

</comment></comment><comment><USER15> Guitarists like to control their things with their feet so their hands and mouth stay free. There is a wide array of midi controllers available in pedal form. Tap with your foot, double tap, hold, scroll with multiple taps etc. Many artists use them to do the control plane of their effects routing, so they are rugged and battle tested. Here are some: [https://customboards.fi/collections/midi- switching](https://customboards.fi/collections/midi-switching)

</comment><comment><USER16> Thanks for sharing. This is great. I appreciate the additional insight in the comments on the software behind it for the guitar effects & tones. Kudos on the experimentation and iterations to meet your needs. Wish I would have seen this for a potential DIY project before I went in on purchasing the SPARK amp for at home practices and FXs.

<comment><AUTHOR> I became aware of Spark a couple of weeks ago. On the one hand, I was irritated that someone else was on the same "voice-controlled guitar playing" thread as me, but then (a) it's validating and (b) they're not really going the same place I am.

Thingamagig understands the underlying composition which means it can automate tones, loopers, lights, cameras, etc. That need was the genesis of this project and that's where its going. Everybody else (including Spark, Fender Play) seems to think the playalong is the end goal, which is why they short circuit the hard work of building the composition library by integrating Spotify or whatever.

Maybe they're right. Maybe I'm right. Maybe we're both right. We'll see, I guess.

</comment></comment><comment><USER17> I've seen the Spark ads popping up in social media for the last couple of weeks, and while it's not really my thing in terms of guitar playing (I prefer restricting my pedalboard), I can appreciate the effort going into a product like this, especially as a software engineer.

How much work have you put into this so far?

<comment><AUTHOR> July 21st was when I had the "ok I have to pursue this for real" moment and it's been 24/7 coding and tinkering since then. I really need to go for a walk or something.

<comment><USER17> That's a fair amount of tinkering time. Go for a walk, and enjoy the milestone. I'll check this out sometime soon.

</comment></comment></comment><comment><USER18> People interested in trying out this kind of thing should also check out vcvrack. Its a free fully featured modular synthesizer system, also very easy to set up. It should be possible to run it on a pi, though i havent tried that personally. It also has excelent midi integration, so one could try to reproduce some of the hands free control with a program that does voice recognition and supports a virtual midi interface.

</comment><comment><USER19> For those who like this: it also reminds me of a small company that makes Hooks amps.

The Wizard also include those simulators but the nice thing is it uses analog knobs. But you can program presets and the knobs will move back to the preset settings.

[http://www.hookamps.com/phone/wizard.html](http://www.hookamps.com/phone/wizard.html)

</comment><comment><USER20> Awesome project! I was really hoping to read about the amp/cab simulator and effects running on the Rasperry Pi as the title mentions, but the software side is entirely missing from the story.

Note that from a cursory look at the links, there hasn't been updates since 2018, and the KS project never launched.

<comment><USER21> Looks like he used Ardour [1] and Guitarix [2].

I am curious about the latency of this setup, having used jack and Ardour in the past for recording. I would be very surprised if this rig yields a latency below a couple dozen milliseconds, which, at least for me, is absolutely unbearable when playing guitar.

Even with a dedicated DSP, effects processors in the early 2000's (like the otherwise excellent Vox TonelabSE) greatly struggled with latency issues.

[1] [https://ardour.org/](https://ardour.org/)

[2] [https://guitarix.org/](https://guitarix.org/)

<comment><USER22> Thanks for this. DSPs that accurately simulate hardware are not as trivial as one might initially think. I've done some thinking on this front, and the DSP based approaches that simulate hardware are likely making many shortcuts. Take a zener limiter circuit for example. You could just rail samples with an amplitude comparison, but that's a bad sound. So what I think most limiter DSPs do is apply a shaping filter to that. It's an approximation, but not really capturing the characterization of the circuit. The simplest way to get an accurate response is with SPICE simulation. I'd love to see a DSP that specialized in realtime SPICE simulation. Failing that, you have to sit down and do the math for each circuit yourself to establish the relationships between component values and signals, then code that into your DSP. It's not an unreasonably large amount of work, but judging from the people I think are selling audio software, I would be shocked if anyone is actually doing that.

</comment></comment></comment><comment><USER9> Thanks for building this! Also, great performance of Still Remains. I'm looking forward to checking out the Kickstarter. Any chance you could add support for Google Assistant?

</comment><comment><USER23> This looks impressive, but I'm most curious about the Alexa integration. How do you do that without having to say "ask <app name> to <x>" every time?

<comment><USER20> In the video at the end of the page that is exactly how it works: 'Alexa, ask Nexus to open Back in Black by AC/DC'.

<comment><AUTHOR> He's making a subtle point here. There's

"do x"

vs

"Alexa, do x"

vs

"Alexa, ask AppName to do x"

The first is when the skill does a thing and then immediately starts listening again. The blue bar is already there and you don't need to say "Alexa".

The second is when the skill is still open but not currently listening. Takes a bit of hackery to keep the skill from constantly closing, namely, long- running APL commands.

The third is when the skill is closed and you're trying to get it to do something. I call this "deep launching" but it almost never works. Amazon has built an amazing system here, but the Alexa system needs work on recognizing skill names for deep launching.</comment></comment></comment>


Some Funny Things Happened on the Way to the Moon (2002) - <AUTHOR> http://fermatslibrary.com/s/some-funny-things-happened-on-the-way-to-the-moon <comment><USER2> For anyone else looking for a flat PDF [http://www.eng.buffalo.edu/~psingla/Teaching/CelestialMechan...](http://www.eng.buffalo.edu/~psingla/Teaching/CelestialMechanics/Battin.pdf)

<comment><USER3> What in the heck is the reader on that page called? Couldn't zoom, fonts looked terrible, very slow...

<comment><USER4> [https://github.com/coolwanglu/pdf2htmlEX](https://github.com/coolwanglu/pdf2htmlEX)

</comment></comment></comment><comment><USER5> Something that just struck me. There is absolutely no mention of Margaret Hamilton in this article. Didn't she lead the team that wrote the Apollo software?

Her name is the very first one in the original documentation: [https://github.com/chrislgarry/Apollo-11](https://github.com/chrislgarry/Apollo-11)

<comment><USER6> Sort of. Only right at the end: [https://news.ycombinator.com/item?id=12993945](https://news.ycombinator.com/item?id=12993945)

<comment><USER5> Well, maybe she didn't lead the team during the whole process, but she certainly wrote code for it. You'd think she'd be mentioned, especially in the part about the AGC alarms that went off during Apollo 11's landing sequence.

<comment><USER7> If I recall correctly, over the course of the program some 300-400 people wrote code for the AGC, so it's not surprising that not everybody gets mentioned. Don Eyles (who saved Apollo 14) has an MIT org chart from the time of Apollo 11 on his website: [http://www.doneyles.com/LM/ORG/index.html](http://www.doneyles.com/LM/ORG/index.html) That only includes people at MIT that worked on it -- there were also many at Raytheon, AC Electronics, and various other contractors (like Adams Associates) that we don't know the names of.

The code that kept Apollo 11 going was Hal Laning's, and he's mentioned a lot in the article.

<comment><USER8> > who saved Apollo 14

For reference, I presume you're referring to how the LM computer was monkey- patched to ignore an abort signal from a faulty switch? [1]

[1] [https://en.wikipedia.org/wiki/Apollo_14#Lunar_descent](https://en.wikipedia.org/wiki/Apollo_14#Lunar_descent)

<comment><USER7> Yep, that's right -- Don was the guy who came up with that procedure.

</comment></comment></comment></comment></comment></comment><comment> pokemon-trainer >I still remember the  rst time I told my wife that I was in chargeof "Apollo Software." She exh orted me: " Please don't tell any ofour friends!"I suppose real men do "Hardware" just as real men don't eatquiche.It was an attitude that prevailed a long time in many organiza-tions. Salaries fo r computer programmers did not keep up with thesalaries of engineers.Engineers did engineering.The programming(or coding)was more menial work and should be left to others.

It's funny how much this attitude has changed so much over the years. Now engineering is seen as menial work and the programmers are the real men and rockstars.

<comment><USER9> It may have changed in the Silicon Valley/tech startup bubble but definitely not in the rest of the world. Engineers still receive far more prestige than IT workers (which is what programmers are largely seen as, technicians) and in most countries, it's as prestigious a career path as being a doctor, lawyer, or professor.

The vast majority of companies that work with physical things, like silicon designers/fabricators, auto makers, manufacturers of capital equipment like machining tools and lab equipment, energy companies, agricultural machine suppliers, hardware conglomerates like GE and Samsung, and on and on, still view (for the most part) software as the red headed stepchild, a necessary evil because their hardware has gotten so complex.

<comment><USER10> It may just be my own hang-ups, but in the company of unequivocal members of the "professional" class I definitely get the sense that as a software developer I sit somewhere above blue-collar, but _barely_ , and that largely due to salary rather than the work I do.

I'd imagine it's a bit different for the (giving a very generous estimate) 1% of developers who do work that is all of: challenging, difficult, and important, on a regular basis, but that's not me, or the overwhelming majority of people making pretty damn good money writing software.

<comment><USER11> For the artsy-intelligentsia folks all the people who do technical stuff (no matter if HW,SW, civil engineering) are just "engineers", i.e. people who have never heard about Stendhal or Vermeer. On top of that my ex-mother-in-law, an accomplished theater actress, used to call us non-actors as "civilians", so there's also that.

I for myself don't care one bit how my work is seen by others(I'm a programmer) as long as it's reasonably well paid (meaning I can pay rent, food + some other stuff) and it's not that physically demanding.

</comment></comment></comment></comment><comment><USER12> A treasure trove of great anecdotes.

Just one example:

 _A few weeks before the launch, the Navigator Command Module Pilot, Jim Lovell, spent a few hours practicing on the earth-horizon sextant simulator at MIT. He consistently identified the "horizon" about 20 miles above the real horizon. Great! Jim Lovell could be calibrated and his bias number loaded in the flight computer._

In the same vein as this article, I am always deeply moved watching Dr. William Widnall's lecture on Apollo's guidance, navigation, and control:

[https://www.youtube.com/watch?v=4Vf6Y98ZjwQ](https://www.youtube.com/watch?v=4Vf6Y98ZjwQ)

</comment><comment><USER13> > I have at my fingertips several orders of magnitude more computing power > than the Apollo Guidance Computer which was carried onboard the Apollo > spacecraft. And this marvel of modern technology sits on my desk at home...

Yeah, but one has to admit, the Apollo Guidance Computer had way more gravitas any other computer since or before!

</comment><comment><USER14> Today I learned APOLLO := America's Program for Orbital and Lunar Landing Operations. So the Greek god thing was a nice intersect?

<comment><USER15> It has always bothered me that they named the moon missions after the god of the sun.

<comment><USER16> It has always bothered me that we insist on calling our space farers "astronauts" when they don't go anywhere near the Sun or stars, vs the entirely accurate "cosmonaut".

<comment><USER17> Given the number and scope of misnomers in astronomy, astronaut seems downright sensical. Those dark patches on the moon? They're bone dry, but we call them seas. Those beautiful planetary nebulae? They're the tombs of dead stars; any planets there are coincidental. Those small, mountain sized rocks floating in space? We say call them starlike.

If it helps, I think of an astronaut as someone who sails _among_ the stars, rather than _to_ the stars. In that sense, it's just as accurate as cosmonaut. But, given that every living thing on Earth can rightfully be called an astronaut or cosmonaut, neither term is very precise. It is more precise to identify a person as human than to identify him as a cosmonaut, since cosmonaut can also refer to monkeys, rabbits, dogs, insects... :)

<comment><USER16> Well it's the political origin of the term that is bothersome. The Russians came up with the perfectly sensible and accurate term 'cosmonaut' and the USA refused to use it.

<comment><USER17> I'm really curious if it's usage was political. I did find this forum post[0], but it didn't really shed any light on the question. It does, however, suggest that the term was chosen in ignorance of it already existing in fiction for (at least) decades by the time the space race had started. So, if the forum post is to be believed (I couldn't find the cited first source), a defense suggesting it was already in the lexicon couldn't be supported since the selectors of the term themselves admit their ignorance of the term previously being used.

Cosmonaut, I believe, more literally translates to "spacenaut", which sounds terrible, because of the Russian word for space, which, like our cosmos, is derived from the word _kosmos_. The English term cosmonaut is not through the greek _kosmos_ and _nautis_ , but just an Anglicization of the Russian word.

[0] - [http://www.collectspace.com/ubb/Forum34/HTML/000108.html](http://www.collectspace.com/ubb/Forum34/HTML/000108.html)

</comment></comment></comment></comment></comment></comment><comment><USER18> This is great, the article starts out discussing TeX and then proceeds to screw up every instance of `fi` and `fl` by replacing it with terrible ligatures.

<comment><USER19> This is not the original format. This PDF is formatted much better. [http://www.eng.buffalo.edu/~psingla/Teaching/CelestialMechan...](http://www.eng.buffalo.edu/~psingla/Teaching/CelestialMechanics/Battin.pdf)

</comment></comment><comment><USER5> Great article, but it should probably be marked 2002.

I love reading old stories about how the final frontier was (and is) being won.

<comment><USER20> It's generally understood that Fermat's Library deals with very old papers.</comment></comment>


Building Communities with Software - <AUTHOR> http://www.joelonsoftware.com/articles/BuildingCommunitieswithSo.html

<comment><AUTHOR> This fine article is from 2003 (oldie but goodie).

 _So posting rules is just a way to insult the majority of the law-abiding citizens and it doesn't deter the morons who think their own poo smells delicious and nothing they post could possibly be against the rules._

Here's a link to posted forum guidelines dated 2006:

<http://www.ericsink.com/entries/BOS_Guidelines.html>

No registration necessary in '03:

 _But requiring registration does NOT improve the quality of the conversation or the average quality of the participants._

Sifting through archive.org, even in late '07, users didn't have to register but were being gently nudged into creating accounts as anonymous posts would most likely be deleted.

In 2009, you'll now find that you can no longer post/reply unless you register:

 _This community works best when people use their real names. Please register for a free account._

What changed?

I'd really love to hear an updated take on this topic from Joel himself.

Any differences in creating or nurturing an online community now compared to 6 years ago?

Any new challenges?

<comment><USER2> Yes, an update would be great if you're around Joel?

Aside from Joel and Clay Shirky (<http://shirky.com/writings/group_enemy.html>) does anyone have any other must read links on this type of thing?

<comment><USER3> Philip Greenspun: <http://philip.greenspun.com/panda/community>

</comment></comment></comment><comment><USER4> "Creating community, in any case, is a noble goal, because it's sorely missing for so many of us. Let's keep plugging away at it."

Hear. Hear.

The principle of no meanness that pg mentions so often is one great way to start. The software defaults suggested in the submitted article have testable effects on user behavior: I'm curious what tests of software defaults other HN readers have tried in forums that you administer. Do you enjoy reading a forum better, for instance, when you follow Joel's suggestion of making the reply button out of view for anyone who doesn't read down to the bottom of a thread?

</comment><comment><USER5> Regarding the third place mentioned in this post: a piece with a similar concept came across my reader the other day.

It was based on a critique of modern American religion (albeit from a religious perspective) and talked about the need for what the author calls "triangulation" in social settings.

[http://gatheringinlight.com/2009/03/02/the-ironic-gesture- of...](http://gatheringinlight.com/2009/03/02/the-ironic-gesture-of-the- church/)

Regardless of the religious content in the article, I thought it interesting to note the similarity of concepts from an anthropological perspective.

One could speculate that the virtualization of many of our relationships has the potential to fill similar needs that the religious seek to fill in worship.</comment>


The Power of Facebook: Kates Party - <AUTHOR>

It started as a harmless event for kates birthday party. A get together for friends. Now over 60,000 people are attending and over 170,000 awaiting confirmation.
The event was original publicist by David Thorne (http://en.wikipedia.org/wiki/David_Thorne_%28writer%29) on his twitter stream. Who is a writer an humorist/troller. He is currently living in South Australia.
Heres the link for the "party" on facebook: http://www.facebook.com/?ref=logo#!/event.php?eid=115542871807009&ref=ss
And its even got its own wikipeadia page! http://en.wikipedia.org/wiki/Kate%27s_Birthday_Party
Its now gone viral and it doesn't look like stopping anytime soon. Every minute over 500 people confirm their attendance. Fringe groups have also popped up with silly names. Join in! <comment><USER2> David Thorne already has the official Kate's Birthday t-shirt available for sale in the 27bslash6 store (h<http://www.cafepress.com.au/27bslash6.435728028>)

</comment><comment><USER3> HAhahaha i was on facebok thismorning and i had 32 different groups to add all about Kate's party!! =) and yes the wiki page is still there

</comment><comment><USER4> "This event is no longer available because it has been cancelled." Wikipedia entry is also gone.

</comment><comment><USER5> It was on the 22nd of May in Adelaide. Anyone know the address still?

<comment><USER6> its may 1st, 8:00pm - 2:00am 20 north st

</comment></comment><comment><USER7> This made my morning.

</comment><comment><USER8> there are soo many funny groups. look at these <http://fancythought.blogspot.com/2010/04/kates-party.html>

</comment><comment><USER9> Party of the Year</comment>


3K+ Emails Of GitHub Enterprise Users Outed In Email And Then Posted On Pastebin - <AUTHOR> http://techcrunch.com/2013/03/19/3k-emails-of-github-enterprise-users-outed-in-email-and-then-posted-on-pastebin/

<comment><USER2> Key takeaway: "But, if they can't protect my fucking email address why the hell should I trust them with my clients code?"

Who else provides a product/service similar to github enterprise (internally- hosted dead-simple git repo and access system)? I've tried gitlab but it doesn't have quite the same polish.

<comment><USER3> Bitbucket?

<comment><USER2> I assume you mean <http://www.atlassian.com/software/stash/overview> Admittedly I didn't realize they offered an internal version. I'm going to try this out!

</comment></comment></comment><comment><USER4> Hard to work out what's actually going on here from that article, but it sounds like GitHub Enterprise sent out a bulk email with all 3000 recipients in the CC field of the email?

<comment><USER5> This morning I received a set of emails from Github Enterprise that looked like the following:

\</comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>--

To: [massive list of GE user emails]

Subject: NotMyInc Inc., your GitHub Enterprise license expires in 31 days

Body: We're reaching out to remind you that your GitHub Enterprise license is coming up for renewal in 31 days:

NotMyInc Inc.

License 123456

Created: April 18, 2012

Expires: April 18, 2013

Whenever you're ready, you can place your renewal order here:

<https://enterprise.github.com/purchase>

If you have any questions about this renewal process, or if there's anything else we can help with, just reply to this email and we'll be glad to help.

Thank you for choosing GitHub Enterprise!

The GitHub Team

\</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>---

Each email was addressed to a different customer whose license is (apparently) soon to be expired.

<comment><USER6> Ah, the famous "send it to everyone in the loop". Made a smiliar mistake once myself, sent it 7 times per recipient in the list, getting bigger as it looped :(

</comment></comment><comment><USER7> Eh. Email addresses aren't really that valuable anymore. Spam protection is fairly sophisticated, even in the enterprise, so it is not really that big a deal.

Still shouldn't have happened though. :)

</comment><comment><USER8> As a recipient of that email (several times), it's apparent a script went bad that had all users on the To: line, though still iterating through each company account. IMO it looks like a pretty basic coding error ... something that should have been checked before sending of course. No real account info aside from email addrs and company name was exposed.

Github did follow up with a "sorry" email. Note that it wasn't all true enterprise users. I did trial enterprise, but my company stayed with the hosted version only. Also, lots of the names on there were evidently @github test users and others I recognized as tire kickers (knowing they use only hosted GH as well).

End result - a little egg on face for Github, one very sad day for script kiddie email coder, and an indication (if complete) that Github has << 3000 GH Enterprise users.

</comment><comment><USER9> I almost caused a mailout like this as well when I just kept adding recipients in a loop without ever clearing the recipient list again. (Using SwiftMailer, that is.)

A 'fake' SMTP server that just saved the e-mails to the file system as plain textfiles helped me to find the error before I actually sent the mails out. I am not entirely sure but I think it was this project: <http://sourceforge.net/projects/fakemail/>

</comment><comment><USER10> Move fast! Break things!

</comment><comment><USER11> 3K email _addresses_ , not "emails".

Also known as a non-issue (if you want to hide that you are using a service, you need to use a dedicated randomly generated mail address).</comment>


Inside HyperLevelDB - <AUTHOR> http://hackingdistributed.com/2013/06/17/hyperleveldb

<comment><USER2> Sounds great, and I'm hoping other databases that use LevelDB can benefit from this work too.

<comment><USER3> We've kept the API is compatible with LevelDB. You just need to change the imports and link against libhyperleveldb.

<comment><USER2> Thanks for the replies! (rescrv and emin_gun_sirer)

I could have been more specific, I meant that I hope other projects _do_ build upon your work. :)

Pleased to see repeated references to Hyperdex on HN, hoping it continues to grow and mature.</comment></comment></comment>


Does Australia's access and assistance law impact 1Password? - <AUTHOR> https://blog.1password.com/does-australias-access-and-assistance-law-impact-1password/ <comment><USER2> _Would an Australian employee of 1Password be forced to lie to us and do something that we would definitely object to?_

 _We do not, at this point, know whether it will be necessary or useful to place extra monitoring on people working for 1Password who may be subject to Australian laws._

So not only does this idiotic law destroy the Australian software industry, it could prevent Australians from being hired outside Australia. Someone or some group in the Liberal/National Party (the current government here in Australia) really, really, really hates developers.

Edit. Time for some Aussie geek civil disobedience I think.

Edit 2. We have a huge number of Aussie developers here on HN. Let's use this to organise some sort of protest. Either that or we will all be off to Centrelink.

<comment><USER3> I guess I'm moving back to the UK. No wait, can't do that either. Perhaps I'll live in the US for a while, I haven't lived there yet.

Or just become the digital nomad and move off to Budapest like many of my past colleagues and friends.

I don't have the emotional depth at this point to articulate a well thought out perspective on what impact these laws will have one me, our industry or my own personal safety in Australia.

But I can say for sure, that the entire thing is completely fucked.

<comment><USER4> Budapest, in Hungary? You might wanna look up Viktor Orban before moving to there.

If you're British you can roam freely through the EU. I can recommend Germany instead: strong privacy laws, and due to recent history (WWI, WWII, Cold War) there is a relative strong pro privacy mindset. Though I recommend learning German if you intend to settle in large cities such as Berlin and international companies or IT you can easily get away with English.

<comment><USER5> > If you're British you can roam freely through the EU.

Unfortunately it doesn't seem likely that this will last much longer, unless the UK makes a u-turn on brexit.

<comment><USER4> Fair enough, gonna depend on the deal though. I really doubt UK civilians living in Germany are going to get kicked out to UK. That'd be so counterproductive for self employed people...

</comment></comment></comment></comment></comment><comment><USER6> > Would an Australian employee of 1Password be forced to lie to us and do > something that we would definitely object to?

This law is a disaster for Australia's software industry (sorry Atlassian) but as an Australian living and working outside Australia I can't see that I would be subject to it.

Australia is notoriously punitive to Aussies overseas (quite different from, say, India) so it would hardly make sense for such a stupid law to apply to us -- unless the US demanded it I suppose (this whole law is clearly a 5 eyes effort).

<comment><USER7> The fear would be that software engineers who are Australian citizens would want to travel to Australia again to visit family, and then be forced to comply. You can be living and working in the United States, but if you're an Australian citizen traveling with an Australian passport they can simply not allow you to leave unless you implement a backdoor, never mind the fines and jail time.

<comment><USER8> I'm sorry, this is FUD.

Section 317ZG of [https://www.legislation.gov.au/Details/C2018A00148](https://www.legislation.gov.au/Details/C2018A00148) specifically prevents individuals from implementing backdoors.

<comment><USER9> Where exactly does it mention individuals, elsewhere under the definition of provider, individuals are specifically included. 317ZG appears to make no mention of individuals.

</comment></comment></comment></comment><comment><USER10> This law honestly makes me reluctant to hire anyone in Australia or any AU citizens abroad. Which is a shame, because the ones I know are good developers.

I hope the law is negated by another one before it goes into effect. If not, at least it will force everyone to have good software practices such that no one person can put a backdoor into a piece of software.

<comment><USER11> As I understand it, the law is already in effect.

<comment><USER10> According to the article it doesn't go into effect until March of 2019.

<comment><USER12> Most parts of the Amendment Act have come into effect as of the day after assent (9 December 2018).

The fact that they get this wrong is probably a good indication of how much you should trust the rest of their analysis on how this may affect them.

</comment></comment></comment></comment><comment><USER13> 1Password has recently been pushing a subscription model where your passwords are stored on their cloud. It's still end-to-end encrypted across devices, but the Australian (or other) government could be silently added as a "device".

For now, they still support storing on Dropbox and iCloud, which is what I use - because I don't want to hand over too many keys to any one company regardless of how trustworthy they are. I hope they continue supporting as many options as possible.

<comment><USER14> > It's still end-to-end encrypted across devices, but the Australian (or > other) government could be silently added as a "device".

You can add any amount of "devices" as you want to my account. Hell, go ahead and just copy the db without adding *Agency as a "device".

You are still out of luck until you get the Master Key AND my One Password. [XKCD 538]([https://www.xkcd.com/538/](https://www.xkcd.com/538/)) say's it won't be too hard but still not trivial.

</comment></comment><comment><USER15> I'm glad companies like this are speaking up in this way. Politicians need to understand that this is really happening: the destruction of the Australian software industry is now underway. Even if they still think they voted for a perfectly good law, they must understand that perception is everything and the outcome of what they have done is going to have horrific consequences.

As an Australian, please help us and speak up like this.

</comment><comment><USER16> Hypothetically could they force BitBucket to inject code into repos or binary releases? I know git is signed, but how many consumers (who just download and compile) check the git log in the cloned repo actually match the the website?

<comment><USER17> It's one of the questions we're asking ourselves internally at atlassian. The only upside to the law is it was written without any idea of how modern software development works - any backdoor or explicit code injection should be caught at the pull request stage.

<comment><USER18> What happens when the entire Australian staff get the order? Usually to sneak something in, you just need a clique of about 2-5 staff to write it, approve the change and get it deployed.

If the company is large enough, most won't notice the rogue commit, and if %90 of the company gets the order, well good luck!

<comment><USER19> If I were some shady Australian spy organization, I wouldn't just demand an employee write some obvious change that rips open a backdoor, I would have my highly qualified spy programmers write a fix to an existing bug (ticket) in a repository, but inject a subtle bug (buffer overflow, unescaped input), then have a junior programmer commit it to the repository. The junior programmer might not even be able to spot the problem.

<comment><USER20> I'm pretty sure ASIO et al only pushing so hard for this precisely because they are incapable of that fairly mundane level of sophistication. But yes, they could get better at it and we wouldn't know.

</comment></comment></comment></comment></comment><comment><USER21> From what info is available on LinkedIn, it looks like 1Password does not employ anyone in Australia currently: [https://www.linkedin.com/company/1password/people/](https://www.linkedin.com/company/1password/people/)

However, Agile Bits (parent company) does have a customer service person in Australia: [https://www.linkedin.com/company/agilebits- inc/people/](https://www.linkedin.com/company/agilebits-inc/people/)

It's weird and depressing to have to do this search. Having a diverse international team should be something we celebrate.

</comment><comment><USER22> I feel like this provides almost no assurance.

> ... will not introduce back doors into our products, ....

Surely 1Password can't actually make that promise in good faith. They're the perfect target for the kind of intervention that the AU gov wants to carry out.

<comment><USER3> They could just stop doing business in Australia entirely unless they were then strong armed by the 5 eyes?

All my other favourite services in Australia are geo-blocked, let's geo-block my preferred password manager next.

</comment></comment><comment><USER23> Although concerning and moronic, I'm comforted by the fact that this bill is so fantastically infeasible that I'll never personally have to worry about it as a developer. Any organization where you could be secretly compelled to introduce a back door in such a way that it wouldn't be detected is not a company I will work for.

<comment><USER24> As I understand it, this law also applies to solo developers, so if you create a tool that many people decide to use as an Australian, you might be compelled to betray your users. Not many checks and balances there.

</comment></comment><comment><USER25> > Would an Australian employee of 1Password be forced to lie to us

Any employee could be forced to lie to you.

Section 317C of the Act outlines what sorts of products and services come under its jurisdiction. The primary test is whether you have one or more Australian users.

You do not need to be an Australian resident or company to be affected by this law. If you have Australian users, you are subject to the Act.

[https://parlinfo.aph.gov.au/parlInfo/search/display/display....](https://parlinfo.aph.gov.au/parlInfo/search/display/display.w3p;db=LEGISLATION;id=legislation%2Fbills%2Fr6195_aspassed%2F0001;query=Id%3A%22legislation%2Fbills%2Fr6195_aspassed%2F0000%22)

<comment><USER26> > Any employee could be forced to lie to you. [...] If you have Australian > users, you are subject to the Act.

Suppose I am a Brazilian working in Brazil for a Brazilian company with Australian users. What authority would this Act have to prevent me from immediately showing the demand to my boss, the company's legal counsel, my coworkers, or even publishing it on the Internet? Sure, they could forbid me from ever visiting Australia, and perhaps demand my extradition if I ever visit a few other countries, but I don't see what they could do to me in my country. In fact, I could even argue that obeying their demand would be illegal under my country's laws.

<comment><USER25> You are correct. The practical reality is that the Australian government doesn't have much authority in Brazil. It's more of an issue for people from the other 5 eyes countries.

If you are a UK citizen working in the UK, and a UK agency wants access to encrypted data, successful extradition would be more likely.

The 5 eyes governments won't rush into this. They will be tactical in establishing a legal precedent.

The game plan is to wait for a case where there would be little public sympathy for a developer, perhaps where the developer has committed other crimes too. They will seek extradition then.

Once they have done it once, it will be much easier for them to do it again.

</comment></comment></comment><comment><USER27> I am happy I recently left Australia, and that my company is incorporated in the states with European servers.

I can't imagine the govt would want any data on any users of my software (not that I have any other than what any standard mailing list would have). But this law still gives me pause before thinking about ever moving back... such a shame, as it's a great country. But out of principle, im not sure I could move back knowing that the govt could ask me to spy for them whenever they feel like it.

</comment><comment><USER9> Presumably the law also applies not just to devs but to anyone who updates software, e.g. a password protected word file or any file on a password protected system, i.e. all computers/phones, etc.

The problematic wording is here, which defines a "provider":

the person develops, supplies or updates software used, for use, or likely to be used, in connection with: (a) a listed carriage service; or (b) an electronic service that has one (a) the development by the person of any such software; or (b) the supply by the person of any such software; or (c) the updating by the person of any such software

It is far broader than just software entering into production, but can include ancillary software.

</comment><comment><USER28> What I am missing in the article: Which are the measures taken making it hard to insert backdoors into the product? I've expected a link to their security practices and development process at least. And even then how can I vet this as a customer?

</comment><comment><USER29> Why would moderators intervene on an important, popular discussion like this?

[https://twitter.com/justsee/status/1072766976194301952](https://twitter.com/justsee/status/1072766976194301952)

Calling dang?

</comment><comment><USER30> "Because iocane comes from Australia, as everyone knows, and Australia is entirely peopled with criminals, and criminals are used to having people not trust them, as you are not trusted by me…"

— The Princess Bride

</comment><comment><USER31> Wonder how long until a Fastmail employee is compelled to hack the company. I have really liked Fastmail over the years. What a sucky situation.

Any good Fastmail alternatives (not google, outside AUS)?

<comment><USER32> I reached out to Fastmail, who referred me to [https://fastmail.blog/2018/09/10/access-and-assistance- bill/](https://fastmail.blog/2018/09/10/access-and-assistance-bill/)

</comment></comment><comment><USER33> Guess I'm off to gaol soon because I'm certainly not implementing a software backdoor for the Australian Government. Nor will I approve any pull request that does so. I expect I should do well in prison, definitely got the skills & personality to succeed in there (hint: mild sarcasm).

</comment><comment><USER34> Fire your Australian employees.

This isnt about "Jobs for the sake of Jobs" this is about a secure product.

But you already knew that.

<comment><USER35> Please note, if you're an employer, you will need to consider Australian labour laws and whether firing Australian employees is allowed.

If I was fired because of a legislation change I'd sue my employer for unfair dismissal. But of course, that assumes your (Australian) subsidiary continues running. I would expect that you'd want to shut that down too, since it could be given a TCN as well -- and the fines for noncompliance are in the millions.

<comment><USER34> > If I was fired because of a legislation change I'd sue my employer for > unfair dismissal

It would be because you showed up to work late, or your performance suffered. There is plenty of discretion for normal practices to become scrutinized when convenient in an employer-employee relationship.

This always leaves the former employee to spend time and resources trying to make some impossible correlation that could only be proven if the employer said the most amateurish thing possible.

<comment><USER35> > There is plenty of discretion for normal practices to become scrutinized > when convenient in an employer-employee relationship.

As someone who has had family members go through the unfair dismissal process (where an employer tried to pull _exactly_ this tactic), employers cannot just lie about the reasons for a dismissal. Doing so can actually result in larger compensation, as a punitive measure. There needs to be sufficient evidence for the lay-off, as well as evidence that it was a long-term issue. Courts often favour employees in such cases (in one case a friend was unfairly dismissed from CSIRO, a government body, and they received the maximum possible compensation as well as assistance from CSIRO to help him update his resume for his next job).

But this is besides the point. The topic in question is whether employers should lay off their employees in protest of the new law -- it would hardly be an effective protest if you didn't state _why_ you were laying this people off. It'd also be ridiculously suspicious if the entire Australian office was fired because they "consistently showed up to work late".

Don't get me wrong, I really hope companies retaliate by killing Australia's tech industry so the government realises how much they just shot themselves in the feet (if you can't buy an iPhone from Apple in Australia I guarantee there will be riots -- that's just what it takes unfortunately). _But_ if you're an employer you should make your employees whole -- because doing otherwise _will_ result in lawsuits.

</comment></comment></comment></comment><comment><USER9> Also for those thinking of leaving, it is illegal for Australians to give up their citizenship, i.e. Australian law excludes this possibility.

</comment><comment><USER36> Would back doors only be an issue if you use their online site to store and access your logins vs just keeping it local?

</comment><comment><USER9> An Australian passport is now a liability.

</comment><comment><USER37> This should not be a discussion about Australia or any government in particular. The discussion should be about the importance of not supporting closed source.

I believe in open-source. This just proves once again that closed source cannot be trusted. I would never use 1Password or any of it's variants. It still amazes me that so many people are sending their most precious secrets to a commercial companies' cloud server.

I only use Keepass open source password manager, every day for over 9 years now, and I'm really thankful to the devs that build and maintain this nice piece of software.</comment>


Tesla CEO Elon Musk named their baby XÆA-12 Musk - <AUTHOR> https://www.today.com/parents/elon-musk-reveals-how-pronounce-name-newborn-son-x-12-t181087 <comment><USER2>
        He said, "Now you just fought one hell of a fight
        And I know you hate me, and you got the right
        To kill me now, and I wouldn't blame you if you do.
        But ya ought to thank me, before I die,
        For the gravel in ya guts and the spit in ya eye
        Cause I'm the son of a bitch that named you 'Sue'."

\-- Johnny Cash, "A Boy Named Sue"

<comment><USER3> Elon playing the long game. Have your child be bullied by other children to teach them life lessons since society has made parental disciplining taboo.

<comment><USER4> Having read Elon's biography book, Elon made a school just for his kids. It is doubtful any bullying will happen. On a side note, Elon will share the unique school curriculum with you if you decide to create your own school.</comment></comment></comment>


JavaScript for People Who Hate JavaScript - <AUTHOR> https://zachholman.com/posts/javacript-haters <comment><USER3> Background: I learned Javascript 1997 and kept up.

I have extensive experience in ES6/React for the browser and Java/Kotlin for Server-, Desktop- and Mobile-Apps.

A week ago I switched a fairly new project from the usual setup (react/babel/webpack) to Kotlin-code only. My IDE compiles the Kotlin to JS now and webpack serves it as usual.

Writing the react-bindings took me an hour, after that my productivity went up by about 10.000%. It's finally on par with my productivity on server and desktop. No type errors, fast refactoring, no "undefined" errors and all the goodies (extensions) of Kotlin.

Removing the complex eslint settings and babel-setup from webpack and package.json felt triumphant.

My JSX looks like this now and is completely typesafe:

        val LieferungenList: (props: ListProps) -> ReactElement = {
            Datagrid {
                div {
                    className = "..."
                    ...
                }
                TextField {
                    source = "date"
                }
                TextField {
                    source = "produktname"
                }
                EditButton {
                }
            }
        }

I even get compiler-errors when I nest HTML-tags the wrong way (h1 inside h1) or so.

I couldn't be happier. I'll never touch plain ES6 again.

<comment><USER4> Any good tutorial for Kotlin as a JS replacement? I am one of those people hating JS (and I did some very advanced JS web apps pushing technological possibilities) and would love to have something sane before WebAssembly can completely obliterate JS and I can switch to whatever language I like. Thanks for any hints!

<comment><USER5> > before WebAssembly can completely obliterate JS and I can switch to whatever > language I like.

This is exactly what I'm waiting for.

</comment></comment></comment><comment><USER6> TL;DR: JS with a ton of make up and tooling to not write JS is not as horrible as it used to be.

Well. That doesn't make it awesome either.

You just traded some problems for others.

Like the damn source map never working correctly, the build time being longer and longer, and the never ending list of plugins you expend every day after stumbling on yet another small-minuscule-not-that-important-I-swear detail.

The tool chain you spend more and more time on, despite all the "5-minutes" bundles provided by facebook or on githubs.

Explaining things to new comers has never been as difficult as it is now. Teaching is a pain.

Choosing your stack is a dangerous bet, and the odds and steaks are changing all the time.

If you opt-in for a flux architecture, you will soon write Java-as-in-the-90 on the frontend instead of Javascript, with so many adapters and design patterns as layers you will become angry.

If you don't (you-totally-don't-need-redux-to-use-react-guys) then most documentations and tutorials will not answer your questions, and you are own your own solving every single problems. Even the simplest ones, like redirecting on a route after data changes and closing a panel at the same time.

"Libs, not framework" means you need to relearn everything, rewrite a lot of code, tests and doc and renew maintenance for each new project. Meanwhile nobody agree on what a the proper stack is.

JS, despite all the paint on the rust, still has the old gotchas. This is still weird. ";" is still auto inserted. "==" still compares like nothing else. Errors come in different so many different forms it's not funny. Basic maths assumptions like commutativity are out of scope. Still no namespaces, but instead we use monstrosity like webpack and incompatible import systems to encapsulate things. Stdlib still doesn't have essential things like hashing, string/date formatting or encoding. Even basic operation like removing an element from an array using an index is a pain.

No, I'm sorry, JS has not become awesome. We just arrived to a point were we accepted we have everything to built with it and agree to pay the huge price for it. That's all.

Projects like vue.js makes me think there is still hope we end up with elegant tools from people who care. But right now I just embrace the madness and make money with it: all those poor customers don't realize the trap the current mindset lead them to, and I have so many solutions to the problem they should never have had to sell them.

<comment><USER7> >No, I'm sorry, JS has not become awesome. We just arrived to a point were we accepted we have everything to built with it and agree to pay the huge price for it. That's all.

Yep, this is the crux. ES6+ has finally made JavaScript look more or less like the languages we were using in the mid-90s, so I appreciate that, but it's not like it's some glorious boon to the developer community.

Any gains from the new semi-tolerable semantics are quickly overwhelmed by requiring layer-upon-layer-upon-layer of crap, including hundreds of dangerous random modules from GitHub to compensate for the virtually non-existent standard library and a "build pipeline" that consists of several unrelated runners, bundlers, transpilers and transformers to make code that's actually usable in real environments.

JavaScript is a tragedy for the development community from start to finish, and its increasing prominence should disabuse us of the notion that development is dictated by meritocracy or any such fantastical nonsense like that. Marketing and groupthink have just as much pull here as anywhere else (if not more because so many of us egotistically believe we are immune to it).

<comment><USER8> Everyone complains about the build tools, but they simply haven't thought through the issues.

Let's say you were writing the web using Python. New browsers run v3.x, but old ones run 2.x or even 1.x. Further, features in newer versions of v3.x won't work on older versions of v3.x. New browsers could include all three runtimes, but old ones would be SOL.

How do you use v3 features and target v2 or v1? You must transpile knowing that newer browsers also have v2 and v1 engines included too.

You have hundreds of Python files in your system. Delivering hundreds of files is simply not practical on HTTP/2\. You combine them and now you have webpack.

What about libraries? As big as the standard lib is for Python, it doesn't do everything. You use pip or conda and now have npm/yarn.

What about code consistency? The solution is pylint.

What about testing? Add that to your chain as well.

It's the unique issues of the web -- NOT Javascript -- that makes the build pipeline what it is. Until a few short years ago, these things weren't even possible. Today, if you know node/npm, webpack, babel, and eslint, you know the overwhelming majority of build processes.

I'd finally add that make, Jenkins, etc are far more complicated to learn than the JS systems.

<comment><USER6> The original crappy design is definitly a problem with JS: the typing/testing, the lack of namespace import, the emptyness of the stdlib. Half of the problems we have today are directly correlated with this.

Most of our tools are not here to make things better, but to avoid sucking too much.

So yes, forward compat is an issue. But that's hardly the one I'm complaining about. I'm really ok with not being able to use spread, but I can live with it. I'm not ok with having to use npm + webpack to download, install, isolate and bunddle a remote lib to do a leftpad.

</comment></comment></comment></comment><comment><USER9> Omg, so this guy thinks he knows why I'm hating Javascript? Well, it's definitely not because of the lack of types, or because without Prettier my code looks shit, neither would it be the lack of E6/ES7 features since I'm using Coffeescript 2. No, I hate Javascript especially for it's conitnuously changing ecosystem being forced upon you. You named Dan Abramov? Ah, the guy who deprecated almost all flux in favor of his own idea (Redux), or by deprecating React Mixins, because he thinks Mixins are bad, Higher Order Components is the new holy grail?

If I am looking for a job as a Javasript developer at the moment it is not about my coding skills, it is about my willingness to adopt all those hyped technologies, and the author of this article is just making it worse.

I also hate Javascript for all those people reading this that think I don't understand it yet, and are going to explain me how great ES6/ES7, Promises, and/or Typescript are. Please don't.

<comment><USER10> > If I am looking for a job as a Javasript developer at the moment it is not > about my coding skills, it is about my willingness to adopt all those hyped > technologies

If you're looking for a job as a developer I hope it's _always_ about your ability to adopt to changes and new technologies. Because that's what distinguishes a developer from somebody's "nephew who's really good with computers" and is willing to work for scraps.

Any formal education worth its salt is about giving you that ability rather than just teaching you the status quo. If you want a stable ecosystem that doesn't change, try specializing in legacy technologies. There's still a ton of software written in languages that are well past their prime and large companies will pay good money for people willing and capable of working on that.

Maybe you should stay away from JavaScript for the next 20 years and come back when people consider it quaint and archaic and don't try to apply new ideas to it anymore. This isn't hyperbole, this is an honest suggestion.

<comment><USER11> Sure, but adapting as a JS developer is mostly about relearning how to do the same thing using different libraries and frameworks.

As an embedded developer I am able to build upon my existing knowledge and am deepening my skills in embedded, Linux, C++, etc. I'm not learning new programming languages and operating systems every couple of months.

And this is how it should be, otherwise you'll end up being always average, no matter how much you learn.

<comment><USER12> > relearning how to do the same thing using different libraries and frameworks

This is hell to me, such nausea-inducing inefficiency. I feel like I'm wasting my time and cluttering my brain needlessly in those scenarios and it drives me mad. What if you were a woodworker and every few months all the tools and equipment in your shop changed in various subtle ways? It makes very little sense to me in the long run. True mastery depends upon some amount of consistency in your environment. It's the only way you can build on what you knew before (because it didn't change when you weren't looking) to do more complex and interesting things.

<comment><USER13> But think of all the sweet conference talks you can give after inventing the latest new shiny woodworking tool!

</comment></comment></comment></comment></comment><comment><USER14> Don't compare JS (or any language) to any other language - or any language to another language. People wrote a lot about it (Your language sucks because... - type things). JS is just another language.

The JS ecosystem is wild and moving way too fast, but even that is not really the trouble with it: it's that it's being overused.

He mentions DHTML at the beginning, which was the perfect example of using too much of something: mouse trailing bouncy balls with falling snow, my, I don't really miss those days.

Yet we're here in 2017 and React & Co. is crippling the web. Plain simple news or a blog site rendering with JS? AMP, loading megabytes of Javascript, claiming to speed up the web? When your product is text, how about you serve text and maybe only boost it or do analytics with JS? I know it's not fancy, but for a lot of sites out there, JS based rendering is completely unneeded.

In case of web apps... A little while ago I listened to a talk of front end colleagues, claiming that we'll speed up the site by async calling some blocks, so the initial content will get down fast and the less important ones will follow. When I asked if we're measuring the very end render time - <USER2> one that heats the CPUs, because you offload the rendering to the client, which can get quite stressful - the answer was 'no', mostly because nobody knows how to do it. I also asked about how screenreaders will work with this, and they thought I'm talking about mobile, which is extremely sad, and no, I'm unaware of any screenreader-friendly JS based app. (Screenreaders are the programs literally reading out the text for visually impaired.)

Google and FB offers fallback, HTML-only solutions to their services, because the realised their things don't work on slow connections and/or slow devices. Maybe this should be taken as a sign.

<comment><USER15> 2 quick points:

\- The paradigm shift in writing interactive web pages in the React "write your app like a game that re-renders every frame"-style is extremely compelling. You are correct that there are plenty of largely static sites that do not need JS-based rendering, but for people wanting to develop single-page web apps or other interactive content, that mindset is a godsend.

\- We recently re-wrote an ecommerce site with React and it is WCAG 2.0 AA compliant. To our knowledge, and to the independent firms that have audited our application, screenreaders have no problem with it. You still have to go through the diligence of all of the standard a11y-friendly techniques like semantic markup and thoughtful keyboard navigation, but React at least does not get in the way.

<comment><USER16> Another compelling use-case of React is the ability to use it as a better templating language ― treating HTML as a data structure instead of a string, better composability of the units of your UI, and the ease of rendering to a string.

It's an interesting question whether the tendency to overcomplicate a largely static site by implementing it as a single-page app should be attributed to the average developer or to the creators of the library though.

</comment></comment></comment><comment><USER17> I've gone through the same experience this year, having picked up modern JavaScript, Angular2, TypeScript and RxJS for a project.

For me it was TypeScript that did it. I came to appreciate strong typing. And ES6, fixing the 'this' scope problems and with a conventional class syntax (I understand prototype inheritance is clever, but it's not the way I've been trained to think). I didn't get to use async/await for various reasons, but that looks to remove my third pain point (callback hell/promises/observables).

RxJS remains a mystery (I swear the API wasn't designed for humans) I use and hope it works, and combining code that use Observables with those that use Promises still wakes me up in a cold sweat.

But now going back to old territory (PHP, Symfony) I miss it. Yesterday's miss was union types. TypeScript has spoiled me.

<comment><USER18> I left React for Angular 4 this year, because I came to the realization that once I made the decision to leave the loosie-goosie world of default JS, there was no reason to have my framework be loose either.

I'm really loving the confines of a "one way to do it" framework like Angular 4. It makes teamwork much easier, speeds up development once you've gotten over the learning curve, and is damned impressive when it comes to app performance.

I'm really looking forward to the day when TypeScript platforms like Angular 4 compile down to WebAssembly and performance goes through the roof.

<comment><USER19> how well does Angular perform on production?

as far as i know, React is used more widespread

<comment><USER17> We used Angular inside Ionic for an iOS app. Performance is OK, but I can't tell you if a different JS framework would be faster, or if it's a device/Ionic limitation. The main problem has been with rendering large sets of data (say 100+ items) in a scrolling list.

</comment></comment></comment></comment><comment><USER20> It looks like the author didn't mention the main reason many of us hate Javascript: weak typing.

Weak typing is great for small-scoped project without a lot of business logic. But when there's a lot of data, a lot of assumptions about it, and, most importantly, these assumptions change A LOT during development - which happens all the time in game development, for example - strong typing is a godsend.

When I make a change in a strong-typed language, I deliberately make it in such a way that the code won't compile unless I complete it. If I can make something a compile-time instead of a run-time error, I do it (and that's why I dream of switching to Rust one day - on some game engine two generations from now, unfortunately). When I refactor something, I know that compiler will let me know if I forget to change it somewhere.

Compiler is my dearest friend. Compilation errors are his gentle hints that make my code better and prepare it from failing in user's hands. Without it, I feel lost and always on my toes. I have to write tests instead. I have to launch the project (which, when it uses a lot of resources, always has overhead) and test everything by hand. When I write a big project in Javascript, I feel like a minefield, unsure of what's broken and what's not.

I can't understand how people write serious, big projects in weak-typed languages.

<comment><USER21> Me neither. It just seems really fragile and unwise.

I've had people tell me that tests deal with all the issues I would fix with a decent type system, but this seems to involve writing tests to see if things are passing the right types around, which is code the compiler of any strongly typed language already has in it that you don't have to write.

I don't even find dynamic languages faster to get started with, but maybe that's because I'm so used to static ones with good type systems. If you can call C#'s type system "good", that is. It's mostly adequate!

</comment></comment><comment><USER22> I was a Python developer for about 10 years before joining a startup that works almost exclusively in Javascript. I had to swallow my pride and make the best of it. I had a huge, smug chip in my shoulder.

ES6 has made the language tolerable. Enjoyable even. It has even been a decent medium for mentoring more junior developers who haven't had any exposure to functional programming in school. I can show them combinators, functors, applicatives without all of the usual ceremony in a more pure language. For that JS has been quite nice.

However for my own projects I just use GHCJS or Bucklescript and compile down to JS. Google Closure and Webpack are fine tools for shaking out the unused code and bundling everything up.

<comment><USER23> Current Python dev here. I've found the same thing. I really didn't like Javascript prior to using ES6. Now it's fairly tolerable. I'm currently building an app with a React based front end and a Flask-based API for data exploration and QAQC.

The "where does the semi-colon go" game is really annoying, but I'm getting better at it, and ESLint will let me know when I mess up. But I do enjoy a lot of the features in ES6 that make JS (EcmaScript will never sound right to me) nicer to write.

My huge pet peeve is that it feels like it takes so much work to set up an app compared to my experience in Python. But maybe that's tooling. I do have some boiler-plate code to get things working, such as setup.py templates and YouCompleteMe for code completion, and I use VirtualEnv and Pip to manage dependencies. I guess that's basically Webpack and NPM and package.json/webpack.config in JS development.

Who knows. My issues with JS/ES might be all in my head.

<comment><USER22> I'm one of those people that just trusts ASI. Once you stop inserting them you stop noticing so much.

After introducing an ESLint configuration to my team I still can't get the semi-colon lovers to consistently insert semi-colons. I made semi-colons a warning only just to see since ASI will insert them anyway. The worst offenders are the die-hards.

I was originally a semi-colon person but that's only because I listened to a talk by Crockford once and never thought to draw my own opinion. As a Python programmer I thought semi-colons were silly already and this talk only entrenched the unfounded idea that _Javascript was bad_ in my mind.

I use them at work because when in Rome... but in my own projects there's no need for them.

Currying is a nice effect of the fat-arrow syntax for lambdas. Currying in JS is still neutered compared to OCaml or Haskell where it's the default but it's still nice. Function composition is greatly enhanced by it. Python requires special help to do currying.

As for tooling... it's the same deal in many languages despite all of the marketing. It might feel painful to get a good development environment set up for a Javascript project but it can be equally painful to setup a Python environment if you haven't done it before (or a .Net, Java, etc, etc). I'm not a huge fan of excessive configuration. But that's what you get with programmers. We're a fickle bunch.

What Python does well though is to absorb good ideas into the implementation. Function decorators, iterators, and soon mypy; when you go with the grain, Python is a wonderful language.

</comment></comment></comment><comment><USER24> I disliked JavaScript, but then I read _JavaScript: The Good Parts_ , and I saw that with a bit of discipline* there's something quite pleasant underneath. It's a book that, rather than being focussed on telling you what not to use, instead shows you various approaches to programming with what you should use. If nothing else it'll give you food for thought and unlearn you of your worst beginner habits. Mind you, it's a dated book and ES6 added a lot to the language.

*don't listen to every suggestion of Crockford though; e.g. having to hoist your variable declarations is as obnoxious an idea in JavaScript as it is in C

<comment><USER25> How is hoisting your variables obnoxious?

<comment><USER10> It mixes implementation concerns with functional concerns.

He recommends hoisting the declarations because that's how `var` scope works in JavaScript. Normally you'd want to introduce variables where they're actually used to provide context for them.

A variable definition at the beginning of a function implies the variable is important to understand the general flow of the function. This can be especially misleading for temporary variables like counters which only matter within a particular loop.

Additionally assigning values halfway into the function implies they had different values before, leading you to go back and check whether they were assigned anything else (and used for anything else) or just declared without a value.

Of course these problems can be avoided by simply using the new let/const variables which are block scoped, but even here Crockford would likely advocated for hoisting within the same block because of the Temporal Dead Zone (i.e. a block scoped variable exists from the start of the block but referencing it before it was declared is an error).

<comment><USER26> This is in line with his philosophy to eliminate things that produce little or insignificant value but is a potential source of bugs. In this case variable hoisting.

Of course you don't have to follow all his rules of what are good/bad parts, some of which feel a bit Byzantine at times, but he has a point and usually for a very good reason.

Check out the JsLint Google+ page for his views on more recent additions

</comment></comment></comment></comment><comment><USER27> Meh, all I got from this article is that this guy is writing a calendar app.

Perhaps that's the whole point of this post. ;)

<comment><USER28> Yes, but I thought it was pretty funny, so I forgive him his little commmercial.

Anyway, I doubt there's room in the world for yet another calendar app... so I also want to give him a break because I feel bad about him likely wasting his time.

</comment></comment><comment><USER29> My problem with the current Javascript culture (which definitely includes the React infospace) is basically the inverse how I felt about C++ back in the day. Then, in the early years of the second age, I felt that the libraries and frameworks I was using should use more of the then-current standard, like the STL, RTTI or whatever was hip and promosing back then.

These days, it seems that every feature that is semi-supported in at least one transpiler isn't just used (in various ways) but in fact begets a whole slew of libraries. Especially when we're talking about ways to circumvent the async-hole.

Other transpiled languages will either have the equivalent features, use lots of inline JS or ditch large parts of the ecosystem. While the latter would be possible if NewLangs standard library is big and good enough, I'm not feeling particularly optimistic about that.

Quite likely that C++ history will repeat itself: Just use the core language and a minimal library and do everything yourself (back then that was e.g. C++/Win32/ATL, not sure what it'll be for my future browser-based projects. Modula-3, I miss thee.).

</comment><comment><USER30> I've gone through a similar experience with Rails 5.1 which has, having ditched jquery, gained support for webpack, babel, yarn, and vue.js (& react) instead; and thereby made writing JavaScript an order-of-magnitude less painful for me.

I feel that ES6 is a palace built on the ruins of a garbage dump and an odd stink still leaks through from time to time, but like the author, I can work with it now without loathing what I'm doing.

</comment><comment><USER31> I primarily built frontend applications, so JavaScript is pretty much the only programming language I use on a daily basis. I'm not in love with it (although post-ES6 JS is quite pleasant to write), but I don't mind it as much anymore.

The reason? I feel like JavaScript is heading in the same direction as Java. The core language is highly flawed, which has resulted in the community developing build-time tooling and editor niceties to keep things sane.

In the future I expect to see more tools like Flow and Prettier, and existing tools and editors becoming smarter. I'm excited for improvements to JS as a language, but these days I'm more excited for new tooling.

<comment><USER32> What are the flawed parts of the core language?

<comment><USER33> The comparison `==` is basically something you should never use. `this` is confusing for most people, etc.

That said, it's fairly easy to avoid these problems.

<comment><USER34> > The comparison `==` is basically something you should never use.

This doesn't feel unique to JavaScript though? It's the same with, say, PHP.

<comment><USER35> And PHP is usually regarded as even more flawed than Javascript.

</comment></comment></comment></comment></comment><comment><USER36> This probably comes off as said from an ivory tower, but I don't think it's the people from other untyped languages who hate JavaScript nowdays. ES6+ looks pretty good compared to Python/Ruby/PHP perspective, _and_ it works in the browser!

<comment> amiga-workbench I don't hate javascript for its quirks or implementation details, I hate what it has done to the experience of browsing the web, and now what it is doing to desktop software.

<comment><USER37> You don't think a blinking cursor should use half your processing power, and a handful of small text files shouldn't use all of your RAM? Pfft.

<comment><USER32> That was actually a css bug in chrome.

<comment><USER38> And why should a css bug in chrome affect my text editor?

<comment> amiga-workbench This is your text editor on meme tech stacks.

</comment></comment></comment></comment></comment></comment><comment><USER39> I switched to Dart few months ago, it actually makes JavaScript bearable. I never get to see the actual generated JS code.

<comment><USER33> Dart is surprisingly nice, considering how little I hear of it. I picked it up recently as a target for my hobby project (a Clojure interpreter). Dart's VS Code integration is phenomenal. Its VM is pretty efficient from a resource consumption perspective (especially compared to the JVM). It's worth a look, for anyone who hasn't bothered with it yet.

</comment></comment><comment><USER40> I really enjoyed the writing style of the article - "hottest shit on the street", "It's just a yarn install away", "DHTML was totally rad, like how the Budweiser frogs were rad."...just brilliant! Also gave me a good nostalgic feeling about DHTML..

<comment><USER41> I wonder what the split on this is. I gave up on the article pretty early on specifically because of the writing style.

<comment><USER40> I am not a native English speaker, maybe that :-)

</comment></comment></comment><comment><USER32> Lots of people relate ES2015 to giving us a better javascript, but the core language remains the same; the changes are just additions.

Building a tool chain can be an extreme pain in the ass because everyone is still experimenting, and trying to make the web better. Things like web workers, hot module reloading, and code splitting are relatively new, and don't have mature tools or patterns. Yes it's hard to learn, and yes it takes a lot of time, but once you learn a few tools you can keep using them over and over. I've been using gulp and browserify since 2011, and recently switched to gulp+webpack for code splitting, and HMR, and the switch couldn't have been easier.

</comment><comment><USER42> I'am huge fan of JavaScript and personally don't like both Ruby and Python, but would never write an article titled: "Ruby/Python for People Who Hate Ruby/Python". I just don't use them. Writing such a article is IMO arrogant and bad for your karma. I understand some programmers are forced to use JS against their will (because there is not other person for the job), but if you hate JS and you're not forced to use it, please just don't use it and then you don't have to write such a negative and opinionated articles.

<comment><USER43> JS is more on par with Ruby & Python these days feature-wise, but I just don't see why one would prefer it. Ruby & Python are better thought out languages from the get go. Go listen to Brendan Eich discuss how he had to rush JS out the door as compromise between Sun & Netscape, and then how he couldn't fix the language warts even before ECMA.

</comment></comment><comment><USER44> I also started learning JS in the DHTML era and wrote small games and toys for IE4. I did PHP stuff for almost 10 years and it was my main programming language. But at some point I stopped doing webdev, since the whole thing was a big mess and didn't seem to get better. I hated it. After a long break I decided to do another web project again and worked with Scala in the backend and Angular and ES6 in the frontend (about 2.5yrs ago). At first it seemed to be a lot better, but we ended up with another working but unmaintainable SPA. Adding new features required a lot of knowledge and was a pain. In this project I tried and failed to implement a solid Graph Library in JS. This motivated me to look at ScalaJS and write this library part of the app in Scala. It worked very well and I was amazed by the JS interop. From this point on I develop new web-apps with Scala in the full stack and am very happy with it. I suggest to try it yourself for the frontend, since it has a very similar syntax to JS. The type safety avoids most runtime errors and therefore painful debugging time. Compile times became a lot better recently.

[http://www.scala-js.org](http://www.scala-js.org)

The real power comes when you share your data structures and algorithms with the backend, get a type safe REST API and macro-based high performance json/binary serialization.

</comment><comment><USER45> The best way to truly hate something is to know it very well.

</comment><comment><USER46> I've been using Node 8 again after a few years of staunchly avoiding it, and the pain of selecting the right kind of libraries to use async/await sanely without having to massage promises (and .then()) is still there - in that sense, I feel very much like that cat with the strawberry beret on the article heading...

<comment><USER34> Why are you having to bring in libraries to use async/await? What does the native implementation not provide?

<comment><USER46> I'm not bringing in libraries. I'm trying to put together a set of libraries that work well with async for my purposes (custom net I/O, databases, etc.) without having to wrap them or fiddle with resolving promises on my own.

<comment><USER47> Is there something in particular that you do not like about Promises?

<comment><USER46> Yeah, having to deal with inconsistency across libraries inside the same project.

<comment><USER47> I don't really see how Promises leads to that... do you mean the fact that not all libraries support them out of the box?

Bluebird (probably my favorite Promises implementation) has nice features to interface pretty easily between callbacks and Promises.

</comment></comment></comment></comment></comment></comment><comment><USER48> Sorry, not trying to be a d*ck here but I don't get the point.

You said you don't like the NodeJS eco system as you need to install thousands of packages to get your work done whereas on the other hand, your find CRA which uses tons of NodeJS packages to get the work done.

Secondly, code splitting, Babel, bundling has nothing to do with CRA, they are just standalone packages which works well together.

Third, "What's more, updates are great. It's just a yarn install away.", Isn't this something which NPM does as well?

Syntax - Again, nothing to do with ReactJS, it's babel which comes with polyfills.

So am just curious here to understand that how exactly CRA changed your mind where 90% of what you are doing is pure JS and has nothing to do with ReactJS?

</comment><comment><USER49> Interesting, because Create React App is fairly new tool, however Ember CLI gives you the same thing for years now... so JavaScript World was always cool, at least for Ember.js developers. ;)

<comment><USER50> Ember CLI is a cool tool that preceded CRA, since it was inspired by Rails' CLI tooling. Unfortunately that's the only good thing about Ember, since it comes with the "batteries included" mindset making it one of the most bloated JS frameworks.

</comment></comment><comment><USER51> One thing I like about the more quirky languages like JavaScript and PHP, or even the far less quirky but still dangerous C language, is that they force you to write good tests. You don't get the false sense of confidence some other languages give you. I'm still not positive if static types are a poor man's test suite, or if a test suite is a poor man's static types, but I find tests are far more flexible and great at describing intent.

</comment><comment><USER52> The latest js tooling is certainly light years ahead of where it was last decade, but it's a double edged sword, because now it takes a lot more effort to get something going.

Indie hackers like myself are still better served by vanilla rails + turbolinks, it gets you something that feels fast wtih a lot less effort.

</comment><comment><USER53> This guy's got a great sense of humor. I pissed my pents with the linked[1] 1x1.gif article.

Or maybe I'm just as old as he is.

[0] [https://zachholman.com/posts/only-90s-developers/](https://zachholman.com/posts/only-90s-developers/)

<comment><USER54> I enjoyed that bit too. I wondered how many people on here would have experienced trying to layout a webpage with 1x1.gif up your sleeve

</comment></comment><comment><USER55> > [Prettier] It's basically like gofmt for JavaScript.

Gotta mention jsfmt, which is actual gofmt for JavaScript. Awesome tool, hasn't been updated in a while though. RIP Rdio.

[https://github.com/rdio/jsfmt](https://github.com/rdio/jsfmt)

</comment><comment><USER56> Yes, CRA is a Huuuuuge step forward. [https://www.peterbe.com/plog/10-reasons- i-love-create-react-...](https://www.peterbe.com/plog/10-reasons-i-love- create-react-app)

</comment><comment><USER57> If React or Vue.js don´t click for you try Riot.js [https://github.com/riot/riot](https://github.com/riot/riot) It´s a minimalistic js library with a lot to offer. I made a tutorial some time ago, I think it could give you a glimpse about what you can do [http://vitomd.com/blog/coding/hello-riot-js-quick- tutorial-a...](http://vitomd.com/blog/coding/hello-riot-js-quick-tutorial- about-this-awesome-lib/)

</comment><comment><USER58> Javascript is only going to get worse. Much worse. TC39 proposal "process" is driven by a never-ending self-congratulatory circle-jerk. Any concerns are dismissed with "people on TC39 discussed it, they know better, how dare you question their wisdom".

While there's still time, escape to TypeScript (though it will be flooded by crap from TC39 soon enough), ClojureScript, Kotlin, Scala.js, Elm, Purescript

<comment><USER37> Don't worry, Web Assembly (or something similar) will soon be ubiquitous and having one, thoughtlessly tossed together, horribly "designed" language which constantly receives updates that are wholly ignored where it really counts will no longer be the reality of web targeted development. If there is one good thing about web dev today it's that adoption of new tech in the client space is really fast.

Of course, personally, I solve this problem by refusing any job that requires me to use JavaScript more than twice per complete solar eclipse. That's worked quite well now for over a decade.

<comment><USER59> > ...refusing any job that requires me to use JavaScript...

I'm getting jealous. Most job offers I see conflate software development with web development and even jobs earmarked "backend" come with JavaScript baggage.

<comment><USER60> Native mobile app development is the exception here if you can weed out the "we need an iOS developer with a strong understanding of Angular.js and HTML5" jobs or the React Native jobs that some consulting company talked a hiring manager into thinking they need.

</comment></comment></comment></comment><comment><USER10> Nitpick: I'm guessing you mean 10,000% and English isn't your native language. In English the period "." is a decimal separator, not a thousands separator, so 10.000% means 10%.

EDIT: Holy cow, at least four downvotes so far. I hope the downvotes are for nitpicking and not out of disagreement. As cakemuncher seems to disagree (which doesn't mean they downvoted) this seems like a great learning opportunity about decimal separators and non-native speakers:

The parent is most likely German (the example code uses German so that usually means Germany, Austria or Switzerland) which uses the comma as decimal separator and period as thousands separator. I'm German too, so I'm sensitized to this mistake.

Here's the Wikipedia article for reference: [https://en.wikipedia.org/wiki/Decimal_mark](https://en.wikipedia.org/wiki/Decimal_mark)

The US, the UK, New Zealand, Australia and English-speaking Canada all use the dot as decimal mark. South Africa is the only major English speaking country using a comma instead, but they use a space as thousands separator rather than a period.

The parent clearly intended "10.000%" to be read as "ten thousand percent" so that leaves the following list of countries which according to Wikipedia use a comma as thousands separator:

Argentina, Austria, Bosnia and Herzegovina, Brazil, Chile, Croatia, Denmark, Germany, Greece, Indonesia, Italy, Netherlands (currency), Portugal, Romania, Russia, Slovenia, Spain, Sweden (not recommended), Turkey

Exactly zero of these countries are predominantly English speaking. So in other words, in English 10.000% means ten percent (with a precision of three digits after the decimal point), not ten thousand percent.

<comment><USER55> Didn't downvote or anything, but come on .. we all know what he meant. This thread is not the place for a "a great learning opportunity about decimal separators and non-native speakers".

<comment><USER61> > We all know what he meant

Having your mistake corrected can be educational even when you were understood. In the future, inanother context, the same mistake could result in confusion.

<comment><USER3> OP here. I agree.

<comment><USER62> Well since we're all being pedantic, OP means "Original Poster" which is the person who started the thread (page, not this particular thread, which you did start).

<comment><USER55> I think that the meaning of OP depends on context. In general, you're correct. But cel1ne can be reasonably be referred to as the OP in our convo, since our discussion really doesn't have anything to do with the content submitted by the Original Poster of the whole page.

</comment></comment></comment></comment></comment></comment><comment><USER63> People either hate javascript with a passion or they love it with religious zeal.

Maybe it has to do with the fact that it's used mostly for web programming? But geez, there seems to be no middle ground when it comes to javascript.

But it doesn't come close the division over Perl. Yikes.</comment>