XFCE And Ubuntu Saved My Old Macbook

Screenshot of XFCE



2008 was the day that me and my Macbook Pro started our relationship.  It was great at first.  It was my first foray into OS X and I was starting to see why everyone was slowly but surely making the switch to Apple.  It was fast! It was beautiful! It just worked.  Not only that  but to this day, my unibody Macbook looks fucking fantastic  for its age and has held up way better than my old plastic-y laptops from the past.

However, the thing that has gone down hill has been performance.  See, when I first got the Macbook, it was running on Leopard and it was fucking blazing fast.  One of the main reasons that I had gotten a Macbook was to run Adobe Creative Suite (Photoshop, InDesign, etc.) and it did the job admirably.  This baby was fast!  When I upgraded to Snow Leopard, performance actually increased and I was over the moon with joy.  It set up expectations that Apple was going to continually push for optimizing code rather than adding all the glittery nonsense that would slow your machine down a-la Windows (Think Aero.  If you’re on a Windows PC, press Windows key + Tab and witness your graphics card wasting electricity).

When we got to Lion and Mountain Lion, shit got slow REAL fast.  Now with Mavericks, I’d say it’s even slower.  Chrome takes a couple of seconds to load.  Flash videos are choppy.  It gets hot fast and it sounds like a jet.  I record my podcast on Garage Band and it can’t even smoothly render the waveforms as I record.  It’s not unusable, but it’s definitely not my preferred device of choice – I’m either a desktop or phone guy now.

Anyways, as some of you may know, I’ve been really trying to learn how to program and it’s really a huge pain in the ass to do it on Windows.  I’m sure there’s a way to make MS-DOS work like terminal, but I’m not gonna do it.  Long story short, I ended up installing a virtual machine on my computer to run Ubuntu (a version of Linux) to do all of my coding in and it’s been great.  So naturally, I thought about installing it on my Macbook for fun.  Even though it was slightly faster, Unity, the Ubuntu user interface, was still slow.  Then I found out about a minimal user interface called XFCE and boy my MACBOOK IS BACK.

I can do most of the stuff I want to do on the web and it does it quickly.  Words I’d never thought I’d say again.   However it’s not without it’s drawbacks.  Here’s a pros and cons list:


  • It’s fast
  • It doesn’t make your computer sound like a jet
  • My laptop is not scorchingly hot anymore
  • You learn a lot by using it


  • It’s a massive fucking pain to install – I’m not even sure I did it right
  • A bunch of stuff does not work out of the box (i.e. WiFi indicator isn’t native by default, LED keyboard doesn’t light up, etc.)
  • There’s a huge ass learning curve
  • It’s a significantly worse user experience (no multi-touch gestures AFAIK, having to use terminal all the time is a gift and a curse)

So far, the pros outweighs the cons for me and I’m just glad I have my laptop back.

If this sounds good at all to you, check out XFCE and Xubuntu (the Ubuntu version with XFCE pre-installed).

Validating A Business That Doesn’t Exist Yet Part 1: Design


As some of you know, one of the pet projects that I’m working on while I’m unemployed is Shift SMS.  Shift SMS is simple staff scheduling software that allows your employees to coordinate shift changes via SMS.

When a staff member can’t make it to a shift, they just text Shift SMS.  Shift SMS will message all available employees to cover that shift.  When an available employee wants to take the shift they can just text Shift SMS back and then the change is automatically made to the staff calendar. Or that’s what I’d like it to be.

The idea for Shift SMS came about in a really odd way.  I had a friend that works at a restaurant who was complaining to me that they had to pick up a shift from one of their coworkers at the very last minute.  At the same time, another friend was spitballing startup ideas with me that I found way too pie-in-the-sky, and in an effort to bring him down to earth I suggested staff scheduling with SMS.

The more I thought about the idea for Shift SMS, the more I started to like it.  During university, I worked in a retail store and I remember seeing my manager standing in front of the computer for hours trying to come up with a staff schedule.  At first, I just thought that my manager wasn’t technical and didn’t have much to do, but I soon realized that organizing people in a schedule is actually a huge pain in the ass.  I did some customer development while getting coffee on the idea of Shift SMS and found out that a lot of businesses actually have this problem.

