The Blog of Tom Webster

Chronic Ranter, Reviewer, and Developer. I speak only for myself, opinions are my own.

Markdown in Gedit 2

  2013-04-12 06:29:00 PDT

Because of my latest switch to OctoPress, I’ve been writing in Markdown a lot recently. I use gedit as my editor of choice because I find it simple enough with just the right amount of features/plugins. Since my recent switch to Debian, I’ve moved to older, more stable versions of my applications, and I needed a way to get Markdown support into gedit 2.30.

This post over at Jean-Philippe Fleury makes everything incredibly easy. Head over that way for the full instructions:

gedit-markdown: support for Markdown language in gedit


  2013-04-09 00:30:00 PDT

Cloud servers and VPS providers have gotten cheap enough for just about anyone to own their own server. Whether you need cloud services for personal PC backup, a webserver, or just to play multiplayer minecraft, the price has finally reached the point where it is trivial to run a server for just about any reason.

I was running Amazon EC2 instances for about a year before I tried out Rackspace, and I have to say, the technology is decent, but the interface is awful to work with. Check out these two screenshots:

Which one of these would you rather use?

The interface is clean, the tech is solid, the stability is unmatched, and above all else, Rackspace has a commitment to open-source technology. Rackspace’s cloud systems are built off of OpenStack, an open-source project that can be used to build public and private cloud systems. From servers, to files, to backups, Rackspace’s OpenStack implementation have you covered, in an easy-to-use, easy-to-understand way.

One of the things that stuck out when trying out Rackspace over Amazon Web Services is the documentation. Amazon does have documentation, but it is presented in a very Amazon-y way, as a loose collection of links, super-dense information, and a Microsoft Help file lookalike interface. Not exactly the easiest thing to use. Rackspace, on the other hand, has a much better design and layout for their documentation. Parsing through the Knowledge Center, most of the articles read like they were written for people, not as a technical document. They contain use-cases, examples, and are generally easier to parse than their AWS counterparts. The documentation can get highly technical, if that’s what you’re searching for, but for the most part, the top-level of results are going to be easily digestible chunks of information. This is a good thing. From the way this documentation is laid out, I can get a general overview of an OpenStack concept, then drill down to the GUI way of doing things, technical information, command line syntax, and API calls for various languages. With Rackspace, I don’t have to be a technical guru to run a cloud server, but if I want to launch cloud servers via my Ruby on Rails application, I can do that.

Rackspace is very committed to the open-source community, putting a ton of code on their GitHub page, and accepting pull-requests from the community. Its little things like this that add up to a great experience. If something is broken in their open-source code and you can fix it, go for it, send a pull request, they’ll merge it in. Working with OpenStack and their open cloud api has been a joy. I’ve tried their Rackspace Private Cloud, and it is simply awesome. An easy-to-install Linux distribution that comes with a full OpenStack implementation. I can run cloud servers on my home network, using a great interface, all for free. Yes, all for free. Try it out today. It is a very powerful distribution, and gives you the opportunity to build a complete private cloud without needing to commit to support, or contracts, or lock-in, or anything you don’t want to. They do offer support plans, but you aren’t forced into any of these.

Backing up is really easy with Rackspace. Just install the backup agent and configure your backup via the web interface. Seriously, its this easy:

Backups can be configured to grab certain folders or files, so you don’t have to take a full image each time you back up. Backups are stored via Rackspace Cloud Files, and billed as such, so its very cheap to keep your system backed up. You can store backups for 60, 30, or an infinite number of days. This is a godsend for anyone creating a business on Rackspace services.

Speaking of Cloud Files, those are decently easy as well. You will need a program like Cyberduck or Fireuploader to efficiently upload files, and I’m really not sure why that is. With drag-and-drop uploading supported in all major browsers, why can’t we upload a pack of files? I’m sure there’s a technical reason for the decision. You can also make files publicly available on the web via Akamai, all with a simple click. This is very beneficial for people who need to distribute large files quickly. Honestly, Cloud Files is a great service, but it really is the weakest of Rackspace’s lineup. This could be due to the general ecosystem around their Cloud Files API, it may be that people just haven’t built very many user-facing applications on it, but the way Cyberduck and Fireuploader handle directories is very strange and completely incompatible with each other. I originally had a public application uploaded with Fireuploader, then tried to make some changes in Windows via Cyberduck, and I couldn’t navigate directories. This is most likely a problem with Fireuploader and not Rackspace itself, but it still made things more difficult than they needed to be. I’ll still use the product, but it could be better.

