Friday, April 16, 2010

Beyond the RIM, the conclusion.

Oh did I tell you, dear blog? I got the job at RIM!
It's such good news it borders on being a small miracle.
Who woulda thought?
I get to work as a Java developer on my first co-op, skipping the slave-away-as-unit-testing intern stage.
This completely shatters my life view as a cynic of course. I'm not used to getting what I want when I want it. Life usually gives more of a fight.

I have to move to Ontario on very short notice.
Decided to drive there so that I can keep my car and my 2 synthesisers. "United breaks guitars" gave me a scare, so I'm going to avoid flying instruments if I can help it.

Next sunday, a day after my last final, I will pack up and leave.
Driving cross country on my own may be a bit boring, so I posted an add on craigslist. But let's face it, you have to be pretty dumb to go on a roadtrip alone with a total stranger for 5 days, so I'm not putting too much hope into it.

Considered offering some of the other SFU students who got accepted for jobs in the east coast, but we all get airfare covered, so it's not likely that they'd want to drive instead.

Although I think that's an excellent way to meet someone when you're both going to be living there for probably a year.

Trouble is I'm the only one who sees it that way. (always the cynic.)

On a side note, I sent the cmpt 275 instructor some hatemail. Basically congratulating him on inspiring a new generation of people who drop their trash on the floor to be picked up by others.

He liked it so much he wants to meet me to address my comments.
If he were any other man, I'd have hope, but knowing him, I can only assume this is some trick to cover his ass.

Hopefully he won't fail me for this.
That would be really sad. As much as I lack respect for him, I take him for a selfish, narrow-minded person, not a bad man.

Destroying my career over a well written, well argued insult would be devious.

this is the email:

I've been interviewing for a co-op this summer and taking this course as a requisite.


Although I finally landed a co-op, in 2out of 4 interviews, after enthusiastically describing my iPhone project, the first response was "what's objective-c?"
Imagine my frustration.
Apple does not hire SFU students, but RIM does.

Why not develop a mobile application for the blackberry and give your students a fighting chance.

Learning an extra language is nice. but most of these students barely know one language and have to be carried along by the more senior members of their team. If the project was in Java, it would not only help, it would inspire them to try.
in a group of 5, 2 could never pick up the language, and every time one of the other 2 committed code, i had to go over it and restructure everything because they have no concept of object oriented design and barely know how to program. all they know is assembly from engineering classes and very basic c.
that's 5th year sfu engineers for you. putting two of them in one team didn't help.

i can't take leadership when i have to deal with cliques. i have to let them try and fail first to prove my point and that's a total waste of time for me and the group.
put more thought into group compositions. maybe even force every team to assign a single project leader and give him/her some authority to handle internal issues.
I had to carry 5 people. and i had to break the law (hack osx) in order to do it.

I gained experience in a fringe language that never was and never will be an industry standard, and a better appreciation of the necessity of well defined team leadership and prior preparation.

Speaking of preparation...
I asked you last term to add something in the line of "This course relies heavily on Macs, so it would benefit the student to have access to one" in the course description.
It's a very small effort that would make a huge change. hacking osx takes time, if students know they need to do this (yes they do) they need to know about it in time.
I haven't checked, but according to the class reaction, i can safely assume you didn't do it.

That would have taken what? 5 minutes of your time? I guess you were powerless to do that too.

You know how they say actions speak louder than words?
Here's what values i learned through action in this course:

  • you don't need to take responsibility for your group tasks, someone else will.
  • you don't need to participate and contribute equally, because if your group succeeds you will get the same grade. why make the effort.
  • ignoring conventions and accepted standards is clearly an example of good UI.
  • accountability and responsibility is for suckers.
Congrats, you've inspired a new generation of people who leave their trash on the floor when they go to the cinema (why bother carrying it to the trash, someone will pick it up). I'd be proud if i were you.
just my thoughts on the course as i missed the evaluation and i believe in feedback.
you may and probably will ignore this,
but hopefully someone after me will benefit.


cheers.

Now that I reread this, I feel bad. This doesn't well implement what I learned in 376. I hope Ted doesn't see this :) I got the numbering all wrong, misplaced comas all over, sentence structure is a mess. the foramtting is bad, transitions lacking. not well written at all.
And the worst of it is I actually said "hopefully".

In my defense, it was revised so many times it lost all form and structure and written very late at night over a short period of time.
Sorry Ted!

Tuesday, April 06, 2010

Phase III : Revenge of the bunny.

The theme for today is the ingredients of poor education.
What better fitting time for this topic than Easter itself.

I found myself watching the Frame channel, which typically shows still frames, but diversifies itself to other curiousities during festivities. This time it was a bunch of rabbits sitting around surrounded by colored eggs. I watched it with my roommate and we laughed. We laughed at the thought of there being someone whose job title is "Head of programming" for the Frame channel. And better yet, imagine the person whose job it is to set up those bunnies with the eggs, and edit those frames.
There was nothing else to do. We had to laugh like hell.

Every year I ask myself how does something so stupid survive this long. Rabbits that lay eggs.
And what's it got to do with Christianity?

Finally I came up with a reasonable theory:

Jesus was killed by rabbits.
Christianity hatched out of the death of jesus and gnawed upon its remains to sustain itself.
Therefore, rabbits gave birth to christianity.

But what came first, the rabbit or the egg?

Yeah, Easter is pretty damn stupid.

Touching on another point of poor education:

I think our application looks pretty polished.
Thank you imaginary rabbit for giving me the time I needed to update the user interface.

Phase 3 was pretty much me.

For about a week now I've been the only one committing updates.
Steve hasn't done shit as usual, and feature deadline is tomorrow.
I took it upon myself to complete two out of his three assigned tasks. But I don't think I have the time to learn enough of OpenGL ES by tomorrow evening, so sadly our application will be lacking in awesome animation. Rotation, scaling and relocation is about as animated as it gets. Flashing labels and such. no particle animation... and thank you steve for that.

