Once upon a time, a computer user and a computer programmer were the same thing. To get anything done, you had to know how to change the code of a program to get it to a) work on your machine, and b) work the way you want it to. In the pre-Internet days, programs included source code (for coders to read and modify) alongside the machine code (for computers to read and execute), so the user of the program could change the code to get it to work for his needs. …

Once upon a time, computer resources were limited. Clock speed, bandwidth, RAM, storage, these were a thousandth of a thousandth of what they are now. Compromises must be made, shortcuts must be devised.
Once upon a time, dates were written in programs with a two digit year. With the turn of the century still decades away, this made sense; of course 2/1/70 is in 1970, why would you need to specify the freakin’ century? There was an 80-character limit on those punch cards, we need every character we can get. When the date turns over from 1999 to 2000 though…
My database for Pollendome (currently deployed on Heroku, coming soon to AWS) was being seeded by a CSV put together by my collaborator. She was getting the data from the Houston Health Department spore count archives, but there were various problems slowing her down. I needed data, some data, any data, to begin building the app, so asked her for incomplete versions of the CSV so I could get started. The headers in the CSV were not in their final form, though, with the names changing every time she gave me a new one. There are tools in Rails for…
Last time, we learned what public-key cryptography was and why it was a big deal. But I’m a developer, who is super busy with important computer things to do, and need to know how this affects my life. How am I to use this wonderful tool in my developer life, which, as established, is super busy and important?
If you can’t think of a case where you just want to encrypt your traffic at one end and decrypt it at the other end, then I worry about your lack of imagination. This guy builds a basic messenger webapp and encrypts…
When the Internet was invented, security was physical: keep the bad guys from getting in a room with your computers, and you’re probably fine. Network security wasn’t a thing, because everyone on the nascent Internet all knew each other.
Then the Internet went public. It became a place for people everywhere to connect with each other, people it would be impossible to meet otherwise. The problem is twofold, though:
The weakest part of any security is the human part. Your castle might have the thickest walls, but that doesn’t matter if your drawbridge operator can be convinced to open up for the enemy.
Getting a person to do something that isn’t in their best interests, or give information that’s supposed to be confidential, is what’s known as social engineering, and it’s as old as talking. Alexandre Dumas wrote about it in The Count of Monte Cristo, when the title character bribed a telegraph operator to send a false message. The Trojan Horse from the Iliad, that was social engineering…
In the beginning was the command line. (Apologies to Neal Stephenson.) There were no mice, nor trackpads. No GUIs. Getting any graphics into or out of your computer was a herculean task, and we liked it that way.
(I’m using ‘we’ stylistically, I’m not quite that old.)
But there was text. Pages of it. Literal megabytes of text. Some of the text was yet to be written even, and so, men created the text editor. And then another. And then another. Favorites were deemed, preferences were made known. And as men will do, lines were drawn. …
tl;dr: Holy wars are dumb. Use whatever you want (when it’s up to you, but usually it isn’t).
Which is better, Ruby or Python? This Google search returns about 199 million hits. People around the world are looking to learn how to code for fun and profit, and it’s not a trend, it’s a reality. (I leave finding statistics on that as an exercise for the reader; please let me know if you find evidence to the contrary.) People wonder where to start, and there’s a lot of contradictory opinions, but I think this guy put it well:
The first…
“19. A language that doesn’t affect the way you think about programming, is not worth knowing.”
— “Epigrams on Programming”, Alan Perlis, 1982
There are programming languages designed to get stuff done, the tools used by software engineers to solve a problem. And then there are the languages meant to do something else. They’re called esoteric programming languages, or esolang (because why use three words…), and the only thing they have in common is that they all have something different from regular languages. Maybe they’re there to explore a computer science concept, as a new and different way to code…
“Implementation dependent.” Never¹ have two words caused so much grief to so many.
¹ It’s hyperbole for emphasis, it’s a stylistic choice, don’t @ me
Every web browser has its own JavaScript engine. Google developed V8 for Chrome and other Chromium-based browsers (including, soon enough, Microsoft Edge), Mozilla made SpiderMonkey for Firefox, and Apple’s Safari uses JavaScriptCore. Each engine decides what features to implement, and how to implement them. For example:

In deploying a project recently, I discovered two significant² differences in how Chrome implements JavaScript compared to how Firefox does.
² it was significant to me anyway, don’t @…

Full stack developer