I took the Amtrak train for the first time from Philadelphia down to Washington DC this weekend and I was pleasantly surprised at how awesome it was! I spent a lot of time out on the road these past few years, so I have gotten used to the many annoyances of airline travel and mass transit. The last time that I was on a non-commuter train was in Ukraine when I was very young. It was certainly a very different experience to say the least! Here are my favorite parts about Amtrak:

  • You can get your tickets on your smart phone a few minutes before the train leaves. A very stress free experience!
  • Even with a lot of people riding the train the boarding process is smooth, quick, and painless.
  • There is usually a ton of room on board.
  • The seats are big and comfy, even in coach!
  • They have a power outlet at every seat.
  • They have free wifi.

Taking the train was so much better than driving down I-95 and dealing with the traffic. It was a very relaxing and enjoyable experience. It is a shame that the train system only seems to make sense on the East Coast (and perhaps the West Coast too). For example, in Cincinnati there is only one train that comes a few times a week at around 3:00 a.m. Most people in Cincinnati do not even know that the Amtrak comes there. I am not sure if we will ever get to experience an efficient high speed rail system in the US, but I am looking forward to a few more trips up and down the East Coast!

Secure Your Self Hosted WordPress

Self hosting WordPress rocks. Unsecured websites do not rock. It does not matter how long or complicated your password is if it is being transmitted in plain text over HTTP. Luckily, it is easy to create a Self Signed certificate and use it on your website. Keep in mind that browsers become very unhappy with Self Signed Certificates and tend to yell at the user. So, if you have a lot of traffic and want your users to feel safe purchase an SSL certificate from a real Certificate Authority. In any case, at the very least you should be using a self signed SSL for all of the admin portions of your site. Here’s how to do it on Debian 7.5 running a standard LAMP stack.

  1. Create your self signed Certificate by running the following commands sequentially.
mkdir /etc/apache2/ssl  
openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/wp.pem -keyout /etc/apache2/ssl/wp.key

2.  Create a Virtual Host for your website in /etc/apache2/conf.d/yoursite.conf

SSLEngine on 
SSLCertificateFile /etc/apache2/ssl/wp.pem 
SSLCertificateKeyFile /etc/apache2/ssl/wp.key 
DocumentRoot /srv/www/ 
  <Directory *> 
  AllowOverride All 
  order allow,deny 
  Allow from all  
  • Change yoursite.conf to something more meaningful
  • Change to the IP of your server, which you can obtain by running ifconfig in a terminal
  • Change the document root to your actual document root.

3.  Enable the SSL module in Apache

sudo a2enmod ssl

4.  Restart apache

sudo service apache2 restart

All set! Now, you can navigate to, confirm the security exception, and administer and view your WordPress site securely.

WordPress on Linode

One of my first tasks at Linode was to set up some nodebalancers. It was a good exercise, and I learned a lot. I set up redundant wordpress sites and had the nodebalancer handle all of the traffic. It is a pretty neat concept and a very useful tool! I have not used wordpress in ages and I am amazed at how far it has come in terms of features, ease of installation, usability. It is the perfect content management system. In fact, I was so inspired by how beautiful and easy WP was to set up, that I migrated my whole blog over to it. So welcome to Rev3 of my move from blogger. I loved drukkar, and would highly recommend it for a very simple blog, but I just needed something with a few more features and extras. Setting up a WP site on Linode is a breeze thanks to the handy dandy StackScripts that are available. It literally took me about 5 minutes to have a complete WP site up and running. One thing to note, is that if you do deploy using stackscripts and want to use the Permalinks feature you must do the following: 1) Update the .htaccess file to have the following content:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase / 
RewriteRule ^index.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>

2) Enable the Apache Rewrite Module :

sudo a2enmod rewrite 
sudo service apache2 restart

Your permalinks should now be working fine!  This is what I had to do using a clean StackScript install on Debian 7.5. WP makes it super easy to import other blogs, so I am going to go ahead and move everything from my blogger blog over here, and move forward from there. Hopefully no more migrations for a while.

Moving to New Jersey

