The Metaprogrammer - <AUTHOR> http://www.codersnotes.com/notes/the-metaprogrammer/ <comment> V-2 _" If they don't have the shiniest Apple MacBook then they can't work. Never mind that their job involves typing letters into a text file, something you could have done on CP/M back in '78"_

I don't want an Apple at all, but I do want a beefy machine because my job doesn't only involve typing text you see - for instance I also need to _build_ the result of all that typing, and if it takes ages, guess what, the time I waste waiting for it to complete is not worth whatever money they cleverly save by supplying me a "CP/M from '78"

 _" To insult a new hire by providing only a single 4:3 monitor? I can't work like this."_

I _can_ work like this, but I _prefer_ two monitors. How much does a monitor cost anyway? Having two displays is much more convenient.

I _can_ program sitting on a kitchen chair, but I prefer an ergonomic office chair, because I spend a large part of my life at work and I see no reason why it should feel uncomfortable.

Oh, how pampered I am!

 _" \- You were lucky to have a LAKE! There were a hundred and sixty of us living in a small shoebox in the middle of the road.

\- Cardboard box?

\- Aye.

\- You were lucky. We lived for three months in a brown paper bag in a septic tank."_

etc.

<comment><USER4> Building on your own desktop? That seems rather archaic. Well-connected and integrated access to a massive multicore build machine seems a little more modern.

As time goes on (16 years as a dev now) I find myself a lot less concerned about this stuff.

<comment><USER5> Building, editing, testing, all of that is better done remotely with ssh and gnu screen or similar.

<comment><USER6> I personally disagree. That requires that you use vim or emacs, which is not feasable (or even desirable) for many programmers. It also requires a stable and low latency network connection; something which is not always available.

Anecdotally, I had to work this way once for an employer. It worked rather well, but our "development" machines were on-premises, and when they went down, everybody was down. I was also extremely limited in what I could download and run, since the machine was shared with other developers. Not very productive.

Though, I did get really good with Vim, so I am thankful for that.

<comment><USER5> Use vim or emacs not feasible? not desirable? If most of the greatest programmers use them, if you're a wannabe programmer how would you not use these tools? It's like willing to be a cowboy but for thanks to the horse and the gun...

<comment><USER7> If you're writing C# you'll be much faster with intellisense and autocomplete. It's quite amazing how much help it is, especially before you reach expert level.

Occasionally you encounter weird toolchains where some stuff is much more convenient to do from the IDE, so you end up editing files in emacs then having Quartus or Vivado open to look at their reports.

(People should be a bit more specific about their working environment before confidently declaring the best way to do things!)

</comment></comment></comment></comment></comment></comment><comment><USER8> I think that there's two distinct ideas here, and they're fused together. One of them (IMO) is valid, the other is not.

"Programmers spend too much time attention-seeking, or debating online, instead of actually writing code" is a valid topic to debate over; I can see arguments on both sides, but it's certainly a thing that could be argued. The work we do is more important than all the meta-stuff surrounding that work.

"Programmers are too pampered and we should just give them all shitty old computers in shitty offices without perks", though... workspaces are important, as are the tools. A large monitor means I can have more stuff open at once, and I know that I'm more productive when I have an external monitor than when I don't, and I need to cmd-tab a bunch between editor, terminal, and browser.

Companies don't offer good equipment and perks because they're charitable, they do it because it produces results (more often than not).

<comment><USER9> > produces results

Conversely, companies that _don 't_ offer good equipment are making a terrible decision. I once worked at a company with a single 14-inch monitor on every desk. In 2010. I was astonished.

<comment><USER10> Personally I don't mind working on an average machine. I don't do anything with huge computing needs, and it shows where the bottlenecks are before they get into production. (Then the disk starts paging and I change my mind about having a better machine).

<comment><USER9> Compute, I don't care about. Screen space is precious. Every extra window I can have open simultaneously increases my productivity.

<comment><USER10> True, though for me its the keyboard. I can't seem to get into the flow on a laptop, despite the fact the resolution is better than my larger monitor.

</comment></comment></comment></comment></comment><comment><USER11> This effect is observable not only in the programming community, but in many others. Best example would be photography, where people spend much more time discussing their equipment and the newest lenses instead of going out and actually take pictures.

I had to experience this for myself when searching for new hobbies. With most of them, I spent most time with the meta, e.g., which fountain pen to use for my writing or what the best ball bearings for my skateboard are.

I think in comes down to "I want to be a writer, but I don't want to write. I want to be a photographer, but I don't want to take pictures. I want to be a skateboarder, but I don't actually want to skate." Why I want to be something but not actually practice the trade is another question (prestige, self- identification?). I wonder if others have experienced the same.

<comment><USER12> Audiophiles - probably the most prominent example of them all.

<comment><USER13> I have a friend like this. I've been in bands in the past and worked in (even built my own) studios. I seen and partaken the 24/96 vs. 16/48 debate (spoiler: that only matters in the studio). I've worked with high end mics, pres, dacs, boards, tape, etc.

The big thing we tangle on is always digital vs. analog. Oh boy.... Zzzzz... I've cut tape and editing on analog sucks. Noise on analog is not ideal. Compression and 'natural' bottom end warmth are nice. But that's where it stops. Most of (all of?) these things can now be simulated by plugins. We don't even have to say digital has won because it's so obvious. Analog is there for the minority purists.

This debate has between us has taken many hours over many years. Oh yah, let's not forget vinyl too!..

I've had to recently redirect the argument to musicianmanship, which I feel is really where the rubber meets the road. It all starts at the source. If your source sucks, then you'll have some work to do to fix it. Stuff like autotune, sample triggers, etc. In this way, analog is better as it will demand more of the musician's performance. Hard to swap out the kick drum on analog.

All in all, I personally don't think any non-studio experienced audiophiles would know if something was recorded digitally vs. analog. There are so many things you can do now and unless you know those studio 'tricks', you can't even tell. This has already been the case since the 90's I think. Everything can pretty much be simulated, processed, filtered, chopped, moved, etc.

One great resource for all this is Ken Andrews. Look him up. He's got a lot of great stories and insight on recording.

My advice to my friend: learn the tools and use what make sense artistically. But debate for theory's sake is pointless in my mind.

<comment><USER14> My theory about audiophiles is that a lot of them grew up in the 1970s-1990s where there really was a huge difference between "high end" and consumer grade audio. That gap has narrowed considerably. I think there's also a lot more people these days out there actually explaining the engineering and science in good audio (in the old days technical details were considerably harder to look up), this makes it hard to push "marketing oriented" product (eg those infamous audiophile cables). My impression currently is that the audiophile hobby kind of was dying off.

I do think there's a few areas where analog still is a bit better technically (mostly from the musician perspective, things such as distortion and resonant filters), but digital is both often better and just so much more convenient for 90% of things. Those that embrace analog as a religion are rather annoying.

Now, I do remember in the 1980s there was a huge push of digital everything -- digital playback, "digitally remastered", etc. A fair bit of _that_ at the time had major issues -- eg not very nice sounding DA stages, aliasing problems, etc. Perhaps this is where some of this attitude comes from.

<comment><USER15> Modern "audiophile" gear is much better today than in the 90s, especially for the same price points, but my observation is that there's a divergence between hipsters that prefer gear older than themselves looking for something unique and those that seek technical specs religiously and know where to optimize for best technical sound. I just want the best sound I can get within a reasonable budget even if I could tell the difference if I spent $1000+ more on a better amp.

Most of the anti-digital people I know fall into two overlapping camps - technophobes that don't know how basic DACs work (believing that digital audio means output of literal square and stepper waves into the air) or those that simply prefer older recordings from a point of nostalgia or artistic taste. Showing conclusively that some of their favorite records were mastered digitally before being compressed and filtered for LP is similar to watching climate change deniers try to reason via strawman and red herring arguments.

</comment></comment></comment></comment></comment><comment><USER16> Ah the never ending lament about programmers asking for nice things. Sorry, $4k in capital costs for someone you're paying well into 6 figures for to make your business exist isn't that bad. A fast pc is necessary depending on what you're doing - making knowledge workers more comfortable effects their output.

<comment><USER17> > for someone you're paying well into 6 figures for

My first programming job was $32k/year out of college(this was in 2011).

<comment><USER18> even then, as you are probably not employed for only 1 year (in which case the perks could be transferred to someone else) the costs for a good setup are negligible compared to the total mount spent on a developer.

</comment></comment></comment><comment><USER19> "When art critics get together they talk about Form and Structure and Meaning. When artists get together they talk about where you can buy cheap turpentine." \- Picasso, supposedly

Talking about this stuff is only natural.

