I posted this to Flickr earlier this evening, but some people wanted to know how I did it so here you go:
If you are on a Mac the command you want to run to put a burger in your Bash shell prompt like mine is:
export PS1="\w 🍔 "
(which will eventually end up looking like
export PS1="\w <U+1F354> ")
That string is \w for “current working directory”, a space, an emoji burger, and two more spaces for padding.
If you want it to be permanent put that line in your .profile or .bash_profile.
For my prompt I removed my system user name and host. People use those to know which computer they’re on and which user they are, but I know I am me and I am on the burger computer so I removed them. Here are some other options.
\d – Current date
\t – Current time
\h – Host name
# – Command number
\u – User name
\W – Current working directory (ie: Desktop/)
\w – Current working directory, full path (ie: /Users/Admin/Desktop)
How did your Code Year go? I hope well. But if you have unsubscribed from that mailing list or haven’t caught up to the lessons, I would like to share an idea I have for people who want to learn how to create things.
A lot of engineers have spent decades coding and building foundations for generations of engineers who follow them. Those new engineers stand upon the shoulders of those giants and build tools and frameworks for people who will follow them.
But because the tools have gotten so comparatively good to previous tools, especially for web and game development, many people have become interested in making applications themselves. And truthfully I think you can. I think anyone can, really. It’s not that hard. You just have to invest a lot of time learning how to hook one thing up to another, how services should work in the backend, and what design patterns you should follow to save time and complexity.
(Real serious computer science is something a bit different. I think when people use the word “coding” they mean “scripting.” But that‘s another blog post.)
Much to the chagrin of engineers it is as if they have been working for years to build flying cars and when they are finally here everyone is like: “Great! I want to build a flying car too!”
I think there’s an alternative and I would hope that you give this a chance. Instead of learning how to code, learn how to create with code. Learn how to make things with the abundance of tools out there available to you.
Twine is a desktop application (Windows or OS X) that gives you the ability to write interactive fiction. You can construct a story and lead a reader down a path based on their decisions.
If you want to get deeper into interactive fiction, with more coding concepts like variables and control flow, you can move on to Inform. Inform is the “Microsoft Word” for interactive fiction, giving you an array of tools to tell complex stories and bring in much more game-like interaction with your readers and players.
Maybe you don’t really want to tell a story, but are interested in making games for people to play. The first thing people do when presented with this is dive into a gaming framework like Unity3d or Corona.
Here is a better idea: there are a few iOS games out there that include level editors. Here’s one called King Rupert.
Making a game is more than just writing graphics handlers, it’s also working on the thing that makes something fun and enjoyable to keep playing. Level editors are a great way to immediately dive in and produce something other people can play with and give you feedback on. Here’s a massive list of them on Wikipedia.
And if you really want to build web sites, I say think about what it is you want to build and accept that there are a plethora of services that have worked out the hard parts and can probably provide all the work for you. Squarespace for portfolios or weblogs, Shopify for an online store, and for the more adventurous: If This Then That for any sort of “I wish x did y when z happened.”
Knowing how to program has been one of the most fulfilling skills I have acquired in my life, but I believe having the ability to ship something into the world for people to use is much more important.
For Christmas I put Snap Circuits on my wish list so that my son and I could start putting together circuits. He doesn't get most of it, but the little bits he does get (what certain components do, how things change when you disconnect certain wires) is enough for us to talk about things we want to build.
This past weekend was the first time he began reading and comprehending sentences. It sort of just happened. First he recognized the name of a cat in a book, and then the dog’s name, and then he learned “and” and various “oh”s and “go”s, and after that it just quickly built on itself. Watching this unfold over the span of an hour was one of the most amazing things I have ever seen in my life.
For my birthday a couple of weeks ago my friend Omar gave me a Raspberry Pi. I’d been aware of them since in 2011, but I never got around to buying one.
I’ve been toying with it the past few nights as I have had time. After buying the case above, I had to scrounge up a USB keyboard, then an SD card, then a monitor I could use that took HDMI input. At every turn it was some piece of tech I had discarded or at some point put away in a box. I didn’t even have an extra micro-USB cable so I am using the one that came with my Kindle.
But now that it is running I have fallen in love with this little computer. It is one of those things you think you understand until you actually get one in your hands and powered up.
Now I can play with these little ideas I’ve had, on a computer in my house, that didn’t cost $1,000, and only pennies to keep running 24/7. These are small ideas: a little Spyonit app I’ve been wanting but didn’t feel like paying an EC2 instance for, a big Twitter API idea that I have been toying with that will simply publish static pages to S3, and another idea I had about coordinating backups.
There is something indescribably pleasing about this thing. It feels like the time when I owned computers purely for fun. (And at 512Mb it has even more RAM than those computers.)
Many years ago I was sitting in my apartment watching television when my home phone rang.
“Hi, Mr. Torrez, this is your Visa card provider.” (Flashing red light.)
“Could you help me by providing your credit card number to verify this is you?“ (Clanging alarms.)
I read the number to the caller.
“Thank you. In addition I also need your social security number to update our records.” (Explosions. Gunfire. Rocket powered grenades screeching over head.)
I still remember carefully relaying each digit as I walked around my apartment; eager to get this over with so I could get back to my show.
This was a very dumb thing. I was just a dumb person doing a dumb thing. Right now I can picture myself pacing around that living room, being my helpful self, while my identity was being stolen and I was the accomplice. I want to yell at myself every time I think about it.
The thing is: I knew this scam. I mean, I knew how these social engineering scams worked. As an even younger idiot I used to read about these scams in online message boards and think about how stupid people are.
I’ve been out of the hack/crack scene for many, many years, but in those days for every system actually subverted, many more were simply handed access by an employee just trying to get through their day.
If you knew the lingo and could speak with confidence you could get access to so many systems. For all the money invested in security and encryption, the weakest link was always the humans. Always go for the humans.
My friend Mat just suffered through the repercussions of a social engineering hack. Bravely recounting the possible loss of all his photos from the past year he had to also endure the mocking and finger wagging from people wondering why he didn’t have backups.
It is true: you should not only make regular backups of every machine, you should test your backups by regularly restoring your system. The only thing slightly less depressing than losing all your data is finding out your backups had stopped working months ago.
Mat knew full well he was going to endure that kind of scrutiny. He’s taken the hit for people who might have grown lazy over the past few years thinking their data was safe if it was in the hands of billion dollar corporations.
So thanks to Mat we are now talking about steps you should be taking to secure your data:
You might want to also use different credit cards for Amazon and Apple since this played a role in how Mat’s account was compromised. This is pretty much a bullshit fix you shouldn’t have to do. Thankfully Amazon closed that hack today. But who knows which other services will continue to provide this option?
Use a password management application like Lastpass or 1Password. There is a little bit of complexity in setting it up and it is almost unbearable without the browser plugins/extensions.
And by all means, if someone calls your house claiming to be from your credit card company, give them all the info they need. Their jobs are really tough and they just want to help you!
I just wrote the first one as a simple script that demonstrates how to do it with Twilio. If I actually had real free time I would build a little web UI where you could fill in the numbers, set a time, and get your own personalized conference room (with all the features you find in a regular conferencing system) to dial you and the participants when it’s time for the call.
But maybe that’s something you want to build?
The one thing I learned from this is Twilio is pretty damn cool. The documentation is good and the API is a good one.
I had a big day of coding last week and found myself flipping to Sublime Text to deal with a tricky multi-line selection. I was surprised to find out in the few months since I’d left Sublime Text it had received a multitude of updates and fixes. The tabs work and look better. It became difficult to switch back to Vico that day, and a this Monday when I needed to write a lot of code I went straight for Sublime Text.
Vico was very good and I was certainly faster. I could write code faster when I wasn’t having to learn a new keyboard command. And that was basically the problem, I got sick of learning. Yeah, I have to reach over and use the touchpad every few minutes while editing, but since I do that already in this (MarsEdit) and Google documents and any other edit window that is not Vico it seemed strange to have to switch my mind to vim editing.
Basically every night a set of scripts run that test whether all the things we know about Twitter: how replies work, how RT’s work, how URLs are shortened, how following works, and it publishes the results into a nice one page screen people can check in with when a new version rolls out.
In addition the data returned in JSON responses would also tip that there are new features to check out.
It reminded me of something I wish I could go out and buy right now. I want something the size of my Jambox but instead of an audio receiver and speakers inside, I want a tiny computer that is doing a number of things for me.
The first thing I’d want it to do is back-up files from our computers and then push them (delayed) to the cloud when I am at work or sleeping.
The second would be a web server I could use to develop apps for. I have these app ideas that I want to live in my house rather than on a server someplace I have to maintain. Things like address books and calendaring between my wife and I. Stuff I want to own, not depend on some outside service.
Don’t you want to buy that little box? I sure do.
Since I’m asking, another thing I want is an iPod Touch with everything it currently has PLUS a 3g data connection. I basically want my iPhone without a phone. Who needs to carry around a phone? (More on this later, maybe today).