There have been a lot of big changes going on in my life and I wanted to take a moment to document them all here. A few weeks ago I learned about an opening for the support team at Linode. I have been a customer and huge fan of Linode for a long time and went ahead and applied for the job. I was very pleased to have the opportunity to interview for this position, and even more pleased to have been offered it! So I am excited to announce that starting Monday, I will be an official member of the Linode Support team! It was difficult to leave my current job, and friends, and family, and pretty much everything that I had worked so hard to build over the last few years in my first attempt at a post-military civilian career. But for as long as I can remember my passion has been Linux, so having the opportunity to work with Linux every day is not something that I could have passed on in a million years. So long story short, I am packing up my stuff this weekend and moving to New Jersey! I have had the pleasure of spending the week here looking for a place to live and this is what I have found.

  • You cannot make left turns on some roads, it is kind of weird.
  • You are not allowed to fill up your own car at a gas station, also very weird.
  • It is very easy to lose a lot of money at the Casino’s in Atlantic City.
  • Despite the terrible reputation that NJ has, the people here are pretty nice and the state as a whole is absolutely beautiful.

I am going to be living in Absecon which is just minutes from the ocean! I am really excited to explore the area more and report back what I find here. My biggest concern at the moment is finding a Linux User Group,  it looks like there are a bunch of defunct ones in New Jersey, and a couple of pretty active ones in Philadelphia which is just about an hour away. If you know of any LUG’s in South Jersey, or if you want to start one with me, let me know!

Fake Web IDE with External Tools in Gedit

Gedit is my favorite text editor. I like that it is fast, reliable, cross platform, and has a ton of useful plugins and features. I am currently using it to work with LaTeX and unless I am working on a huge project, I will typically use gedit for all of my development work, specifically when it comes to web development. I use a lot of the plugins in gedit, but I have never used the External Tools plugin before. External tools is a very useful plugin because it allows you to do pretty much anything. The reason why I wanted to use it in the first place was to find a way to quickly launch HTML files that I was currently working on in a web browser, while also saving all of the changes to other HTML/CSS/JavaScript files that were related and currently opened in gedit. This is essentially what an IDE would do when you hit Run. In the past, I would just save all of my document and find the file in Nautilus to launch it. The problem with this approach is that I have an obsessive need to organize all of my projects into obscure and seemingly endless file paths. This can make it pretty difficult to find the file that I am looking for. The External Tools plugin solves all of these issues in a very elegant and simple way. So, without further ado, here is how you make a fake Web Development IDE in Gedit using External Tools.

  1. Enable External Tools: Edit –> Preferences –> Plugins
  2. Create a New External Tool: Tools -> Manage External Tools -> Hit the Plus sign
  3. Name the tool whatever you would like
  4. Assign it a shortcut key (optional)
  5. Set the following options on the bottom right
    • Save: All Documents
    • Input: Current Document
    • Output: None
    • Applicability: All Documents
  6. In the script editor, enter the following short script. This script will open the current document in your default web browser.
    #!/bin/sh x-www-browser $GEDIT_CURRENT_DOCUMENT_PATH 
  7. Close, and you are done!

You should now be able to use whichever shortcut you created to save all documents that you are working on, and open the current document in a web browser. This makes debugging much easier for web applications, and makes gedit a perfect lightweight web IDE.

If you have some handy tips and tricks for gedit custom tools, please share in the comments below!

Install Ubuntu 14.04 on Macbook Air 11 6,1

I am so excited to report that after a long time of trying every distribution under the sun, I was finally able to install Ubuntu 14.04 on my beloved Macbook Air. I absolutely love this laptop, but was disappointed that I was stuck in OS X. I am a huge fan of Apple Hardware, and it is my personal opinion that the Macbook Air is the perfect laptop. However, I have never been a huge fan of OS X because it takes all of the fun out of UNIX. Below are the steps I followed. The install process is pretty straightforward. I had to dual boot because no matter how many different guides I followed I was not able to get the Macbook Air to single boot with Ubuntu. I probably reinstalled OS X three or four times before I finally gave up and decided to dual boot. The 20~ GB of Hard Drive space that I lose is well worth being able to finally run Linux on this laptop. In addition, most guides recommend keeping OS X laying around somewhere in case apple decides to release some firmware update that is required for future operation of this device.

