Me: "We terrified engineers into secrecy"
Posted on October 10, 2013 at 08:59 PM
A lazy article to be sure, since it's all taken from Quora. There's some variation in the perspectives, because different people worked in different parts of the company. If you were in engineering, you had individual power even as a lowly coder. In any other department, not really.
I did actually talk to a journalist a few months ago about Apple's culture, but it seems that nothing came of that.
xRIM: The Virtuous Cycle
Posted on January 10, 2012 at 01:56 AM
What would happen if a handful of ex-RIM employees started up new companies? Food for thought. Thousands have been laid off, we could get dozens of new startups. The groups would be experienced, knowledgeable, compatible, the ideal for a founding team. They would be connected to former colleagues wealthy from stocks from RIM's early days, making it easy to raise seed capital.
On the other hand, the RIM "diaspora" could drift away, getting jobs in the US, seattle, silicon valley… pulling valuable human connections, knowledge, and experience out of the local loop.
It's not hard to see that the first scenario is better for the region. The existing cluster grew because individuals, once they get a taste of the industry, cycle through many companies. In fact, this region has been an entrepreneurial centre since the industrial age. Electrohome for example, a major electronics company in the mid-20th century, was founded in Kitchener. While Toronto has more tech and sheer scale, KW has a greater concentration, and it's concentrated groups of entrepreneurs that create the upwards spiral.
I can't go without mentioning silicon valley, because I spent a significant part of my formative career time there. Around the time of Electrohome, there started a lovely chain of diasporas and virtuous cycles in the bay area. Shockley left Bell Labs to start his new company. The "Traitorous Eight" left Shockley to form National Semi. More left to start Intel and AMD. At SRI, Engelbart's employees skipped out to join PARC. PARC people left in many directions–including the Mac division at Apple, as well as Adobe and 3Com. Ex-3Com people are all over the place. More recently, there's the Xoogler effect, leading even to specialized ex-google-only VCs.
My point is this: if we can keep the xRIM in the area, then cool tech will be created, the cluster will expand, and new startups will grow. That's a good thing. So, let's see if we can see the silver lining in the cloud and open up some doors.
Oh yeah, and come out to StartupCampWaterloo12.
How to interview well at Google
Posted on August 29, 2011 at 10:11 PM
Categories: tech, code, infographics, jobs
Some friends of mine have been interviewing at Google and I've been helping them prepare. After some practice interviews, I drew up this flowchart for them to take with them (mentally) to the interviews.
Google uses "oral exam" type interviews:
- The best preparation guide is by Steve Yegge.
- You can pretty much ignore all the official guides that Google provides.
- Expect tough questions of the type that you would have received in your advanced CS classes.
- You can also mine programming contests for good questions.
- Another good source of questions is this mathNews question list.
For another strategy, pull out your copy of CLR(S) (you do have a copy, right?) and re-learn everything. It's all fair game in a google interview.
After you start reviewing, you must do practice interviews. Invite a friend over to ask you questions. Here is what they have to do:
- Pick a challenging question and read it to you.
- Not give you any help at all.
- Ask for a solution in pseudo-code. When you provide it, ask for the order of magnitude runtime analysis.
- If you make a mistake, after a while, they should say "are you sure that's correct?"
- If you don't give the optimal solution, they should let you develop it, and when you're done, say "do you think there's a better way to do it?"
Believe it or not, interviewing someone isn't a fun as you think, so provide them with beer and/or pizza. Meanwhile you must do your work on a whiteboard. If you don't have one, use a flip-chart or as a last resort paper.
Trust me, answering questions in real time on a white board isn't like doing them in your head. You must practice this or you're going to mess up the interview. Practice with a friend!
Finally, use the interview flowchart to answer the questions:
- The first, simplest solution just has to work. Don't worry about runtime at this point.
- Start with pseudocode. Only real code if they ask for it.
- Do a bunch of examples. Make up some sample data and run through it by hand. This will help you understand the problem better, even if you think you already do.
- Once you complete a simple (slow) solution, prove it works and then move on to making it faster.
If you do well, the interviewer will tell you you're done before you run out of time. Good luck!
Scientific American infographics or chartjunk?
Posted on July 29, 2011 at 08:35 PM
Categories: infographics, science
This data graphic isn't just crazy, it's misleading.
Enhanced information graphics are part Scientific American magazine's refresh effort. They probably feel the pressure from Seed magazine's great imagery. Right now they're they're just flailing around and showing how to do it wrong.
When I first looked "Baby's Life, Mother's Schooling" I thought it was a periodic table of the elements with psychedelic colours. My first intuition was the blue arrows would show the increase in child survival in each country as mother's education grew. But the colour gradients and line thickness changes confused me.
So I read the accompanying text. It purports to explain:
"Mortality drops in proportion to the years of schooling that women attain … as seen above in each rising line."
(this is wrong).
The legend clarifies what the colour gradients mean. It seems that the thickness and colour of each line shows the rate of infant mortality. The rising arrow, on the other hand, shows how much, between 1970 and 2009, education levels have gotten better for women. That's not what was advertised.
I thought I was looking at improvements in child health, not improvements in parental schooling. Where's the real data? Try to read the thickness of each line from left to right. It's not easy to quantify the thickness change by eye, and yet this is the key chart data.
- Things seem to be going well in Guyana. But in fact, the change in infant survival has been minimal. Line thickness stays the same.
- Yemen appears to be doing poorly, but in fact, infant survival got better, even as women's education stagnated, contradicting the central theme. Line thickness decreases, even though the angle is flat.
The irrelevant time data obscures the relevant correlation data. On the basis of this evidence, I claim that the chart is not only ugly but actually misleading.
In addition to these massive flaws there are also some only major flaws such as:
- The table of elements style obscures the geographic layout.
- The grid layout distorts actual continent shapes beyond identification.
- The colours surrounding each continent are unnecessary non-data ink and clash with the data colours.
- The extra world map in the legend adds to the confusion about geography.
- Since the arrows point up, the title should say that "child survival rates go up" rather than mortality going down.
That's a load of complaining, and it would be inappropriate if I didn't end by showing how to fix it. So. If I had been involved in the editorial design, I would have suggested that the artist replace the grid with a real world map, which can easily contain the data elements in free-form layout on top of the relevant country. Next, I would have made each arrow a mini-graph keyed to education in the X dimension and survival in the Y dimension. I would have calmed or eliminated the colouring, since it adds no information.
Multivariate charts are tough to implement, all infographic designers are aware of that. However, that's no excuse. Scientific American should be a beacon of good data graphics, not a disseminator of chartjunk. They need to get their game in shape before they consider themselves serious purveyors of data visualizations.
I got some really awesome comment spam recently. Here's an example, from my post on Nerdcore music (I deleted the comment because it contained a spam link):
LOL. I think you may have missed your calling. What you need to do now is get some oversized pants and some dark shades. Add a little bling, and they go on tour. You'll pull geeks out of the woodwork. Heck, I bet you could fill a decent sized coffee shop. On second thought, maybe you should stick to your day job.
If this was written by a human, they put some actual thought and energy into it. If it was written by a chatterbot, I'm seriously impressed. Either way, great work, whoever you are!
A friend just asked me for some advise on buying speakers — should she get Bose or Paradigm? Well, I had a few words to about that, so here's my response:
Here's an answer that's probably much longer than you wanted but you've hit a personal obsession! Maybe I'll turn this into a blog post :-)
I'm going to throw you a curveball with a totally unorthodox opinion. Speakers are funny, there's no trade secrets or patents that big brands have to make better speakers. It's basically heavy metal and the more expensive the components the better the speaker. And the components are all commodity parts, so big companies have no real edge or benefit. Ads will tout the benefit of odd designs and so on but really what you want is a big, heavy box with good metal inside. MDF (yes, fibreboard) is a great material for the case because it doesn't vibrate.
But—if you get a good pair with a good system, you're going to hear the difference and you'll never go back!
I would stay away from the big brands, because you're paying for marketing, not parts. Bose spends a ton amount of money to convince people that their speakers are awesome, so when you buy the speaker, you're paying for all that marketing. They also use tricks like compression and bass boosting that psychologically make people think it "sounds better" or louder but break down the fidelity of the audio to the original recording. If you want to stick with a known name try B&W.
But you don't need or necessarily want to get a brand name. Instead go for some tiny company in some guy's shed. A friend of mine bought a pair of speakers made by a guy in a shed in Hamilton and they're awesome. My speakers are AudioEngine 5's and they're made by some tiny company in Mississippi and they're very very good. They put the system in my car to shame. Guys in sheds make great speakers because they buy the best parts and have no overhead and there's no magic—what you want is totally dedicated craftsmanship.
When you decide to invest in speakers the first thing to do is head to a proper audiophile level shop and listen to as many as you can. Check out for example Alternative Audio. Turn the system way up to find out what happens to the sound. There's big difference in how they sound just like different instrument makers (they are effectively instruments). For example here's a comparison of two brands on audioholics.
The audio forums are the best place to get unbiased opinions from people who really know what they're talking about. Most reviewers (like on gadget sites) will be judging based on features which don't matter. What you want to know is, do people who have good ears think they sound good. One fun forum for people who really know their hardware (like which crossover is best?) is diyaudio.
You can also trust true audiophile sites because those people are just obsessed. For example have a look at stereophile.com. They have just reviewed for example a pair of bookshelf speakers from a Canadian company called Totem Dreamcatcher. They loved them and they're about $600.
You should be able to get a really good set for under $1000. Don't go higher because you get into stupid money territory and the law of diminishing returns kicks in real fast. Also seriously consider buying used, because they don't degrade over time. No moving parts, and the good ones have good components. You can save a ton of money used. For example look on Audiogon.
If you want to read a really awesome and trippy description of one person's highly convincing theory, check out Mother of Tone ... it's worth checking out as a musician and makes a lot of sense. Start back at the beginning if you have time.
Regarding surround: first get a good stereo pair, and then add the other three, which don't matter nearly as much, simply to add the surround experience.
Finally, speakers are only a part of the chain. All audio hardware follows the general rules above: there's no special magic, don't believe what brands tell you, it's all about components, heavy metal is good, listen before you buy.
In summary there is no "best speaker manufacturer". Go to a high end shop, listen and find out what you like, and then buy used or online from a guy in a shed.
(Pictured is Altec Lancing Voice of the Theatre—a true classic)
Google doesn't provide any "official" way to embed a YouTube video in 480p. It always drops you down to 360p by default, and that just looks crap. You can embed in HD so why not 480p? No one knows. But don't despair, there is a way!
Here's some code for you:
<object width="853" height="505"> <param value="http://www.youtube.com/v/MOVIE_ID&amp;hl=en_US&amp;fs=1&amp;rel=0" name="movie"> <param value="true" name="allowFullScreen"> <param value="always" name="allowscriptaccess"> <embed width="853" height="505" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash" src="http://www.youtube.com/v/MOVIE_ID&amp;hl=en_US&amp;fs=1&amp;rel=0"> </object>
That will give you an "HD width" 480p video. Just change "MOVIE_ID" to the ID of your video (e.g. "J-lHxxToCfo") in both places. The width of the embed will be 853px, which is 16:9 for HD video.
What if your video is 4:3, i.e. 640x480? I can't find any clean way to embed at exactly that size, if you use the above code you'll get black bars on either side. However you can use a negative margin to get a box of the right shape. Just wrap your object like this:
<div style="width: 640px; overflow: hidden;"> <div style="margin-left: -107px;"> <object etc ... ></object> </div> </div>
The controls will go off the screen but at least the user will still be able to click the centre of the video to start and stop it. Here's an example:
My column width is less than 640px but hopefully you get the idea.
CS Rap / Geeksta Rap / Nerdcore
Posted on February 13, 2011 at 10:50 PM
I'm not convinced by gamer nerdcore but good CS Geeksta Rap is cool. Finally some street beats that talk to me!
I found a few new lines in a dream recently. Don't know if they'll ever fit into a rap though.
Java or Scala it doesn't matter to me If you want I'll even write your app in PHP 10 PRINT "HELLO" 20 GOTO ONE-OH Your bytecode is subject to my interpretation Use my RJ-45 I'll put a packet right into your ass If you don't do what I want then I will fork your git I'm fully dedicated but you just can't commit
Why condition your battery once when you can do it three times?
Posted on October 13, 2010 at 09:46 PM
MacBook users have started to discover over the last few years that their batteries can take a total nosedive into uselessness in just a few months. The first battery on my 2008 MacBook Pro was dead by the end of 2009, flat dead, and out of warranty too. Damn. Cause of death? Lack of "battery conditioning" also known as "calibration".
If you want to know how to calibrate your battery, you can refer to this hard to find guide from Apple:
To calibrate the battery:
- Plug in the MagSafe power adapter and fully charge the MacBook or MacBook Pro battery until the light on the MagSafe connector changes to green and the Battery icon in the menu bar indicates that the battery is fully charged.
- Allow the battery to rest in the fully charged state for two hours or longer. You may use your computer during this time as long as the power adapter is plugged in.
- Disconnect the power adapter with the computer on and start using it with battery power. When the battery's charge gets low, you’ll see the low battery warning dialog on the screen.
- Continue to keep your computer turned on until it goes to sleep. Save your work and close all applications when the battery's charge gets low and before the computer goes to sleep.
- Turn off the computer or allow it to sleep for five hours or longer.
- Reconnect the power adapter and leave it connected until the battery is fully charged. You may use your computer during this time.
Pretty easy to understand, right? Yeah, the only problem is that even though you're supposed to this every month or two, there's no facility on the mac that actually, you know, prompts you to do it. Nothing, nada, zap diddly doo. You'd think that Apple with their vaunted usability standards would pop up a message at the right time saying "hey, now would be a good time to condition the old battery, here's how to do it".
Also, Apple's instructions are missing two other key pieces of information. The first is that you should immediately download a wonderful app called Coconut Battery. Go ahead, I'll wait. It will tell you how crap your battery is and you can save the data to get a history over time.
Second is that that condition is not something you can overdo. Don't just do it once. Do it twice, three times even. Keep doing it until you stop seeing capacity gains in coconut battery. Most recently, my first condition went from 71% to 76%, and the second brought me up to 80%. I'm going to see how high I can get.
All in all this is a bit of a failure on Apple's part, and it makes you wonder if perhaps they are making a load of money from selling replacement batteries. It doesn't seem in character for the company. More likely, they just haven't put the time into designing a proper monitoring system that detects when you need to condition. Hopefully we'll get that soon.
Warning: May Cause Earthquakes
Posted on September 13, 2010 at 02:04 PM
Categories: theories, future, predictions, science
It seems like things that cause earthquakes are the ultimate in evil or hyperbole. But now we've achieved that end: human technology can cause earthquakes. Hurray!
A recent Scientific American article discussed a new way to generate free power called enhanced geothermal. It works great, there's just one minor drawback, it causes constant earthquakes. The project in Oregon is far enough from settlements that it merely annoys the neighbours with the small rattles. But still. A technology that causes earthquakes? That's fantastic!
Here's another one: geologists are worried that Taipei 101 may have torqued the earth so much that it opened up a new fault. Cool! The residents of the building will be OK because it's highly earthquake resistant.
All new technology presents benefits and dangers. People say that the atomic bomb is purely a danger. But think about the upside. Major international conflicts have ceased because they're too dangerous. And if we ever find a giant asteroid coming our way, we're probably going to need nukes to blow it up, right?
So I think we can actually measure our progress by the sheer destructive power of our technologies. Now that we can cause earthquakes, can the colonization of other planets be far away?