The Metaprogrammer(codersnotes.com)
codersnotes.com
The Metaprogrammer
http://www.codersnotes.com/notes/the-metaprogrammer/
163 comments
The single 4:3 monitor is rather like the famous Van Halen rider about "no brown M&Ms": it's an opportunity to red-flag the employer.
Monitors are cheap, at most one or two developer-days of salary. If you can't get a monitor, what happens when you need to buy some more specific piece of equipment?
A previous employer had an extremely liberal policy on letting us just buy anything that cost <£100. Obviously we recognised this was a privilege that would be taken away if abused, so we didn't use it much, but it was tremendously liberating. Want an evaluation board? Need a cable? Or a book? Done!
Previously I've had to do a PO for a box of M5 bolts. That's the morale-draining opposite, especially if you have to sit around wasting several orders of magnitude more than the cost for the paperwork to be done.
(Aerospace people excepted where it's actually required)
Oh, and it is too noisy to concentrate in this open plan office without headphones.
Monitors are cheap, at most one or two developer-days of salary. If you can't get a monitor, what happens when you need to buy some more specific piece of equipment?
A previous employer had an extremely liberal policy on letting us just buy anything that cost <£100. Obviously we recognised this was a privilege that would be taken away if abused, so we didn't use it much, but it was tremendously liberating. Want an evaluation board? Need a cable? Or a book? Done!
Previously I've had to do a PO for a box of M5 bolts. That's the morale-draining opposite, especially if you have to sit around wasting several orders of magnitude more than the cost for the paperwork to be done.
(Aerospace people excepted where it's actually required)
Oh, and it is too noisy to concentrate in this open plan office without headphones.
That was a funny anecdote about Van Halen, had to read up on it. Here's the link if anybody is interested: http://www.snopes.com/music/artists/vanhalen.asp
It's also a signal as to who's in control of the development process. (Hint: Not the developers.)
>> "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 now prefer a LG 21:9 34". They are fairly cheap, have a good quality screen for long viewing, and the extra width is a real help. I wouldn't buy the thunderbolt version as it really doesn't do the thunderbolt properly.
I think any programmer or manager bitching about developers chairs or screens is a sadist and doesn't really get we have to live with this stuff and it affects our health.
> 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 now prefer a LG 21:9 34". They are fairly cheap, have a good quality screen for long viewing, and the extra width is a real help. I wouldn't buy the thunderbolt version as it really doesn't do the thunderbolt properly.
I think any programmer or manager bitching about developers chairs or screens is a sadist and doesn't really get we have to live with this stuff and it affects our health.
I have an Asus 21:9 29", 2560x1080, not 3440x1440 like the LG you mention (which I've considered). The extra width is nice, and the aspect ratio is perfect when watching movies, but I find I need more vertical pixels.
Instead of the 34", wouldn't make sense to just go 4K (3824x2160) and get it over with? You're getting more vertical AND horizontal pixels. Personally, I'm salivating at the Seiki SM40UNP (40"). Anything smaller at 4K resolution and you'll need display scaling, negating the size gain. I don't think my 2013 ultrabook can drive it at 60Hz, but there are apocryphal reports that I may be able to eke out 50Hz.
Instead of the 34", wouldn't make sense to just go 4K (3824x2160) and get it over with? You're getting more vertical AND horizontal pixels. Personally, I'm salivating at the Seiki SM40UNP (40"). Anything smaller at 4K resolution and you'll need display scaling, negating the size gain. I don't think my 2013 ultrabook can drive it at 60Hz, but there are apocryphal reports that I may be able to eke out 50Hz.
>> Anything smaller at 4K resolution
I have 32" 16:9 Benq at 4K and it's perfectly usable without scaling. You can think about it this way: 32" is double 16" monitors, and 15,6" monitors (rather popular in notebooks) with 1080p are quite usable. And it took me few days to adapt from previous 27" 1080 monitor.
I have 32" 16:9 Benq at 4K and it's perfectly usable without scaling. You can think about it this way: 32" is double 16" monitors, and 15,6" monitors (rather popular in notebooks) with 1080p are quite usable. And it took me few days to adapt from previous 27" 1080 monitor.
Well, when I bought it before the 4K was available, but LG is supposed to have a 4K equivalent coming in 21:9 which would have the same vertical of 2,160 pixels (giving 5,040 x 2,160). I'll get that when it comes out because I like ultra-wide versus buying 2 monitors.
I may be an old-timer and I typed my code into CP/M on a text-only display starting circa 1983 or so. I had to compile the code too and guess what ... it was fast!
But when you've only got 64K RAM there's a limit to how sophisticated a program can be. And when you're writing the type of tools we could write back then, your compilation cycles would be fast too.
Would I go back? Some of my CSS files are bigger than the hand-coded assembly language programs I wrote back then but I still love what computing has become. Many facets of today's systems seem almost unimaginable (except that I was an avid sci-fi reader). So I'll join you in demanding a fast machine so that I'm not waiting for code to compile. And who knows what we'll be building in another 30 years?
But when you've only got 64K RAM there's a limit to how sophisticated a program can be. And when you're writing the type of tools we could write back then, your compilation cycles would be fast too.
Would I go back? Some of my CSS files are bigger than the hand-coded assembly language programs I wrote back then but I still love what computing has become. Many facets of today's systems seem almost unimaginable (except that I was an avid sci-fi reader). So I'll join you in demanding a fast machine so that I'm not waiting for code to compile. And who knows what we'll be building in another 30 years?
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.
As time goes on (16 years as a dev now) I find myself a lot less concerned about this stuff.
Sometimes once in a rare while you want to be able to work totally offline, or in a low-connectivity environment. For example I'm currently on a commuter train on an hour+ ride into the city, and if I want to do everything locally, I can. Options are good. (PS: ask me about working remotely!)
I should be able to run unit tests locally, and have it happen quickly. Added to that, I'm often travelling on the job and sometimes code on the go, massive multicore build machine may be out of my reach
> As time goes on (16 years as a dev now) I find myself a lot less concerned about this stuff.
That's the point, we shouldn't be concerned, and it's best achieved by giving us equipment that lets us take this stuff off our minds
> As time goes on (16 years as a dev now) I find myself a lot less concerned about this stuff.
That's the point, we shouldn't be concerned, and it's best achieved by giving us equipment that lets us take this stuff off our minds
I think the point is that as you gain experience you realise how unimportant your local terminal is.
Engineers tend to grow out of it.
Not that many coders 'often' travel on the job, as a proportion. Most are office-bound.
Engineers tend to grow out of it.
Not that many coders 'often' travel on the job, as a proportion. Most are office-bound.
> as you gain experience you realise how unimportant your local terminal is.
If I may be blunt, bullshit. Working on a remote server, especially one not on your local lan, is a lag filled pain in the ass.
Even if you decide to work on a local editor and upload to the cloud, your write-test cycle will be slower, and the best editors will require quite a few CPU cycles themselves to provide (their version of) intellisense, syntax highlighting, and documentation.
And this doesn't even cover ensuring that the computer is capable of handling remote conferencing - a resource drain to end all resource drains on laptops.
I'd go one step further and say that as I gained experience, I realized the value of the productivity gains from low latency and the freedom offered by working locally (I even keep local copies of documentation websites, so I never have to worry about them being down).
> Not that many coders 'often' travel on the job, as a proportion. Most are office-bound.
Internet can still go out in an office. So can power. People travel, work from home, and sometimes work from a conference. Why limit your employees for the sake of saving 1% of a software developer's salary (less, actually, when you consider amortization)?
If I may be blunt, bullshit. Working on a remote server, especially one not on your local lan, is a lag filled pain in the ass.
Even if you decide to work on a local editor and upload to the cloud, your write-test cycle will be slower, and the best editors will require quite a few CPU cycles themselves to provide (their version of) intellisense, syntax highlighting, and documentation.
And this doesn't even cover ensuring that the computer is capable of handling remote conferencing - a resource drain to end all resource drains on laptops.
I'd go one step further and say that as I gained experience, I realized the value of the productivity gains from low latency and the freedom offered by working locally (I even keep local copies of documentation websites, so I never have to worry about them being down).
> Not that many coders 'often' travel on the job, as a proportion. Most are office-bound.
Internet can still go out in an office. So can power. People travel, work from home, and sometimes work from a conference. Why limit your employees for the sake of saving 1% of a software developer's salary (less, actually, when you consider amortization)?
One more data-point: I've purposefully worked on a thin client. I had an employer that gave us access to powerful machines but not laptop, so I bought a cheap, under-powered laptop and did almost everything on the servers. My experience was that at first it was great and I appreciated the habits the constraints encouraged. Then I took a job where I was given a beefy laptop and immediately noticed a whole bunch of pain points that I had just been living with that disappeared entirely. The good habits from having a low-powered machine can transfer onto a high-powered machine, but there is are a whole lot of little irritations that completely go away when you have more computing power locally available.
Well, my experience on the matter aligns with what falcolas says
I guess using some of my 8 logical cores for background static analysis is archaic now?
Building, editing, testing, all of that is better done remotely with ssh and gnu screen or similar.
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.
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.
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...
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!)
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!)
Cowboys have evolved. Many use ATVs and only infrequently have to use a gun. The hat has stuck around, though - great protection against the sun.
I've attempted to write Java using VIM. I've even been moderately successful. But it's still easier to do with Eclipse or Intellij.
I've attempted to write Java using VIM. I've even been moderately successful. But it's still easier to do with Eclipse or Intellij.
Why?
Not all software is designed to run on servers.
In some cases, building locally will give a quicker response cycle.
Editing locally is almost always a better user experience. Especially if your servers aren't in the same building.
And plenty of other reasons (travel, flexibility, ...)
Not all software is designed to run on servers.
In some cases, building locally will give a quicker response cycle.
Editing locally is almost always a better user experience. Especially if your servers aren't in the same building.
And plenty of other reasons (travel, flexibility, ...)
Depends what you're building. Most of my previous embedded work was done on my desk due to needing the proprietary tools to link to the device.
> Building, editing, testing, all of that is better done remotely with ssh and gnu screen or similar.
Why? I have a full command line suite running on my laptop, because I'm running Linux. Why would I log in elsewhere, when I can run stuff locally?
Why? I have a full command line suite running on my laptop, because I'm running Linux. Why would I log in elsewhere, when I can run stuff locally?
For many reasons. The remote server is in a data center, supposedly better maintained than your PC, it has backups, RAIDx all the stuff. If you automate some tasks, or run long-lasting scripts, it is much more reliable. Also, keeping it in the terminal forces you to use the right tools, e.g. vim/emacs instead of the good old Dreamweaver...
> Also, keeping it in the terminal forces you to use the right tools, e.g. vim/emacs instead of the good old Dreamweaver...
I run emacs locally. In X. That way I can browse the web, view PDFs & images, play Tetris in colour &c. I wonder how advanced the nethack mode is these days …
I run emacs locally. In X. That way I can browse the web, view PDFs & images, play Tetris in colour &c. I wonder how advanced the nethack mode is these days …
Just because I'm working on my PC doesn't mean my changes aren't pushed elsewhere frequently (admittedly the "trunk based development" crowd seem determined to make this less flexible than it ought to be...)
I'm personally an emacs user for most purposes, but I'm not going to claim it's the right tool for everyone, all the time.
I'm personally an emacs user for most purposes, but I'm not going to claim it's the right tool for everyone, all the time.
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).
"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).
> 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.
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.
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).
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.
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.
I think any hobby that attracts interest in the first place also attracts "purists". Coffee. Computers. Photography. Shaving (and the eight different major sub variants of shaving methods). Smoking meat. Smoking tobacco. Vaping. Audio equipment.
Pick a wikipedia page and chances are that scattered across the world, you'll find a handful or more of purists dedicating themselves to that subject. The internet has made it much simpler for these purists to indulge in their obsession with the meta.
Meanwhile most of the people into a hobby keep on just doing it with the equipment and materials they have. The purists do the hobbyist [1] a service in that they discuss every myriad detail at great length, frequently. The hobbyist gets free research this way, and the purist can continue to feel satisfied in their knowledge of the subject.
1. It's not that purists aren't also hobbyists - but their hobby as often the meta of the subject as much as the doing of the subject.
Pick a wikipedia page and chances are that scattered across the world, you'll find a handful or more of purists dedicating themselves to that subject. The internet has made it much simpler for these purists to indulge in their obsession with the meta.
Meanwhile most of the people into a hobby keep on just doing it with the equipment and materials they have. The purists do the hobbyist [1] a service in that they discuss every myriad detail at great length, frequently. The hobbyist gets free research this way, and the purist can continue to feel satisfied in their knowledge of the subject.
1. It's not that purists aren't also hobbyists - but their hobby as often the meta of the subject as much as the doing of the subject.
Add Chess to that list, people argue constantly about which is the best set and which style of pieces are the right ones.
I just bought a 20 dollar vinyl board and some plastic touranment staunton pieces from ebay - the exact same ones the local chess club uses.
I'm also into Cycling and it's much the same there as well, My carbon bike was £800 and I ride it 2-3 times a week, I have friends who spent £4000 and ride it once a month (and have to have full carbon everything) always struck me as crazy but it's their money.
I just bought a 20 dollar vinyl board and some plastic touranment staunton pieces from ebay - the exact same ones the local chess club uses.
I'm also into Cycling and it's much the same there as well, My carbon bike was £800 and I ride it 2-3 times a week, I have friends who spent £4000 and ride it once a month (and have to have full carbon everything) always struck me as crazy but it's their money.
I've noticed in myself the opposite trend: an almost perverse desire to use the worst possible physical tools, so to better distance myself from the "posers". I've happily programmed for hours a day for years on a $300 Acer Aspire One. I still use the same kneadable eraser bought 15 years ago in a cheap tienda. I'll use the cheapest brushes and crappiest car. I've got a cheap guitar, and a cheaper banjo, despite playing in shows regularly. It's like I want to prove to myself that I'm "doing it" enough that I don't need the fancy equipment. But I think it's still just vanity - just in the other direction.
Audiophiles - probably the most prominent example of them all.
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.
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.
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.
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.
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.
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.
"Listeningphiles" "Observingphiles" good point
The opposite is real musicians.
You would be surprised then by how snooty some musicians are about gear.
You don't have a vetted guitar, amplifier, mixer or a microphone? Yep.
That said, they sometimes have a point.
You don't have a vetted guitar, amplifier, mixer or a microphone? Yep.
That said, they sometimes have a point.
Classic wet shaving is a bit like that.
I'm not sure if it's exactly the same as your examples though, as a lot of people into this particular hobby definitely do use and enjoy the different products. "Shave of the day" posts on forums typically show posters different set ups, with the same users having a vast rotation of gear. I guess it'd be like having lots of different pens or skateboards.
But I've also seen many different people say that they started using a DE safety razor to save money, but have ended up spending a small fortune on new gear.
Some video-games also have this in spades. I know I've pored over weapon stats to see which gadget is preferable, when just getting good at the game would have had a bigger impact than 10 more raw power points or the slight speed bonus that a particular hat gave me.
I'm not sure if it's exactly the same as your examples though, as a lot of people into this particular hobby definitely do use and enjoy the different products. "Shave of the day" posts on forums typically show posters different set ups, with the same users having a vast rotation of gear. I guess it'd be like having lots of different pens or skateboards.
But I've also seen many different people say that they started using a DE safety razor to save money, but have ended up spending a small fortune on new gear.
Some video-games also have this in spades. I know I've pored over weapon stats to see which gadget is preferable, when just getting good at the game would have had a bigger impact than 10 more raw power points or the slight speed bonus that a particular hat gave me.
The problem with "just getting good at the game" is that it may take even more time than theorycrafting that has some objectively better result (the usual term that WoW players used when I played at least). With action games there's a certain point when you can play more but you're at a plateau because you're limited by skill and have few means to even know what to improve. Focused practice matters for any activity involving skill, but I dunno what black abyss of learning exists between me flailing my mouse like an idiot and the dudes that no scope headshots on 20 pixels reliably. Industry marketing likes to tell me I need a new mouse (some 4000+ dpi thing), new monitor (144 Hz+), but I think I'm missing something more basic like basic hand-eye coordination that gear will not solve.
I've often said it like this: "There are those who want to be something (a writer) and those who want to have been something." They want to be able to look back and say they were something but sure didn't want to put in the time to actually do it.
Photogrophy is more about thinking in light and shadow than lenses and metapixels. Programming is more about thinking in states and interfaces than keyboards and displays.
You can only master abstract ideas through concrete practice and active thinking about the problems.
You can only master abstract ideas through concrete practice and active thinking about the problems.
[deleted]
Falling down hurts but it's how you get better go out n skate!
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.
In addition to that, I fail to see the relation between people who like to talk about programming through whatever medium ('metaprogrammers') and people who like to have decent tools to work with. Literally every developer I have ever met wants to have a decent computer, multiple screens, fast internet, and access to the proper software tools required to work efficiently.
It strikes me as an incredibly stupid argument to make if anyone thinks you someone is spoiled for preferring good tools to do the job. Imagine a mechanic who can only use even-sized spanners, or a drywaller who can only use 5-liter buckets at a time.
It strikes me as an incredibly stupid argument to make if anyone thinks you someone is spoiled for preferring good tools to do the job. Imagine a mechanic who can only use even-sized spanners, or a drywaller who can only use 5-liter buckets at a time.
Maybe I'm not a decent programmer but I definitely don't want multiple screens. I would perceive such a set-up as unergonomic and creating too many distractions. Nothing against the rest, though.
Probably has more to do with preference and what you're working with. In Web programming having a debugger, the rendered page and your code all up is really nice. I actually have 3 monitors for this.
Doing other stuff you can have stackoverflow, your code, and a gui for version control.
Doesn't hurt to have the extra real estate for command lines, file explorers, email, a crm, remote support sessions, etc.
I think I need more monitors...
Doing other stuff you can have stackoverflow, your code, and a gui for version control.
Doesn't hurt to have the extra real estate for command lines, file explorers, email, a crm, remote support sessions, etc.
I think I need more monitors...
1 -> 2 made a huge difference for me.
2 -> 3 much less (so much so I went from 3 to 2 at home because I wanted the desk space back).
Working on one screen for webdev though is frustrating I agree, I hate working from my laptop now.
2 -> 3 much less (so much so I went from 3 to 2 at home because I wanted the desk space back).
Working on one screen for webdev though is frustrating I agree, I hate working from my laptop now.
It depends on what you are working on as well. When Im doing UI stuff, I love having at least dual monitors. That way I can have the result GUI /web page open on one screen, code and console on the second. This lets me reload without switching windows or workspaces continually. When im doing backend stuff, I can have several consoles doing testing and also for example the design document open while working so i can glance quickly at it. In the end it comes down to what you do, and what you like. I now use a ultra wide 29" screen instead and it works equally or better sometimes. My second monitor only keeps playlists, IM and email open now.
For me, the main use of multiple screens is to separate the "place" where I'm writing from the "place" that I'm looking at - there are many cases where I need to look at something else while editing code or docs, and I'd want to do that without task switching.
So my code would be on monitor 1 and stay there forever, but the various things that I'm reading, e.g. input (documentation, specification, sample data) or output (debug output, logs, testing app) would be on the other screen. The alternative is a large monitor and keeping things side-by-side.
So my code would be on monitor 1 and stay there forever, but the various things that I'm reading, e.g. input (documentation, specification, sample data) or output (debug output, logs, testing app) would be on the other screen. The alternative is a large monitor and keeping things side-by-side.
I only use multiple monitors because 4k/5k screens have not been affordable in the past 10 years. Are you saying that you don't need additional workspace on your screen or that you don't want a workspace divided down the middle?
That's your workflow.
Some prefer two monitors.
I prefer to have two computers and two screens instead of two monitors and one computer.
(double the keyboards)
(double the keyboards)
Have you tried synergy yet? Im using it, and apart from some keyboard mapping issues its working quite well.
Why would you do that? Two keyboards sound a waste of time
I'm just used to it, there's no good reason.
First, I had a desktop, then bought a laptop, kept the desktop in front of me, the laptop on the left. At some point the desktop left my desk and I only had a laptop, then after many minor changes over time [skipping a lot] I found myself in front of two desktops.
But it doubles the power! Isn't it how this work?
But it doubles the power! Isn't it how this work?
It depends. How do you coordinate the work between the two computers?
Currently, one of them mostly acts as a server, and I work with network shares and symlinks.
But that's how I work, I won't force it on anyone else.
But that's how I work, I won't force it on anyone else.
And have you noticed that you only hear these laments when it's programmers? Nobody laments when somebody in the sales, finance, or marketing departments wants nice things. Hell, in the business side of many companies, getting a nicer chair and/or a bigger office is just as much a part of your promotion as the title, raise, and direct reports are.
But it seems that there are people intent on cutting programmers off from the same perks that MBA types consider essential. It would be one thing if this backlash came from management; at least that would make sense as a cost-saving measure, but in the case of this article, it's coming from other programmers. It seems that not only are programmers undercompensated, but other programmers are actively seeking to keep us undercompensated.
Is this crab mentality [0] at work or just ignorance of how non-technical people get compensated?
Either way, it makes me wonder if I went into the right profession. I went into software engineering because I love computers, and coding is fun, but I have to wonder if I'd be better off if I got my MBA instead of a CS degree and went into finance or marketing or something (I know I don't have what it takes to do sales).
[0] https://en.wikipedia.org/wiki/Crab_mentality
But it seems that there are people intent on cutting programmers off from the same perks that MBA types consider essential. It would be one thing if this backlash came from management; at least that would make sense as a cost-saving measure, but in the case of this article, it's coming from other programmers. It seems that not only are programmers undercompensated, but other programmers are actively seeking to keep us undercompensated.
Is this crab mentality [0] at work or just ignorance of how non-technical people get compensated?
Either way, it makes me wonder if I went into the right profession. I went into software engineering because I love computers, and coding is fun, but I have to wonder if I'd be better off if I got my MBA instead of a CS degree and went into finance or marketing or something (I know I don't have what it takes to do sales).
[0] https://en.wikipedia.org/wiki/Crab_mentality
Exactly, all these things are tools of the trade - tradesmen spend money on the right tools for the job because that (and experience) is what separates them from the DIY-ers
on the other hand only a poor craftsman blames their tools.
A good craftsman never has to, because he has the right tools ;)
yes, that is the implicit meaning. But then are programmers, whose tools are generally provided by their employers, actually craftsmen (craftspeople)? That question being part of the general discussion around this post.
On edit: I should clarify there is another meaning, which is that a good craftsperson can do whatever they need to in their chosen craft with substandard tools - this is also the viewpoint the original post seems to ascribe to.
I personally like to use the simplest tools possible to achieve a task, even if that means I have to do more work to achieve the task, because then I don't spend time learning my tools. This means I use a crappy laptop with no external monitor, a simple text editor, the command line for just about everything. When I do end up on someones machine where they have the good tools I find that I am but a simple caveman, confused and enraged by the complexity of other people's worlds. All this does not mean I am a good programmer or craftsman, it just means I find doing without the better tools and hardware suite me better.
On edit: I should clarify there is another meaning, which is that a good craftsperson can do whatever they need to in their chosen craft with substandard tools - this is also the viewpoint the original post seems to ascribe to.
I personally like to use the simplest tools possible to achieve a task, even if that means I have to do more work to achieve the task, because then I don't spend time learning my tools. This means I use a crappy laptop with no external monitor, a simple text editor, the command line for just about everything. When I do end up on someones machine where they have the good tools I find that I am but a simple caveman, confused and enraged by the complexity of other people's worlds. All this does not mean I am a good programmer or craftsman, it just means I find doing without the better tools and hardware suite me better.
> for someone you're paying well into 6 figures for
My first programming job was $32k/year out of college(this was in 2011).
My first programming job was $32k/year out of college(this was in 2011).
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.
[deleted]
"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.
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.
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. :)
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. :)
Whatever happened to "hardware is cheap, programmers are expensive"? https://blog.codinghorror.com/hardware-is-cheap-programmers-...
It doesn't get as many views as a rant about how entitled we are.
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.
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.
> 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.
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.
> "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=10901054
https://news.ycombinator.com/item?id=8735892
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.
A quick search pulls up results that would contradict that statement.
https://news.ycombinator.com/item?id=7436401
https://news.ycombinator.com/item?id=10901054
https://news.ycombinator.com/item?id=8735892
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.
Languages are part of the ergonomics of code writing.
Having decent chairs, keyboards and monitors is also important for health. Yes, I could work on a kitchen chair hunched over a crappy keyboard and illegible monitor for 10 hours a day, but after not very long I'd have headaches, RSI and back pain so bad I wouldn't be able to work at all.
> 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.
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.
>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).
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).
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.
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.
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.
Maybe you won't get something cutting edge in economics, but definitely very good still.
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).
"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).
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. ;-(
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. ;-(
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).
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).
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.
Okay. So this is a meta-metaprogramming blog post.
That's a meta-meta-metaprogramming comment.
throw new StackOverflowException("This ends here!");
Can't believe he didn't mention text editors or indentation!
Why would he? I think the general consensus nowadays is that Sublime and tabs is the best option.
> tabs is the best option
You nearly got me.
You nearly got me.
I beg to differ ;-) See my own $0.02 sibling comment.
Tabs vs Spaces: I hit the tab key and let the IDE manage whether that translates into X spaces or a tab. I set the IDE up to use the language convention. :)
Text Editor/IDEs.... I'll leave this holy war for the truly devout to fight :D
Right. The spaces-versus-tabs debate is fully capable of inciting religious wars. And don't even mention vim-versus-emacs!
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.
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.
metametaprogramming (verb.) The act of talking about people talking about programming, rather than doing any actual talking about programming.
When did the term lose its original meaning? [1] Or am I missing some kind of joke?
[1] https://en.wikipedia.org/wiki/Metaprogramming
[1] https://en.wikipedia.org/wiki/Metaprogramming
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:"
"You might have thought that metaprogramming meant macros, type introspection, that kind of thing. Nope, I'm hijacking the word for today:"
[deleted]
Bikeshedding.
https://en.wiktionary.org/wiki/bikeshedding
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.
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.
"...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.
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.
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.
Got links to share?
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.)
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.)
With a real, live, META key?
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. :-) )
(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. :-) )
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
> Otoh, as an Emacs user my mouse costs about as much [...]
I didn't know a mouse can be an Emacs user. Where did you get one?
I didn't know a mouse can be an Emacs user. Where did you get one?
> 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 …
Well, the artist probably has a Mac laptop, with the horrible glossy screen, which basically requires that there be no light in the room …
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.
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.
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.
> 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"
And I was thinking I ought to be content with my 27"
Eh, you just need four of them, so you have (effectively) a 54" monitor...
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?
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?
"...I spend 10+ hours a day in my office..." - I agree that there should be an upside to a statistically shorter lifespan.
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.
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.
[deleted]
In the audio and electronic music world, this is often called GAS -- Gear Acquisition Syndrome.
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.
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.
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
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
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?
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?
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...
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...
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.
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.
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...
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...
This happened to me at Citrix. I had to bring in more ram to put in the computer because it was just unbearable to run Visual Studio. Some places don't give a crap, you just throw more people at the problem.
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. ;-)
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. ;-)
> 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?
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?
I hoped this was about high level future programming stuff :/
Like arguing with AI on the requirements of a new project it will implement.
Like arguing with AI on the requirements of a new project it will implement.
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.
And those damn clacky keyboards of course. Not a real programmer if you don't have one of those.
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.
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.)
(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.)
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.
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.
"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.
About five minutes before complaining about how the message isn't important any more became more important than the message.
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'.
I think what you described can adequately be called something like 'hipster programming'.
I've yet to see any correlation at all between executive pampering - typically many orders of magnitude worse than hypothetical developer pampering - and productivity.
>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. ;)
Not hijacking. Overloading. ;)
For the record, I use Senheiser C500 headphones. They cost about £30, but the bass response is fantastic for an in-ear bud.
"Computer science is no more about computers than astronomy is about telescopes" Edsger Dijkstra
Moar stickers!
And I thought this post is about writing programs that write programs. Metaprogramming.
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.
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.
The older term "blogrammer" seems better.
This article is the perfect example of the problem it describes. Very meta.
[deleted]
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?
Why are stuff like this on HN?
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.