Steps to Install Ubuntu 14.04 on Macbook Air

  1. Download Refind
  2. Open up Terminal.App and issue the following commands to install Refind cd Downloads/refind-bin-0.8.0 && sudo sh
  3. Open up Disk Utility, Select the Macintosh HD, and make two additional partitions. I took out 80GB for Linux and 4GB for Swap (I have a 128GB SSD). It does not matter what file system type you use here because we are going to change it using the installer later.
  4. Download [Ubuntu 14.04 64 Bit][2] and make a [bootable USB][3].
  5. Plug in the USB and reboot your Macbook Air
  6. You should boot into ReFind, if not reboot again.
  7. From ReFind select Boot EFIBOOTgrubx64.efi
  8. Select Install Ubuntu from GRUB
  9. Go through the installer with all defaults. When you get to the part where it asks you where you would like to install Ubuntu select Something Else. Your Partition should look something like this:
    • EFI Partition (From Mac)
    • Mac HD Partition (From Mac)
    • Swap (I made this 4 GB )
    • Ubuntu (I made this 80 GB using ext4 as the file system)
  10. Continue through the installer choosing the rest of the default values.
  11. Once Ubuntu installs, the computer will reboot. When it comes back to life select Boot EFIubuntugrubx64.efi

The nice part about installing it this way, is that if you ever decide to get rid of Ubuntu (Which would make me sad :'( ) You can just boot into OS X and remove your Ubuntu and Swap partitions and resize the OS X partition to take up the rest of the space. Once Ubuntu boots, the wifi, sound, suspend, etc.. all works out of the box. iSight does not work, but I am ok with that.

I could not be happier that Ubuntu finally works on my Macbook Air! Please let me know in the comments if you run into any issues with this install.

Edge Detection with Inkscape

Inkscape is a great open source drawing tool that can be thought of as an opens source alternative to Adobe Illustrator. It is perfect for making drawings, models, flyers, and pretty much any other type of graphic design. A pretty neat feature is the edge detection algorithm that it uses in order to draw lines around an image which allows you to modify different parts of the image without having to manually trace it. I wanted to color in a map of the United States to see all of the states that I have been in. This is a pretty simple task, but if I had to trace each individual state it would have been a nightmare. This short tutorial will show you how to take advantage of this powerful feature. Before we get started make sure you have Inkscape installed. If you are using a mac like me, be sure to have XQuartz installed before you try to install Inkscape.

  1. Fire up Inkscape and open the image that you want to edit. If you want to color in the map of US with me, you can use this picture.
  2. Make sure that the image is selected and go to Path –> Trace Bitmap 
  3. Your image is now traced and you can color in whatever parts you like without having to worry about the colors bleeding over.
This handy and easy to use function of Inkscape makes it easy to work with images and color them in without having to worry about tracing them manually.

Tile Windows in Mac OS X with Spectacle

One of my favorite features of Windows, and a couple Linux Window managers like openbox and awesome is the ability to tile windows. This is also a feature that I feel is missing in OS X by default. I think the OS X window manager is pretty good, and if you are working on an 11″ Macbook Air you are not likely going to be looking at two windows side by side. In this case, I prefer the approach of making apps fulscreen and being able to quickly switch between then using gestures. In the cases where I am plugged into my main 1920×1080 monitor I would prefer to look at windows side by side. This is why I was really excited to learn about Spectacle which is an application for OS X that allows you to tile your windows in a similar fashion as the above mentioned window manager. Spectacle is easy to use, gets out of your way, an is open source and free to use! All of these things make it an awesome application and I highly recommend that you give it a try if you are using OS X and miss the tiling features of some other desktop environments. These are the main configurations that you are able to get with Spectacle with a few keystrokes. There is support for custom shortcuts and other customization options.

The only feature that I wish that Spectacle had was the ability to dynamically configure orientations like Awesome allows you to do. Luckily being an open source project, once I get some time I will try to develop this feature and hopefully get it included in the main code.


I like to think of myself as fairly tech savvy. I work for a software company, and I am working on an advanced computer science degree. However, I often find myself simply frustrated by technology these days. The two primary points of contention are web applications and interoperability. Wouldn’t it be nice if ten years ago, when all of the web based services came out, we were given a warning to chose one and stick with it? There are really three primary camps that you can be in. The Microsoft Camp, The Apple Camp, and the Google Camp. If you only hang out in one of these camps then you are in good shape because individually these three companies provide a pretty good ecosystem in which to get all of your work done. But I would venture to say that most people are not lucky enough to hang out in one camp. They are either forced to use a different camp (for work or school) or made the fatal error of setting up accounts with all three and trying to figure out which ones to stick with. Choosing which one to stick with is the hardest part in my opinion. For instance, here is my current situation:

  1. I use an email address and with my Office365 student subscription I get 30GB of Skydrive space so I do email and Skydrive with Microsoft. Skydrive is great, but it does not work on Linux natively, in addition the Microsoft Web Apps are “ok” but don’t allow you to do silly stuff like paste an image in Chrome.
  2. I have a bucket full of Apples at home (mac mini, macbook Air, iPad, iPhones, etc.) which are great except calendar does not really work outside of the web so it’s kind of useless. In addition icloud was so late in the game that although it has some neat features and a good web interface, I don’t use it to its full potential because I’ve been using these other services for so long. Lastly, Microsoft Office is atrocious for Mac and Remote desktop is a joke so I am constantly frustrated when traveling on the road and trying to get back to my office PC.
  3. My previous school used Google Apps for everything, which was great. Except a google apps account is much more limited than a regular Google Account and is essentially useless.

No matter how hard I try, I cannot seem to find a workflow with these three services that makes me happy — I am constantly frustrated by limitations of one service, but don’t have the time or energy to migrate everything to a completely different platform. If you have somehow managed to avoid any of these services in the past, but see a need to go with one of them today, my only piece of advice would be to pick one and stick with it, it will make for a much less frustrating experience.

Not Losing Sight of Your Goals

I have been discouraged three times this month. The first time was on a flight from Atlanta back to Cincinnati. I was reading the August issue of Communications of the ACS and I was in awe of all of the amazing things that were happening in the world of computing. As inspired as I was, I could not help but feel that I completely wasted my undergraduate education by getting a BS in psychology. All the time I spent writing papers, reading about loosely supported theories, and naively thinking that it was going to get me somewhere in life. I could have been studying something that I cared about while my brain was still fresh. I could have been learning skills that would have allowed me to make an impact. Instead, I didn’t learn much of anything. I can not honestly tell you what I learned during my degree program, as many of the facts, theories, and ideas that I spent so many nights cramming into my brain have escaped me over the last few years.

The second time, I was reading the September Issue of MIT Technology Review where they showcased 35 under 35. The 35 brightest, smartest, most inspiring, and driven people (according to some committee). Their stories were amazing, the work that they were doing was inspiring, and once again I was in awe of all of their accomplishments. And once again I questioned my decision to study psychology.

The third time was this morning, when in my third graduate course I realized that the professor was completely disengaged from the class, and once again the only skills that I would be getting out of this program are the ones that I teach myself.

There are far to many bends in my story to really summarize the feelings that I have about the course of my life so far, but I cannot help feeling like I wasted the best years of my life in fruitless pursuits. So, in order to not feel that way I am going to write about it, and conclude with a positive message, so stay tuned.

After a brief semester of community college after high school, I realized I would never be able to afford college on my own, I would never be able to have the “college experience”, and I needed to make a change in order to reach my goals (which were still undefined at this point). I joined the military. It was the best decision of my life because I met some amazing people, I learned many important skills for life, and I did meaningful work. During this time, I took a handful of college classes on base and realized that if I excluded any notion of a social life for the next several years, then I could potentially graduate while I was still in the military.

So I did, I took a full time course load year round and went to school during the night, on the weekends, and Online. I chose psychology because at a school like this it was the closest thing to science that they had. Also I toyed with the idea of becoming a psychologist afterwards. During the last semester of my undergraduate education, I realized that this psychology degree would prove to be quite useless, and it would not really allow me to reach any of my goals (which had changed at this point).

By this point I spent 4 years in a hospital and was determined to become a doctor. Despite finishing my undergraduate degree, I never felt that I “went to college”. I never got to do all of the interesting things that people always talk about when they refer to their college experience. In addition, I was naive in thinking that “a degree is a degree”, even though I didn’t necessarily go to a degree farm, the degree I got would never receive the respect that I thought it would. I enrolled in more night classes and began to take the pre-requisites that would be required in order to get into Medical School.

This went well, and I fell in love with Chemistry. For the first time in my life I felt challenged, interested, and was surrounded by faculty that was engaged and actually cared about the students learning. I got the crazy idea of getting a second degree in chemistry. So when my contract ran out with the military, I enrolled in a chemistry program in Cincinnati and was going to relive the college experience at the age of 23.

This was a complete failure. Don’t get me wrong, the school was great, the faculty was great, and the subject was fascinating. But I was too old to be in freshman chemistry, and on top of that I felt like I took two steps backward. On top of that, Calculus and Physics kicked my ass, and the further along I got the more discouraged I became. I spend a year working in a chemistry lab, it was an amazing experience. But other than the few fleeting moments of inspiration and joy, I would place the time I spent there as a failure. Which is fine, because we have to fail in life sometimes.

I dug myself into a hole, and my GPA became lower than it was when I graduated. I didn’t have a plan B. Then I got a job offer, and it was a life changing moment. I love my job in every sense of the word. I feel like I am doing meaningful work, It is challenging, and interesting, and I am learning more and more each day. But my educational aspirations have not escaped me, which is why I was discouraged the third time this morning.

Despite my experience with my Alma mater, and knowing what to expect in terms of quality of education, faculty engagement, and peers, I enrolled for a Masters program. So far, it is exactly what I expected which is not saying too much. I do not feel inspired, I do not feel like I am in a community of scholars, or thought leaders. I do not feel driven, I do not feel anything. It’s partially my own fault. Whenever someone asks me “Where are you going to school?”, I mumble the name and try to explain that “it’s not like those other on-line schools”, but… it is. So I have created this cycle of self loathing, and self pity. Which is frankly absurd.

Yes, I did not go to MIT or Harvard. Yes, I will probably never get into any of these schools. Yes, it is likely that life will never be as interesting, or exciting as it would have been if I would have went to one of those schools and got the education or built the connections that allow life to be interesting, and exciting. But this is all irrelevant, and I am completely missing the point. My life was never supposed to be easy.

From the moment my parents brought us here from a war torn ex-soviet state, only to have their degrees and credentials stripped and be placed into crappy minimum wage factory jobs, the writing was on the wall. My brother and I would always have to work twice as hard to get anywhere, and we do. I finally realize that the people who went to Harvard who are successful are not successful because they went to Harvard. They are successful because they are driven, passionate, and want to change the world. Likewise, the people that are successful who went to my “not that kind of” on-line school are successful because of the same exact reasons that the people who went to Harvard are successful.

Success can be measured it many different ways. Some people measure their success in the amount of “stuff” that they accumulate over the course of their lifetime. A vehicle, a home, fancy shirts, or trophy wives. Other people measure their success by who they know, where they have been, or where they are. Others measure their success based on the level of impact they have made on society and humanity as a whole. There are even those people who measure their success based off of how other people perceive their success. The latter is in my opinion the worst place to be, because even if you succeed, it is short lived and you will spend the rest of your life attempting to win over the crowd a second time.

I want my success to measured by the impact I make in the world. So I will continue to go to my school, I will continue to spend late nights reading about topics that I may not necessarily care about, and I will continue to do everything in my power to reach my goals (which are clearly defined at this point). The reason why I will continue to do all of these things is because I want to change the world. You can’t change the world sitting around second guessing your life decisions, or crying about the way things ended up. Everything that was challenging in my life, everything that was unfair, and everything that took a little bit of extra work has made me who I am today. The only thing stopping me from reaching my goals is myself.

I will never again excuse myself for going to the school I go to. It may not be a U.S World and New’s Report Top 10 school, but I am proud of my school. The amount of time I spend feeling uninspired by my teachers and peers will instead be spent fostering a community of scholars. I will never again second guess my decision to study psychology, because I have a degree that I earned, and not everyone can say that. I will never again be discouraged by the things that I don’t have, or the things that I didn’t get to do – because this is nonsense. The amount of time I would have spent feeling sorry for myself will instead be put to good use. Look out world, because I am going to finish this degree, and then get my PhD from a “non-traditional” school, and there is nothing you can do about it.