Originally, I was in contact with someone on Odesk about actually building out the software for a small amount of money.  I’m a big proponent of outsourcing work (in theory) but I’ve never actually gone and done it.  For Shift SMS, this was my thought process:


  • It’s cheaper than finding someone locally.
  • The MVP (minimum viable product) could be done quickly and I could go out and try and sell it.
  • It would be a good learning experience.
  • I’ve heard a lot of good things about outsourcing development from people like Tim Ferriss and Pat Flynn
  • Once the software was built, I wouldn’t have an excuse to not go for the startup dream.


  • I’d have to pay up front for a product that I’m not sure that anyone would buy.
  • I’ve heard horrible things about outsourcing programming from a lot of other people.
  • The person wanted to program using PHP (using a LAMP stack), but I was really adamant about using Ruby on Rails to build it at the time.
  • Felt like I was using Odesk as an excuse to not find a technical cofounder because I wasn’t confident in selling the idea.

In the end, the cons won out.  It wasn’t entirely about the money, as much as it was about the fear that I wouldn’t do anything with it when it was finished.  So I’ve made the decision to validate the idea before I put any real investment into the development of the software.  This means I’m basically marketing this company as if it was real until I get enough interest (as judged by email signups, mostly) and then I’ll build.


shiftsms landing page


I am 100% confident that if you went to the Shift SMS website right now, you would think it was a real startup.  Seriously.  It’s all thanks to a CSS framework called Bootstrap.  Simply put, Bootstrap is like a piece of code that makes everything looks decent enough for almost every occasion (A special thanks to Carlos from Blacktie.co for his free Bootstrap theme).  The image of the hand was provided by a design agency that does app mockups, and the screenshot was made with an iOS 7 screenshot generator.  The copy on the landing page took about 2 days to write and edit, and the blog was a WordPress install with a customized version of the Flato theme.



When I started my social media profiles (which I’ll talk about in the next post), I realized that I really needed a logo.  I didn’t need it to be groundbreaking, or change the world.  I just needed some sort of graphical representation of the company.  If I got the company up and running, I could always change that later.  So I went with literally the most basic concept and whipped it up in Adobe Illustrator in about 10 minutes.

Here’s how:

  1. Draw a square with rounded edges (through sheer experimentation, I used a 30 px radius on the corners).
  2. Draw a triangle.
  3. Join the shapes.
  4. Write “shift” in the middle using the font “Montserrat” which is all the rage with the kids these days.
  5. Save as transparent PNG.


Overall, it’s been a lot of fun coming up with the concept and hacking together a site that looks like something that’s legit.  In my next post, I’ll talk about the marketing plan for Shift SMS.

In the mean time, if you could follow @shiftsmsco on Twitter and Like Us on Facebook, that would really help with the experiment!




My experience with Whatsapp in Hong Kong

So as you’ve probably heard, Whatsapp has been acquired by Facebook for $16 billion dollars in cash and stock.  I was pretty bullish on this purchase, but it wasn’t too long until the world of Twitter kind of lost their mind about it, so I felt compelled to share my personal experience of Whatsapp on my recent trip to Hong Kong.

1. Everyone and their mom uses Whatsapp

The very first thing that happened when I walked through the terminal doors into the arrival area in the Hong Kong area was my mom took a photo of me to share in her Whatsapp group chat with my aunts and uncles.  My mom did that.

It’s no exaggeration to say that Whatsapp is fucking everywhere.  I used Whatsapp to communicate to every single person I met in Hong Kong.  Classified ads and billboards on the street have Whatsapp numbers listed.  It is fucking everywhere.

2. People use voice notes in Whatsapp like a walkie talkie

While people in Hong Kong still talk on the phone, a lot of people are using the voice notes feature in Whatsapp like a walkie talkie.  Even I started doing it.  Go figure.

3. Whatsapp is so ugly and uncool that old people use it

The main strength of Whatsapp is that it appeals to a demographic outside of the tech savvy 18 to 35 year olds who have already moved on to other chat apps.  I saw a crap ton of elderly people using Whatsapp with gigantic fonts on phablets and it ironically did not break the UI of Whatsapp because it’s so crappy to begin with.  It’s a solid platform with a crap ton of users and I think that because of it’s wide spread distribution to people who don’t cycle apps too often, it’ll stick around for a while.

In conclusion,

Facebook clearly needs to do something with Whatsapp in order to get their money’s worth from this investment. It’s pretty clear that Facebook is buying the user base, but it’ll be cool to see what they do with Whatsapp to try recoop their cash.