As for the rest of the OP, not knocking it (or the book), but it sounds like he just read Catcher in the Rye or something. Employees have been jockeying for status inside firms and across firms as long as there have been employees and firms.

</comment><comment><USER20> TL; DR: buying a Macbook tricked me into going through a "dark" phase. It was worth all the money.

This isn't necessarily true all the time, although it is in many contexts. For example millions of people are eagerly awaiting the new, shiny, same-as- before-but-slightly-more-expensive-and-with-a-couple-new-features, iPhone 7 but the number of people who get excited when there's a breakthrough in a particular scientific or technological field can be counted on one hand (and multiplied by 10^[2-4]). The explanation is pretty simple: I can get the iPhone 7 when it comes out but it's hard to get excited knowing I might go to Mars in 2060.

I had a similar experience myself. As a human being I'm naturally inclined to, sometimes, consider short-term rewards more valuable than long-term rewards. They say the quickest way to change your lifestyle is to change the environment around you. In the case of software developers that environment is often their gear/tools. In my case it was my laptop. When I was still a student I was using the not-so-crappy-but-still-kind-of-crappy laptop provided by my university. The problem was not the laptop, of course, but the fact that I was doing something I didn't enjoy.

One day, frustrated by the fact that a few Chrome tabs and PyCharm would literally devour RAM and swap alike, I started considering buying a laptop of my own. Fast forward to a couple of months later, and on the edge of a serious depression, I bought a shiny Macbook Pro with 16 GB of RAM. I started getting more into web development (I was doing research in a very specific field of cybersecurity), studied machine learning (and used it for my thesis project), found a very good job (where EVERYBODY was using Apple hardware) and slowly transitioned to doing web development full time.

The Macbook acted as a trigger. I might have gotten the same results by moving to another country, changing house, changing friends, maybe by dropping college altogether, but that shallow, nonetheless very useful, purchase (I'd go as far as to call it an "investment") did the trick. I got my degree, I'm still working, and enjoying what I do, I even moved to another country eventually. Could I have experienced the same thing doing something else? Probably. But it's easy to say so afterwards. :)

</comment><comment><USER21> Whatever happened to "hardware is cheap, programmers are expensive"? [https://blog.codinghorror.com/hardware-is-cheap- programmers-...](https://blog.codinghorror.com/hardware-is-cheap-programmers- are-expensive/)

<comment><USER22> Depending on how you consider that phrase:

A) victim of it's own success. Computing hardware is cheap, 10k desks + masseuses + on site food service + all the other perks that are constantly individually compared against "well it's only % of your programmers salary" all started adding up

B) phones made people remember that the user's hardware matters more than the developers build farm.

<comment><USER6> > the user's hardware matters more than the developers build farm

The user doesn't have to recompile their code every few minutes to do testing (or every few seconds for intellisense and other coding aids).

Developer hardware still matters. I can be productive without a masseuse. I can't be productive when it takes five minutes to run unit tests because my laptop sucks.

</comment></comment></comment><comment><USER23> This is funny because no-one bats an eyelid at an "executive" demanding a corner office, an expense account, a company Mercedes, to fly first class... But God forbid a humble worker should beg for scraps.

</comment><comment><USER24> > "You post an article about a new programming language, you'll get 10 > replies."

A quick search pulls up results that would contradict that statement.

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

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

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

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

I realize four search results isn't enough to completely debunk the author's statement, but in my experience programmers love to talk about programming languages. If you start a conversation about an interesting new language, more often than not people will want to give their input.

Programmers also love to talk about their ideal working environment. Things like office chairs, keyboards, monitors and office perks are important to them because the majority of their time is spent at work.

<comment><USER25> Languages are part of the ergonomics of code writing.

</comment></comment><comment><USER26> > Never mind that their job involves typing letters into a text file, > something you could have done on CP/M back in '78\. Gotta have that 40" > monitor, it's essential, can't work without it. To insult a new hire by > providing only a single 4:3 monitor? I can't work like this.

I had a boss once that thought programmers just typed away for hours, how hard could it be? This portion is like that.

Programming, well software engineering, is _much_ more than that. I have a half-dozen spec documents to pull in from. I have databases to look at. I have log files to parse through. I have code to read and write.

Yes, this is all primarily text. But it's not _just_ typing.

Using a single 15" 4:3 monitor is like trying to steer a submarine with the _only_ knowledge coming in through the periscope. But you have to turn the whole sub to rotate the periscope.

It's the extra monitors, or let me print off 5000 pages or so of text and bind them and keep them on my desk at all times. Probably more, I'm on several projects. And the bindings won't last. I need to see content on page 100 and 712 at the same time. Oh, and then I'll have to print out each revision unless they're provided with a good diff. Or don't let me do either, require me to keep way too much information in my head and let me fuck up the project.

EDIT: That said, his other points may be valid. But I've never met the people that fit his description. I've "programmers" who don't program. I've worked with them. Well, I've worked, they've hung out. But the cafe stuffs and other things, I've never seen anyone that cared. Chairs, maybe, but he had a bad back so that was a valid concern.

> Some of the best programmers I've ever worked with don't have twitter > accounts. It's almost unthinkable, isn't it? How can they possibly be one of > the top programmers in the world, building the most successful projects out > there, without being seen to be doing it? You can write beautiful code, the > best code in the world, but it doesn't mean a damn today if you didn't blog > about your new standing desk.

I also find this a little ironic, reading this metaprogrammers blog deriding metaprogrammers with a "follow me on twitter" link at the bottom.

<comment><USER10> >I had a boss once that thought programmers just typed away for hours, how hard could it be

Just look at the movies. "Hackers" always manage to break in to remote systems by typing lots into a terminal very fast. The more difficult the system, the faster they need to type. (Mr Robot has been a refreshing change to that stereotype).

</comment></comment><comment><USER27> For me a chair is important. I don't really care about perks and other stuff but knowing that I sit around 8 hours every day for a couple years in a good chair is as important for me as the work station.

And in most of the startups I worked so far there were only cheap chairs not so good for my back. In a way I understand the owners: they have startup they should buy the cheapest things possible because they don't know how long their startup will survive, but I like when someone makes an effort to provide good working conditions for the programmers.

I also used to care about the noise level, but again working in startups I had to get used to noisy open spaces.

<comment><USER28> Silly people who don't understand that furniture can be loaned or leased.

Maybe you won't get something cutting edge in economics, but definitely very good still.

</comment></comment><comment><USER29> You use the right tools for the job --- and when you're sitting in front of a computer for 8-14 hours a day, why wouldn't you want the best tools? Are you gonna build a new wood-piece with a hand-powered screw-driver?

"You post an article about a new programming language, you'll get 10 replies. But start a discussion on what headphones you wear while you work, and ten- thousand people will rise up from nowhere, pushing the thread ever-skywards on a tower of upvotes"

Not many people care about your new programming language, but everybody understands the importance of a good chair, monitor, or headphones, and when you ask people for an opinion, they'll express it.

IMO, code with whatever you want, but I'll stick to my Herman Miller Embody, a self-modified 45g-uniform Realforce Silenced Keyboard, a 4K 30-inch dell monitor (UP3216Q), and 2 27-inch dells (U2713HM).

<comment><USER13> I've had this debate with my wife before. She absolutely pummels her MB Pro from 2012. Keys are breaking, she has a gazillion windows open (including vmware since she runs an old quickbooks on windows), desktop completely covered in photos of family/kids. I look at how she 'works' and I think at first 'wow, what a mess'. But then it's clear it's totally just a lower rung tool for her business - she is not in the tech space.

For anyone who doesn't program or create all day on a screen, it's hard for them to empathize. But all these things are real to me. Knocking 30s off a build can knock off 10-30 mins of wait time a day. It all adds up. On a scale from 1 - 10 (10 being an ultra maxed out everything machine) I usually hover around 7-8. I know after all these years that my concentration and execution are the most important thing I have and I don't need workspace things to get in the way of that.