I think i'm going to crucify him in tomorrow's meeting. It's Easter after all.

I'm jealous of the other groups...

Every time I sit in the computer labs I see them work on their projects together for HOURS.
And our group?
Our group meets twice a week, at best, for 10 minutes at a time.
I've seen better group dynamics on Celebrity Apprentice.

And to think I actually considered taking this course without a Hackbook.
"Noooo! of course you don't NEED a Mac, you won't be the only member of the team you know. There'll be plenty of documentation to do. You could let your teammates do the programming!"
Yeah. That's the attitude I'm expected to adopt: "Let others carry the heavy load."
Great lesson there, Herbert.

Same instructor as last term. I desperately tried to convince him to allow me to develop for the Android instead, but clearly this is about iPhones, not mobile development. I dropped that course within the first week after failing to install OSX on my Ttoshiba.

I had 4 days to do it before the drop deadline.
I got it working on the 5th.

I was pretty pissed at him for that. If I had known beforehand that this course required a Mac, I'd have been prepared. I'd have done it over the pre-semester break.
He even encouraged me to drop the course, saying maybe next term it would be someone else doing it.

(he's been doing this course for about 4 semesters straight, so i assume he knew he'd be doing it the following term as well. that was a straight lie.)

So I did drop it, only to take it again this term. Because honestly, I have no desire to develop for Apple.

Anyways, the result was fruitless. The following term it was Herbert again, and iPhones on the menu.
Good thing I got OSX to work.
I shudder at the thought of where our group would be at this point without my contribution.

This isn't a point of pride, oh no.
This is anger.
This is the stuff bitterness is made of.
The disappointment of another group project that failed to reach even an inkling of its potential.
Another group of people that failed to communicate over something so very simple.

But today I'm happy. I'm happy because it's over.

Friday, March 26, 2010

Flip bits, not burgers.

FINALLY!
An interview for a Java developer position at RIM. April 14, here i come.
They don't know this, but they're going to hire me whether they like it or not. If it's not going to happen now I'll just design a kickass Blackberry application, then I'm in for sure.
Just watch.

But I really want this to be now.

Our application now uploads and downloads without error, it even accesses the php script that generates the user profile based on the unique identifier (currently email), however we're considering changing that to the device ID, because asking 9 year olds for email is not too practical.

Then again, designing an iPhone project for 9 year olds isn't exactly swimming in the reality pond. Ever seen a 9 year old with a $900 iPhone? Right? I know. What can you do, welcome to SFU, where innovation is a rare animal.

I had to go to the hospital today, and had an interesting conversation with the attending physician.
When the subject of my studies came up, he mentioned that he remembers when they've only just started adding Computer Science into the degree curriculum, and how hard it was for CompSci grads to get a job at the time. I mentioned in retaliation that in his office I had first witnessed someone actually using a type-writer. (He's very old and set in his paper-dependent ways). He did confess to slight jelousy of a coleague of his who recently computerized his office, with voice-recognition dictations that immeditately get sent to the right referrals and other such technomagic.

Then why doesn't he do it as well? Yes, it will decrease processing time significantly and reduce the liklihood of files getting lost, but my old assistant is set in her ways, and frankly I've never seen her by a computer. Also there are other offices that still use paper, how would I interface with them?

-- scanner and printer.
-- templates.
-- voice activated dictation and search.
-- custom-made design to fit your office.

Tons of reasons to automate your office beurocracy.
But the cost of doing so is high.

True. So I suggested he contacts one of the local Universities. We're doing mock projects anyway, why not do his office automation as a project, with a Professor supervisor, get some spice and meaning into these pointless 275 classes.

He thought it was a brilliant idea.

Why doesn't the 275 Prof. think of that? Too much work? Responsibility?

Sad.

Beyond the rim.

At long last I get a semi-positive response from RIM. Evidently I've been shortlisted for a Java developer position (says the email), which may or may not lead to an interview.
Giving me hope yet keeping me firmly on the ground. Gotta love RIM.

Our iPhone project is finally getting somewhere. I finally managed to get the network controller interface to interact with the web serrver the way it's supposed to. What a pain that was. Network programming is a sonofabitch.

Good marks on the technical assignments. If Noel only knew. It's funny that one of the teachers that influenced me the most, and one of the sharpest individuals I've encountered teaches first year English at Langara. Highest mark I ever got with her was a C+, but man oh man, was I proud of that.

Being a programmer is very stressful. I guess it's the combination of deadlines, stupid team-mates, and the unrelenting expectation for you to master every aspect of the field.
I have never met an animator who did not frown at my knowledgebase the moment he realized I have never used photoshop. As it turns out, specialists will always judge you by your familiarity with their realm of the industry.

I suppose it makes sense. Physics branched out of Math, which branched out of Philosophy.
The further you go into detail, the less you have in common with others...

I think I finally know what I want.
One stress-free life with 2 sugar.

Tuesday, March 23, 2010

Unit Integration

For this phase we work on profile persistence (storing profile attributes to disk) and web connectivity (transfering the profile .plist to the website via ftp).

Feature freeze is end of day wednessday.

Here's what bugs me. Engineer 1.  was supposed to get the property list in order (persistence), and has since posted 3 broken commits in which the system crashes every time it tries to save to file.
This is because he didn't actually add the .plist to the repository, so naturally it can't save anything.
Instead of fixing the problem, we have spent the last 2 days arguing about whether it exists.

I just don't understand this mentality. What's to argue about? the file is not in the project tree, and it's not anywhere on disk. done deal, it doesn't exist, and it doesn't get created. Accept it and figure out why.

Maybe he's trying to write to a location he has no permission to write to? maybe he's expecting a directory that isn't there to be there?

who knows.. one thing for sure, you're not going to fix it if you don't acknowledge there's a problem.