“Only a handful of people in the world that can tell the difference between you and me”

Here are 2 websites:

Website 1

Website 2

If we went and asked 100 random people which site they liked more, what do you think would be the “like” ratio between website 1 and website 2?

50/50? 60/40? 70/30?

Now, what if I told you that website 1 was developed by what I’m sure is a fantastic digital agency for approximately $25,000 and website 2 is a generic Themeforest theme that costs $13.

How would you feel?

Just like the clip from Good Will Hunting, one the greatest movies ever, there’s only a handful of people in the world that will really know the difference between the two sites.  Seriously.  But more importantly, if you’re not in the tech world, why would you even need to know?

Much like how IKEA dominates the furniture market with stuff that’s “good enough”, will cheap web development dominate  the future?  With sites like Themeforest and Odesk, you can get extremely low cost development done depending on how technically savvy you are, and how technically advanced your product is.

What value will the digital agencies of the future have to bring in order to stay alive when a pretty-damn-reasonable website theme costs less than a 20 piece McNugget meal from McDonalds?




How to fix the “stuck on loading screen” bug after OTA update to 4.4 Android Kit Kat


It seems like a lot of people are having issues with their phone after doing OTA patch to Android 4.4 Kit Kat.  I think I read somewhere that these issues are partially due to the fact that I have a rooted phone.  However, it is extremely annoying to have your phone soft brick on you, especially due to the fact that I wasn’t doing anything with untested roms or kernels.  Anyway, on to the guide:

Continue reading →

My latest project: “Run Your City”

work in progress


I’ve been getting really in to sports lately and the main reason is because sports is one of the last thing in the world where narratives aren’t constructed. Take TMZ for example – TMZ is basically one giant factory of narrative. Every TMZ story is essentially as follows: “This happened and you should care about it”. After a while, everyone hits that realization and thinks “why am I reading this”?

Sports are different. Every single game has a protagonist and an antagonist and it all depends on your preconceptions, based on a multitude of factors (geographical location, perception of players, bandwagonism, etc.) and the objectives are clear. You want your team to fuck over the other person’s team in a the most brutal and soul crushing way possible. The narrative is built in because there will be a winner and a loser.

But what about running? In my last post, I talked about the website that I had made for my friend Aimee about her running club The Night Terrors which is a group of people that run together. The website I built was designed to build some unity through a shared experience and showcase that unity to the world.

So now we need an antagonist.

If you’ve ever seen the movie “The Warriors” you’ll immediately get this concept, but if you haven’t, this it it in a nutshell:

  • You have your crew.
  • You go around town claiming territory.
  • Anyone that takes your territory is toast.
  • That’s it.

The team concept is easy enough. But territory is a little harder. I started brainstorming about what possible way you could apply the concept of territory to this activity, and what came out was the idea of using the APIs of running trackers (Nike+ will be the first one that we’ll be using) and mapping it out on Google Maps. This concept of plotting your run isn’t new or revolutionary, but what is unique is merging your running data with a “team” and mapping that data against other teams.

The final product will be something like this:

Step 1. You log in to the site using Nike+, which will then take your running GPS data.
Step 2. Your data will be pooled into your team.
Step 3. Your team’s data will be plotted in a certain colour over google maps. The other team’s data will do the same.
Step 4. The overlapping streets on a map will be a mixture of colours and the only way to claim that street back is to run over it more. Or alternatively you can choose to roam on the uncontested territory and get a larger piece of the street.

My friend Benji and I have been slowly hacking away at this thing using javascript (and python in the future) and we’re at the stage where we’re able to plot points on a Google Map, so it’s sort of coming together. I hope that in a few months when it comes together, you’ll really enjoy what we’ve built.


New work: Night Terrors Run

Night Terrors Run


I made a website for the first time in a hot second.  It’s for my friend Aimee who has a bad ass running club called The Night Terrors, which is in Toronto.

The site is pretty bad ass.  It compiles the last 30 or so images (it varies strangely…) from Instagram with the hashtag #nightterrorsrun and posts it.  To do this, I used Instafeed.js which is so easy that even I could do it.

To keep it ghetto, we hosted it on Dropbox, which explains the horrendous redirect.  Aimee’s registrar doesn’t allow domain masking.  I already knew how to do it in the past, but if you’re looking for a pretty good guide on how to do it, check out this guide from Sican Studios.



TOJam – Friday May 3rd!