Sure, the tech is all well and good, but anyone can write good code, anyone can make a service like this. What makes Rackspace so special? They tout it left and right on their site, and I didn’t believe it until I ran into a problem I couldn’t solve by Googling for a few hours. It was 5AM on a Thursday, I called the support number, and I waited a total of two rings. An American technician, answered the phone, sounding awake and ready-to-go. At this point, I’m already floored. A human answered my phone call at 5AM, a human that I can understand, none the less! Keep in mind, I have nothing against non-American techs, but sometimes you just can’t get through the thick accent. Phone support should be local to the country you are supporting. Anyway, back to the story. So, I’m on the phone with this guy, for 4 minutes. That’s it. Four minutes. I had Googled around for a few hours looking for the answer to a rather uncommon question, and the guy had it within 30 seconds. THAT is Fanatical Support. This guy was a pro, a completely rad dude. Not only did he know the answer right away, he walked me through each step of the configuration, making sure I had a good handle on the situation at hand. Click. That was the call. 4 minutes, and I was thrilled. I went right back to bashing away at my terminal, happy as a clam.

I was so impressed, I sent a tweet off to @Rackspace to congratulate them on great service. A bit of time later, I got a response back, and a conversation ensued! A few tweets and an email later, and I was being shipped a Rackspace T-Shirt. I did mention that I was going to write a blog post and post a picture of me in the T-Shirt. Rackspace, feel free to use this in any promotional material you want. I’m very happy with the service, tech, commitment to open-source, and price. Seriously, give these guys a try, I did and I’m never going back.

Here’s a picture of me in my awesome new T-Shirt:


  2013-03-26 01:00:00 PDT

For the longest time, I had been looking for a way to get started working out, but I honestly had no idea where to get started. Without paying for a 24-hour gym pass, my workout options were limited to things I could do at home (especially in the wee hours of the morning). I needed a workout tailored to my schedule, my goals, and with my equipment. I spent a little bit searching around for a website to help me plan everything out, including instructions, videos, and scheduling assistance.

Insert BodBot here. The first thing you see when loading up the site is simple gender-selection form, which gives way to the goal form. By far, this is the most impressive feature of this website. Whether you want to gain muscle, lose fat, or just get healthy, BodBot has options for you and will tailor your workout specifically to your goals. Then it will ask whether you are working out at the gym or at home. You can use BodBot as a gym companion, but I personally use it at home. Then BodBot will ask if you have workout experience and how hard you would like to work out each session. I left these set to the middle-most values. Then BodBot offers to manage your schedule for you, or if you’d like, you can manually manage your workout days. I ended up letting BodBot tell me when to get off the couch and put down the chips.

Lets get the not-so-great out of the way: BodBot is in alpha, and it shows right now. It isn’t really a detriment, but I want you to know what you’re getting into. Some exercises don’t have great pictures or descriptions, quite a few don’t have videos associated with them. The mobile app experience on Android feels like little-more than a slow webpage with a homescreen icon. The mobile app experience could be much better, but it gets the job done. The main website, however, has enough features and staying power to keep me coming back each day for my workout routine.

BodBot also contains a lot of social features, so you can challenge and encourage your friends. The community seems nice enough, but it becomes a mostly-forgotten feature after a while. To me, the social aspect of working out has never had a big impact, but I realize I may be in the minority on this point.

BodBot feels like a fantastic start to what will become a massive project. With an improved mobile presence and some more polished design, I have no doubts BodBot will become a big part in online workout planning and management. Try it out today!

New Schedule

  2013-03-25 16:30:00 PDT

After one too many times of waking up right before I had to leave for work, I decided that I needed something to change, and fast. I already had two alarm clocks set at opposite ends of the room, but the utter lack of sleep, and my inability to become a morning person ultimately led to me sleeping through any alarm system I had available.