Sadly, headphones are a part of that now. ;-(

</comment></comment><comment><USER30> There's a balance here. I don't like the idea of talking without producing either, but using this as an argument to shut down all discussion about working environment isn't going to help matters.

Headphones are a big topic of discussion because default working environments are so far from what many of us find optimal (and, indeed, what seems to be empirically optimal if you look at the studies in Peopleware).

</comment><comment><USER31> I do not see anything strange in it. Author seems to be forgetting that while there is a myriad of frameworks and programming languages, we all share similar work setups and needs. Also, while a newbie might be afraid to talk with 'pros' about advantages of hygienic macros, he knows what headphones make him comfortable at work. I would redefine 'metaprogramming' as 'stuff that most of the programmers have in common'. That's why they talk so vividly about it.

</comment><comment><USER32> Okay. So this is a meta-metaprogramming blog post.

<comment><USER33> That's a meta-meta-metaprogramming comment.

<comment><USER34> throw new StackOverflowException("This ends here!");

</comment></comment></comment><comment><USER35> Can't believe he didn't mention text editors or indentation!

<comment><USER36> Why would he? I think the general consensus nowadays is that Sublime and tabs is the best option.

<comment><USER37> > tabs is the best option

You nearly got me.

</comment></comment></comment><comment><USER38> So I should be guilty for asking for a silent working atmosphere, a decent laptop and perhaps a second screen while the execs get the latest iteration of the iPhone every year. Right.

</comment><comment><USER18> I don't agree. Of course a car mechanic can do his work with just the most basic set of tools, but will he be as productive as someone using the newest stuff that enables him to work faster ? Probably not. There is actually value in having a faster computer, bigger screens and even better chair as a programmer.

</comment><comment><USER39> metametaprogramming (verb.) The act of talking about people talking about programming, rather than doing any actual talking about programming.

<comment><USER40> When did the term lose its original meaning? [1] Or am I missing some kind of joke?

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

<comment><USER41> It hasn't. The blog post is making a joke:

"You might have thought that metaprogramming meant macros, type introspection, that kind of thing. Nope, I'm hijacking the word for today:"

</comment></comment></comment><comment><USER42> Bikeshedding. [https://en.wiktionary.org/wiki/bikeshedding](https://en.wiktionary.org/wiki/bikeshedding)

</comment><comment><USER43> Reminds me of this: [https://xkcd.com/1629/](https://xkcd.com/1629/)

<comment><USER44> Sounds like devops

</comment></comment><comment><USER45> I'm in charge of acquiring equipment for all of our employees -- and I can tell you that tastes vary, but once a person has a good environment set up, they tend not to change it unless forced to do so by hardware failure or similar external event.

One programmer asked for 3 1440P 27" monitors, a specific trackball, and maxed-out RAM. We had to figure out support for a new video card for that. Four years later, I think it's time for an upgrade to SSD, but they are not likely to think about it until I suggest it. Everything works, and they are comfortable, so they are productive.

</comment><comment><USER46> _"...he would only ever consider someone to be a good programmer if they had a twitch livestream about programming..."_

I don't do twitch. Come back to me in ten years if it's still around, maybe I'll have time for it.

But I make videos of my programming and add commentary as I go. I doubt anybody watches it, but I found it most enjoyable -- makes me think and vocalize each thing that I'm doing. Plus it gives me a good excuse to talk to myself.

<comment><USER47> plus it keeps you from getting distracted. I did have a twitchstream of me coding once. It was awesome. Not once I got distracted, even though noone watched.

</comment></comment><comment><USER48> Come on now, we _real_ metaprogramming wimps carry our own keyboards with us and don't even bother to complain about the one provided. :-)

Otoh, as an Emacs user my mouse costs about as much as one of the black espressos I exclusively drink for coffee. :-)

Edit: This made me feel like the wimp I am. Time to stop the singer songwriters on my headphones and play some black metal. (And go to the gym for deadlifts or squats this evening.)

<comment><USER30> With a real, live, META key?

<comment><USER48> I don't think I've even seen that key since I was a student... "Das Keyboard" have that? Should order.

(Just got the best feel I could find in the stores. I paid 70 Euros, maybe not cheap but fram from extreme. I only play a snob on internet. :-) )

<comment><USER49> The Happy Hacking Keyboard has a meta key. Not cheap though...

[http://www.google.com/images?q=Happy+Hacking+Keyboard](http://www.google.com/images?q=Happy+Hacking+Keyboard)

</comment></comment></comment></comment><comment><USER50> > I've seen artists who demand the luxurious corner office, with the luxurious > view, and then put paper over the windows to stop the light coming in. I've > seen companies buy MacBook laptops for every employee, even though they're > never taken away from the desks.

Well, the artist probably has a Mac laptop, with the horrible glossy screen, which basically requires that there be no light in the room …

</comment><comment><USER51> TLDR: Some things are more important than others, but it depends on the person and/or domain.

I think a few of these items are a bit more than debating the unimportant. I don't personally feel like I need "the perfect" setup, however there are a few things that I think make me leaps and bounds more productive. Working on a few older platforms that you have to build locally can cause some machines to really bog down and chew up a ton of your development time - taking us back to the the old, "hardware is cheaper than programmers" concept that another commenter mentioned. There have been many productivity experts saying that in every field, having an extra monitor can give you huge efficiency gains. I find I got the most gains adding up to 3 monitors.. the 4th wasnt as much of a gain. I think this is domain dependent though. When working as the sole developer on small websites for clients as a side business, I really only ever use two monitors at most. Headphones, keyboards, and chairs I think are the most "diva" things to spend a bunch of time on. Yes, the chair has to be comfortable, the keyboard has to be accurate, and the headphones have to work for your work environment. However, like delivering software, sometimes good enough is better than perfect. Having an office diner of any form I think is a productivity play. If you are hungry, you are not at your best. If you have to figure out what you are going to go out and get you are taking more time - plan what to get, travel to get it - instead of just grabbing something quick across the office and eating it at your desk. I want to be productive. Not productive to the max, navigating through every single minuscule inefficiency, but making changes to get the most gain. Everyone has their preferences and friction points. If you are pissed off at your tools a good portion of the time, you probably aren't going to be as productive.

</comment><comment><USER52> I actually found the post to be mostly true - at least for me. It struck me on a personal level because I find myself talking about being an indie game developer. I have cool hardware, all the game programming books, and some interesting prototypes, but I still haven't shipped a game. Talking about it is just easier and more fun than actually doing the work.

</comment><comment><USER53> > _Gotta have that 40 " monitor, it's essential, can't work without it_

And I was thinking I ought to be content with my 27"

<comment><USER54> I used to be that guy that proclaimed I could not work if I did not have 2 monitors of at least 21 inches in size...

But, 2 * 21" (FHD LCD) became 2 * 24" (FHD IPS), which I upgraded to 2 * 27 (Apple 2560 * 1440), which I now consider to replace by 2 * 42" (4K). Have I became 10x more productive by it? No. Can I work without them? Sure. Do I enjoy working on those huge screens? Hell yes! And since screens are not that expensive anymore, why not? I spend 10+ hours a day in my office, so why not try to make that time the most enjoyable I can?

<comment><USER55> "...I spend 10+ hours a day in my office..." \- I agree that there should be an upside to a statistically shorter lifespan.

</comment></comment></comment><comment><USER56> There are things that you will understand only when you have become a very good programmer. What this article says is "I have no idea how that must be" together with "There are so-so programmers that imitate very good programmers without knowing why.".

I agree with the last one, not with the first one. For example the more time you spend programming, the better you get but also the more important it becomes to have a good chair, desk, tools. Especially the chair, it is a health problem!

Then there are the perks he complains about, like food. They say 20% of your energy is consumed by the brain. What you eat directly affects how good you think and how much you can produce with your brain. Almost all the perks I have seen at top companies are nothing more than a recognition that employees are more productive if you give them these perks. It's all about money.

<comment><USER4> Definitely with you on the chair!

The other tools, so long as they're adequate, don't need to be that shiny... IMHO

<comment><USER56> yes, it depends on what you actually do.

</comment></comment></comment><comment><USER57> In the audio and electronic music world, this is often called GAS -- Gear Acquisition Syndrome.

</comment><comment><USER58> I will have a stronger opinion about chairs and keyboards not because I think they're more important, but because I have more experience with them. And that experience is far easier to gain.

Most of the consequences of choosing a particular programming language or technique will only come out months or years later, and often those results will have a very muddy connection between cause and effect. I'm way less likely to go on a forum and talk confidently when I would have needed to do multiple projects taking years to have a definitive answer.

On the other hand give me a keyboard for a day and I'll happily wade into an argument about it after typing a few thousand letters on it.

</comment><comment><USER59> That's the way people are about everything. Read many of the comments on HN and you will come to the same conclusion. We like to "bullshit" and tell anecdotes. This is fine for being social but it's a very inefficient way to learn and pass on knowledge.

In all the noise, however, there is a lot to be learned so I decided to extract some of the information on various topics. For example, On the topics of standing desks, keyboards, RSI, etc, I've created some org-mode notes on Github.

[https://github.com/melling/ErgonomicNotes](https://github.com/melling/ErgonomicNotes)

</comment><comment><USER60> I came into this comments section to post about how I didn't actually know any programmers who acted as the author described, but in seeing the other comments I guess I've just been extraordinarily lucky not to have to work with divas.

Of course I and others I know have preferences about chairs, keyboards, and monitors, but not so much that they claim they can't to their jobs. Quite frankly, I wouldn't want to work with somebody like that. Who wants to work with somebody who thinks their skill set gives them licence to bitch and moan? Who wants to work with somebody who bitches and moans, period?

</comment><comment><USER61> This is quite a straw man argument. The points are a distorted version of reality...

why people complain about their tools instead of programming? Well, tools are important... I like to wait less time to see my program compile and I want a good keyboard so I keep RSI under control. These are relevant parts of my profesional life that, yes, are not exactly programming...

Sure, people like to argue about these things because everyone have an ass and an opinion about chair and non Swift developer don't have a lot to say about Swift, and sometimes too much...

But this is pretty much a textbook example of a straw man argument...

</comment><comment><USER62> My group at Microsoft was notorious for not spending money on hardware.

I did some math. If the money they spent halved my build time (easily possible at the time, since we were on spinning rust and they wouldn't spring for SSDs "because everyone will want one, and _then_ what?") then they could afford to buy me a new computer every couple of weeks, more often if you computed the $ lost from the average imputed load (of $500K/year) of an employee.

Bean counters. Feh.

<comment><USER23> At a previous employer, one of my colleagues needed a bigger HD. He spent _months_ struggling to get it and ultimately gave up and made do.

But I was wise to the ways of this company, and I also needed a bigger HD, so I simply requisitioned a whole new PC and it arrived the next day. Its about whatever makes the paperwork easier...

</comment></comment><comment><USER63> Agree with much of this but the expensive equipment thingy is partly like the wedding ring: you don't need it, but you don't want to work for someone who is to cheap to give you a decent machine.

Chances are if they want to shave USD500 of your equipment once every three years they will also want to fleece you everywhere else to.

Says the man who works off a single laptop that he hates, I know my company cares anyway. ;-)

</comment><comment><USER64> > When did the messenger become more important than the message?

Never? The arguments presented are really just hyperbole that applies to all industries.

Yes I can code with an old machine, yes I can code with a small monitor, but give me a beefed up OSX and two monitors and I'll be insanely more productive. Why shortchange something that will pay for itself almost immediately?

</comment><comment><USER65> I hoped this was about high level future programming stuff :/

Like arguing with AI on the requirements of a new project it will implement.

</comment><comment><USER66> Some people I've worked with switch between vim, emacs, Sublime and back again, for weeks at a clip, and can rattle off the finer points of each. To each their own, I suppose.

And those damn clacky keyboards of course. Not a real programmer if you don't have one of those.

<comment><USER67> Since I switched to an MS ergonomic keyboard and mouse, I never want to go back to a normal keyboard again. Have one in the office, and one at home. All wrist pain that I had gotten from normal keyboards, and especially working directly on the laptop went away in a matter of hours.

</comment></comment><comment><USER68> This is a misuse of the prefix "meta". "Meta" does not mean "reflection over X". It means "X about X". Saying "metaprogrammer" means "programming about programming". The conventional use of the term "metaprogramming" is correct; unless you can claim that discussing desk chairs is somehow programming about programming, the use of the term metaprogramming to describe this is simply erroneous.

(I'd also like to add that deliberately trying to fracture a word into having two completely different meanings just because you think that word sounds cool is to deliberately reduce the accuracy and unambiguity of human communication and perpetrate a damage to the English language, which is pretty obnoxious.)

<comment><USER69> Way back when, in ancient Greek, "meta" just meant "alongside" or "next to" or "after".

Then Aristotle wrote a book called "Physics" (though its subject was broader than what we now call physics) and another book whose title has been lost, about more abstruse things. It was typically shelved next to the "Physics" and listed after it in catalogues, and it was alleged that Aristotle thought its contents should be taught later than those of the "Physics", and it therefore came to be known as "Metaphysics": the thing that comes after the "Physics".

Because the stuff in the "Metaphysics" was felt to be deeper and more advanced than the stuff in the "Physics", "meta-" came to mean something like "beyond" \-- with indeed a connotation of "X about X", but by no means always. "Metamathematics" is mathematics about mathematics, but "metapolitics" is theorizing about politics, not doing politics about politics.

(The above may sound ridiculous, but it really is where this usage of "meta-" comes from.)

I agree that it's weird to take "metaprogramming" to mean "discussion of things like office furniture, big monitors and text editors", and that "metaprogramming" already has a meaning and that that isn't it. But the problem isn't that "meta" can only mean "X about X"; that simply isn't true.

</comment></comment><comment><USER70> "When did the messenger become more important than the message?"

About five minutes before _complaining_ about how the message isn't important any more became more important than the message.

</comment><comment><USER71> You could rant all you wanted but why did you have to give a bad rep to the term 'metaprogramming.'

I think what you described can adequately be called something like 'hipster programming'.

</comment><comment><USER72> I've yet to see any correlation at all between executive pampering - <USER2> many orders of magnitude worse than hypothetical developer pampering - <USER3> productivity.

</comment><comment><USER73> >You might have thought that metaprogramming meant macros, type introspection, that kind of thing. Nope, I'm hijacking the word for today:

Not hijacking. Overloading. ;)

</comment><comment><USER74> For the record, I use Senheiser C500 headphones. They cost about £30, but the bass response is fantastic for an in-ear bud.

</comment><comment><USER75> "Computer science is no more about computers than astronomy is about telescopes" Edsger Dijkstra

</comment><comment><USER76> Moar stickers!

</comment><comment><USER77> And I thought this post is about writing programs that write programs. Metaprogramming.

</comment><comment><USER78> I consider this article to be the über meta-troll.

Writing a blog entry discussing about how the community discusses about things surrounding their jobs rather than actually doing it, rather than actually doing one's job is either a very clever pun, or very short-sighted.

This entry also documents how one-liners can get a bit confusing.

</comment><comment><USER79> The older term "blogrammer" seems better.

</comment><comment><USER80> This article is the perfect example of the problem it describes. Very meta.

</comment><comment><USER81> If the author of that blog doesn't see the benefit of a larger workspace area (monitors, configuration, etc) then there is no point in reading anything else he writes.

Why are stuff like this on HN?

<comment><USER82> Well, if he'd written an article saying a larger workspace area is nice, would it have hit the front page of Hacker News?

<comment><USER81> I get your point, but I'm not here to be trolled.</comment></comment></comment>


Ask HN: Modern Acme/Wily editor clones? - <AUTHOR> After spending a few days fiddling with Plan9/Inferno, the Acme editor/"IDE" has grown on me somewhat (it's an acquired taste, but exceptionally handy to, say, run a command from inside it with a click and have the output on a new buffer).
So I started asking myself if there were modern alternatives that could be used with a trackpad, had syntax highlighting and other niceties that the Plan9 zealots consider "unfeatures" (and are thus absent from Plan9 in User Space or Acme-SAC).
After all, with a new fancy Webkit-based editor coming out every month, someone would have thought of that already, right?
But, alas, no. There's http://jakme.googlecode.com (which seems little more than a PoC) and https://github.com/fmoralesc/plan9-for-vimspace (which is promising, at least for me), but nothing else I can find.
Is there anything else out there? <comment><USER2> I use acme on a daily basis for Real Work™. Previously, I was an Emacs junkie, but upgrading el-get caused me grief for the last time.

I haven't heard of anything about "modern" acme clones, but I've actually found acme as-is from p9p to be palatable on a MacBook Pro. There's one chord that I've found to be nigh on impossible to sort out (for those keeping track at home, the 2-1 "execute with argument" chord), but I find that I don't really use that one a whole lot anyway.

On Linux, YMMV, but I've noticed that it's more than usable on a ThinkPad with the standard fare TrackPoint pointing device, at least once you disable, e.g., Canonical's emulation of middle-button scrolling as you'd find it on Windows. Once you get past that, it's swell, and all of the chords are accessible.

As far as some of the "unfeatures" concerns go, taking note that I'm not a Plan 9 zealot but a disciple of the Unix way of small, composable programs that all do one thing and one thing well, I can understand why something like syntax highlighting would be labeled an unfeature. Acme only provides an editing surface and a way to make text active; the rest of the functionality is provided by the myriad little programs that you likely already have installed.

Syntax highlighting would have to be provided in some form by an external program, and if such a feature were to be implemented, the community would want it done right and in the spirit of Plan 9 and Unix.

To play devil's advocate for a moment: ANSI (or some other encoding for this information) would be a suggestion, but then the concerns would likely arise about hiding information behind the text, which has been given some degree of meaning outside of merely being something painted to the display. Or, perhaps, someone would ask why there's a half-cocked reimplementation of drawterm suggested being embedded in acme.

I'm sure you'll find that a lot of people would not be opposed to seeing syntax highlighting and on-the-fly indenting and similar enhancements make their way into acme. The detractors will likely oppose the additions on the grounds that it may make acme more monolithic, depending on how each embellishment is written into the editor.

<comment><AUTHOR> I see your points, but I disagree with highlighting being provided externally. The text rendering surface ought to be able to do it -- there are plenty of libraries that do a decent job of language auto-detection, for instance, all the more so in the JavaScript space.

My curiosity stems mostly from the fact that things like CodeMirror and ACE have been available in the JavaScript universe for a while (and LightTable, Atom, etc. leverage those kinds of "surfaces") and yet nobody seems to have tried to get, say, node-webkit to run something like acme.

So 1) all that's really necessary is the smart surface, 2) there are known instances of said surfaces (and plenty of people using them for a new generation of editors) and yet 3) nobody seems to have thought of reimplementing acme atop them.</comment></comment>


Famed mathematician claims proof of 160-year-old Riemann hypothesis - <AUTHOR> https://www.newscientist.com/article/2180406-famed-mathematician-claims-proof-of-160-year-old-riemann-hypothesis/amp/ <comment><USER2> In case you missed the previous 17 submissions:

[https://hn.algolia.com/?query=Riemann&sort=byDate&prefix&pag...](https://hn.algolia.com/?query=Riemann&sort=byDate&prefix&page=0&dateRange=all&type=story)</comment>


Should I buy my own GPUs for deep learning? - <AUTHOR> http://blog.floydhub.com/should-i-buy-my-own-gpus-for-deep-learning/ <comment><USER2> The rapid pace of new GPU hardware releases is a deterrent to owning GPUs for sure. The K80s currently on AWS/GCP/Azure aren't the greatest, but they will all soon have Pascal P100s and may be even V100s in the near future. Not to mention TPUs, which will only be available on Google Cloud

</comment><comment><USER3> Funny how a cloud hosting company thinks it's better to host things in the cloud.</comment>


Simple way to create disposable chat rooms or integrate chat into your website - <AUTHOR> http://deadsimplechat.com <comment><USER2> Does seem a bit broken, some simple validation on names and rate limiting/checking for duplicates on messages will help from people spamming and trying to get script tags to run.

A set height and Overflow:scroll on the livechat div as well as the user list div seems pretty mandatory as well.

"Private" rooms seem to be getting the broadcasts from everyone or everyone is being placed into the same 'private' room, can't tell which.

I can open up as many 'user' views as I want with the same session id (on connection if session id exists load them into the chat else prompt them for the username).

edit: I see the validation now, checking if sessionStorage.username is undefined doesn't seem to be working though. Refreshing the page breaks as well, never triggers the loadhistory event that way.

It's cool, socket.io is pretty awesome, needs a little more work though

</comment><comment><USER3> Seems like a functional chat system, but it seems too simple to be of any use for a web application, with the whole thing being held in-memory.

Try adding your disposable rooms to my chat app, which has direct/private messages, persistence, and a lot less code.

[https://github.com/dparise/chat-app](https://github.com/dparise/chat-app)

</comment><comment><USER4> I think I find Together.js a little easier to use and integrate. At least, it passes the Grandma test - as in "Grandma, go to this site and press the Together button.."

[https://togetherjs.com/](https://togetherjs.com/)

</comment><comment><USER5> There's a few hundred people in the "private" chat that I just generated...

</comment><comment><USER6> lol broken as all hell</comment>


Artificial Intelligence and Magical Thinking - <AUTHOR> https://edwardfeser.blogspot.com/2019/03/artificial-intelligence-and-magical.html <comment><USER2> "Indeed, that's the whole point of a computer in the modern sense. It's a way of using utterly unintelligent physical objects and processes to mimic various intelligent activities – just as various utterly non-magical objects and techniques provide an entertainer with a way to mimic magic."</comment>


How to not let failure hurt morale and diminish ambitions like at Yahoo - <AUTHOR> http://www.startupmngr.com/how-to-not-let-failure-hurt-morale-and-diminish-ambitions/ <comment><USER2> I have no idea what the context is here. Imagine a company that has $1M of revenue in a certain year.

It is one thing to set a goal for $3M in revenue and end up with $2.8M.

It is another thing to wind up with $1.2M.

If the $3M was really a "best estimate" of revenue odds are you are going to be a little high or a little low and I would not get excited about it.

In the other case you are talking about a real failure.

Practically I see people react emotionally to these things in ways that are often irrational. Practically there are organizations that lumber along for decades setting big "stretch" goals that they never meet and the employees really get used to it and don't get excited about it.</comment>


Arecibo message - <AUTHOR> https://en.wikipedia.org/wiki/Arecibo_message <comment><USER2> I created an animation of the Arecibo message in less than 1kb of Javascript: [https://js1k.com/2017-magic/demo/2843](https://js1k.com/2017-magic/demo/2843)

Here's a video of the animation playing: [https://www.youtube.com/watch?v=zMzwmdaloXc](https://www.youtube.com/watch?v=zMzwmdaloXc)

It was a lot of fun to put together, and I know where was a lot of human thought put into the message, but after working with the data of this message for dozens (hundreds?) of hours finessing it and making it as small as possible, the longer I looked at it the less I believe any alien receiving it would be able to decode the meaning we communicated in it. I imagine it's evidence of terrestrial intelligence for aliens who might wonder if they're alone, but I'm not sure how well the intended meaning of the message itself will come through to a non-human being if it's not even obvious to a human being that already knows what it is.

<comment><USER3> It's a big problem not knowing the audience.

[1] 47:00 [https://youtu.be/_ZG8HBuDjgc?t=47m10s](https://youtu.be/_ZG8HBuDjgc?t=47m10s)

</comment></comment><comment><USER4> I can't be the only person who thinks that broadcasting with the intent of advertising our presence is at best, pointless, and at worse dangerous, right? Passive SETI is great, if unlikely to succeed, but this just seems like a bad idea.

<comment><USER5> I see you're also a proponent of the "Dark Forest theory".

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

<comment><USER6> It doesn't really matter who's a proponent of what - if life is not singular then you have to assume it's relatively common, and then you have to assume that messages like this will reach aliens on a wide spectrum of hostility and advancement.

<comment><USER7> Unless some unknown physics makes space-opera style fast travel possible, what would be the meaning of hostility? Based on what motive? Expressed how? Space isn't tribes of chimps in adjacent trees.

If we find aliens it will be more like "Don't let the Great Filter get you and maybe we'll have a really slow conversation."

<comment><USER6> Relativity muddles things a bit. If any civilization lives on a ship that can get near the speed of light, coming to destroy us would take only a few hours or days in their time, even if it took hundreds of years in hours.

<comment><USER8> But why bother using all that energy? And It will be a huge amount to get light years down to hours.

What threat would we be to them?

<comment><USER6> We're always a threat. All we need today is a closet Hitler type rising to power in any of the nuclear countries - and that's just today. No idea what socio political landscape will be when the world is hot, water and food scarce, and we know there are aliens out there.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> > The number 1,679 was chosen because it is a semiprime (the product of two > prime numbers), to be arranged rectangularly as 73 rows by 23 columns.

Why not pick the square of a prime number, so that it can't be arranged to wrong way?

<comment> V-2 Perhaps the clear difference in entropy between 23x73 and 73x23 renderings actually stresses the fact that the data conveys a thoughtfully arranged message of some sort.

<comment><USER9> IMO the choice of a nondiscrete semiprime data length is a pretty good indicator that it isn't random either…

</comment></comment></comment><comment><USER10> Something that always bothered me about this transmission is the fact that the numbers at the top are said to represent 1-10 in binary format. However, when I look at this, when you get to the 8th digit, it shoves the next block out to the side, representing an overflow so that additional numbers can be represented. Is this not representative of the very definition of how to express numbers in a different base? This isn't binary, it's octal. When you rollover after the 7th digit, you have a new set of 8 characters that can represent a discreet unit. I sort of understand how they are passing this off as binary, but without reading an explanation of what this represents, my first instinct is to consider it octal.

<comment><USER11> > This isn't binary, it's octal

Potato, potahto.

<comment><USER12> Not if you own a Heathkit H-8, it isn't.

(Possibly the only computer made ...note that qualifier, please ... that required most users to learn a number base in order to operate it.)</comment></comment></comment>


Researchers Could've Made Lots of $$$ Off Volkswagen Debacle - <AUTHOR> http://www.travisdeyle.com/musings/volkswagen.html <comment><AUTHOR> The big question for Hacker News investment experts: Is this legal?</comment>


Deus Ex: The Eyeborg Documentary - <AUTHOR> http://eyeborgproject.com/2011/08/eyeborg-activated/ <comment><USER2> What I would be worried about is that bionic people would totally depend on a company: "Your iLeg 3 is broken? Too bad this version is not supported anymore. Upgrade to iLeg 6 for $6000 only!"

<comment><USER3> This is why you should use bionic implants based on open source hardware and software! :-)

<comment><USER2> And Google would release Cyborg, an "open source" firmware communicating with your GPS chip in your Android phone and... Oh wait! We're screwed o_0

</comment></comment></comment><comment><USER4> The firefighters mask is pretty dang slick.

<comment><USER5> The video of it seemed simulated. The interviewee mentioned that they hope to have a "working" prototype soon, implying that the current version is not fully functional.

<comment><USER4> real or simulated - I just like the concept and design.

<comment><USER6> The concept is similar to the nanosuit upgrade options from Crysis 2:

[http://4.bp.blogspot.com/-ExftBi3eFbk/TduRFFcvGNI/AAAAAAAAAD...](http://4.bp.blogspot.com/-ExftBi3eFbk/TduRFFcvGNI/AAAAAAAAADs/1sHLFI- DDwc/s1600/nano+suit+module+select.jpg)

</comment></comment></comment></comment><comment><USER7> The video would be better without showing the same snippets from Deus Ex trailer over and over and over :)

</comment><comment><USER8> is it odd that im waiting for the day when i can get bionic arms and legs?

<comment><USER7> You need to upgrade your spelling augmentation.</comment></comment>


Play the classic snake game with Vim keybindings - <AUTHOR> http://www.vimsnake.com/

<comment><USER2> Bookmarked. I dunno about honing Vim skills since it's rare that I'll use it like this (especially given how much I depend on easymotion), but this is incredibly fun.

Powerups that let you jump a 'word' ahead as a future update maybe? :D.</comment>


Getting Around That Pesky Speed of Light Limitation - <AUTHOR> http://devcentral.f5.com/weblogs/macvittie/archive/2009/07/06/getting-around-that-pesky-speed-of-light-limitation.aspx

<comment><USER2> This is much like what we've been doing in grid computing by "moving the computation to the data" since in some cases that is the _only_ practical way you can work with petabytes etc.

It's also similar to trading companies moving their code around the world every day as financial markets go live since the latency back to the home country would put them at a competitive disadvantege.

And it's also obviously quite akin to the application delivery techniques that CDNs have been doing for some time (getting more than simply files closer to the delivery point).

All very interesting stuff. If there was a clean API to "just do it" for us little guys that would be awesome.</comment>


Consumption of ultra-processed foods and cancer risk - <AUTHOR> http://www.bmj.com/content/360/bmj.k322 <comment><USER3> The largest data set I've come across so far in nutrition studies and seems like they put a lot of effort into the data analysis to correct for other cancer promoting factors like age, gender, physical activity, smoking behavior etc. (Overall pretty impressive study in my opinion, although I'm not an expert)

Yet, for example, the group with the highest amount of ultra processed food in their diet contains 6% more smokers and 10% less physical activity. They correct for each factor individually but the combined effect of the two might lead to a higher risk than expected. To get these combined effects right you need a lot more data though and it's probably hard to get good statistics on people which do a lot of sports don't smoke and eat a lot of ultra processed food.

Which brings me to the question, why for these studies it is always so desirable to find out the increase in risk of a single factor. I would expect a statement like "if you neither smoke, do sports, and eat healthy food you have x% less chance to get cancer" to be more sound.

<comment><USER4> "Which brings me to the question, why for these studies it is always so desirable to find out the increase in risk of a single factor. "

I would say remains of Descartes etc. The (outdated) philosophy, that everything can be broken down to single factors and then correctly calculated ... It took science some time to realize that the world is too (infinite) complicated to be calculated.

It surely helps though, to know the probable impact of single factors. But I believe we still generalizing way too much. Fat is bad, Sugar is bad, Cholesterine is bad (no wait good), Alcohol, smoking etc. ...

Which, I believe is stupid, when humans are complex and moderation and balance is the key. (even smoking can be beneficial I believe, for certain people at certain times, not as a addiction, obviously)

So seeing those single factors from studies help us as guidelines, but shouldn't be taken literally.

<comment><USER5> Do you have an example in mind for when smoking would be healthy for you?

<comment><USER6> When it acts as a very occasional mental salve in the face of undue stress?

<comment><USER4> For example.

But also when it comes more in a form of a ritual for spiritual (or psychological) progress. Many native american traditions used it that way, or as a way to bond in a group and solve complicated matters like peace and war.

When consumed in small quantities, I believe the body and lungs does not sustain harm - short stress yes, but not real harm. (just training?) Don't know about any studies which support that, but that is my personal experience.

<comment><USER7> Didn't most studies found correlation between smoking and cancer as well as a myriad of other diseases but didn't actually managed to corolate the number of cigarettes per day to a specific increase?

So while one cigarette every six months might not be catastrophic the difference between a pack a day and a pack a week might not be as big as you think.

<comment><USER4> "might not be catastrophic the difference between a pack a day and a pack a week might not be as big as you think."

Interesting, do you have any studies at hand? (but I would also never argue, that one pack a week is beneficial)

What I could observe with me, that smoking daily clearly (one cigarette) effected my lungs. So the number needs to be much lower ...

<comment><USER7> [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2865193/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2865193/)

This is a newer study which shows same cardio vascular risk, somewhat reduced cancer risk and overall similar overall mortality risk between light smokers (1-4 cigs a day) and heavy smokers.

Light smoking is something which is very hard to study since it's often a transient behavior and people tend not to classify them selves as smokers if the smoke substantially less than one pack a day.

That said I don't really see any possitive effects of light or intermittent smoking it might not be as bad as smoking 4 packs a day but it's definitely outweighs any possible benefits of smoking such as stress relief.

Weed or wanking in the bathroom seems to be a better alternative to dealing with stress....

</comment></comment></comment></comment></comment></comment></comment></comment><comment> open-source-ux This research is quite timely. A recent survey of ultra-processed food sales in 19 European countries showed a wide variety in the purchasing habits of different countries.

UK consumers purchase the most ultra-processed food as a proportion of their diet (50.7%), followed by Germany (46.2%) and then Ireland (45.9%). Portugal consumes the least (10.2%).

France, Italy and Greece all had relatively low consumption figures as well.

Here is the full list (ultra-processed food as a % of household purchases)

1\. UK: 50.7

2\. Germany: 46.2

3\. Ireland: 45.9

4\. Belgium: 44.6

5\. Finland: 40.9

6\. Poland: 36.9

7\. Austria: 35.0

8\. Latvia: 32.9

9\. Malta: 27.6

10\. Lithuania 26.4

11\. Hungary: 21.1

12\. Spain: 20.3

13: Slovakia: 20.2

14\. Cyprus: 20.1

15\. Croatia: 17.9

16\. France: 14.2

17\. Greece: 13.7

18\. Italy: 13.4

19\. Portugal: 10.2

From: [https://www.theguardian.com/science/2018/feb/02/ultra- proces...](https://www.theguardian.com/science/2018/feb/02/ultra-processed- products-now-half-of-all-uk-family-food-purchases)

</comment><comment><USER8> This reminds me of Talebs argument that we should be careful to put stuff through our digestive system that didn't have the chance yet to get filtered out by tens of thousands of years of evolution. That's a pretty extrem position obviously, but I think the general direction makes sense. Even if we can test individual parts of those ultra-processed foods and not find direct risk immediately, the risk of putting all that stuff together in your body 50% of the time may just create way more risk than could ever be found by isolated clinical studies.

</comment><comment><USER9> What always amazed me is why Americans rely so much on processed foods? It seems like a cultural thing - you go out and buy a bunch of packages and then heat them instead of just cooking a meal from natural ingredients like we (mostly) do in Europe. And food companies bend over backwards to make everything even more processed.

What's wrong with fresh tomatoes? Why don't you buy fresh vegetables and make a nice meal at home? Is it about saving time? I could never understand it.

<comment><USER10> > What's wrong with fresh tomatoes?

They're super bland most of the time (unless you're willing to pay a premium for the more flavourful varieties and those can be hit and miss aswell) - <USER2> usually just get canned ones unless I specifically need fresh ones

I do get your point though, making a meal from scratch can be so much better, both taste and health wise, with a bit of practice - not to mention it's relaxing to do the actual chopping & cooking usually

<comment><USER11> Beefsteak tomatoes are super bland, as is iceberg lettuce, because they are selected for volume, not taste (it's the best way to make a profit while keeping end-consumer prices low). Same goes for most large varieties of produce.

Try getting some heirloom tomatoes from a farmer's market, or grow your own. You'll be shocked at the difference. Tomatoes (real ones) have a distinctive and delicious taste!

</comment></comment></comment><comment><USER12> what is it in highly processed food that causes cancer?

is it all processes that do it? or does some highly processed food NOT have a link to cancer because they're processed differently?

<comment><USER13> Though I personally avoid processed foods because I believe that promotes health, I have to caution you to slow down there a second. This is a cohort study, which identifies correlation, but does not prove causation. This work is a call to action to perhaps the same institution that ran the study, or other public-interest institutions, to search for links.

However, if you're very interested in learning about the differences between processed vs. home made food, I recommend "Nourising Traditions". This book, more than anything else, has changed our approach to cooking and food selection. And I can feel the difference.

</comment></comment><comment><USER14> "Conclusions: In this large prospective study, a 10% increase in the proportion of ultra-processed foods in the diet was associated with a significant increase of greater than 10% in risks of overall and breast cancer."

And, here is what _highly processed_ means: "mass produced packaged breads and buns; sweet or savoury packaged snacks; industrialised confectionery and desserts; sodas and sweetened drinks; meat balls, poultry and fish nuggets, and other reconstituted meat products transformed with addition of preservatives other than salt (for example, nitrites); instant noodles and soups; frozen or shelf stable ready meals; and other food products made mostly or entirely from sugar, oils and fats, and other substances not commonly used in culinary preparations such as hydrogenated oils, modified starches, and protein isolates. Industrial processes notably include hydrogenation, hydrolysis, extruding, moulding, reshaping, and pre-processing by frying."</comment>


Show HN: Te – Show network information in colors from the command line - <AUTHOR> https://github.com/hypsurus/te <comment><USER2> ... because C is the language of the future?</comment>


Ask HN: Is it still possible to work in the US as a European? - <AUTHOR> With the H1B visa situation not getting better any time soon, are there still realistic ways of working as a software engineer in the US (especially the Bay Area) as a European, under the assumption that one is not a "rockstar programmer" (and neither studied nor worked in the US before)?
I'm aware of three ways to get a visa as a European, but each of them seems futile:
- L1:  You kind of have to be lucky to find an employer that qualifies for this, or, well, be a Rockstar Programmer™ (and you'll have to work for them one year outside the US first)
- H1B:  Unrealistic, not only because of the cap, but also because of time / effort / risk it takes for the employer
- Diversity Lottery:  Well, that's lottery (chances are not that bad, though)
I find it quite depressing that there's basically no way that does not involve luck to work in the US as a more "average", but ambitious, software developer / engineer. I could theoretically work anywhere in Europe, but well, the interesting stuff seems to be happening in the US (I currently work as a digital plumber, putting my university degree to waste). <comment><USER2> Lots of companies are getting around the H1B cap by setting up satellite offices at universities, since they are cap exempt. You are an employee of the university but all work is directed and owned by the company. Universities pay you out of a grant, which looks good for deans etc. and they take a cut.

Downside is you are typically in the "academic" pay scale, which is significantly lower than typical H1B industry software engineer pay scales. But then again scores of H1B discount themselves because they value so highly being on US soil, so it may not look like so much of a discount to you.

CUNY is doing a program with an entrepreneurship bend, but the sponsors of the program have come right out and said it's a loophole around the cap to get engineers.

I'd think this loophole would be closed but with the overwhelming support for expanding the H1B program I don't think that'll be the case no matter who ends up as POTUS or which party is in control of Congress.

</comment><comment><USER3> True -

You have outlined the options, but added a half a dose of pessimism.

L1 - you do NOT need to be a "Rockstar" or anything close. You need to be persistent and producing code (Github). It can be average code, but many just want to see that you produce.

H1B -- This is kind of true. It's more true if you are only interested in the Bay area.

I would suggest you try to find a large company to sponsor you in a less than perfect location in the US. Getting to the Bay area as from another US city with a year of demonstrated ability it much, much easier.

Keep trying! You will get it!

Hope that helps.

<comment><USER4> Why is it easier to get a H1B visa outside of the Bay Area?

<comment><USER3> Well... I would guess that you misunderstood me. I forget what is "understood", so that's my fault in the communication.

The process to get an H1B visa is the same no matter where you are located.

As you know, the best developers in the world head to the Bay area every year. Comparatively, it's fairly expensive with many companies looking to make as much impact as possible within a short amount of time.

If you're a company taking a chance with the cost of sponsoring and agreeing to a yearly contract for an H1B..where would you want to be?

We'll compare Atlanta and Silicon Valley just for fun. In Silicon Valley you would pay twice as much for salary and be ten times more likely to have your candidate approached (recruited) by competitors. Because of the higher cost of living, you had better be very sure that they have the skills set that you need now and ideally two years later after your company has grown significantly.

If you are in Atlanta, it's half the initial investment. It's less likely that they will be stolen. You can afford to train them (the cost of the senior developer is even less than half of the cost of Bay Area senior developers).

That's more what I meant. Does that make sense?

<comment><USER5> > As you know, the best developers in the world head to the Bay area every > year.

Uh no. Probably some go working for Google and Facebook, but that should be pretty much it.

</comment></comment></comment></comment><comment><USER6> > I find it quite depressing

Quit being so dramatic. There are enough good places in EU. There are loads of exciting startups in Stockholm, Berlin. Google has some interesting stuff going on in Zurich and London.

> the interesting stuff seems to be happening in the US (I currently work as a > digital plumber, putting my university degree to waste).

There are enough plumbing jobs in the U.S. too. A vast majority of startup jobs in the Bay Area are exactly that. Plumbing. You either are specialized, in which case you have those jobs in both the EU and the U.S.

Also, as a person who went thru the H1B, I can say that you will find it way easier with medium sized and larger companies to get someone to apply for an H1B. There is no need for micro-optimization in terms of cities and such.

<comment><AUTHOR> Thanks for your reply. In my particular case, I guess I should be working towards getting more specialized (I'm more of a "generalist" now I'd say).

</comment></comment><comment><USER7> I have seen an increased number of people getting visas based on extraordinary abilities. Some only have a news paper article that someone in their country published and some interesting project they did and that ends up qualifying them for an O-1 visa. You don't have to have a PhD or Nobel laureate to get these.

<comment><USER8> an argentine friend of mine, well known in JS world, has an O1 visa. so did a french friend of mine, who is a renowned graphic designer. but, you really don't need to be tesla or einstein to qualify

<comment><AUTHOR> > you really don't need to be tesla or einstein to qualify

Interesting. I didn't think you have to be a von Neuman, but I always thought you'd have to be of a calibre like, say, Linus Torvalds.

<comment><USER8> nahh... not really. just being above average and having a bit of a high profile is enough

</comment></comment></comment></comment><comment><USER9> Just look at the very large companies -- they have staff trained and ready to deal with visas and have no issues with it. I'm not just talking about the Google/MS/Apple/etc -- just very large companies (GE, IBM, Thomson Reuters, Lexmark, etc)

</comment><comment><USER10> Most H1B visas go to average or below average developers working via large H1B sponsors like Tata, Infosys, Wipro and IBM ultimately working for IT departments of large corporations like banks and insurance companies.

Only a small minority go to high level developers at product companies.

Obviously, these visa sponsor companies (which call themselves "consultancies") sponsor visas almost exclusively for people from India. But, you could try to apply for jobs with them (possibly even through their Indian websites).

Once you are on an H1B visa, you can try to transfer to another more exciting company.

</comment><comment><USER11> If your work is above average then you should not have an issue getting a job from a US company that will arrange all the paperwork for you.

Alternatively you could start by working in an European office, if the company is global and then find a way to relocate in the US.

However, you would be better by working from home and start doing some freelance work until you get to the expert level. Then, you can get a job and work remotely for any company in the world.

Everyone wants talented people. If you are talented it shouldn't be hard to find something good for you. If there is room for improvement do the work and get noticed by others.

</comment><comment><USER12> Sure, it's hard. In your list, you forgot the E visa, which is extremely relevant to the HN crowd. Assuming you have a startup that is starting to take off in Europe, you will be able to move to the US to establish its US branch. It makes complete business sense (for a successful startup to expand to the US), and the visa is very easy to get (provided you use an experienced lawyer).

The E visa may not work for you _today_ , but two years from now, who knows where your European startup will be.

<comment><AUTHOR> Yeah, I guess that would be another option. But not everyone is an entrepreneur. At least I am not.

</comment></comment><comment><USER8> if you are under 35, you can get a J1 visa fairly easy. basically, they bring you over as a paid intern. your salary and real scope of work don't necessarily need to be of an intern

<comment><AUTHOR> I did look at the J1 visa in the past, and as far as I remember it is a non- immigrant visa which basically allows you to work in the US for one internship, after which you will have to leave the country again. What I meant by "working in the US" was something like 2+ years (then there's usually still the green card option).

<comment><USER8> usually you can stay beyond the internship and adjust your status to H1B, O1, F1, ... what you really need is a foot in the door and establishing your presence in the states. once you set your foot on american soil, it gets much easier. any visa is better than no visa</comment></comment></comment>


James Gosling: Some more comments about the Oracle Java lawsuit - <AUTHOR> http://nighthacks.org/roller/jag/entry/some_more_comments <comment><USER2> From a point where he goes slightly off topic, but I really liked it:

 _It's not so much that the game favors evil, but that the definition of "good" is really twisted: Good adj: anything which increases the stock price. Considerations about employees, products, customers and community are all secondary. They only enter the equation as ways to achieve goal 1. Morality or high principles have no place in the corporate discourse. They maximize the stock price, within the bounds of the law. Corporations like Oracle and Exxon tend to be perfectly rational. They "buy laws" because it's perfectly legal to spend money on lobbyists and political campaigns. While you and I might think that it is morally reprehensible to buy elections, like the recent case with Target, it is nonetheless totally legal. Given the rules of the game, it would be bad for a corporation to not buy an election, if failing to do so would negatively impact their stock price. I could rant for a long time on this one, but not today… The whole modern concept of a public company is deeply flawed. But the game is what it is._

<comment><USER3> That's almost verbatim from this movie iirc:

<http://www.thecorporation.com/>

<comment><USER4> Great movie. I tried to get my civics teacher to show it in HS, but my argument that the US is mostly controlled by corps wasn't very good.

<comment><USER5> To help develop your argument, try:

Edward Bernays: Propaganda or the movie "version": Century of the Self (both on archive.org, btw Adam Curtis is about as underrated as Robert Fisk -- no means by accident)

Manufacturing Consent (same spirit movie as in the thread)

Understanding Power (basically they simplify and reiterate stuff backed up in this book)

And and if you are still reading this, have fun reading Dictators, by Jacques Bainville.

<comment><USER6> Robert Fisk's "The Great War for Civilisation: The Conquest of the Middle East" is strongly recommended - a very personal account, and all the better for it.

</comment></comment></comment></comment></comment><comment><USER7> I know I'm going to be downmodded, but I don't care, I want to share my feelings.

Java is one of my least favorite things in the world. Yeah, I know, starving children, war, genocide, that stuff is bad too. But Java is what I hate most.

So it makes me ... gleeful ... to see that Oracle is doing such an amazing job killing it. People want to keep using it, they want new features, they want to improve the ecosystem, they want to pay Oracle lots of money for the privilege of using it. But instead, Oracle sues its users, fires the innovators that made it, and does everything in their power to kill it. And now we have a "dead language"(which, as a Perl programmer, is a term I really like to throw around and _mean_ ).

Anyway, good work, Oracle.

<comment><USER8> Well, no offense, but remind me never to work with you. I'm sorry that the Java programmers were condescending to the Perl programmers back in 2002 but could you just get over it? Sometimes Java is the right tool for a given job. If you're against any platform on principle (aside from the single-vendor principle), then you're guaranteed to be wrong some % of the time.

If all you do is webapps, fine, Java sucks for webapps, continue hating.

<comment><USER9> The Perl programmers I personally know hate Java because it's always been more popular and had more libraries.

<comment><USER7> I hate it because it's designed to prevent me from writing good code. I like writing good code, so I don't like tools that stand in my way. Perl lets me do whatever I want. (Which in my case, is to use a state-of-the-art object system, instead of Java's baked-in 1970s era object system.)

Perl has many more high-quality Free libraries, and I personally know a good percentage of the authors, which makes it all that much more appealing. Java may have more programmers, but there is no community; it's all 9-5ers that couldn't care less about programming.

Honestly, the only language I've ever used that didn't have enough libraries was Common Lisp.

<comment><USER8> 'bless' is state of the art?

<comment><USER7> No, the Class::MOP metaobject protocol and Moose are.

bless is an object system object system. Class::MOP adds introspection and first-class classes, attributes, methods, and so on. Moose is the object system on top of all that.

The flexibility of Perl's original object system object system allows all object systems -- whether they are hand-coded 'bless'-based objects, Class::Accessor objects, Mouse objects, or Moose objects -- to interact seamlessly.

This means the system can constantly improve, and it does. There are hundreds of "MooseX::" extensions that tweak the way a class or object works, and they all compose nicely together because they all follow the metaobject protocol. The MOP allows further extension and exploration, like easy-to-use and efficient object databases (see KiokuDB).

Anyway, Java keeps trying to add extensibility. But its extensibility is tacked on, and it is massively underused by the community. (Too many people _still_ write getters and setters and think they are "programming"!)

Perl has always been about extensibility, and its community has always been about using it. In the 90s (when Java was created) this was maybe not so good. Now, though, it's _awesome_.

<comment><USER8> Well, I agree that Java's bumping into some hard limits -- lack of standard accessor methods as you point out, and no reified generics are constantly annoying. I do think it's reaching the end of it 's natural life and will be looking to move to Go for the same class of problem in the future.

I guess we can just agree to disagree on the rest.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> > > I think it's quite hard to stop fragmentation on mobile without stopping > innovation. Mobile phones differ radically in speed, screen, memory, > bandwidth, input-method, and so on, to produce a single app that runs > everywhere well is a tall order, even if the APIs were identical. J2ME was a > nice try, but the profiles themselves created fragmentation. Android devices > are fragmented in a smaller way by contrast, first, the bar for performance > minimum and OS features are set way higher. Secondly, there's no profiles

> This was very true in the mobile world a decade ago and was a huge driver of > fragmentation; but with todays dramatically more powerful handsets, and > especially given the concentration on high-end handsets, there's no reason > for any fragmentation.

Hrm. He seems to be forgetting how many non-super-fancy-high-end phones there are out there. Ironically, those phones are one reason to keep using Java ME.

<comment><USER11> I use J2ME and enjoy it. I purchased three J2ME applications, worth 100 EUR, that as far as I know still don't exist on "smartphones" (good dictionaries). I also use Opera Mini which is exactly what I need. For me J2ME apps seem to be much "safer" to use than the "smartphone" ones which typically get access to much more on the phone than it would be really needed. Not to mention that the dictionaries do work perfectly "offline."

<comment><USER12> Yeah, Opera Mini 4 not being available on android is a major consoling factor when I decide once again to keep my crappy Symbian phone and spend the money on something else instead. (Opera Mini 5 is available, but it is a horrible usability regression. All the functions I use regularly like "reload"(hi, HN frontpage) and "switch to mobile view" which are at most three key presses in 4 are more than ten in 5, and the font rendering which sometimes seems to use non-system fonts is atrocious, using 50% more space than the small system font while being less readable and still not displaing italics.

</comment></comment></comment><comment><USER13> I can't help thinking that Gosling is very likely to get roped into this thing as a witness, and all his public statements are going to be grist for the two mega-companies' legal mills. If I was him I'd be taking a vacation somewhere without telephones right now. For a year.

<comment><USER14> As "The Father of Java" and an author of one of the patents in question he's probably resigned to getting roped into this (although not necessarily as a witness, maybe only depositions).

<comment><USER15> And, if he gets roped in, he might then be forbidden from commenting on the case. Speaking out now might be the best chance he'll have.

<comment><USER14> I think that would be unlikely seeing as he's not being employed by either company.

He has to observe his non-disclosure duties to Oracle regardless of the suit, although obviously they are going to be a lot more prominent due to it. Oracle could try to take legal action to shut him up but the fallout from that would be catastrophic and they've not shown themselves to be _that_ dumb yet (I think; encouraging most/nearly all??? of their best software developers to jump ship by paying them a lot less is seriously dumb, though, unless they bought Sun's software portfolio purely for its IP as Gosling has been wondering).

</comment></comment></comment></comment><comment><USER16> Cool quote ...

        No matter what the merits of the case may be, or who is
        right, or who has a "right" to do what, the crossfire in
        the battle will be hugely distractive (and I don't just
        mean the patent case). I wish they'd all vent their
        testosterone elsewhere.

In the meantime, no recent news on Java 7.

</comment><comment><USER17> Interestingly relevant to BSD-style vs. GPL-style licensing:

> _The vision of freedom that most of the big corporate interests had was the > ability to make their platform sticky: to destroy interoperability so that > (for example) Java software developed on Microsoft platforms could only run > on Microsoft platforms. They wanted the freedom to capture developers. ... > "Freedom" is a freakishly relative word. The freedom of the large software > companies is directly at odds with the freedom of developers._</comment>