A clip from our video game with a character not inspired by Arnold

TOJam  is coming up in about a month and I can’t wait.  I’ve already hollered at the people that I worked with during Toronto Global Game Jam to give it another shot.  There is something with the 48 hour format that is so attractive – the catharsis at the end of the weekend is something that I don’t really get from anything else in my life.

Anyway, while we’re on the topic, I haven’t blogged about my previous experience at the Toronto Global Game Jam.  I had a really amazing time working with a really impromptu team that was made at the last second.  I think everyone really pitched in with any skill that they could provide and strangely, we were one of the few teams that actually finished our game.

Check out the game that we made here!  We were actually fortunate enough to have the game actually featured on the Melon JS website for the framework that we used to make the game.  Any press is good press!  Hopefully I’ll see you all at TO Jam!

Using Sentiment Analysis To Improve the Luongo App

Oh not, not another goal let in by Luongo

So last night, Benji and I really stepped the Luongo app game up to another level by adding sentiment analysis in deciding what people were thinking.  Before, our main algorithm was really elementary and only detected people who tweeted the words “luongo” and “fault” and then counted all the tweets that had the word “not”.  We would then compare the number of tweets that had the word “not” (indicating that people didn’t think it was his fault) with the number of words without the word “not” (indicating that people did think it was his fault).

Here’s a snippet of the code so you see exactly what it’s doing:

results = tweepy.Cursor(api.search,
q="luongo & fault",
for r in results:
#print r.text, r.id
# r now contains one tweepy result object
if r.text.find(u'not') > -1:
n += 1
nn += 1
count += 1
if n > nn:
print "That was luongo's fault"
print "That was not luongo's fault"

Pretty basic.

Now, what we’ve done is we actually take the data that we get from the Twitter API and send it to another API called Sentiment 140 to do sentiment analysis on all of the tweets featuring the word Luongo.  Sentiment 140 will analyse each individual tweet that says if it’s a positive, negative or neutral tweet and then we count up that value like before.  The reason that this is better is because Sentiment 140 will actually look all words within the tweet which contain positive or negative values instead of just looking for only the word “fault” as a subject and “not” as the counter indicator.  For example, the following is a snippet from the JSON response from Sentiment 140.  It’s ranked as a negative tweet (negative tweet has polarity = 0):

Sorry we broke your goalie, mister. #Luongo #Canucks Go #Bruins”,”polarity”:0

Here’s a tweet that’s ranked as positive (postive tweets has polarity =  4:

@loveforthree Pretty good for a team that needs Luongo…”,”polarity”:4

So asides from showing that Bruins fans are terrible, Sentiment 140 does an excellent job at figuring out whether a tweet is positive or negative, especially compared to our previous algorithm.  There’s a couple of challenges that we’re facing, which is whether we’re only reporting on tweets with the word “fault” in them, or just assume that any tweets that are positive and negative during a game will generally have some bearing on the number of goals scored.

Our next step is going to be importing this script to a server so you can all start accessing it during games!  It’s gonna be cool.


Geeking out with Python – Was That Goal Luongo’s Fault?

Was that goal luongo's fault?

As some of you may know, I’ve been taking Computer Science 101 on Udacity, which is an online university which I think is fucking awesome.  Their structure of 1-5 minute youtube videos with quizzes shoved in the middle totally works for me compared to stuff like Coursera and MIT Open University.  But hey, what doesn’t work for me might work for you and vice versa.

Anyway, I’ve been relearning python (which I took in “real university”) and it’s been pretty interesting.  Udacity’s first unit is actually way more difficult than the entirety of my CS class, which I found pretty surprising.  The main thing that Udacity is really clear about is that programs are really just problem solving broken down into very basic steps.  That’s probably worth the price of admission alone (which is $0.00).

Late one night while watching a Canucks game, I found myself having a problem that I always seem to have which is whether the goal that was let in Roberto Luongo was actually his fault, or if my bias was blinding me.  Then it hit me.  What if we could create an app that would go on twitter and tell me whether people online thought it was his fault?  And that’s exactly what we did.  After signing up for the Twitter API key, we got to work hammering on the Tweepy module and started to build code on previously documented code.  It only took about an hour to build the first alpha version of the code, but holy shit it was the most exhilarating thing I’ve ever done on a computer.

We’re going to improve the algorithm that calculates the mood of twitter, but for the time being the code has spoken:

result of luongo app