The mail problem boiled down to me staying up late to catch up on tech news, hack around with various projects, or dive even deeper into my continuous journey to become a better programmer. Before I knew it, 2AM was lit up brightly on my clock, and I had to be up for work in 4 hours. Not exactly the best situation to be in. If this sounds like you, you’re not alone.

I needed to find a way to get my late-night “people won’t bug me” fix without completely destroying my sleep schedule or my work schedule. I ended up shifting my schedule by about 8 hours. Instead of getting up at 6AM, working the 8-5, and heading to bed at any time between midnight and 2AM, I found a better solution.

My new schedule starts with me getting up at 2AM, and spending the morning hacking around with projects, taking my time to wake up, ease into the day, and get going slowly. This allows me to get my project time in without any interruptions, and allows me some extra time to sleep in if needed. With this schedule, I’ve completely slept through my alarm clock, only to wake up at 6AM. The buffer time is beautiful. By the time I get to work, its mid-day for me, I’m awake during meetings, can think on my feet, and am generally less lethargic.

My bedtime then shifts to around 7:30PM, depending on when I crawl into bed. With this bedtime, it usually limits my evening activities quite a bit. I don’t have a lot of time after work to do errands or work around the apartment, but the majority of what needs to be done, I can do in the morning. There are exceptions to this bedtime, but if it gets pushed back, I just decide to wake up later. It ends up working out very nicely.

On the weekends, I switch back to a ‘normal’ schedule, staying up late, sleeping in late. This way, my odd schedule doesn’t affect my weekend plans. Amazingly enough, it isn’t too difficult to change my schedule up for the weekends, but that may just be me.

All in all, I am very happy with the schedule change, and although it may not last forever, it has given me a better sense of time (and sleep) management. I highly suggest anyone give this a shot for at least a week, if you schedule permits.

Project GameStation (Raspberry Pi Emulation Machine)

  2013-02-20 14:00:00 PST

Recently, I’ve been drowning in personal projects, but I feel that one of them is finally to the point where I can start to release information about it. Project Gamestation is a Raspberry Pi based emulation machine. The vast majority of the code and configuration is incredibly easy to implement thanks to RetroPie-Setup, a GitHub project by PetRockBlog.

Really, the only configuration I’ve done with this project is controller configuration, automated RackSpace Cloud backups, OS configuration, and lots of testing. If you’re looking to build one of these, you must have Linux experience (or a willingness to learn), and you can’t be afraid of the command line.

The majority of NES and SNES games can be played with overclocking set to modest. The only time I ran into game slowdown is when playing complex SNES games like Super Metroid and most Genesis games. I ended up settling on the High setting. Medium was too slow for Sonic 3, and Turbo was corrupting SD cards fairly frequently.

For the controllers, I’m using two cheap $10 USB controllers, one an SNES imitation, the other an NES imitation. The NES one I bought was fine, although a little flimsy. The SNES controller had a DPAD issue with the construction, I had to take it apart and move around the DPAD internals to get everything lined up correctly.

I am going to do a more thorough series of posts about the actual commands and setup later, but for now, I’ll just give you a little bit of insight. HDMI sound isn’t enabled by default, but you can fix this pretty easily. Autologin is done with the raspi-config command, a wonderful menu-driven way to configure and update your Raspberry Pi. To exit the emulator, I read about a way to make this happen easily. It involves holding one button and pressing another to get back to the main menu. I did have trouble getting this to work in DGEN, the Genesis emulator, but I know this issue has gotten more visibility lately, so hopefully a fix is on the way.

My contribution to this whole project is cloud backups. You can configure emulationstation to throw all of your save games in a single directory, so I decided to combine this with RackSpace Cloud Files for automatic backups every 4 hours (via a cronjob). You will need to install duplicity, python-cloudfiles, and python for this to work:

UPLOAD_TO_CONTAINER="$HOSTNAME-Saves" #adjust it as you like
export BACK_THIS_UP=/home/pi/saves

duplicity --no-encryption $BACK_THIS_UP cf+http://${UPLOAD_TO_CONTAINER}

Like I said before, I am planning an entire series related to creating your own GameStation, but if you feel like getting started right now, hopefully this gives you a bit to go on. The system isn’t perfect, by any means, but it is a decent start to a cheap emulation system.

Page: 17 of 32