Why do I have to waste 2 days in which i could have been adding features and integrating my own changes. just download your own damn commit and figure it out yourself the moment someone raises a complaint. What a stupid attitude.

the sad thing is i had already designed a working persistence scheme, and the only reason i'm not using it is because he announced on monday that his version "works perfectly".

that and the fact that if i completely take over the design stage the other members would be discouraged to contibute, and i can't do everything myself.

As is typically the case in this group, personal ego takes precendence over the project.

I still don't understand how is it that 4th/5th year engineers don't know about static function and when to use them, the evils of magic numbers and hardcoding, and not only do i have to teach them, i have to swim upstream while doing it because both these morons have actually worked in the industry, so who am i to teach them.

It's not saying much for SFU engineering, or the company that hired them.

If you hard-code a save path in different functions in your code, instead of using a savePath variable or getting it from a property file, e.g.

void functionA {
   doSomething("/folder1/folder2/file.ext");
}

void functionB  {
   doSomethingElse("/folder1/folder2/file.ext");
}

you'll be having lots of fun later changing all the path strings if you have to change the path.
if you then port the app from the simulator to the iphone device, chances are the save path will change, especially if you used a ~ to refer to the home directory that i don't think exists on the iphone.
in a 2000 lines project it's annoying, in a real world 50,000 lines project it's a good reason to have you fired, unles you can explain to your boss why all your programmers are hunting easter eggs instead of working on new features.

i thought this was basic, but i guess it isn't.
something to think about.

Saturday, March 20, 2010

Revision 111

By the way, before I start, if you're reading my blog and you don't understand the title, it's from a terry pratchett book about a made-up universe in which the world is a flat disc sitting on the backs of 4 elephants riding a giant turtle through space. It is a world where narrativium is an actual element. A world in which earthquakes are caused by butterflies. The specific quote is from Guards! Guards! where the city watch faces a dragon threatning to burn down their city.

If you've never read Terry Pratchett, I'm jealous, because that means there are about 34 titles of guaranteed entertainment waiting for you. If there's anything you should take from my blog, Terry Pratchett is it.

Back to business (as far as the 275 project is concerned).

We actually got full marks for the presentation and 90 on phase I.
Good job. It's nice to see results for hard work.

We also had our first meeting (after the presentation) this wednesday.
Steve was first to show up, so I got to spend 10 minutes of quality time with him. He apologized, and I told him that apologies don't change the past. I said that I find him unreliable, and that if it weren't for the instructor's indecision, he'd be off the team. I mentioned that if this was anything other than a University project, he'd be fired, and that if anything like that happens again I would personally make sure he is off the project, regardless of his past contribution or what the instructor says.

Then the other teammates showed up, and Steve apologized again, to everyone, which resulted in a minute of silence followed by John's bitter remark that in reality, if he pulled this stunt in a job situation, and as an excuse said he had a fever, his email didn't go through, and he lost his phone, his boss would laugh while handing him the pink slip.

Gotta love John.
If ever there was a man grumpier than myself, John's it.

I think Steve got the hint.

Useless member No. 5 didn't show up at all, nor did he show up to the following meeting we had today, and I'd say he's treading dangerous waters right about now.

I  announced that these kind of stunts are unacceptable, and that if anyone pulls a Steve on us again, they're off the team, even if I.... blah blah blah.
Furthermore, I added, everyone's gotta pull their weight from now on, that being addressed to useless member No. 5 who was not present.

Anyways, this is the point I predicted earlier where Steve leads this group into ruin, I pick up the reigns, and order is established.

This is where I say "I told you so."

We're up to revision 111 by now, no more trouble with SVN. We have asteroids colliding with each other, phasing through to the other side of the screen instead of bouncing off the walls. When an asteroid hits the ship, it affects the shield and ultimately the player's "lives". Score gets updated, and there's a gradual increase in difficulty with an automatic topic switch every 100 points.

We also fixed the navigation screens. We're saving the profile to a file. Serialization seems to be going somewhere, and i'm looking into the objective-c FTP transfer API, so that we can connect with the web server where we store the top scores for each player.

Not bad overall. Phase 2 is almost complete and we have wednesday set as development deadline, leaving us 5 days for document update and testing.

Phase 3 will be all animation and sound.
I'd finally get to integrate my Asteroids song as background music.

On another matter, evidently I didn't get the Autoship job.
Too bad, I kinda liked the company and I though the interview went well.

Some guy who worked on a database project with me got hired by a company who didn't even invite me for an interview. That's super frustrating, because at least in this case, I know with certainty that I'm about 10 times more qualified than he is.

I honestly don't get it. What am I missing?
Or maybe this is the hiring stage where they hire people with previous co-op experience?
Am I aiming too high?

Should I go for tech support and waste my time ?

I really, really don't get it.

Maybe it's the failed marks on my transcript... but if that is the case then I'm wasting my time even applying for co-ops.

fruss. te. ray. ting.

How do I show people I'm a good programmer?

Hey, you know what. When steve fucked us over, I didn't give up. I took the reigns and we aced the presentation. I wouldn't call it good resolution, because it forced me to sacrifice my other classes during that week and ultimately do someone else's work, which is hardly good resource management.

But it saved our group.

At least after this thing is done I'll have one more thing to throw in the portfolio.

Tuesday, March 16, 2010

Presentation

It is ironic that for someone with a blog title such as my own I preach nothing but separatism.
Steve disappeared on friday after delegating tasks and taking it upon himself to write the unit test functions for our iPhone application project.
By "disappeared", I mean he didn't answer his emails or return his calls for 4 days.
20 minutes before the presentation was due he emailed us saying he had a fever of a 104. Evidently we didn't get the memo. 4 days without communication, and that's the best he can come up with. Good one, Steve.
How much is a 104 in celsius anyways? I don't speak this savage tongue.
40 degrees? Highly unlikely.
Still no excuse for not contacting us about it earlier. 4 days without communication just before a huge deadline. How irresponsible.
I guess the instructor got hold of him and gave him a scare.

Useless group member number 5 was tasked with doing the project metrics because he didn't want to particpate in the presentation and we were busy setting it up. Metrics being: counting files, lines, file size, etc. Things a script should do, and would do (had anyone written it), and anyone who can read and write can do.
He emailed back saying he's not sure what he's supposed to do.

Here's how our QA doc defines metrics :

Number of classes in the application module / phase
Number of pages in webpage / phase
Total number of lines in all classes / phase
Total application size (of all files in kb) / phase
I refuse to believe he's that stupid, and that he really doesn't understand what this asks of him.

What kind of a douchebag do you have to be to try to get away from doing something this simple, while all your teammates (well, at least 2 of them) are spending their days and nights doing everything else.

Really, I have an interview tomorrow and I would probably be asked, yet again, about a project I'm working on, conflicts with team members, and how I've resolved them.

I'm starting to think team conflicts only get resolved in fairytales and "stories" for job interviews.

What a total waste of time.
On the bright side of things, I have come to re-appreciate organized code, timely schedules, svn clients that work (not xcode), team members who pull their own weight (a fairytale -- but what can I say, I'm a dreamer), and integration testing.

For the next phase, I think half the allocated time should be for integration testing. I think that's a good strategy with a weak team. Better to produce less, but have it proven, tested, and working.

One more time for posterity: FUCK YOU, STEVE.

Oh that felt god.

And now to prepare for tomorrow's interview...

Sunday, March 14, 2010

Too Much Stress.

Life is not so much fun when you're constantly under stress.
The sad thing is I'm mostly stressed by doing other people's work, so it's not even a consequence of my lack of planning. We have over 1000 lines of code that's a mess and only 3 out of 5 functioning team members. I cleaned it up as much as I could but I still don't think it's organized enough to allow proper unit testing. Quite frankly though, I just don't care.

In the spirit of Robert Pattinson, It bothers me that in 36 hours, instead of implementing new features, all I did was restructure everything and then fix the broken dependencies that inevitably arose.
What a total waste of time. And the worst of it is that now my team mates will have learned nothing and for all I know this process will repeat itself in the next phase.

I can't wait for this project to be over, it is by far, the worse team I've ever been apart of. I think I'm going to do like the flash designer in my previous team, bail out on all future meetings, stick to the programming and let them deal with everything else, I've had enough.

Tuesday, March 09, 2010

SVN and xcode

XCode is the OSX IDE. If you want to create an iPhone application, it has to be in Objective-C, it will probably use the COCOA frameworks and therefore you will be using XCode. There are no alternatives.
I don't usually work with IDEs so using XCode didn't require much of a paradigm shift for me. XCode does however advertise SVN support, which is true in part. By completing a quick series of steps I was able to connect to our Google-Code repository.  And this is where all the fun began.

First of, you just can't commit through XCode. At least not while using SVN and Google Code. You get certificate errors, and nothing goes through. You can check out, yes, even import, but no commits.

Then there's the human factor. It's a group project, right? That means other people, that means mistakes.
Someone imported entire folders, and soon enough we had a repository full of redundant folders that resulted in checkouts of 280 files instead of 15. There were also folders within folders of the same thing that kept cycling through revisions because people didn't delete them.


The XCode SVN support isn't very useful so I tried to use commands from terminal, because after all, OSX is UNIX. That seemed to work, but I still couldn't figure out how to commit, or rather, how to get through the Google Code security certificates.
Finally, I found an SVN client that works on a mac, and isn't too difficult to use. Like all mac/linux applications it's buggy. But who cares, it works.

svnX is the new messiah.
I deleted all the unnecessary folders from the repository and imported the latest version.
Revision 86 is finally something we can work with.
I still get certificate errors every time I login, but it seems to get through anyway, either because I checked out once through the terminal and accepted the certificate or because it "just works". (you can't accept the certificates through the svnX GUI, because it's not supported. You get the message, but you don't get to answer it).

More gripes about this project work:

I spent about 2 hours last night deleting global counter variables, and using meaningfully named constants such as "type = CORRECT_ANSWER" insted of type = 0.
This after I spent about an hour just trying to make sense of the mess, delegating code that was in the controller class to separate objects and pulling out my own hair.

The 2 computer science students in my project don't like coding, and the 2 engineers seem to have picked up their coding standards from assembly and fortran.

Oh i do love group projects.

Wednesday, March 03, 2010

Another Day Another Interview

This is by far the worst interview I ever had.
DBA position at SAP - phone interview.
I actually don't think I want to work for SAP anymore.
They asked me what I know about MS SQL.
I said i know how to create a database, import tables, manipulate data, integrate it with JDBC applications, etc. They weren't impressed. They asked me what experience I have?
I said I did a project on my own that downloads information from IMDB and determines which movies I would like to see, based on correlations with movies I already rank high. It infact also downloads them, which the guy didn't like to hear. They don't like this kind of pirate activity at SAP.
I mentioned that it's only piracy if you download illegal movies, it's up to you what you do with it, but I could tell it wasn't going well with him. Too bad, it's actually a very interesting project.
Then he asked me why I go to SFU and not UBC?
Now what kind of a fucked up question is that.
From this moment on I was on the defense and felt like I was on trial.
The guy even asked me if I'm authorized to work in Canada.
WTF. Don't they read all the crap they get from the co-op office?
What, you're surprised that I have no technical experience? Why do you think I'm applying for a co-op in the first place?

This was a sharp contrast to the last SAP interview.
Turns out it's way harder to impress someone when you don't see them, they don't see you, and you have an accent. Stressed me out like crazy.

I spent about 2 hours practicing SQL queries and reading about databases, although of course, I can't tell whether they use oracle, ms or whatever, so I have to keep it general, but still. I had about 5 pages open ready to assist me with any technical questions that might arise.
Instead I get interrogated about nonsense.

I'm very disappointed in myself and in SAP.
The interviewers didn't seem very prepared either.
I got the feeling that instead of looking for reasons to hire me, they were looking for reasons to write me off the list. Left a very bitter taste in my mouth and totally messed up my day.
Understand that the previous interviewers (for the other position) were very nice and created a wonderful impression of a welcoming work environment. This was a sharp contrast.

I wonder if they're aware of the negative publicity generated for their company every time they treat their applicants like crap.

Monday, March 01, 2010

Hockey

You know, I never thought I'd catch he tolympic bug, but it got me bad.
Somewhere around the 3rd day of festivities I found myself watching the daily recaps and getting updated on the hockey matches. Now, I've never watched hockey before, I just don't follow sport, but this time I guess there was an element of national pride that made me feel like a stakeholder.
So I learned the rules and laughd my ass off every time someone got crunched and solved the mystery of why Canadian fans boo their own goalie.
It's so stupid it's adorable. I just can't help myself now. "Louuuuuu!" is the new national cheer as far as I'm concerned.
Good job Olympic games.
I had a lot of fun during these past 2 weeks.
Thank you.

Monday, February 15, 2010

Canadian Stupidity

We like to think of Canada as an advanced member of the 1st-world clique, but I'm sorry, at least once a day, every day, I just don't see it. Maybe it's because we're stressing so hard about the foleys of plagiarism that people just get indoctrinated into reinventing the wheel on every task. Consider the luge track. It's not a particularly complicated design and certainly not the first of its kind. It should, by all means, share many features, and many problems with other tracks previously created elsewhere.
Tracks where they very likely have encountered the same issues found and implemented solutions.

Here's a bright idea, Mr. Canadian Engineer, next time you're asked to design something that's been done before, go see how someone else did it, learn from their mistakes, adopt their strong features and come up with something better, not just new, better. Any replicated system that repeats the mistakes of its predecessors is a failure. All you needed to save that life was padding or a Plexiglas wall that would have had him sliding back onto the track rather than hitting a pole at 140 km/h.

One Georgian dies while beta testing Canadian design.

I can't imagine how many other needless accidents could be avoided with minor changes to our incredibly poorly designed traffic system by simply implementing what other countries have done with theirs.
Lose the 4-way-stops and the right to turn left wherever you want, replace them with roudabouts and dedicated left-turn signals in every intersection, and you should reduce traffic accidents by at least 60%.
But that's not the only issue. People here just don't know the rules. The written exam is ridiculously easy and the book is messy and rather than focus on the rules of the road it bullshits you about "Safe" driving, which usually means - don't drive while drunk. If you know the answer to the question "should i drive while drunk?" you can probably pass the written exam, it's that poorly designed.

I have lost count of the number of times I reached a 4-way intersection at the same time as another driverette on the opposite side. I want to turn left, she wants to continue going forward, but she stops and waits for me to turn left (essentially waiting for me to cut her off and take her right of way). If it happened once or twice I would say it's her fault for not knowing she has the right of way, but when it happens this often, then the system's to blame. When people don't know that traffic in the roundabout always has the right of way, then the system's to blame.

Canadians say "But that's the courtesy system. It promotes being polite." And that's a pile of crap. This is an ambiguous system that promotes deadlocks and congestion. If I do take her "courtesy" and cut her off, and she then decided to race into my car, by all legal means I am 100% to blame, if I wait for her, and she waits for me, none of us goes anywhere.

The UBC roundabout on 16th Ave. and Wesbrook Blvd. is another prime example of poor Canadian engineering. Same deal as the luge track: Simple design exists in countless working samples across the globe. One stupid Canadian engineer tasked with roundabout and gets it wrong at least 5 times, before finally settling for a semi-working highly-ambiguous model. They've actually had traffic accidents in that roundabout. How is that even possible? It's a roundabout! You can't speed in it even if you tried. That's like having a traffic accident in a mall escalator.

Maybe the education system should focus less on social justice and more on encouraging students to improve on their work, learn from their peers and always look for existing models before making their own.

It is quite embarrassing that the whole world has to see how incompetent we are, but it's inexcusable that someone has to die for us to see it. (And do we?)

O' Canada...

Sunday, February 07, 2010

All your interviews are belong to us.

My interview got bumped from monday the 8th to friday the 5th, which left me a day to prepare.
I didn't even have any business outfits, so I had to quickly buy the appropriate attire.
Man, I hate ties and pointy business shoes. It's just not me. I look scary enough as it is, no need to dress me up as a contract killer. But protocol is protocol.

The interview went fine I think. Just fine, not well or fantastic. I think I had good chemistery with the interviewer, but i got nervous during the technical evaluation. I was so nervous It took me a couple of minutes to write a binary search function. And it came out all messy on paper.

I nailed the SQL question though, and I think I successfully conveyed the impression that I'm responsible, organized and motivated.

Turns out Perl is quite a useful thing to have on a resume. I need to polish up on my Perl.

Given my performance in the technical phase, I don't expect them to hire me.
I'll be depressed if they don't, but not surprised.
Would it be such a loss? I don't know, it's primarily a testing gig. But I like the atmosphere, so if they offer me a job, I think I'll take it, even if it's not design. I think I have much to learn before I am worthy of design, especially if I can't even write a goddamn binary search function on the spot.

):

Tuesday, February 02, 2010

Ah, i found a way to connect names to blogs to emails.
It's called the history option on Ted's wiki page. Combine that with facebook and you have a mugshot for every name and email in the class, most of them anyway. If i didn't have that 471 assignment due, i'd make a webcrawler that gives me a best estimate of what everyone looks like.

Too bad I don't have a day to do it in. Could be an interesting data mining project. What can you get on a person given their name and email. Sound like my next mid-semester project.
After I finish the auto-pirate, anyway, which only needs about 4 days work i estimate. 4 days I don't have.

Also, I got an interview with SAP for the localization engineer position.

I have no idea what that means.
I'm assuming it means a technical installer, like Chuck, but I hope it means more.
Anyhows, I can't be picky, this is my first co-op and I've only been approved for coop applications this saturday.
I've already missed out on all the big companies.


By the way, writing cover letters is excruciatingly annoying.
I haven't done this much brown-nosing in years.


On another note: It's funny, one of our bloggers wrote "It rained in torrents" and naturally my mind misrouted the ambiguous intention of this simple senetence. How would a syntax recognizer become aware of dynamic changes to a language. How do we formally acknowledge when a word like torrent gains a new meaning in a technical context? We can either receive the definition statically by reading or hearing about it, or we can infer it by first experiencing a translation conflict, where what we think it means becomes inconsistent with an external response, then we research actively about it, or become more aware of future conflicts containing that word.
Then finally we redefine an ambiguous definition.
Which leads to another problem: How do you decide among ambiguous definitions.

To make a thinking robot, a robot you must become.

Monday, February 01, 2010

What Yaniv can do, Yaniv will do.

Ted threw a rock in a pond that started a ripple. There is now a list of blogs I can read that transforms what I previously considered to be scenery (because i'm a horrible person that way) to actual people. I just went through every single blog, or at least the ones that aren't locked, and it's kind of interesting.
I even entertained the notion of commenting. Should I ? What if it will achieve nothing but drive the author to lock their blog upon realization that they're not as isolated as they think they are?

Oh and don't think I haven't read your comment, Ted. Points taken. touche, councillor, touche.

I have a concurrent client/server model due tomorrow and I haven't even started. I've been swamped by everything else. This semester isn't going as swimmingly as expected. I'm not happy with myself.

Got my wisdom teeth pulled out this morning then drove to class, even though i signed a paper that said I shouldn't, it wasn't as terrible as last time, I don't think my face is going to swell up. There wasn't even any pain.

To reiterate Graham Templeton's column from 2 weeks ago. If god made us in his image, what the hell is up with wisdom teeth.
There you have it, people. If atheism hasn't caught on to you yet, you need your wisdom teeth removed. Maybe that was the whole idea behind the inquisition! Oh how it all unravels.

Anyway, time to drive home and get some advil on the way. Though i feel no pain i've been spitting blood all day, it's gotta start hurting somewhen.

Wednesday, January 27, 2010

Fuck People.

I fucking hate group projects. We've just started and already I can't stand my team-mates.
Fucking 275. It's either dead-weights or ego-maniacs. I don't need this shit. The only lesson i'm learning here is that people are stupid. When I see a hole in the road, I don't say "please , if you would be so kind as to swerve, dear sir". No, fuck that. I say "Swerve. Now!". Why do stupid people take offense when you're offering them a better way to do something, but not saying please while you're doing it.
What does "Please" mean anyway? Sounds like a shortcut of what probably used to be "It would please me if you..." -- so how is doing something to please me better than doing it because you're afraid of me. At least while doing the latter you're serving your own interests.
Ask a moron to be consistent with formatting his document and he snaps at you for giving him orders. You say to yourself  "Fine, fuck it." The result: 2 morons working all night doing the same segment. That's what happens when everyone's doing their own thing. Good job Steve, and fuck you too. Imagine what's going to happen when we actually start coding...

Thank god we're not doing any group crap in 376.
I can already imagine my group going on about The Fungus Eater...
Just once I'd like to be in a group where everyone pulls their own weight.

And i'm telling you, them pussycats is quick.

Sunday, January 24, 2010

Ok

I don't know if I want to do this anymore. Every time I look at this blog all I see is how much of a bitter douchebag I really am. It's depressing.
If I am to have a shot at self delusion, this blog cannot be.
Anyhows, I think I'm going to drop the Perez Hilton crap and focus on technical documentation and general captain's-log-type comments.
Back to business:
I fiddled around with the system time incompatibilities between linux, osx and windows agian. I now understand it fully, though I have no solution.
Windows uses local time, Ubuntu has an option, and I believe is smart enough to default to local time if it recognizes the windows system as present, which it does. OSX on the other hand is hardcoded to UTC time, and currently increments my bios time in 8 hours every time I boot to it through grub. It's funny that people say with a straight face that OSX is more secure.
Every 3 year old could break that system. It's as easy as installing an unsupported driver. Every driver conflict in OSX causes kernel panic, and your system won't boot until you delete one of the conflicts and reset permissions from terminal boot option.
This is because macs aren't designed to switch hardware during their lifetime, so the OS just breaks on hardware conflicts. Evidently, Apple never found it fitting to design an effective fallback mechanism.
I also find it amusing, while reading the Objective-C tutorials, that macs come with a single-button mouse and an OS designed for right-click functionality. To access the right-click menu you need to press alt click or something. Why use 2 buttons with one hand when you can use a key AND a button with two. I'll try to remember that when i'm designing interfaces. Perhaps the general idea is to keep your limbs excercised to make you a better looking mac person.

Thursday, January 21, 2010

I can't believe it's not butter.

I can't believe I'm 6 courses away from graduating. That's 2 easy semesters and at least 3 interesting courses (embedded systems, real-time systems and distributed systems)! Totally doable assuming I don't fail 307 which I hear is brutal. I've been dreading and delaying that course for ages now, but it seems like it's time to confront it.
So now what? Am I ready to face the sharks of the industry? Wear a suit and a tie every day and talk about TPS reports and unparallelized code?
Absolutely! I'm going to do my best to get a RIM co-op (not a RIM job!), cause I only hear good things about them.
Speaking of butter, I hate it. Did you get to see Julie and Julia? Not a bad movie, especially for someone like me who's never heard of Julia Child before. I feel like it filled a huge hole in my education. Only beef (pun!) I have with that movie is that it encourages people to throw even more butter into their cooking.
Butter is not any healthier than margarine, trust me, and it's infinitely more disgusting. Infinitely, that's not a sum to be taken lightly.
What else...
Just completed BOL I, the pre-coop-work-on-your-resume-and-cover-letter mandatory workshop thing on WebCT.
It was kinda fun. All I did was practice my technical writing skills in ongoing forum discussions and got more experience in self restraint when some students wrote about their desire for more "piratical" classes that would prepare them to "piratical" situations.
Come to think of it, I don't remember if ended up commenting or not. Let me check... I believe i pressed cancel... damnit. I did press submit on this:
I definitely agree that the University should have more pirate classes. One never knows when one might encounter a piratical situation in which such skills would certainly be handy ;)


So much for self restraint.

On a side-note, turns out Jared Leto has a band. Who knew.
I just saw the video for Kings and Queens and I must say, against all my better judgement, I actually like this band. There's something very moving about a bunch of misfit weirdos commiting suicide by urban cycling to the sounds of an epic orchestra, riding together against a city that does not recognize them.

Saturday, January 16, 2010

Group Projects - Hurray.

I can't say I didn't see it coming.
It's so much fun waiting hours on end for your group members to approve of every little change you make and spending ridiculous amounts of energy trying to convince them of what you think is absolutely straightforward.
I do my best not to insult anyone, but inside I'm frustrated, and my initial response is never a pleasant one.
Yes, group projects are a challenging excercise in self restraint.
What do you do when your team member is set on taking your group down a path you know will lead to failure? How hard are you willing to fight for what you know is right? Wouldn't it just be easier to let him take the lead for one phase, then pick up the reigns after they crash and burn?
Perhaps, but you'll be in that crash right along with them.
Besides, what's to guarantee the rebel has the insight to recognize his error and take responsibility for it when the time comes? If he can't see something as straightforward now, why would he see it later?
These questions always come up whenever I find myself leading a group project. Knowing the right direction isn't enough, you have to find the right way to steer your group into it. Perhaps I need to adopt the Yago approach and let people think the right direction was their idea all along.
I understand that people have an ego, i just don't understand why they let it make their decisions for them. Maybe they actually believe their way is better? But it's so straightforward... Can they really not see it?
The human mind is exceptionally effective at creating alternate realities that justify a false notion. Never doubt people's capacity to fail to see the obvious.

Here's what I consider to be a straightforward example of bad sentence structure (and this is from our project plan, mind you) :
Players navigate through multiple styles of games all following basic elementary level curriculum. With games such as ABC's, Counting and Spelling where players shoot asteroids in order and Math and Trivia where players shoot the correct asteroid answer, players will be captivated not only by the immersive dynamic graphics and fast-paced action but by the diverse and challenging content as well.

I even italicized the especially bad part.
here's my suggested revision that didn't get approved:
Players can progress through varying levels of difficulty, testing and strengthening their knowledge of math, trivia and spelling, mixing the learning process with interactive competitive gameplay, while capturing their attention with immersive dynamic animation and fast-paced action.

If any of my 6 readers thinks the first one is better, please explain why so I may gain insight into the strange machinations of group dynamics once and for all.

Thursday, January 14, 2010

Return of the Eve

OK, I've neglected to mention that i've been participating in the Android forums and emailing certain figures at Google, LG Canada and Rogers. This evening I received a promising response from Paul Pike at LG Electronics Canada. Here's what he had to say:



Yaniv,

Thanks for your note. LG has been listening to the conversations online about Android based mobile phones including the LG Eve and is currently addressing this feedback in an engineer evaluation of upgrade. Our engineers and development teams have been reviewing the feasibility of providing an upgrade both from a development, deployment and a cost perspective and will be making a decision shortly. As we speak bloggers from around the world are participating in these discussions in Korea.
We are now inviting bloggers from Canada to participate as well. As the evaluation is currently underway, your comments couldn't be more timely and we will be sharing your feedback directly with our engineering and development team. I encourage you to continue to send me your recommendations on the subject to myself and/or Sheryl Davey from our communications agency. Once we have had a chance to fully evaluated all the feedback, you will be hearing from us with our official plans in the next couple of weeks.

Best Regards,

Paul Pike



Nicely done, Paul.
Awesome. Too bad I've returned the phone.
In a couple of weeks if they decide to go ahead with the upgrade I'll reconsider repurchasing it.

Wednesday, January 13, 2010

The Androids of Eve

We've all tried to read an Asimov at one point or another, I sure have and I'm not afraid to admit it. "Robots of Dawn" it was. Not to say it was a miserable experience, but I wasn't impressed. His repetitive explanations bored the hell out of me, and only made me wonder if he's as lost in his own plot as I am.
That terrible novel has nothing to do with what I'm intending to write about today, but the title seemed fitting.
Android is Google's linux based, open-sourced operating system for mobile devices. It has gained momentum in the industry since it's initial release, but evidently the open source evolution has not yet caught up with all stake-holders involved, and here's why:
Rogers is currently offering the LG Eve with very positive promotions that fail to note an important issue. The LG Eve is running Android 1.5 and neither LG nor Rogers is even remotely interested in providing a firmware upgrade to any of versions 1.6, 2.0, or 2.1. Not considering the security fixes and optimization the newer versions provide, some of the newer apps, Google Maps Directions, specifically, won't work on anyting under Android 1.6.
So basically you're getting a great piece of hardware with an obsolte OS and no support whatsoever. It's as if you're given a discontinued model, as i told Vicky from Rogers management (tier 2 customer service) today over the phone.
After some research, i discovered this attitude is not unprecedented. The HTC dream, another model offered by Rogers also sports the not so flashy Android 1.5 with no intention of upgrade. An Android forum opened up trying to get this matter into public attention.
After 3 months(?) they actually managed to get Rogers to issue an official statement promising to exchange every HTC Dream under contract with an HTC Magic, a model that HTC has commited for an upgrade in the coming months.
But before patting Rogers on the back, keep in mind that this is entirely thanks to HTC, who seem to be the only company out there that cares about its customers.
A similar conundrum with the Samsung Galaxy, another of the first Android 1.5 phones resulted in an open pettition dating back to June 2009, and as of today Samsung has no intention of upgrading the firmware or updating the phones.
It seems that the Vendor (e.g. LG) will not commit an upgrade unless the carrier (e.g. Rogers) requests one. However, the official response of BOTH parties is that it's the other party's responsibility to initiate the upgrade. Takes me back to kindergarden when i think about it. This is likely why we're currently seeing the first Google phone - the Nexus-1. Google probably realized this retarded attitude by both vendors and carriers is killing their dream of standardized devices able to run any version of Android. A world in which phones do not become obsolte after a year of use? Not gonna happen. LG would rather push their new model than work on firmware upgrades for an older model. Rogers would rather its clientele bought new phones every year, rather than pay the vendors to commit an upgrade.
Considering the current market attitude, the only way you're going to see Android upgrades is if one company actually makes a commitment to maintain their phones over a period of time -- enters the Google Nexus-1. Now that Google distributes their own phone, there is at least one vendor out there that you can assume to provide proper support for their product. When the other carriers realize that users will only buy supported products, that they themselves do not distribute, one of two things will happen:
1. The vendors and carriers will decide that Android phones are a too costly liability and will cease to produce/distribute them.
2. Both vendors and carriers will adapt to the new market attitude and FINALLY accept their responsibility to upgrade their products.

After reading all this nonsense, i have to ask myself why is it the consumer's responsibility to push the carrier to push the vendor to release what should be basically essential product support? Having to go through the typical corporate runaround with deffered responsibility to no end.
Do they not realize that loss of customers = loss of money?
I, for one, will return my LG Eve today, and wait-out the remaining of my contract with my old phone. Then, possibly, assuming HTC makes good on their promise, get the HTC magic - upgraded, because i do love the Android platform and it's too bad i can't keep the LG Eve. I'd much prefer the physical keyboard, the awesome display, the normal-sized headphones jack and the Android OS, but i will not buy an unsupported product on a 3 year contract.

If you think about it, it's also Google's fault for not setting a contractual obligation on the vendors and carriers to provide consistent firmware upgrades.
Think about this if you're considering an Android. The only vendor that will likely support your product is Google. And in all likelihood the only reason HTC is doing an upgrade is because they're the ones who manufacture the Nexsus-1!

Finally, the plot unravels.

Sunday, January 10, 2010

Time and time again.

I take software engineering this term, and for some suspicious reason the instructor wants us to develop for the iPhone. Now, as if that wasn't bad enough, we must develop for it in Objective C, which can only be compiled on a mac system.
Quite redundant, considering a java application would work just as well and can be developed over any platform, meaning i don't have to buy or steal a mac to do so.
Nevertheless, our instructor, in his infinite wisdom argues that in real life one does not always have the luxury of choosing one's target application language, and often must learn new languages for new platforms.
True enough, however, one also has time, energy, and resources to handle the task, not to mention one gets paid for it.
Long story short, it has to be an iPhone app, and it has to be in Objective C.
So after 4 gruesome days, i've managed to get OSX running with some limited functionality on my PC. Problem is OSX changes the BIOS clock to match my selected regional timezone, while Windows reads it once and then compensates accordingly. Switching back and forth results in my time being advanced artificially over and over again. Evidently there is a fix for it, by setting my BIOS time to UTC time, (universal time something that starts with c) and adding a registry 32 bit DWORD :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal and setting it to 1.
This however causes linux (I have 4 operating systems now) to push my time forward, which means i have to find another solution. Annoying.

Friday, January 08, 2010

new blog ~!

I was about to start this blog with the line "Hopefully, this blog is Googleable..." and then I realized the almost unforgiveable offense I was about to make. Instead, I will merely hope, half heartedly, that this blog is indeed Googleable so that i may use it for documenting installation processes of new hardware/software and minor fixes that i typically deem too simple to be worthy of documentation and later regret not having done so.

A little background for the unsuspecting reader:

Canadian as I may be, I've spent a meager 13% of my life on this continent.
Consequently, English is not my native tongue, nor is it the one I'm most comfortable with.
I don't like paragraphs and capitalizaions, and you would likely find that i sometimes forget to capitalize the I in a sentence. Though i appreciate the language, and frequently find myself reading English litterature, its exceptional nature has not escaped me.
I find that i more respect rules encapsulating common sense, than those based on nothing more than tradition. For example, if i were to walk on a deserted street at 4 in the morning, I would not likely wait for the light to turn green before crossing.
Tradition aims to bypass decision making but can never quite replace common sense.

From a linguistic perspective, being that my native tongue is Hebrew. I am used to a language structure in which everything is pronounced as written. But... (ho ho! my very own But sentence) it has its fair share of excpetion handling. For instance, in Hebrew, every object has a gender reference. There is no neutral "It".
I often wonder how newcomers to the language master the art of figuring out the gender of every single object in the universe, and though there are distinct patterns, having to do with certain letter-sequences, there remain a great many exceptional cases one must memorize.
It is also fascinating to note the typical errors people of a foreign culture make when importing their thoughts into another language, and equally, if not more so fascinating to note the reaction of the natives to the unavoidable flawed result. What i find, personally, and i am sure i'm not alone in this, is that the linguistic difference and traditional litterary influence affects the way we formulate thoughts and the way we express ourselves. Thus, with those grammatic errors, something else transcends the import process, and a careful reader will detect the positive exotic contribution rather than linger on grammatic flaws.

What else is there to say about me... I, like Hemingway, must work very hard to attain something very simple, though it is always what i strive for. And often, I delete and rewrite before i am content with the final outcome. I am comforted by the thought that the process itself, fake though it may seem, serves to inspire me into a state of sincerity, and thus it isn't as fake after all.

I think this is enough for an introduction.
Till the next post.