The news is out, Layerboom is now officially a part of Joyent.
Layerboom was co-founded by Howie and Trevor in May 2010 bringing on Josh and I onboard as founding employees. I met and worked with Josh and Howie at a previous job and it was a pleasure to be able work with them again. Trevor made it all happen.
For the first 6 months, all four of us worked out of a tiny room at Bootup’s old offices. Our office was a tiny 10ft by 10ft room with a giant pole in the middle. At one point, to save money, we bought packs of dogs and buns from Costco to make our own hotdogs for lunch. We calculated the cost for a cheap lunch in Vancouver ($10), we can feed on a week of hotdogs. In fact, after the acquisition, Trevor banned us from going to Costco for lunch.
Being a part of the Layerboom team has been nothing but spectacular. Trevor worked closely with Howie on the business side of things while keeping Josh and I focused on hacking out the product.
I think Josh and I both appreciated Trevor’s “Here is what we need to build, go nuts!” approach to getting the product/service out the door. Plus, we got to work with bleeding-edge tech every single day. What more could a developer ask for?
In 12 months, we built a turn-key solution for hosting companies to provide cloud services, ran our own VPS provider for a few months, threw it all away and rebuilt it from scratch (learning from our mistakes) as an appliance, sold some boomboxes and got acquired by Joyent.
We feel that Joyent and Layerboom are a perfect fit as our companies’ visions are pretty much identical.
Today marks the end of an amazing first week as a Joyeur and it was nothing short of awesome. The Joyeurs have been extremely accommodating. Nothing beats working with talented hackers who are as passionate as you are about building awesome shit.
We are glad that at the end, it was all worth it.
I haven’t written anything in a while (almost a month!). Josh even decided to call me and Howie out on it on http://josh.wilsdon.ca/2010/07/01/happy-canada-day/"">his blog. A lot has happened over the last month at http://layerboom.com/"">Layerboom and it seems like things will get even more interesting. I would love to write about that but it is still under wraps at the moment so I’ll leave that for next week.
I’ll be leaving for Florida tomorrow night staying in Orlando for a couple days visiting Disneyworld and Universal etc. After that we’ll be renting a car for a road trip down to Miami to chill and perhaps enjoy the oil filled beaches.
I’ve been looking forward to this trip for a while and I it is hard to believe that we’re leaving tomorrow! Nevertheless, as much as I looked forward to this trip, I am now looking forward to returning from the trip to get back to work. My accountant friends call me crazy for wanting to go back to work. Hey, I may be crazy, but I love it.
The ruby metaclass (also known as the Singleton class) is a very commonly misunderstood ruby language construct.
Lets look at a simple class definition:
class Dog
def bark
puts "woof woof!"
end
endThe class Dog contains the instance method bark. This is pretty self-explanatory.
What happens when you define a class with class methods (also known as static methods).
In ruby, everything is an object. That means classes are objects too.
class Dog
def self.bark
puts "woof woof!"
end
endThe Dog class above is actually an instance of Class.
> Dog.__id__ => 2152689112 > Dog.class => Class >
If the Dog class contains instance methods, what class contains the Dog’s class methods?
You might at first think Class class contains the Dog class methods. If is true, all instances of Class should contain bark method right? That wouldn’t really make sense if it behaved like that would it?
In between Class and Dog is a class called the Metaclass. An object’s metaclass is a Singleton class that objects inherits it’s methods from. The reason why it is so confusing is primarily due to the fact that they are invisible. You can, however, get a hold of the metaclass:
> metaclass = class << Dog; self; end => #<Class:Dog> > metaclass.instance_methods => [:bark, :allocate, :new, :superclass, :freeze, :===, :==, :<=>, :<, :<=, :>, :>=, :to_s, :included_modules, :include?, :name, :ancestors, :instance_methods, :public_instance_methods, :protected_instance_methods, :private_instance_methods, :constants, :const_get, :const_set, :const_defined?, :const_missing, :class_variables, :remove_class_variable, :class_variable_get, :class_variable_set, :class_variable_defined?, :module_exec, :class_exec, :module_eval, :class_eval, :method_defined?, :public_method_defined?, :private_method_defined?, :protected_method_defined?, :public_class_method, :private_class_method, :autoload, :autoload?, :instance_method, :public_instance_method, :nil?, :=~, :!~, :eql?, :class, :clone, :dup, :taint, :tainted?, :untaint, :untrust, :untrusted?, :trust, :frozen?, :inspect, :methods, :singleton_methods, :protected_methods, :private_methods, :public_methods, :instance_variables, :instance_variable_get, :instance_variable_set, :instance_variable_defined?, :instance_of?, :kind_of?, :is_a?, :tap, :send, :public_send, :respond_to?, :extend, :display, :method, :public_method, :define_singleton_method, :hash, :__id__, :object_id, :to_enum, :enum_for, :gem, :equal?, :!, :!=, :instance_eval, :instance_exec, :__send__]
Lets add a couple more methods to the Dog class using the metaclass:
metaclass.class_eval do
def sit
puts "<sits down>"
end
end
Dog.sit => "<sits down>"You may have came across code that used the following idiom to define class methods.
class Dog
class << self
def sit
puts "<sits down>"
end
end
endWhat we are actually doing above is defining a sit instance method in Dog’s metaclass.
Last week, I came across a reasonable deal for an Intel X25-M 160GB. I’ve always wanted one and at ~$2.50 per GB, it was still no easy decision. It ultimately came down to getting the drive, or making an extra mortgage payment. At the end, the SSD won me over. :)
Installation in my 15” Macbook Pro took no more than 20 minutes. The only problem I had was I didn’t have a Trox screwdriver handy and I am to lazy and cheap to buy one from the Rona across the street from my place. Screws are overrated :)
I decided to do a fresh install of OS X to amplify the overall experience. After the install is complete, this baby boots in less than 15 seconds from the time I press the power button to a fully functional desktop. It is fun to see the machine boot so fast, I literally rebooted the machine for no reason just to watch it in action.
I remember prior having the SSD, I had to wait for at least 5-10 seconds after arriving at the desktop before I can do anything. With the solid state drive, it is ready to work the second the desktop comes up. You literally see the dock icons for the startup items fly in all at once and not even have the chance to bounce.
Starting OpenOffice from a cold-boot takes 1 second. Subsequent starts take half a second. Chrome starts instantly, iTunes start in half a second, everything is just that much snappier.
If your computer is less than 3 years old and have enough RAM, this is the best upgrade for money can buy. Get one! You wont regret it. If I could go back 48 hours and get to decide between getting this or making an extra mortgage payment, I would choose to get the SSD.
About a week or so ago, I’ve started to notice my upper spine ache occasionally. My immediate assumption is that it is related to the posture I stay in for 8+ hours a day. I started to conduct some research on sitting posture in an attempt to find a solution to a health problem that could get much worse if uncared for.
The first thing people recommend is picking up the Hermin Miller Aeron chair. I’ve heard of and read a lot about the Aeron chairs before and have always wanted one, but, working at a startup, it is not something that can be justified. Furthermore, me being known for my frugality, would never spend over half a grand for a office chair, let alone a second-hand one. Nevertheless, I would much rather purchase an iPad instead.
While looking for alternatives, I came across an article on BusinessWeek: Your Office Chair is killing you. The article does make references to the Aeron chair for its popularity in the American workplace. However, they did talk to a doctor who raised criticisms on the Aeron’s height adjustability and criticized its design goals.
Don Chadwick, the co-designer of the Aeron, says he wasn’t hired to design the ideal product for an eight-hour-workday; he was hired to update Herman Miller’s previous best-seller. “We were given a brief and basically told to design the next-generation office chair,” he says.
That is not the gist of the article though. The article said researchers concluded that sitting is a public-health risk and notes that sitting in a shitty chair just makes it worse. Instead of sitting in an hour for 8.9 hours a day, they advice people to work while standing.
Looks like Jamis (of Capistrano fame) at 37signals is already doing it.
I can totally see myself giving it a try. Now, I need to see if there are suitable-for-standing-while-working desks/surface at Bootup.
For whatever reason, TD Canada Trust (the best bank in Canada by the way) decided to limit the maximum length of your online banking password to 8 characters. One possible reason for doing so may be to prevent people from coming up with passwords that are too long or complex to remember and end up writing them down.
Unfortunately, they do realize that having simple-to-remember-passwords limited to 8 characters is insecure and thus, requires your password to be composed of letters and numbers. Some sites (CRA) enforce upper-and lower case into the mix, while still limiting your password length. Perhaps it gives the user the sense of security?
Referring to an article I read a couple years ago on Password Usability, a password composed of two common words is more secure than a password composed of 6 random characters (no numbers) – chickenpaper is more secure than zcacnq. With a password composed of three common words, the password would theoretically take 2,537 years to crack against a dictionary attack (impossible to brute-force).
Which is easier to remember? Which are you more likely to write down on a post-it note and stick it on your monitor? These are both considered indefinitely secure.
kZ98c5aQ or turbogoesforawalk
You decide.