HNHacker News
TopNewBestAskShowJobs

raamdev

663 karma · joined November 28, 2008

Writer, thinker, engineer. Find me on https://raamdev.com, tweet @raamdev, or email raam at raamdev dot com. Software Engineer at Automattic.

[ my public key: https://keybase.io/raamdev; my proof: https://keybase.io/raamdev/sigs/6Zr3wUvZIizNlQsaB__n4zhA_6BnB2lyVx3Ho4Jxzy4 ]

submissionscomments
raamdev··on Ask HN: How do I write good documentation?
It wasn't stated which language was learned before the Internet, only that (s)he learned how to code before the Internet.
raamdev··on I wrote the original blue screen of death, sort of
I was hoping to learn why blue was chosen as the background color for that screen. This article doesn't mention that. Does anyone know why blue was used?
raamdev··on Scientists sniffing out the Western allergy epidemic
Another sample size of 1 (so I guess that makes us a sample size of 2): I had eczema from 6 months old until 18 years old, and asthma from 13 years old to 18 years old. The asthma was bad enough that walking up a flight of stairs winded me.

When I moved out of home at 18, both my eczema and asthma _disappeared_. Doctors had no explanation. I eventually realized that one major thing that changed in my diet was milk: I had unintentionally stopped drinking milk when I moved out home. (We consumed gallons of milk every week growing up: good for the bones!)

After several months of no milk, no eczema for the first time in my life, and my asthma all cleared up, I drank 1/2 a cup of whole milk to test my theory. Within minutes my body felt sick. The next day I _was_ sick, and it took several weeks before my body felt normal again.

When I avoid dairy, my body feels better.

raamdev··on BPA-Free Plastic Containers May Be Just as Hazardous
I grew up sleeping on the floor, and I was home schooled (through high school). As a kid, I had a premade story ready-to-go if a stranger asked why I wasn't in school: "I have a dentist appointment today."

I'll be home schooling my daughter and I think by the time she's old enough to "tell everyone" anything, I'll have already explained things to her.

raamdev··on BPA-Free Plastic Containers May Be Just as Hazardous
I have a baby girl turning 1 in a few weeks and my wife and I opted to only use glass bottles for her.

More scary, however, is all the stuff they put in everything else. For example, the fire retardant chemicals they use in manufacturing things like baby mattresses, which have been shown to cause neurological issues, especially in children. Look for a tag on any pillows or mattresses that says "complies with California Technical Bulletin 117"; that means it was treated. Also, check out the documentary "Toxic Hot Seat". My wife and I sleep on the floor, with a few blankets, and have slept with our daughter between us since day one (she never slept in a crib).

I felt so unprepared prior to my daughters birth. I still feel terribly unprepared. But I find that I'm a lot more proactive now about doing my own research to at least help reduce the probability that I'll put my little one in danger (and all we can really do is reduce the probability, since massive amounts of misinformation ensure it will be nearly impossible for the average person to really get to the truth about some of this stuff).

raamdev··on Open Source and the Challenge of Making Money
I work on open source software with two other developers and our business makes enough to pay for three full-time salaries (they're low-end software developer salaries, but we all live comfortably in the USA and Mexico).

We sell two WordPress plugins, both of which have free counterparts (think Lite/Pro). The source code is GPL for both versions.

Why do people buy the Pro version of our software? That's we've asked many times over the past few years. I feel they buy the Pro version for both the features and, more importantly, for the fact that it will be _updated_ and _maintained_, and they will have _access to support_. Site owners that want to use one of our plugins recognize that by paying for the plugin they get access to support and features not available in the Lite version, whereas the free version has limited features and only community support.

Could someone copy the source code for the Pro version and sell it? Sure. (And people have.) But can they copy our Pro support and sell that? Not so much. Can they copy our reputation? Nope.

I've learned over the past few years just how valuable "access to support" is for many people. Even if they never contact us, just knowing that we're there _in case something goes wrong_ is comforting enough for them to pay for that comfort.

If more open source projects started offering support, I bet you'd have a lot more open source developers making money.

For example, if I decided to set up `mutt` for the first time to switch over from web-based email, would I buy a "mutt support service" from someone that allowed me to submit `mutt` questions through a ticketing system while I was setting up and getting familiar with `mutt`? Yes! I would, especially if that person had a reputation in the community as someone who knows `mutt` inside out.

It's also worth noting how offering support helps drive documentation. If the documentation is great then a developer can easily point people to the relevant information and save him/herself time (so that support doesn't take up all available time). I basically used this type of "ask me a question, I'll create documentation for it and then reply with a link" method with my Independent Publisher WordPress theme project [1].

[1]: http://github.com/raamdev/independent-publisher

raamdev··on Why use www?
1. Yes, I admit, I don't know everything. My old self admittedly knows less than my present self (the post was written 4 years ago), who most likely, I hope, knows less than my future self. I posted the link in the hope that others may find it valuable to see how such a bug might manifest itself.

2. The post was written in an exploratory tone, not a factual, "here are the facts, here's how to solve this problem across all scenarios" tone.

Thanks for your feedback.

raamdev··on Why use www?
I ran into that IE bug a few years ago while working on some PHP code. For those curious what that bug might look like, I did a quick writeup of my findings [1] and posted the solution that I used to work around IE's bad behavior.

[1] http://raamdev.com/2010/php-session-permission-denied-errors...

raamdev··on The Joy of Typing
> If you struggle with typing, the first thing you're likely to do is reach for the mouse for anything other than text entry. Which means you reeaach over to the mouse, then mooooove the mouse, click, and...what was it you were doing again?

The same thoughtless action that comes from using a familiar tool for expression can carry over to any tool, including the mouse. I don't think about the keys or where my fingers are in relation to the keyboard when I'm typing this--the thoughts just go from my head straight to the text box where my eyes corroborate what my brain is thinking. But the same can be said for when I'm browsing the web and I move my hand to the mouse and scroll down... I don't think about it, it just happens. My brain thinks, "I wonder what's further down the page" and my body responds accordingly.

That said, there's much to be said for the efficiency of a keyboard. A few months ago I installed the Vimium Chrome extension and I've been trying to get myself to use the keyboard for scrolling down and clicking links. It's hard. My brain instinctively (still, after months) tells my hand to move to the mouse. I often need to take my hand off the mouse and go back to the keyboard to force myself to use the keyboard shortcuts.

The same is true with reading code: if your brain has no association with curly braces, you're not going to be able to scan a chunk of code and intuitively separate code within curly braces from code outside the curly braces.

So there's more to it all than just the difficulty or familiarity with the tools. It's also about skill and habits.

raamdev··on How Different Cultures Understand Time
This speaks to how useful email is as a communications medium on the Internet and it's likely one reason why, despite all the new modes of communication, it's still a widely used standard: people from different cultures all around the world can get back to you at their own pace and there's generally no expectation of an immediate response.
raamdev··on Making Your Writing Work Harder For You
No. The date matters. A lot.

When I open a paper book or a blog post, the first thing I want to know is, "When was this published?" That immediately gives me context as to the state of the world when this was written.

This is a no-brainer when it comes to technical publications because technology is changing so rapidly but it's equally as true with any other type of publication (even fiction to some extend, but much less so than non-fiction; the same goes for movies: entertainment is not as time-sensitive as a documentary).

A date of publication provides context for the reader to know what world the author was living in when he/she was writing. That's very relevant.

On my personal site, I put the year of every post right in the permalink (e.g., example.com/2014/my-new-post/).

raamdev··on What Do Animals See in a Mirror?
It's about recognizing differences in appearance based on association with others of the same species. If I've never looked in a mirror but I know what my mothers face looks like, I don't need to have ever seen my own face to know that I probably have two eyes, a nose, and a mouth.

They do this experiment with human babies: At a certain stage, if you put something on their head they will recognize that it doesn't belong there, because they recognize that something is "different" about the human appearance in the mirror.

raamdev··on Mac keyboard shortcuts
I work in web browsers a lot and the greatest thing I've ever done for productivity is use the Vimium extension in Chrome, which allows me to easily navigate the web using my keyboard.

Pressing "f" instantly tags each link on the page with one or two letters that I can type on the keyboard to go to that link (if I type them as capital letters, the link gets open in a new background tab, otherwise just a new tab).

Even if you're not a fan of the vim editor, if you enjoy keeping your hands on the keyboard it's worth learning the few keyboard shortcuts that Vimium provides for navigating the web.

https://chrome.google.com/webstore/detail/vimium/dbepggeogba...

raamdev··on Mac keyboard shortcuts
I just use Cmd+H to hide windows instead of minimizing, since hiding effectively does exactly what I want (get the window out of my sight, but leave the app running) and then I can easily Cmd+Tab back to it.

I only recently found a good use for minimizing over hiding: I was working in my IDE (PhpStorm) on several projects (each project opens in its own window) and I wanted to switch back and forth between two project windows. With 4 or 5 windows open, switching between the two windows I was interested in (using Cmd+`) was a game of cat and mouse. I was alway hoping that I'd land on the right window and not mess up the order of windows. Then I realized if I just minimize the windows I don't need right now, I can get them out of the Cmd+` cycle and easily switch between on the two windows I want.

raamdev··on OS X Command Line Utilities
Check out iTerm2. Full-screen iTerm2 doesn't switch to a different desktop and tabbing to another app is instantaneous.
raamdev··on OS X Command Line Utilities
Being able to save and restore the window arrangement is also awesome. I keep iTerm2 in full-screen mode and I have it split into 4 terminals. If I need to restart iTerm2, I simply choose Window -> Restore Window Arrangement and my split terminals are restored.
raamdev··on OS X Command Line Utilities
Case-insensitive auto-completion: brilliant!

To set this up, add `set completion-ignore-case on` to your `~/.inputrc` file (create it if it doesn't exist).

raamdev··on OS X Command Line Utilities
No, case-insensitive auto-completion doesn't work by default on OS X. For example, `cd /appli <tab>` does nothing by default (it's not finding `/Applications/`) even though my disk is formatted case-insensitive. However, after adding `set completion-ignore-case on` to my `~/.inputrc` file, I can now type `cd /appli <tab>` and it will auto-complete to `cd /Applications/`.
raamdev··on Teen Arrested for 30+ Swattings, Bomb Threats
> When I arrived, the fire alarms were on.

And I explained that to the dispatcher.

raamdev··on Teen Arrested for 30+ Swattings, Bomb Threats
> The same way that the fire department has to respond to every single fire alarm,

I discovered this isn't true, at least not in Lowell, MA (a bit north of Boston, MA). A few years ago I bought a 3-family rental property. There was a big blizzard that froze the badly insulated water pipes in the house, which resulted in the pipes bursting on the 3rd floor. That caused what amounted to a waterfall inside the 2nd and 1st floors.

When I arrived, the fire alarms were on. I was going to head down to the basement to turn off the water main but then I realized I had no idea where the water main was (I had just bought the house) and I figured that venturing into a dark basement full of water with live wires running everywhere probably wasn't the brightest idea.

So I called 911, explained the situation, and waited. They told me they'd "send someone". 20 minutes went by. The waterfall was still going. I called again. They told me they'd send someone. 10 minutes went back. I called a 3rd time and was told "they're busy clearing snow from fire hydrants around the city". I happen to be standing next to a light switch in the house and I happened to smell something that smelled like smoke. "But I smell smoke", I said to the dispatcher.

"Smoke?!", she replied. "We'll send someone immediately."

And within 3 minutes I had a dozen firefighters in the house.

raamdev··on All of Bach
I can't seem to find an RSS feed for these... that would be really helpful.

This seems like a great way to consume large volumes of things that one might not otherwise ever get to... 10 minutes a week for 20 years seems a lot more doable than committing several months to consuming all 1080 works. Now I'm thinking about how I can apply this to other large-volume things that I've wanted to consume, like reading the entirety of Tolstoy's War and Peace.

raamdev··on Using Dnsmasq for local development on OS X
http://dev.sh has a nice auto-setup script for this.
raamdev··on Ask HN: What source code is worth studying?
https://github.com/facebook/phabricator
raamdev··on Ask HN: How do you get and stay in the "zone"?
I'm at the HN and "8 tabs later" stage. Thanks for the reminder. Back to work!
raamdev··on Ask HN: How do you get and stay in the "zone"?
I'm not sure why it never occurred to me to get an inexpensive pair of earmuffs designed specifically for blocking out sound ($20), as opposed to a really expensive pair of reference-class headphones ($200+). Most of the time I just want to block out sound. And when I want music, I can probably put in my comfy earbuds and put the earmuffs over them. Thanks for the idea!
raamdev··on Why is speed at sea measured in knots?
It looks like visits to the linked URL are blocked when the referrer isn't an MIT page. If you visit the authors' home page you can view the original article:

https://alum.mit.edu/pages/sliceofmit/author/hoagland/

EDIT: Duh. You can't click that link because it's blocked by referrer again. So just copy/paste that URL into your browser and you'll be all set. In fact, you can do the same with the original link: https://alum.mit.edu/pages/sliceofmit/2014/04/09/why-is-spee...

raamdev··on This is how much tech consultants make per hour now.
I started working as a tech consultant in my teens (not just building PCs for friends but actually developing relationships with local small businesses, translating tech-speak for them and advising them on the best course of action for things like servers, backups, security, and networking) and my hourly rate started at $35/hr.

Within a few years the demand for my services outstepped the number of hours in my day, so I pushed my rates up, peaking around $75/hr in my early 20s when I finally got sick of dealing with people who wanted a magician instead of a tech consultant.

That was about 10 years ago. I have friends who stuck with it and every single one of them makes more than $100/hr, so I laughed when I saw this article say, "the average hourly salary for tech consultants hit $42.17 in February—an all-time high."

It does say "average hourly salary", but I wonder what percentage of tech consultants work for a salary vs billing the client by the hour.

raamdev··on Learn To Build
I never considered that perspective, that the difficulty (and dare I say, ugliness) of the language might've discouraged me early on. A prior job in Cambridge, MA paid for me to take any course I wanted at Harvard Extension School (a branch of the esteemed Harvard school) and I picked an intro C programming class. I learned a lot, but mostly I learned how challenging it was and how annoying programming in C could get (i.e., how easily I could become discouraged).

I've always assumed that my difficulty becoming proficient with C/C++ was due to the fact that my brain started learning on BASIC, which wasn't nearly as "close to the machine" as C is. What I loved about that C programming class was how much I was learning about how the physical hardware worked (e.g., pointers; most people in the class seemed to hate pointers but I loved them).

raamdev··on Learn To Build
I always suggest starting with Why:

Me: "Why do you want to learn to code?"

Them: "Because I want to build X, or I want to modify Y, or I'd like to learn how to do Z but it seems like I need to know how to code first." (This is the ideal answer but in reality it's usually not the one I get. "Uh, I donno... because it looks cool or fun or I can get a really good job," is the more common answer.)

If someone doesn't know why they want to learn something, they will be more likely to give up as soon as the learning gets tough.

By the time I was 12 I had spent 4 or 5 years playing with computers, taking them apart, building them, and spending lots of time playing games.

One day I asked my dad, "how do they make those games on the computer that I've been playing for the past few years?" I wanted to know how so that I could tinker and build my own games too. My dad was a technical writer at the time and the only programming language he knew of was a language called BASIC (this was the early 1990s) and suggested that I pick up a book the next time we were at the book store. (That led me from QBASIC -> Visual Basic -> PHP, of which I'm currently most proficient. I wish he had told me "C" or "C++"; my life would've taken a much different route.)

When I started digging into Python a few years ago, it was because I wanted to build a script that connected two APIs and manipulated some XML. I knew through the grapevine that Python was a good language for that, so I dug in. It got tough, but I had a goal in mind. There was something tangible that I was working towards, a light at the end of the tunnel that I could keep aiming for no matter how long it took me.

I cannot understate the importance of knowing why you're doing something, especially when you're learning a new skill. (I think this applies more to adults than to children.)

raamdev··on Why I killed my standing desk
I can vouch for Vibram FF, or even better, straight-barefoot. I was always told that I had "weak ankles" by doctors as a teenager and I was never able to run more than 3-4 miles regularly without developing extreme shin splints and knee pain that would leave me barely able to walk and require several weeks, if not months, of recovery.

In 2010 I started wearing Vibram Five Fingers exclusively. In 2011, I started wearing Huaraches [1] which are even more minimalist than Vibram FFs (and a lot more natural--when I'm not barefoot, I wear huaraches), then in 2012 I went straight barefoot.

In September of 2012, I ran 17 miles non-stop [2], barefoot (all types of surfaces, including rain). And note that I went from running on average 2-5 miles a day to deciding one day that I'd just keep running.

I had never experienced such freedom and I can now run what feels like any distance, as long as I'm running barefoot (my current goal is a marathon, then an ultramarathon).

As others have mentioned, it takes time to let your body adapt. I've been using a custom-built IKEA standing desk [3] for the past year. For the past few months, I stand 8-10 hours a day at this desk while working (barefoot, of course, on a hardwood floor). But, I also walk 2-5 miles every day (~10k steps).

If you want to start standing at a desk all day, start by walking a lot more so that your body learns what it's like to be on your feet for longer periods of time. Oh, and don't just stand at the desk for 8 hours. I take a break every 2-3 hours and go for a 10-15 minute walk to keep my muscles moving.

[1]: http://shoestringfootwear.com

[2]: http://i.imgur.com/ec7mYgB.png

[3]: https://twitter.com/RaamDev/status/320593781240000514/photo/...

← PreviousPage 3 of 7Next →