Home

Posts tagged with jobs

xRIM: The Virtuous Cycle

Posted on January 10, 2012 at 01:56 AM

Categories: tech, theories, mobile, business, barcamp, startupcamp, jobs

Blackberry_parachute

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

Interview_flow_chart

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:

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:

  1. Pick a challenging question and read it to you.
  2. Not give you any help at all.
  3. Ask for a solution in pseudo-code. When you provide it, ask for the order of magnitude runtime analysis.
  4. If you make a mistake, after a while, they should say "are you sure that's correct?"
  5. 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!

Another job opening :-) iPhone developer — learn on the job

Posted on May 04, 2010 at 04:32 PM

Categories: code, business, iphone, jobs

My iPhone custom software development business is expanding yet again and we need more part-time programmers. The last round I hired two people, now we need more. Our recent apps include Unitron's uHear to test your hearing, OurKids, the Kik chat app, and others.

You must:

  • know C, C++, pointers, object and object-relational patterns already
  • be ready to learn the iPhone SDK fast (we'll help)

I've personally been programming on the Cocoa SDK since 1998 back when it was called OpenStep, so if you can pick things up, we can get you up to speed in a few weeks.

Demonstrate your qualifications by answering 2 out of these 3 tricky questions:

[Question 1] (C Pointers) Here is some slightly odd C code, but it will produce an (int) result, provided that you make some small changes in order to make it compile. What is the result going to be, and why?

int * a = 1990;
int result = &5[a];

[Question 2] (Database design) Create an entity-relationship diagram for a small subset of the Facebook database. In particular, include in your diagram:

  • User
  • Photo (including who is tagged in the photo)
  • Wall Post

Focus on the relationships/associations between these three objects, and only include one or two of the most important static fields (like a person's name). Make sure to indicate the cardinality of a relationship e.g. one-to-one/one-to-many/etc.

To get an idea of what I'm looking for see: http://en.wikipedia.org/wiki/Entity-relationship_model

Here's a tool you can use to draw it online: Gliffy. Then just send me a screenshot. Or feel free to use ASCII art or draw on a piece of paper and photograph/scan, as long as it's very clear.

[Question 3] (C++ Objects) The C++ program below has just 2 compile time errors, 1 runtime error, and there is 1 single line missing. Send us a fixed version that compiles and runs correctly. The errors will test your knowledge of object use and management in C++, and the missing line will test you on abstract/virtual inheritance.

SEND TO: simon@semacode.com. Include your answer(s) and some source code that you have written, whether it's open source, for assignments, for fun, or whatever.

REMUNERATION: Competitive.

MORE INFO: http://simonwoodside.com/pages/consulting

(PS Please keep the answers to yourself)

//// File: futurama.cpp ////
#include <iostream>

class Drinker {
public: Drinker(); void drink( int potency ); int _numberOfDrinksSoFar;
private: virtual int cantDrinkAnyMoreThan() = 0;
}; Drinker::Drinker() { _numberOfDrinksSoFar = 0; }
class Robot : public Drinker { int cantDrinkAnyMoreThan() { return INT_MAX; } };
class Human : public Drinker {
};
void Drinker::drink( int potency ) {
  _numberOfDrinksSoFar += potency;
  if( _numberOfDrinksSoFar > cantDrinkAnyMoreThan() ) { std::cout << "I'm all done." << endl; }
}

int main (int argc, char * const argv[]) {
  int beer = 5, coffee = 3;
  Human fry;
  Robot * bender;
  for( int i=0; i<6283; i++ ) { bender.drink(beer); }
  for( int i=0; i<100; i++ ) { fry.drink(coffee); }
  std::cout << "Bender: " << bender->_numberOfDrinksSoFar << "  Fry: " << fry._numberOfDrinksSoFar << std::endl;
  fry.drink(1);
  return 0;
}

Job Opening: iPhone part-time / contract coder wanted -- we'll teach you

Posted on February 11, 2010 at 03:07 AM

Categories: code, business, iphone, jobs

My iPhone custom software development business is expanding and we need more part-time programmers. Our recent apps include Unitron's uHear to test your hearing, OurKids, an upcoming app for Kik, and others.

You must:

  • know C, C++, pointers, object and object-relational patterns already
  • be ready to learn the iPhone SDK fast (we'll help)

I've personally been programming on the Cocoa SDK since 1998 back when it was called OpenStep, so if you can pick things up, we can get you up to speed in a few weeks.

Demonstrate your qualifications by answering 2 out of these 3 tricky questions:

[Question 1] (C Pointers) Here is some slightly odd C code, but it will produce an (int) result, provided that you make some small changes in order to make it compile. What is the result going to be, and why?

int * a = 1990;
int result = &5[a];

[Question 2] (ORM) Draw an relational/DB model that would work for the Twitter database or the Facebook database. You don't have to cover all of the features, just the basics. You can use ascii art if you like.

[Question 3] (C++ Objects) The C++ program below has just 2 compile time errors, 1 runtime error, and there is 1 single line missing. Send us a fixed version that compiles and runs correctly. The errors will test your knowledge of object use and management in C++, and the missing line will test you on abstract/virtual inheritance.

SEND TO: simon@semacode.com. Include your answer(s) and some source code that you have written, whether it's open source, for assignments, for fun, or whatever.

REMUNERATION: Competitive.

MORE INFO: http://simonwoodside.com/pages/consulting

(PS Please keep the answers to yourself)

//// File: futurama.cpp ////
#include <iostream>

class Drinker {
public: Drinker(); void drink( int potency ); int _numberOfDrinksSoFar;
private: virtual int cantDrinkAnyMoreThan() = 0;
}; Drinker::Drinker() { _numberOfDrinksSoFar = 0; }
class Robot : public Drinker { int cantDrinkAnyMoreThan() { return INT_MAX; } };
class Human : public Drinker {
};
void Drinker::drink( int potency ) {
  _numberOfDrinksSoFar += potency;
  if( _numberOfDrinksSoFar > cantDrinkAnyMoreThan() ) { std::cout << "I'm all done." << endl; }
}

int main (int argc, char * const argv[]) {
  int beer = 5, coffee = 3;
  Human fry;
  Robot * bender;
  for( int i=0; i<6283; i++ ) { bender.drink(beer); }
  for( int i=0; i<100; i++ ) { fry.drink(coffee); }
  std::cout << "Bender: " << bender->_numberOfDrinksSoFar << "  Fry: " << fry._numberOfDrinksSoFar << std::endl;
  fry.drink(1);
  return 0;
}

(Update Feb 14: updated code to make my intentions clearer)

Browse Old Articles

Categories:

Popular posts:

Subscribe to:

Blogroll: