Incoherent ramblings

Shipping with DHL. They will screw you, but not quite as bad as UPS.

August 27, 2016 Incoherent ramblings, Uncategorized No comments , , , , ,

I previously complained about UPS customs clearing charges that I was slammed with receiving back some of my own goods.

Basically, the Canadian government grants shipping companies the right to extort receivers at the point of customs clearing. Canada might add a few cents or a buck or two of tax, but the shipping company is then able to add fees that are orders of magnitude higher than the actual taxes.

I actually stopped buying anything from the United States because of this, and have been buying from Europe and India instead, where I had not yet gotten blasted with customs clearing fees for the items I’ve been buying (usually textbooks).

However, it appears that my luck has run out.  Here’s the newest example, with a $15 dollar clearing fee that DHL added onto about a dollar of tax:

IMG_20160827_095043195 (1)

Note that I did not pick the shipping company.  That was selected by the book seller (one of the resellers).

For $1.17 of taxes, DHL has charged me $14.75 of fees, all for the right to allow Canada revenue to steal from me.  To add insult to injury, DHL is allowed to charge GST for their extortion service, so I end up paying an additional $3.09 (close to 3x the initial tax amount).  The value of the book + shipping that I purchased was only $23.30!

Aside: Why is the GST on $14.75 that high?  I thought that’s a 13% tax, so shouldn’t it be $1.92?

I’ve found some instructions that explain some of the black magic required to do my own customs clearing:

One of the first steps is to find the CBSA office that I can submit such a clearing form to.  I can narrow that search down to province, but some of these offices are restricted to specific purposes, and it isn’t obvious which of these offices I should use.  For example the one at Buttonville airport appears to be restricted to handling just the cargo that arrives there.

I wonder if there are any local resellers that import used and cheap textbooks in higher quantities and then resell them locally (taking the customs clearing charge only once per shipment)?

Note to IBMers re: LzLabs employment.

August 22, 2016 Incoherent ramblings 2 comments , ,

When contemplating the decision to leave IBM for LzLabs, I found it helpful to enumerate the pros and cons of that decision, which I shared in a Leaving IBM: A causal analysis blog post after I’d formally left IBM.

Who could have predicted that a blog post that wasn’t about programming arcana, physics or mathematics would have been my most popular ever.  There’s no accounting for the taste of the reader;)

In response to that blog post, I’ve been contacted by a few IBMers who were interested in potential LzLabs employment.

Please note that I left IBM with band 9 status, which means that there is a one year restriction (expiring ~May 2017) against me having any involvement with hiring, or recruitment of IBM employees.  An IBM lawyer was very careful to point that the band 9 contract I signed in 2006 has such a non-solicitation agreement.  I don’t think that anybody told the IBM lawyer that IBM appears to be trying really hard to throw away technical staff, but that does not change the fact that I am bound by such an agreement.

If you contacted me, and I was to respond, it could probably be argued that this would not count as solicitation.  However, I don’t feel inclined to pick a fight with IBM lawyers, who I imagine to have very sharp teeth and unlimited legal budgets.  So, if you are working for IBM, and asking about LzLabs employment, please don’t be offended that I did not reply.  I will try to remember to respond to you next spring, when the sharks are swimming elsewhere.

Options for the remainder of my M.Eng

August 14, 2016 Incoherent ramblings 4 comments , ,

I had a provisional plan for the remainder of my M.Eng earlier in the year. I knew that I’d likely have to adjust this based on what courses were actually made available at registration time in the years to come.

Without looking back on that plan, assuming what is available this year, will continue to be. I came up with the following new plan:

First choices






Last term I ended up dropping ‘Microwave Circuits’ in favour of ‘Scientific Computing for Physicists’, which I was taking concurrently.  The microwave circuits course was really about GHz domain electromagnetics, but it’s a material that I’d enjoy a lot more, and get a lot more out of, by reading the course text and doing problems, than attending the lectures (which were just taught from slides).

Because I’d dropped the uwaves course, I’m now down one ECE course.  I need 5/9’s of my M.Eng course selections to be from ECE to graduate.  This forces me to make additional course selections from ECE that I hadn’t initially planned for.  For example, I’d rather take the MIE CFD course or the PHY Quantum Optics course than the ECE Information Theory course, which I selected primarily because it helped satisfy the graduation requirements.


Marks are in for Winter 2016

May 18, 2016 Incoherent ramblings No comments , , , , , , , , , , ,

I started my formal re-education program back in 2010 after 20 years out of school. The first few courses were particularly tough after such a long break from school (and exam based courses still are), but I’m getting the hang of playing that game again. Here’s my score so far:

Crs Code  Title                                    Wgt  Mrk  Grd    CrsAvg
PHY356H1  Quantum Mechanics I                      0.50  78  B+     C+
PHY450H1  Rel Electrodynamics                      0.50  78  B+     *
PHY456H1  Quantum Mechanics II                     0.50  72  B-     C+
PHY454H1  Continuum Mech                           0.50  85  A      B
PHY485H1  Adv Classical Optics                     0.50  85  A      *
PHY452H1  Basic Stat Mechanics                     0.50  81  A-     B-
PHY487H1  Condensed Matter I                       0.50  80  A-     B+
ECE1254H  Modeling of Multiphysics Systems         0.50      A+
ECE1229H  Advanced Antenna Theory                  0.50      A-
PHY1520H  Quantum Mechanics                        0.50      A-
PHY1610H  Scientific Computing for Physicists      0.50      A+     

This last grad course is the only one of which they gave (informally through email) a non-letter grade (97). That one happened to be very well suited to me, and did not have anything based on exams nor on presentations (just assignments). They were demanding assignments (and fun), so I had to work really hard for that 97.

As a returning student I really suck at classes that have marks that are highly biased towards exams. My days of showing up late for class, sleeping through big chunks of the parts that I did get their in time for, and still breezing through the exams are long gone. Somehow in my youth I could do that, and still be able to quickly and easily barf out all the correct exam answers without thinking about it. I got a 99 in first year calculus doing exactly that, although it helped that the Central Technical School’s math department kicked butt, and left Prof Smith with only a review role.

Now I take a lot more time thinking things through, and also take a lot of time writing up my notes (which would sometimes have been spent better doing practise problems). It’s funny thinking back to undergrad where I had such scorn for anybody that took notes. Now I do just that, but in latex. I would be the object of my own scorn X10, if I met my teenage self again!

Leaving IBM: A causal analysis.

May 3, 2016 Incoherent ramblings 11 comments , , , , , , , ,

EDIT: fixed the title; casual -> causal.  I am clearly not ever going to be headhunted by any editing or proofreading companies.


I was not looking for a job change, but one found me.  There has been persistent headhunter (Google, Microsoft, Facebook, Amazon, …) interest over the years, but any interesting job available also required relocation.  I also wanted something compatible with my part time studies, as I have been working 80% part time at IBM to accommodate those studies.

I was contacted by the founder of a new startup.  As a long time salaried IBM employee, I am surprised that the possible instability of a startup operation was of interest, but they made a convincing case for the future success of their product ideas and company.  Their salary offer was also significantly higher than what I make at IBM, which sure didn’t hurt.

With interesting work as a prospect at this company, an attractive salary, no relocation required, and none of the negatives of current IBM HR practices, I took this offer after a week of deliberation.

Pros of working in DB2

One week of deliberation, especially when I wasn’t looking for a change, is a short amount of time to decide to say goodbye to a company that I’ve worked for about 20 years, which is almost half my life!  Both my kids were born while working for IBM, and are now almost grown.  I have a roots with the people and work that I am leaving behind.

I did a lot of really fun work in my years with DB2:

– Implemented multithread support and associated reentrancy retrofit of DB2’s Unix client code.
– DB2 Linux porting work, including portability reengineering.
– DB2 64-bit port. This was a project of massive scope. We can now eat terrabytes of RAM for breakfast.
– Development and maintenance of DB2’s internal mutex and atomic implementations, and associated memory ordering mechanisms.
– Lots of fun parts of our platform stackwalk and related post mortem factilities.
– AIX/TPCC performance and exploitation liason.
– DB2 contact for xlC and other compiler coordination.
– Lock-free reimplementation of DB2’s reader-writer mutex. The performance of our original reader-writer mutex code sucked for a number of reasons (including use of an mutex within the mutex.) This was a from scratch implementation where we used a single atomic to track the reader and writer linked lists (indirectly), the reader count, the writer held bit, and a writer reserved bit. This code has stood the test of time and remains one of my proudest creations.
– Implementation of DB2’s asynchronous IO abstraction layer. It’s hard to believe that it wasn’t that long ago that we did all our IO synchronously. This bit of code hides an impressive amount of operating system centric code from our high level development consumers, while squeezing maximum performance from each system.
– Development and maintenance of many other aspects of DB2’s operating system abstraction layer.
– Lead of project branch integration team during internal transition from the CMVC version control system to clearcase.
– Ad-hoc build tooling and makefile maintenance as required.
– Technical owner of DB2’s coding standards
– DB2 pureScale project (distributed shared disk database): Implemented various duplexing, failover and reconstruct aspects of the communications between the DB2 engine and the shared buffer pool and lock manager component.
– Lots of other stuff along the way that took me into various components of DB2.

I started straight from school in ’97 with a low salary (somewhere around $50K CAD). My salary and band rating both progressed very rapidly from there. There were also frequent bonuses in those early days. I was clearly perceived as being of value.

I also really enjoyed the people that I worked with in IBM.  I’ve worked with so many very competent and skilled software developers over the years.

So, the pros include:
– Lots of fun and challenging work.
– What seemed like a decent salary.
– Almost nobody else to work for in the Toronto region for whom I could do systems and low level programming.
– Part time options for my educational project and extra time off with the kids.
– Awesome fellow developers. It is humbling and rewarding to work with so many really smart people.
– Working for a startup carries the risk of complete failure.

So why leave?

Many of the reasons to leave DB2 mirror the reasons to stay:

– Fun and challenging work.
– Better salary.
– Flexibility offered for part time work if desired.
– Opportunity to continue to work without relocation, and without having to do something boring like web programming, phone app development, java coding, …
– A collection of really smart developers.
– Staying at IBM can pigeonhole me and leave me viewed as a one trick pony.
– Expectation of a stock distribution and/or bonuses with success.
– The chance to work for a small company, shaping things instead of being a nameless drone.
– No inhuman IBM corporate HR policies to have to observe or be impacted by.

Fun and challenging work.

Now that I have started with LzLabs, I am starting to get a glimpse at just how aggressive and visionary this project is. The scope of it is very impressive, and I’m going to have a lot of fun working on it. My work is likely going to be some combination of concurrency, porting, and build & test infrastructure. These are all things that I am comfortable with and enjoy working on.

Better salary

I was very satisfied with the rate that I achieved my maximum full time equivalent salary at IBM.

I was not satisfied with the way that it stagnated after that. I had not had a raise in a long time. Living in Canada it seems that food costs have 2x’ed in recent years, as have gas prices, hydro bills, and many others. My IBM salary was clearly not even tracking inflation.

The offer I got from LZ certainly made up for that stagnation.

That said, I probably could have asked for a lot more. I got heavily berated by an ex-IBM buddy for accepting the offer I got from LZ, which he said was way too low. He had the good fortune to have been canned by IBM. He’s since moved around and found just how low IBM Canada pays in comparison to others, and is now making $200K USD on the west coast. While my new LZ salary is significantly better than my IBM salary, he said that I shouldn’t have accepted anything less than $240K USD given my skills, and would have easily gotten that, even without requiring relocation. This was surprising to hear. I was clearly pretty clueless about the going rates for the sort of work that I’ve been doing.

My buddy recommends that I get away from LZ in short order (i.e. 6 months) if it shows any signs of not becoming a superstar player. It sounds like I could definitely profit by such a move, but I’ve never been primarily motivated by money. I’d rather play this new game long term and see where it goes.

IBM Canada capitalizes on the sort of salary comparison cluelessness that I had. It also capitalizes on what used to be a monopoly on systems and low level programming work. Without anybody else local to work for they have been able to keep salaries low.

With the ease of working remotely becoming so pervasive, IBM won’t be able to play this game as effectively anymore. This is clearly evident by the mass migrations that seem to be occurring (not even counting the frequent IBM purges).

One trick pony.

Loyalty to an employer used to be considered a virtue. I am not sure that is the case anymore. I left on my own terms, but should I have been fired from IBM, I think that the fact that I worked in only one place for 20 years would have hurt, not helped. Leaving IBM has a positive optics impact on my resume for future work.

Part time options.

I’ve started full time with LZ. I’ve been offered the chance to go back to part time in the fall when school starts again. The LZ founder has said of this

“You are going to have so much fun that you won’t have any desire to continue with an attempt to become a failed physicist. We have lots of those working for us already.”

Although this sounds like it is condescending, he is proud of his collection of very smart people, including all his “failed physicists”, which he said in a way that it sounded like a complement to their intelligence.

One of the LZ hiring strategies is to ask new hires “who is the best/smartest developer that you have ever worked with” (I can’t play my role in that game for a year since I was an IBM band 9).  Judging by the interactions that I have had so far at the company, I can confirm that I am in with a really good group.

Inhuman IBM HR

I’ve mentioned that I really enjoyed the people that I worked with in DB2 and IBM. There are so many truly on the ball experienced developers in the pool. It was a real loss to leave IBM and not be able to continue working with these people anymore.

However, in recent years, I have seen IBM treat many of those skilled and experienced developers as disposable.  Again and again and again, the most experienced developers are tossed like trash when the firing purges occur.  These are in many cases guru level developers with irreplaceable knowledge.  Some call this agism, but it may be more accurate to call it salarism, because I think their true crime was getting paid too much in the view of HR that is eying three new hire recent grads for the same total salary (or perhaps three employees in an offshore IBM lab where salaries are uniformly less).

As a 20 year employee, I had only 5 years before I also hit the apparent disposability threshold.  Given that, the risks of a joining a startup that might fail are severely minimized.  Worst case, if the start fails, then I am left looking for a job, which is probably also an inevitability if staying on at IBM.  The only real loss in that case is the IBM severance that I walk away from by leaving voluntarily, and the new larger salary should compensate for that, provided I sack some of it away for a rainy day.

When I did a final walk around of the lab, saying bye to so many people I had worked with for so long (some that I had never even met in person!), I observed many that had reached or surpassed what I thought of as the 25 year purge threshold criteria. There is no apparent sane rationale for who gets to stay and who gets the knife. That uncertainty for those who remain must be very hard to deal with. Some who I talked to did not even have this perception of disposability, which was interesting to observe.

Tossing employees who have expired is not the only example of cutthroat IBM HR I have seen.  In one case, a co-worker who had become the goto guy for a complex component of our code had the bad fortune of getting a promotion too close to one of the firing purges.  There is an internal ranking scheme within IBM, and in recent years, anybody with a rank three was toast when the purges ran.  Unfortunately, a promotion usually means you are dropped temporarily in rank, since you have to compete with more experienced developers once you have your new band rating.  In this case, the promotion in question, reducing the employee rank from 2 to 3, which put him into the automatic firing bucket.  It seems to me completely insane to spend five years training somebody, and then essentially fire him for a promotion.

I have also observed two cases where IBMers were fired within what seemed like months of returning to work after having recovered from cancer.  That’s a callous action that demonstrates the people with their fingers on the triggers truly don’t think of employees as people.  They are resources.  Just are just numbers to be shuffled in spreadsheets.  Observe that I refuse to use the cowardly term “Resource Action” (or worse RA, or RAed) for firing that IBM HR employs.  I am guessing that this a term invented so that HR employees feel less sadistic when they have to run a spreadsheet computation to see who gets the knife.  I won’t miss that sort of corporate sadism, and it was a strong factor associated with my choice to leave IBM.

Weighing all the factors.

Looking at all the pros and cons, it seemed clear to me that joining LZ and leaving IBM was in my best interest.

It was certainly a scary move.  I don’t even have a salary or real job offer since LZ is not yet incorporated in Canada, and I am currently working as a contractor.   Now that I have started, things are no longer quite so scary.

This was a huge change, and has happened really fast.  All said, I am happy to have been able to leave on my own terms, and am going to have fun playing a new game at LZ.

Would I work for IBM again in the future?

I had trouble with the binary “Would you work for IBM again” question that was part of leaving IBM feedback form.  Having enjoyed my work and the people I worked with over these years, my first instinct was to answer yes, and I did so.  However, corporate IBM would have to reform the way it treats its people significantly to be attractive again.  I suspect IBM is too large for that to ever occur.

Configuring wireless on a RHEL7 NUC6i5SYH

April 26, 2016 Incoherent ramblings 4 comments , , ,

I don’t currently have ethernet lines running to my new office space.  The NUC does have builtin wireless, but doesn’t appear functional in the linux 3.10 kernel that is installed by default on RHEL7

#  lspci -nn | grep -n net
00:1f.6 Ethernet controller [0200]: Intel Corporation Ethernet Connection I219-V [8086:1570] (rev 21)

01:00.0 Network controller [0280]: Intel Corporation Wireless 8260 [8086:24f3] (rev 3a)

#  grep -i 8086.*24f3 /lib/modules/*/modules.alias

alias pci:v00008086d000024F3sv*sd00000010bc*sc*i* iwlwifi

#  lsmod | grep wifi
# [nothing]

I can load it explicitly by doing:

#  modprobe iwlwifi

iwlwifi               112501  0 

cfg80211              514740  1 iwlwifi

but the NetworkManager doesn’t see the interface. Running ‘systemctl restart NetworkManager’ doesn’t help.

If I switch to the 4.5 kernel and install the latest iwlwifi firmware I’m able to get things up and running:

rpm --import
rpm -Uvh
yum -y install yum-plugin-fastestmirror
yum --enablerepo=elrepo-kernel install kernel-ml

git clone
cp linux-firmware/iwlwifi*.ucode /lib/firmware/

After boot, I get dmesg errors from the iwlwifi driver:

# dmesg | grep wifi

[    2.612790] iwlwifi 0000:01:00.0: enabling device (0000 -> 0002)

[    2.618136] iwlwifi 0000:01:00.0: Unsupported splx structure

[    2.619632] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8000C-20.ucode failed with error -2

[    2.619635] iwlwifi 0000:01:00.0: Falling back to user helper

[   63.005134] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8000C-19.ucode failed with error -2

[   63.005137] iwlwifi 0000:01:00.0: Falling back to user helper

[  122.981747] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8000C-18.ucode failed with error -2

[  122.981751] iwlwifi 0000:01:00.0: Falling back to user helper

[  182.977468] iwlwifi 0000:01:00.0: Direct firmware load for iwlwifi-8000C-17.ucode failed with error -2

[  182.977472] iwlwifi 0000:01:00.0: Falling back to user helper

The firmware copied from linux-firmware had version: iwlwifi-8000C-21.ucode which is newer than the any of the ones in the failed to load messages. I wonder if that splx structure error is from attempting to load 8000C-21?

It turns out that the user mode driver works, but you have to be really patient. A number of minutes after boot it kicks in, which can be seen by the mac80211 driver now running:

# lsmod | grep wifi

iwlwifi               139264  1 iwlmvm

cfg80211              577536  3 iwlwifi,mac80211,iwlmvm

I then also see the following additional dmesg log points from the wifi driver:

# dmesg | grep iwlwifi

[  122.544157] iwlwifi 0000:01:00.0: Falling back to user helper

[  182.549189] iwlwifi 0000:01:00.0: loaded firmware version 17.254495.0 op_mode iwlmvm

[  182.557558] iwlwifi 0000:01:00.0: Detected Intel(R) Dual Band Wireless AC 8260, REV=0x208

[  182.557910] iwlwifi 0000:01:00.0: L1 Enabled - LTR Enabled

[  182.558824] iwlwifi 0000:01:00.0: L1 Enabled - LTR Enabled

[  182.559866] iwlwifi 0000:01:00.0: can't access the RSA semaphore it is write protected

[  182.707622] iwlwifi 0000:01:00.0 wlp1s0: renamed from wlan0

[  182.719296] iwlwifi 0000:01:00.0: L1 Enabled - LTR Enabled

[  182.719562] iwlwifi 0000:01:00.0: L1 Enabled - LTR Enabled

[  182.720422] iwlwifi 0000:01:00.0: can't access the RSA semaphore it is write protected

[  182.855388] iwlwifi 0000:01:00.0: L1 Enabled - LTR Enabled

[  182.855958] iwlwifi 0000:01:00.0: L1 Enabled - LTR Enabled

[  182.857102] iwlwifi 0000:01:00.0: can't access the RSA semaphore it is write protected

At this point the wifi connection shows up in the NetworkManager, and I’m able to configure the WPA password, giving me a wlp1s0 interface configured and available for use.

Did “Canada” stop bringing peace to Syria by bombing them?

March 10, 2016 Incoherent ramblings 1 comment , , , , ,

March 10, 2016

Dear Prime Minister Trudeau,

My wife got caught up in the “hope and change” type propaganda associated with your campaign, but I was more cynical. I was, however, pleasantly surprised when you announced that Canada would no longer be bombing Syria. I would actually say that I was shocked and surprised that a Canadian politician had some sanity.

Needless to say, it wasn’t surprising to me that you later back-pedalled on this, and announced that “Canada” would continue to bomb Syria until Feb 22, 2016 [1, 2], apparently acting on the instructions of your handlers in Davos. The fact that this is done while simultaneously posing for photo ops with Syrian refugees and claiming that “Canada welcomes refugees” is particularly repugnant. My faith in the status quo of Canadian politics is nicely restored by your lack of action and backbone.

It is now well past Feb 22, but I have not seen any media suggesting that you have followed through on your watered down promise of less future belligerence. This could be a failing of the media, in particular, the CBC, which appears to be solidly in the pockets of armaments industry, reporting idiocy like “Most Canadians disagree” that we should continue to bring peace and solve the Syrian refugee outflux by bombing them [3]. Can you please confirm or deny whether you did limit “our” peacekeeping to one additional month of bombing.


Peeter Joot


A copy of this letter and any responses will be made available on the internet for public comment.

Survey: Are there any additional comments you would like to add about your graduate student experience at this university?

February 8, 2016 Incoherent ramblings No comments

I definitely enjoying the formal study of the courses I am taking, however, I find University courses inferior to self study in many ways. There are two specific benefits to a University course:

1) Having a knowledgeable instructor at hand to answer questions.
2) Having that same knowledge base available to set the study curriculum, since that instruction can direct attention to the most important aspects of the study.

The fixed formal lecture format is not terribly effective, at least for the scientific topics that I have been studying. In this day and age, when the technology to record lectures is so pervasive and freely available, there is really no excuse for the formal and fixed lecture style still found in the classroom. In an ideal learning environment, there would be time available between concepts to work through problems and gain complete understanding of each idea before going on to the next. Such an ideal learning environment would interleave practical work, text study and lectures. Testing should be used as a metric for whether or not the material is fully understood before continuing to the next aspect of study (or returning to areas of deficiency). In University classes testing is designed to produce a grade, not understanding, something that is completely backwards.

I am also surprised to see that grading for many graduate courses is still primarily based on exams. Having spent twenty years working before coming back to school it is a rude shock to come back to such an artificial metric for success. In nowhere other but school is it considered reasonable to make the metric for success based on how quickly a student can rush through a test, with no references at hand, attempting to construct answers that are optimized for maximal marks. In industry, the kind of mistakes that are inevitable in an examination context would lead to millions of dollars of service and product maintenance costs, and get people fired.

It is asinine that there is no feedback mechanism in place to review and retest of failed or partially successful final exam material. This seems to highlight the fact that university courses do not seem to be designed with learning as the primary goal. It is not clear what that goal is.

Air duct cleaning telemarketing call: not sure if he gave up or was confused?

January 12, 2016 Incoherent ramblings No comments ,

Am working from home with snow on the roads making the commute look unappealing.  Had the pleasure of a brief playtime with a telemarketer

Hello, may I speak to the homeowner please?

Me: who is this?

This is Suresh from “Air Duct Cleaners”

Me: I’m sorry, I don’t have any ducks to clean.  They swim away every time I try to clean them.

Suresh: I’m sorry.  Have a nice day [click].

He didn’t stay on the line to play with me 🙁

provisional M.Eng study plan

January 2, 2016 Incoherent ramblings 1 comment

I’m trying to plot out a potential sequence for the remainder of my M.Eng courses. Most of the physics courses only run in the fall, and I still have to take a few more engineering courses to meet the requirements for the program. The following sequence, starting with the courses I’ve taken or am now enrolled on, gets one interesting course into each time slot:

My plan for the rest of the program is currently:


I’m hoping that the ECE Introduction to Computational Electrodynamics course will run again, and if it does I’ll switch things up to accomodate it.