Day off checklist

April 20th, 2012

I’m not at work today, as an example of what I get up to my plans looked like

  1. Commit a draft book chapter to github
  2. Commit an improvement to my Inventory application
  3. Put some example data into the online demonstration of the Inventory
  4. Find and apply to one position in Canada
  5. Ask my Canadian IT contact how to make more contacts
  6. Give up a game I’ve been playing to remove distractions
  7. Submit a defect report or feature request to the Gummi latex editor project
  8. Make a page for my physical portfolio
  9. Apply to a specific position in Vancouver I was aware of
  10. Contact another immigration assistant or recruiter in Canada
  11. Look at the alternative Nova Scotia provisional immigration route

I did the book chapter first, publishing a rough draft for some programming tasks concerning software automation for a hydroponics operation. I knew I didn’t have a full set of ideas, and could only think of three or four categories of tasks but on an open source project it’s sometimes more important just to commit your changes so other people can see and possibly add to it.

I then applied to a position on Prince Edward Island. I didn’t apply for their actual advertised position so it was almost a cold call but I might have skills that they’d like to add to their team and it looks like an interesting workplace so I figured it was worth a shot.

I submitted a bug to the Gummi Latex editor project next, concerning improving the usability a little by helping the user a little (perhaps with a message or some automation) when the application does a certain odd thing.

Some deliveries arrived which are parts for a friends motorcycle which is currently out of action. While it was parked outside his house some teenagers drained petrol out of his fuel tank to sniff (yes really, don’t ask) and in the process snapped off the throttle position sensor that was nearby to the fuel tap. As a result the bike has been sat for a number of years so it’s a case of changing filters, changing the oil, taking the spark plugs out and spraying inside the bore to try to free the piston rings in case they’ve stuck to the barrels. We need to put petrol into the carbs to hopefully dissolve any deposits and then next a teaspoon of oil into each cylinder and then let it sit for a day. After this we put it in second gear and will push it around by hand to check the pistons move. Then it’s a case of fitting the new battery and throttle position sensor and seeing if the bike will start. A working motorbike would let me do evening courses out-of-town, and also make more contacts such as by visiting the Milton Keynes Perl group (getting there by public transport is fine but there are issues getting back late at night so your own transport is needed).

Next I contacted an employment agent in Canada to see if they accepted overseas applicants, there’s no reply today so I might fill in their site anyway but I didn’t want to waste time if I could avoid it.

I closed down my game account for an online game I’d been playing after putting my affairs in order, it was just taking up time and being a distraction.

Lunch time I took a break and watched “Run Lola Run” on Lovefilm instant, which I really enjoyed. The main actress appears to have been styled slightly on the female lead in the film 5th element, and there’s a couple of slightly misleading translation errors but otherwise I found it refreshing.

I put data into my online Inventory demonstration so that it’s not just an odd site with no clear purpose. The demonstration site is not up to date with the code on github, which I need to fix and I’m not happy with including it in the portfolio yet, in terms of a lot of the recent code is not quite finished – some inconsistent interfaces and similar to fix.

I spoke to my Canadian IT contact today and asked how he would go about meeting more IT contacts and queried if more business was conducted by phone in Canada, as email replies seemed sparse. The advice seemed to be that there’s nothing odd about the email route and I should keep trying, he suggested some cold emails to places of interest, he also recommended the Randstad online site for Canadian positions. I’m worried my emails will look spammy and be discarded so I’m quite keen on sending a physical portfolio copy instead.

At the very time of this advice I was using the Randstad site to apply for a Linux system administration position in Vancouver. It was a good match however I can only get an IT position using a Labour Market Opinion, which essentially states that no other Canadian wanted the position or was suitable and I think Vancouver will attract a lot of competition. Essentially if a Canadian has the skills to do the job and applies then I wont be able to take the position. This is one reason that I might take a hard look at the Nova Scotia Provisional Nomination program, in short in about a year of processing and 3 trips for interviews, you end up landing in the country without a job but with permanent residency and able to apply to positions and start work immediately.

I’ll save the other tasks for tomorrow. I think I’d like to concentrate on the physical portfolio and see if I can do some mailings.

Anyway that’s about an average day on my days off.

Early April

April 10th, 2012

Spent some more time improving my online presentation

In terms of code examples – I’ve done more work on the network inventory application, hopefully to get it to a state where it’s usable by people outside of my current employment – at the moment it’s still a bit specific to our environment, some features won’t make and sense to external users and I don’t want to add it to the public portfolio in that condition. Once it’s done it will expand my code examples and be a real in use business application rather than a demonstration.

In terms of technical writing – I’ve also released a minor roughly 28 page book onto github which is a series of programming tasks based around a single theme (more series of tasks on different themes will follow), I also really got my teeth stuck in to trying to solve the example problems myself this weekend. I’m going to add a few more chapters and with some polishing and proof reading, with the hope to turn it into a published book by the end of May just using a small Lulu.com run and ISBN. My other technical writing project is in assisting the Gummi LaTex editor project, which has been going well (got mentioned in the release notes) but they’ve released a new version and I need to make time this week to run through tests and update documentation for it. A book on Ada arrived from the United States (£5 delivered! £50 if I were to buy in the UK) and although I gave it some effort this weekend I’ve not been able to get my first 200+ line program to compile in Ada yet so need to spend more time on it.

In terms of applying for Canada positions – I was feeling a bit down about the black hole that is seemingly anywhere I send my resume to in Canada, and at the lack of IT contact or mentor. I had an idea and on one of the small flash based online games I play I switched servers from the UK server for the game to the Canadian server. The server is full of all nationalities but on a hunch I did a (harmless) in-game attack on the first person from a group of people with a moose related name and before long was chatting with someone the same age as myself in the IT industry over there. I really didn’t think it would work but I’ve been able to chat to him each day and it’s my first Canadian IT contact. I wasn’t expecting it to work so that’s my minor win for the week.

He recommended signing up to www.workopolis.com which I’ve done, stating his friends in Alberta use the service. Alberta appears to have one of the lowest unemployment rates (oil industry driving the employment), Newfoundland the highest (which is a shame). The workopolis site can import all your work history from LinkedIn which is such a relief after some of the other more broken sites I’ve tried to register on. It also prompted me to re-write a lot of the descriptions I’ve got on Linked and I’ll also re-write my resume this week to incorporate some of the better information.

In terms of applying for UK positions – I’ve been putting it off but today I visited two local employment agencies in my lunchhour and had a small chat, leaving with cards to setup a formal meeting. I’ve roughly 7 weeks remaining on PAC contract at the university. I’ve a few positions to chase up and will tackle them on Thursday (working tomorrow).

With the talk of changing the Canada immigration points based system to favour bilingual (French/English) speakers, and also to improve employability I tried out the Eurotalk USB based French Canadian lessons. Seemingly it’s not just that French Canadian has a different accent to French but that the occasional whole words is different. We don’t tend to have French Canadian exams over here, only French so it’s kind of awkward that in order to get a certification that the emigration system recognises I’d probably have to learn the ‘wrong’ type of French then re-train the undesirable accent and words when I get over there. Anyway, I’ll practise some more with it since I find the included word recognition games quite good fun, it seems like a good product.

Lastly I’ve spent a couple of weeks helping my girlfriend who had a large chunk of her arm cut out by surgeons and so has to be careful with it. It was an extra muscle that is fairly uncommon but causes pressure on the nerves. It’s rare enough that the surgeons were excited. There’s (slightly out of focus) pictures of the operation in the gallery section but I wont directly link them as the pictures are not for the squeamish - you have been warned. The pictures show mid surgery with the arm opened up and the flesh being cut away. I find them hard to handle.

More Applications

March 26th, 2012

Applying for positions

Today I applied to four locations in Canada. The first application was to a recruitment agency in Nova Scotia, I thought having someone else helping with the job searching couldn’t hurt at all, and I don’t mind is the first years pay is slightly lower as a result of using an agency.

My second application was to put my resume online with one of the Canadian job search companies so that it would be found if an employer did a search for my skillset. Sadly it’s one of these sites where you upload your resume and then fill in all the details from your resume into various fields, all of which have had input restrictions placed on them by someone who didn’t test well enough. So my previous job title is too long, but also my first name wasn’t permitted to be my first name, and although my location had to be “County, Country”in a free text field, the later was being checked silently against some sort of list of names so I found by trial and error that United Kingdom was not ok, UK was. I gave up trying to put in a phone number that would work from Canada as that also failed the input as being too long. When one of the input forms didn’t work at all I raised a polite bug ticket with their support address and then had to move on with the details only 60% complete.

I went through a list of all the universities in Nova Scotia and Saskatchewan and visited their sites, checking for IT related vacancies. Some of them look a little politically diverse internally (like Oxford) but only on a couple of the sites was I not able to find a central vacancies listing page. At one of these the location was still desirable so I approached their network manager directly with a query about future postings but this cold emailing is not something I’d want to do to more than one location as it would look too spammy. I do really need to make some IT contacts in Canada though, even if they don’t want to employ me directly they’ll have good information about the local job markets and upcoming opportunities.

Lastly I applied to a nationwide transport firm in Canada that was considering employing someone this year but the advert was currently speculative. My skills were a reasonable match but the description of the position was about one or two sentences long, so it was not yet solid.

Last week I sent a polite follow up email to a position I applied to in La Ronge at the start of March but it’s too soon to say if I didn’t get it. Even in the UK it can take a couple of months to get a response from certain large employers and some of the forums suggest that the experience in Canada is typically longer than in the UK.

I’m working at Oxford again this week but will do some more on Friday, putting my resume online with a few more Canadian job search engines (although some are restricted to only those currently legally able to work in Canada). I’ve been looking through the government sites too. It seems to take a long time.

Working on the Portfolio

I’ve done a fair amount of documentation now for the Gummi project but there’s still a lot of the user facing manual to go, such as how some of the more complex wizards and assisting tools work. It’s gone a little quiet from the other developers so I’m going to leave it a bit to ensure I don’t burn them out with questions and minor defect reports.

I did two days contracting last week for the university, a little of which was explaining how some things worked but only one item I found not documented, which I’ve corrected. I worked a little on the inventory, adding some javascript input validation as the user types on certain input forms that had been causing confusion. I have a lot of problems pushing to github on the work machine but I’m not sure of the source of the issue yet.  The sshkey is valid and added to the project, I’ve approved it in githubs new security features and I can ssh to the github test account. It complicates synchronising my github work at Oxford, at home and the svn system at work so I’ll have to fix it.

A bit of fun

The ultrasonic range addon sensor for my radar imitation project is only about £3 but is on it’s way via a literal slowboat from china, arriving in an expected 4-5 weeks. I might get a backup spare from somewhere in the UK. I’ve built up main radar housing components of the model and have some dirtcheap USB webcams on the way from ebay which I’ll take apart for the CCD’s. Ebay had some micro bearings which are fantastic but I need a circular saw for small plastic holes – the holes being a little too big for a normal drill.

Making everything small enough to fit in a 1:35 scale vehicle is looking difficult. With the bearings making things smaller makes them more expensive but luckily micro electrical motors are cheap.

A New Project

March 19th, 2012

 

Background – choosing a second language for skills development

I’d stalled leaping into Python or PHP as I felt they weren’t especially different to Perl. Yes the syntax is slightly different but a developer in one of the languages could probably understand the other twos source code with little effort. The community character or ideals behind the languages differ but learning them as a companion language to each other probably wont change your existing coding style too much in terms of teaching you new ways of thinking.

Some people would suggest C, C++ or Java at this point the later two for object orientated use. I hadn’t yet made a decision but had built up some books to use for C with an eye to developing my programming understanding and books for Python and Javascript mainly to improve employability.

Find a problem to code for

While looking for ideas for the portfolio I’d drifted from one idea to another.

For instance I’d had an idea on taking a radio or cable controlled child’s excavator toy and connecting it to the computer such that you could issue strategic/tactical commands and executed code would handle the specific actions require. In laymans terms I’d say “go dig a 1meter x 1 meter x 0.2 meter deep hole at location X” and it would do the rest via code I’d written. Once the initial motor controls were worked out, this would be mostly a logic problem.

I was interested in finding another type of problem. I had an idea for a indoor pseudo anti aircraft device, nothing dangerous, just a turret that rotated and tilted in order to detect and track a moving object about the room. Before anyone gets concerned I should point out that nothing I write is at all likely to upset the authorities – I’d guess actual (extensive, complicated) ballistics calculations on how to hit a target would be needed before anyone would care and I suspect I could code for the next 30 years and not come close to the ancient Russian ZSU level of device software.

In terms of hardware I’d thought about attaching an eye safe laser to a rotating and tilting turret such as a modified toy remote control tank to make it obvious where the turret was pointing during development. That youtube video shows a model far outside my price range (about £400!) and too big for my house but going with a smaller and cheaper 1:35 model causes issues in that these isn’t much room inside the model for electronics and motors and I have limited fabrication facilities for making my own metal parts needed to create turret movement and elevation. Hence I thought I could modify any old toy that has a rotating and elevating turret by default but noticed the elevation range of the barrel is usually tiny on the £30 level tanks. What I’m thinking of doing is getting a £30 remote control tank plus the (non remote control, cheap) Tamiya model of the Geopard German anti aircraft tank and butchering the first device for parts for the second. Someone already does a conversion kit but are out of stock.

Problem: Target tracking/detection

I’d write code to perform the movements but this wouldn’t be the main task. The main challenge would be building and writing a detection system, and also choosing the detection hardware itself.

  • RADAR: Although it would be great to play with the real technology, sadly improvements in electronics and miniaturisation haven’t resulted in home made short range micro RADAR devices being possible (or at least, not cheaply). The cheapest DIY projects involve using the dangerous parts from an old microwave oven and still come out costing more than most cars I’ve owned. MIT think they can do it for $400 and have put helpful courseware online. From a fun point of view it’s also not going to be able to track flies around the room since they don’t reflect radar and you have to be careful with power output and band to stay legal.
  • Passive IR: The Polish Lora (and a proposed but not adopted updated version of the Geopard) has a backup system of passive Infra Red targeting but the passive variant of the IR technology is still expensive to reproduce in any good quality. There are some home grown heat detection devices but it’s not looking accurate, real time or cheap enough to create passive infra red imaging devices from. For instance: 80×80 pixels at 1 frame per minute by modifying a ~£100 device.
  • Image analysis: I could use a good resolution webcam and through image analysis detect changes that appear to be following a path. It’s quite different to radar however. It would be fast, the encountered limits would probably be the resolution of the CCD in the webcam and the lighting in the room. Interestingly both the Geopard and the Polish Lora system (similar to the Geopard) have backup optical systems as a fallback in case of enemy Electronic Counter Measures jamming the RADAR. The optical scopes give x6 magnification and if available the radar shoes an optical tracking indicator in the gunsight [reference].
  • Active Infra Red:  This is essentially the same as visible light in terms of the model I’d have to create (a light source, a light receiver). The benefits are that it would work in darkness as seen by human eyes. To go this route I’d cannibalise a cheap domestic CCD based internal IR security camera from ebay which typically include a LED IR light source. The programming problem would then be the same as for the visible light image analysis problem described previously.
  • Echo location: I could have a speaker give out a directional pulse of sound with a directional microphone pointing in parallel at the direction the sound is sent in. Then through analysing the returned sound wave it should be possible to pick out distances and changes. I think this would be harder than the image analysis, there would be a lot of code to write however it would be a quite realistic set of programming problems for the scenario. I could have the speaker and microphone rotate to get a 360 lateral sound picture of the surroundings (mimicking a search radar used on the back of the Geopard) with some thought as to the maximum speed of rotation and number of pulses that can be used in a given room size without having issues with echo, overlapping or missed responses. Real RADAR systems use Pulse Doppler methods together with signal processing to track moving objects.  On detecting a change the turret might rotate towards the object and use a more focused secondary sound source and receiver (mimic a tracking radar, seen on the front of the Geopard).
  • Laser: The actual combat systems (on the German Geopard and Polish Lora)combine the engagement RADAR with a laser range finder, but I think this is out of scope, or at least the other problems faced are big enough to keep me occupied for some time. If I can find a reasonably self contained system, like a ready made laser rangefinder module for the Arduino that just returns a signal based on the distance to the taken measurement, than I’d include it. There’s apparently one in development but it doesn’t appear to be on the market yet. There’s also a DIY example or two but neither operate like the normal Laser rangefinders. One of the reasons for this is that the commercial and military systems are using pulses and taking a measurement of the time taken for the pulse to be seen but at close range the speed of light will exceed the Arduinos processing speed, so it has to be a self contained unit that the Arduino receives a measurement from if the pulse doppler method is used.  On a different note – the laser itself can’t be used to search for targets as even indoors a half sphere point cloud generation would take a long time, perhaps in the order of an hour even at a lower resolution.
Discussion
The echo location approach might work because a good example is found in the animal kingdom with bats echo location. Bats use high frequencies (14k -100kHz) with search pulses in the 10-20/sec range and attack stage pulses of up to 200/sec. The search behaviour can be likened to the search radar on the Geopard, the attack behaviour the font targeting radar. A long pulse interval for the bats lets them detect objects far away with low resolution (so it can avoid a tree branch while flying). A short fast interval of many pulses a second gives shorter range with higher definition (so it can bite the moth). The Wikipedia page on echolocation has a good discussion on their dual use of Frequency Modulation and Constant Frequency.
The Arduino has ultrasonic sensor kits for it. Looking at the PING sensor  we can see from the tech specs that is has a claimed 3 metre maximum range for which it needs just under 20ms for one 40kHz echo signal. This means a maximum of 50 pulses a second which means a maximum resolution of one pulse per 7.2 degrees of rotation if we rotate a search sensor once every second (60 rpm, which seems to how fast the real life search radar rotates). The sensor documentation appears to suggest 20 degrees would be too coarse a search pattern but 10 degrees (36 samples per second/rotation) would be reasonable with detection affected by angle and material of the object (as with RADAR). I’m not sure if this is also called the HC-SR04, which has some documentation suggesting a 5 meter maximum range at just under 40ms with a wider detection angle (30 degrees) so there might be some variety between release versions. Temperature needs to be measured with a separate sensor as it’s stated that the measurements can alter by up to roughly ten percent as the speed of sound changes with air density. There is a HY-SR05 as well which is supposed to offer greater range however the technical specifications I could find seem quite inconsistent so I wont attempt a comparison. Both models are cheap on ebay however so it should be inexpensive to experiment.
Sharp offer a Infra Red distance measurement device which is cheapish but three times the price and with a range of less than 1 metre at a 40ms response time.
Interestingly the Gepard fire control systems are detailed online and involve a Siemens system using a 32 bit Motorola 68020 microprocessor as used in the Apple Machintosh II and now the Eurofighter. There’s a good description of how the MPDR 12 pulse doppler search/aquisition radar performs Identification Friend-or-Foe (IFF) via integration with a Siemens MSR 400 Mk XII Interrogation system. The tracking/engagement radar is a Siemens-Albis Monopulse doppler. I couldn’t find any further information on these systems online, such as what language Siemens has used. Siemens wouldn’t supply me with data on one of their wind turbines when I asked so I doubt there’s any use in my asking the for details of their (presumably more sensitive) military fire control systems. The Dutch version of the Gepard used Hollandse Signaalapparaten monopulse-Doppler integrated search and tracking radars which look quite different in appearance and are stated as having better performance than the Siemens system. The company has since changed name to Thales Nederland and has a main website full of great brochures about it’s military equipment. A Dutch tanker made a good model of this variant and but I haven’t found details of the exact Thales products used, I suspect due to age they are supported but no longer produced.
The Gepard also has other sensors used for ballistics calculations such as the projectile velocity sensor visible in the photos on the Wikipedia page. There are out of scope for my project as I’m not planning on firing any projectiles – there’s enough problems to solve already for one project.

Hardware Building

So the plan might be to first get the basic hardware and controls working

  1. A second-hand turret motor from someones dismantled radio controlled model
  2. A second-hand turret from someones second-hand radio controlled model, which includes the gun elevation controls and should include the toothed turret ring.
  3. A cheap 16-Channel 5V Relay Module for the Arduino so I can control the motors from the Arduino. It’s fairly big but I can miniaturise later (e.g. to just a 4 or 8 channel module as needed) when the design is finished.
  4. The Tamiya normal plastic 1:35 model Kit for the Geopard, so it’s obvious what the project is, the application and to make it more fun. The 1:16 model has a study metal hull and far more room inside which would make the project a lot easier however the 1:35 kit is £12 and the 1:12 kit is £300 – I just can’t afford to blow that kind of money for bigger kit and especially not for a project that’s just starting. I know the 1:35 kit will look odd with a comparably giant ultrasonic search sonar (pseudo search radar) on the back but as a prototype it will do.
  5. Various plastic card thicknesses for building supporting structures for in order to mount relays and similar
  6. A small modelling razor saw to cut the above (I’ve got most tools but cutting thick plastic is hard)
  7. Three 3.7g Micro Servos, there were cheap so I got a few
  8. Three 9g Micro Servos, as above but slightly beefier
  9. Sensor shield for the Arduino
  10. A couple of keyring pen type eyesafe laser pointers
  11. A usb webcam for the target acquisition. Ideally it would be something with a big sensitive CCD however I think any second-hand cheap webcam that works in Linux would be fine as I’d be ripping it apart to mount it in the turret. Luckily I have a small webcam that the outside plastic is broken on so I’ll take that apart and see if it can be made to work via some direct soldering.

I haven’t purchased everything I might need because I want to get the basics working first (rotation controlled by the Arduino) and see what problems crop up however the future list might include:

  • Fine gauge metal tubing for the barrels, so the lasers could be concealed in the turret in point down the actual barrels. At 1:35 scale with a conveniently sized 35mm weapon bore the internal diameter needs to be 1mm if taken to scale. The best match I can find is 1.2mm outside diameter brass tubing with a 1mm internal diameter. I found it difficult to find precision tubing this small and of this exact size.
  • Arduino temperature and air pressure sensors to correct ultrasonic readings according to local speed of sound
  • A metal pinion gear and metal ring gear for the turret mechanism if there are issues with the plastic systems robustness.
  • If everything else goes really well then possibly a roller bearing based thrust washer to support the turret and search radar, to make the system a lot smoother in operation. These are cheap on ebay.
  • Rather than having the Arduino controlled by the desktop I’d look to fit one of the Raspberry Pi micro computers once they are in stock in the UK. It’s dead cheap and would let the system to image analysis which the Arduino wont be able to do by itself.
  • I’m not sure where to get a small rotating electrical connector or slip ring connector for the rear search radar sensor in order for it to rotate. I’ve tried Farnell (CPC) and ebay. I noticed one mock radar project using a ultrasonic sensor simply oscillated the search sonar (rotated first one way then back) the next in order to produce 360 degree coverage without hitting the issue. I could use one of the telephone cable anti tangle sockets in order for uninterrupted 360 degree rotation but the connections might be rather large.
  • Arduino 3d gyro/accelerometer sensor to use to auto stabilise the guns if the body moves. There’s a older gyro board which is cheap[ish] on ebay, and a newer board with a claimed 30% better resolution and lower power consumption. It includes a compass and 3 axis accelerometer but is expensive at about £35. I’d only purchase this once all the issues with the statically mounted test turret were solved.
  • Weights to balance the turret and body for smooth consistent rotation.
  • Magnets and cable connectors for ease of dismantling during testing.
For the build the turret needs to traverse through 360° at the rate of 90° per second, and the cannons need to elevate in an arc between -10° and + 85° at a rate of 45° per second. The front tracking radar has some horizontal movement which in real life gave a 200° tracking arc so that the turret didn’t have to be moved. The real life tracking radar feeds the guns the target bearing, elevation and range.
Software writing
So with the above project a computer (handling strategic and tactical decisions) would drive the Arduino which would in turn handle the operational physical control of the device. The Arduino has its own programming language but the language for the pc is more open-ended.

I’d watched youtube videos on homemade flight simulations, and had though about how the various addon devices had been made to work. I’d also read about the RADAR, ECM and ECCM units wondering how they worked whilst being careful not to create the type of browsing history that gets a unmarked police sat outside the house.

I’d been reading up about avionics radar systems and similar learnt about some of the languages used, for example Jovial used on the F111, F15 and similar. Jovial is of the Cobol era and is considered a dead language but looking at what has been used in its place, it’s evident that Ada has been quite successful for embedded military applications (aircraft, warships, missiles and similar), for example being used on the Eurofighter.

There’s a great lecture on Ada on youtube: http://www.youtube.com/watch?v=0yXwnk8Cr0c

It’s been around a long time and isn’t a fashionable language (Ruby with programmers, PHP with managers etc) however it does have a serious use base in terms of its applications and the strictness of the programming (issues getting picked up at compile time rather than runtime for instance). It seems to have suffered somewhat in firstly the original cost of the compilers (no longer an issue) and now in a shortage of Ada developers affecting it’s usage in new projects – a missing critical mass.

It’s been described as a good second language to learn, for instance if you were considering C or C++.

Under Fedora I installed gcc-gnat in order to have an Ada compiler and noticed that the gtk libraries are available through gtkada.

So I’d probably write the user interface and monitoring in Ada with GTK providing a graphical user interface. Obviously there has to be a green screen radar display with a bright line showing the current scan sweep, if only for the pure geek enjoyment.

Changes to the Canadian Emigration policy

March 2nd, 2012

Someone on linkedin posted the news story about the changes planned to the Canadian emigration system.

In short it looks like age and language will become bigger factors. I’m not so bad on age but my French would need at least a few months to reach a passing grade.

I posted this to a different discussion on the emigration board, I think it sums up the current situation which is a little messy.

This is what I’ve worked out so far, and it could be totally wrong, so corrections welcome:

If you’re someone not yet legally entitled to be a resident / to work in Canada you’ll probably need a job offer in order to get a Temporary Work Permit, and for the job offer you’ll probably need the employer to get a Labour Market Opinion from the government (depending on the position/industry). That’s roughly 8-12 weeks for each step, so the employer would have to be willing to wait perhaps 6 months. According to Citizenship and Immigration Canada you then have to satisfy the emigration officer that you really are coming in temporarily and intend to leave at the end of the TWP employment.

It’s not clear to me if CIC are trying to prevent the scenario where you fill in a Federal Skilled Worker permanent residency application the moment you land (since it might take over a year to process and your TWP wont be much longer than that – and the extensions to a TWP aren’t guaranteed to be granted) or if CIC are worried about the more clear cut issue of people disappearing illegally into Canada doing illegal cash in hand work at the end of the TWP. I’d hope it’s the later they are looking to prevent, not both scenarios.

If you apply for permanent residency directly from your home country using the job offer (and LMO) then the employer has to be willing to wait a year or more as the application takes much longer – I struggle to imagine an employer willing to wait that long.

So the quickest route of permanent emigration that an employer would accept seems to be job offer -> employer gets LMO -> you apply for a TWP with the LMO -> apply for permanent residency (e.g. via FSW route) on landing. However I’m not clear if that last step is something CIC are actively trying to prevent.

I’ve heard you can apply for the TWP at the port of entry (using the job offer and LMO), but if the emigration officer says no for any reason then presumably they’re going to send you back home. Since you’ve probably sold up any assets back home in order to fund your emigration you could end up dumped back where you started with no job, no home and all your money in Canadian dollars. People seem casual about it but it seems a risky route, maybe it depends on the emigration officer you encounter? I’ve been to Canada three times in four years, the one run in with CIC I had when on arriving on a 2 week holiday I didn’t find them reasonable so it worries me that applying at the port of entry could be aborted by one officer on a whim.

Building Gimp 2.7 for Fedora 16

February 23rd, 2012

Introduction

I’ve used Gimp a lot over the years, I wanted to do a bit more with it and one of the areas of interest was trying out the new interface in the development build of 2.7 which allows for a single window instead of the floating style. It’s selectable on the fly so you can swap back if you don’t like it.

toggleable via window menu

2.7 single window interface in use

The current distribution shipped version in Fedora15/16 is the original interface however. You can compile the unstable 2.7 version on Fedora 16 but there’s a fair amount of work involved, I thought I’d document it as I did it. This is quick and imperfect (you might be able to spot errors or unneeded steps) but the instructions work. Where I’ve said a command needs to be run as root you could use sudo or a root login, it doesn’t matter.

Building

First we need some basic tools, which are probably already installed on your system

[root] yum install wget make gcc gcc-c++ m5sum lzma

Then the various libraries and similar

[root] yum install  libtff-devel libjpeg-devel libpng-devel libopenraw-devel \
     librsvg2-devel SDL-devel libwmf-devel libffi-devel libmng-devel libexif-devel \
     ruby python python-devel xorg-x11-server-Xvfb pkgconfig webkitgtk-devel \
     pygtk2 pygtk2-devel iso-codes-devel intltool gtk2 pango pango-devel cairo \
     cairo-devel freetype fontconfig dbus-glib lcms webkitgtk libmng lcms-devel \
     libXpm-devel poppler-devel aalib-devel dbus-devel dbus dbus-c++ \
     dbus-glib-devel libgudev1-devel poppler-devel poppler-glib poppler \
     poppler-cpp-devel poppler-glib-devel asciidoc enscript lua-devel \
     gdk-pixbuf-devel openexr-devel jasper-devel graphviz libv4l-devel \
     libspiro-devel exiv2-devel vala-tools

We can get the gimp source next and read the file INSTALL that’s included with it

  wget ftp://ftp.gimp.org/pub/gimp/v2.7/gimp-2.7.4.tar.bz2
  md5sum gimp-2.7.4.tar.bz2
  tar -jxf gimp-2.7.4.tar.bz2
  cd gimp-2.7.4
  less INSTALL

I take a look and realise it wont compile at this stage as our supporting software isn’t new enough, if you try and compile gimp at this point you’ll get:

Requested ‘babl >= 0.1.6′ but version of babl is 0.1.4

Which we fix by downloading the latest. I’m using make -j3 to speed things up on a dual core system. Change the number to be then number of cpu cores on your machine plus one.

  # these two lines are important
  export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
  export LD_LIBRARY_PATH=/usr/local/lib
  wget ftp://ftp.gtk.org/pub/babl/0.1/babl-0.1.6.tar.bz2
 tar -jxf babl-0.1.6.tar.bz2
 cd babl-0.1.6
 ./configure --prefix=/usr/local && make -j3 

 [root] make install

checking for GLIB – version >= 2.30.2… no

  wget ftp://ftp.gtk.org/pub/glib/2.31/glib-2.31.16.tar.xz
  xz --decompress glib-2.31.16.tar.xz
  tar -xf glib-2.31.16.tar
  cd glib-2.31.16
  ./configure --prefix=/usr/local && make -j3 

[root] make install

configure: error: Package requirements (gegl >= 0.1.8) were not met:
Requested ‘gegl >= 0.1.8′ but version of GEGL is 0.1.6

   wget ftp://ftp.gimp.org/pub/gegl/0.1/gegl-0.1.8.tar.bz2
   tar -jxf gegl-0.1.8.tar.bz2
   cd gegl-0.1.8
   ./configure --prefix=/usr/local && make -j3 

  [root] make install

Doing a ./configure –prefix=/usr/local in the unpacked gimp directory now gives a successful configuration with the following support:

Extra Binaries:
  gimp-console:        yes

Optional Features:
  D-Bus service:       yes
  Language selection:  yes

Optional Plug-Ins:
  Ascii Art:           yes
  Help Browser:        yes
  LCMS:                yes
  JPEG:                yes
  JPEG 2000:           yes
  MNG:                 yes
  PDF (import):        yes
  PDF (export):        yes
  PNG:                 yes
  Print:               yes
  PSP:                 yes
  Python:              yes
  Script-Fu:           yes
  SVG:                 yes
  TIFF:                yes
  TWAIN (MacOS X):     no
  TWAIN (Win32):       no
  URI:                 yes (using GIO/GVfs)
  Webpage:             yes
  Windows ICO:         yes
  WMF:                 yes
  XJT:                 yes
  X11 Mouse Cursor:    yes
  XPM:                 yes

Plug-In Features:
  EXIF support:        yes

Optional Modules:
  ALSA (MIDI Input):   yes
  Linux Input:         yes (GUdev support: yes)
  DirectInput (Win32): no
  Color Correction:    yes
  Soft Proof:          yes

Tests:
  Use xvfb-run         yes

So now do a make -j3 and make a cup of tea, then as root make install. You now have /usr/local/bin/gimp-2.7. If you run this you’ll get the new gimp, go to the ‘window’ menu and select the single window option to try it out.

January Update

January 15th, 2012

It’s been an odd start to the new year with a lot of change. I’ve applied for 3 junior Perl developer positions and as of this week have some business cards on order, I’ve already blogged that the portfolio is in a presentable state (but not perfect). In order to help with planing and motivation I’ve been trying out mindbloom.com (which I found via an article on lifehacker.com).

In a nutshell it’s represents your life as a growable tree with each area as a leaf. Accomplishing todo tasks in a certain area of life grows that leaf but neglecting other areas causes the leaf to start to turn brown so it’s kind of like a balancing aid, and a bit of fun too.

Mindbloom screenshot

Mindbloom screenshot of a tree that needs some help

The major categories are pre-chosen but broad and the delivery is polished (and free). I’m not sure I’d replace toodledo.com with it but I might use it side by side. It seems to turn the goal management and task setting into more fun and makes it feel less like something you need to take a break from.

So how did 2011 go?  Looking back at this time last year I made the following resolutions:

Save up money for a holiday to Nova Scotia

In the end we saved up enough and went on the holiday, it was a good fact finding trip if a bit stressful. I’m glad I went. I don’t think I’ll do the same this year because for one I’ll probably be settling in with a new employer and secondly the cost would outweigh the benefits.

Civil Partnership Documentation

Both pension companies put my partner down as the recipient should I die but both sent back a letter confirming they’d acted on my instructions but not naming who the instruction was intended for, so I can’t  use the letter as part of the evidence for a civil partnership in the event of emmigrating. It was a bit frustrating, especially as it seems to take a long time to get a response. I’ll have to write back to them both which is on my todo list.

Pass the CCNA

This didn’t happen, I’m afraid it was a year of pure firefighting at work as we’ve not yet recruited to fill the space someone senior left when they left the team 1.5 years ago, mainly due to lack of applicants or the applicant wasn’t what we wanted. This has made it more stressful than normal and has resulted in little development or study time without sacrificing support for services. I’m not sure yet if I will pursue the CCNA in 2012 as my career might go in another direction.

Make an art portfolio style resume

The online site has been a lot of fun and has two projects put up. In terms of a physical A3 folder I’m about 1/3rd done. Everything I need is in place so I should be able to finish this (or at least a first release) this month. I think I’ll always keep developing my portfolio from here on but need to draw a temporary stop line, document what I have and make that physically presentable (print it out), then continue to develop it.

Improve other sources of income (diversify skills)

I did raise the value of donder.co.uk using www.sitevaluecalculator.com as a measure. The site went from $123 to $1000 in value. I didn’t manage to blog every month in 2011 but did keep the blog active. I’ve also improved the hosting and tweaked the style slightly. My other target involving Triond I dropped up with as the income was too low. I’m hoping March will see me start a software development related position which should help broaden my skills a lot.

My last targets had been guitar related, which I’m afraid has taken a back-burner.

HP Slate 2 Experiences Fixes and Review

January 11th, 2012

This article is about my experience with the HP slate 2 and some of the fixes I’ve found for various issues, and other issues I’ve no fix for. It also gives an example software setup. [edit] short version – don’t buy it, read all the “but…” parts in the good reviews – this product is not a good example of HP hardware and it struggles with the simplest tasks you might want to use a portable tablet for that the competing products can do easily.

Why a Windows based tablet?

I purchased the HP Slate 2 knowing it was a Windows tablet and that the Windows based tablet usability experience isn’t as good as the apple ipad or android based tablets – however – I already had a Android phone and thought that a Android tablet would overlap with the phones duties too much. On top of this I was leaving my workplace and so had to return the HP 2710p tablet work had purchased me 4 years ago, leaving no more Windows based machines in my house (I have no Apple devices either). I had a need for something with Windows on, just to run the odd critical thing now and then that for whatever reason refuses to run on anything else. So for me the  Slate occupies the niche of laptop, larger organiser and Windows machine. The New years sales were on and it was discounted, so it was a good deal.

It’s not perfect, here’s the problems I had, some of which I could fix, some of which I haven’t yet. I’d like to hear from you in the comments if you’ve found a solution to any of these.

Logging in

The HP slate 2 doesn’t feature a fingerprint reader so you have to laboriously thump a password in to the standard windows screen each time which takes time. I wish they’d put a fingerprint reader on like on the HP 2710p and similar so you could log in in a second or two (the world and its dog thinks you can bypass a fingerprint sensor with a gummy bear but in practise it’s actually quite robust).

You could set a weak/fast to type password or you can set windows to not require a logon which will mean you’re more likely to use the device instead of reaching for a pen and paper but then you trade a degree of security for convenience. A minor security step up from automatic logon would be to have a swipe a pattern to logon system (as on most touchscreen phones) but I couldn’t find such an application for Windows. I found http://www.slidetounlock.me/ however the only action are slide, which doesn’t add security in the scenario I’m after and the configuration screen seems to have some issues (choose directory dialogue keeps reappearing having been used once). There are some bluetooth proximity logon devices that might be of interest but I haven’t tried these yet.

Swype input

A great error message

If you’ve unboxed the HP Slate 2 and it has Swype installed (which lets you input words by moving the pen across the virtual keyboard to each letter instead of typing) then you need to head over to the HP site to upgrade Swypefrom 3.19.91 to the bugfix 3.21.91 otherwise at some point swype will die and give obscure error messages and not input text.

I eventually turned this off altogether as it would get in a weird state sometimes where it would get into some kind of inverse state where it would appear when you wanted it gone (like during a video) and removing it then clicking on the video would result in it re-appearing.

Video Speed

It struggles with iPlayer (and certainly don’t watch anything in iPlayer HD) and with some of Lovefilms silverlight based online viewing. If you let it play for a bit it seems to improve (I guess some buffer if able to increase over time). No it’s not my wireless, other devices are fine. Word is that this device will not be able to run Windows 8 metro interface when it appears.

Autorotation

Autorotation is temperamental sometimes, for example I turned it on and docked it today, but windows logon stayed upside down as did the subsequent desktop. Picking it up, placing it level and then placing it down again corrected it. Other times you have to put it in the orientation it thinks it’s in then move it.

 

Physical Keyboard

If you turn on the embedded security chip you’ll need a usb keyboard. This is because it reboots to initialise the TPM hardware and then asks you at a bios boot prompt if you want to accept the change (Y) or not (N) – except it’s a tablet and it hasn’t yet loaded the operating system so you can’t type anything. You’ll have to plug a USB keyboard in.

Wireless

Oh dear.

If you find that when you’re connected to a wireless SSID you can’t see any other SSID then check what date/release of the wireless driver you have. Mine came with 3.1.2.41 but there is a 3.1.2.69 (12 Dec 2011) driver which fixes that issue (with thanks to HP support for helping with that).

I think there’s still an outstanding bug in the wireless driver implementation with the built in wireless (Atheros AR6003) however. I’ve now raised a HP support case for this but it appears to be related to WPA Enterprise as far as I can make out, with wireless traffic being dropped after about 1-2 minutes of connectivity. I rased it with HP support who asked me to fill in a rather detailed questionaire which I’m not sure the customer is supposed to directly receive – I think it was for their support staff, but I was able to give the manufacturer, model and firmware/software versions of the WAP together with the facilities offered by the university RADIUS system. The outcome was they suggested I return the HP for a refund which is really weird.

Options are:

  • (worst) Don’t use WPA enterprise based wireless networks (er… )
  • Return your device for a refund (HP approved method)
  • Using a physical workaround of a £7 slimline 802.11n usb wireless device in the top USB slot
  • (best) Find a way to remove the back of the slate case without damaging the case, take out the wireless adaptor and replace it with a Intel 802.11n adaptor from another HP device. Hope that the HP hardware bios lock on wireless cards in the slate is common to the original device and so includes that card as an acceptable device.

Sound

Sadly I think there’s also an issue with the sound driver, perhaps involving DRM protected content playback and perhaps a hardware issue too. My opinion is that it’s worrying to find so many issues in one device (especially when HP usually make such good stuff).

Sound driver issue

To reproduce, download a book from audible.com, start listening to it via the headphone socket and then open up a flash game in a browser. The audiobook will start coming out of the speakers and the game and other system sounds will come out the headphones.

So to clarify, When another application in the background makes a noise (e.g. flash based game in a browser) the sound from audiblemanager stops coming out the headphones and starts coming out the laptops speakers, other applications making noise out the headphones like normal.

to fix this I tried:
* Closing the other application, noise from audiblemanager still comes out the laptops speakers despite the headphones being plugged in as before
* unplugging and replugging in the headphones has no effect
* closing and reopening audiblemanager has no effect
* rebooting the machine and opening audiblemanager the sound now comes out the headphones again, however now the sound (for the same recording) sounds much much quieter and as if it’s had all bass removed, similar to listening to a small radio on the other side of a room. This is also the case if you open the same file with Windows Media Player – so it’s as if the sound driver is now outputting a much reduced quality stream, for no clear reason.

At first I contacted audiblemanager support but the symptoms persisting in Windows Media Player rulled out the application

Sound hardware issue

The other problem with sound is that when headphones are used you may hear static interference whenever (what I assume is) the hard disk is accessed. You wont typically notice this at the start of an audiobook but it will be noticeable in bursts towards the end. It’s not the sound file itself as you can listen to it later and the static wont be present.

The screen

The screen isn’t so great, with a dark background you’ll see the issue with darkness around the edges but also backlight bleed from the top and bottom. The viewing angle on the HP2710p and similar is much better (although it’s not a fair comparison as the elite tablets are 3 times the price). It appears fine with a bright background so it’s probably just the contrast ratio mixed with the viewing angle.

Case

You’ve probably seen the cool looking Bluetooth keyboard combined with fitted case. It’s a shame this wasn’t the default. As of mid January 2012 the UK appears totally out of stock of these so I can’t review them. The default case has some elastic to hold the pen, it would have been nice to see a pen holder like on the HP elite range of tablets.

Software

Above all try and keep it light

Evernote comes bundled with the device, I’d upgrade this from the evernote website, then use ink notes and you can write directly onto it as if with pen and paper. If you upgrade to the pro subscription (£30 for a year) then you should be able to remove the adverts. Artrage is beautiful on these devices. These are the only two applications that are tablet specific for me.

I then use keepass, dropbox (with notifications off) and chrome (and hence gmail for email and calendar) with YNAB via Adobe AIR. Xmarks syncrhosies your bookmarks. Toodledo.com provides my todo list. I pin chrome to the taskbar instead of IE, and pin windows mobility centre to the taskbar (found in control panel)

To make the tablet usable with fingers I use fences from a company called Stardock to organise the desktop.

I tried objectdock from the same company to provide an alternative star bar similar to the Apple mac. Objectdock absorbs whatever was pinned to the taskbar already. I removed the default clock and added a battery indicator, then reduced the effects in favour of performance. I then ditch program icons I wont use from the objectdock. sadly in the end I removed it as the CPU on the slate 2 seems to suffer. I liked objectdock though and would use it if I had a windows desktop.

Don’t bother with the Microsoft touch pack for windows 7 as it’s large and the programs have no long term utility.

Career Move

December 14th, 2011

I’m currently pursuing a move to another employer as part of keeping my career moving. I’ve completed almost 5 years at my current employer but I’m moving on to alter my career path slightly. My plan is to get a more developer orientated position, which may well be a junior position and a slight step down in pay. The reasons for this are firstly to expand and deepen my experience in this area and secondly because if I do successfully emigrate to Canada and lose a job over there, then I suspect it will be easier to find potential subcontract/telecommuting work from contacts that know what my code is like and what to expect of tasks assigned to me. So to explain it better – I’m taking a minor risk now to reduce a major risk later – I want to build up more contacts and skills so I have a bigger safety net to fall back on should I need it via telecommuting development work with previous employers or contacts.

So to this end I’ve been working on the portfolio some more. Two demonstration sites http://weather.donder.co.uk and http://windfarm-simulator.donder.co.uk are online and linked from the portfolio. I’ve recently moved the weather site to a database backend and a different graphing mechanism. I’ll do something similar with the windfarm-simulator site soon.

These two sites sadly aren’t currently as professional as I’d like but they had to be online as soon as possible and it’s also been a little bit of a crash course in to the murky world of Perl graphing which has gotchas like the GD::Graph::Line module having a really odd way of drawing the X axes that can’t be overridden. I had planned on using rrd tools graphing but hadn’t used it before so hadn’t appreciated the ‘lossy’ database backend that goes with it (it condenses data over time, which isn’t what I wanted).

Hence I think for the third project I plan to put in the portfolio I’ll use PHP. This is for the graphing libraries, to expand the demonstrated skills and because it’s in high demand. It’s been a while since I wrote much in PHP so I’ll have some catching up to do but Perl and PHP aren’t too dissimilar (they’re both reasonably sane scripting languages). I’ll need to decide at what point I call the other two projects finished, or at least good enough for the third project to use their output. I also need to be careful that ‘improving’ one of the projects doesn’t accidentally cause a knock on effect that puts all 3 projects offline.

I’ve got testing scripts online in the svn repo for both projects, which I’ve used to automate the coding standard (Perl Best Practises perltidy format and perlcritic -3). Putting the  code online seemed like a great idea until I realised how ugly the code looks – I see lots of bits I want to go back and clear up, or generalisations and assumptions in the code. I’ll fix these in time but I could do with days being longer, maybe 48 hours so I can have it fixed now. For now it’s all online, warts and all.

I also discovered the whole portfolio looked awful in IE7, which could still be running on some large organisations machines (think HR teams with managed desktops) so I’ve been over the site to test it using an old laptop that belonged to my girlfriend and had XP on it.

I updated my linkedin profile and had an approach from a company nearby however I’m not sure it’s an area I want to move into. I also applied to another company in Oxford but haven’t seen them access the portfolio site I referenced and haven’t heard anything from them.

I’m away visiting relations over the Christmas period, but I’m hoping the post Christmas holidays mean I can put some meaningful hours into the presentation of the portfolio and maybe add the third project.

portfolio.donder.co.uk now live

November 30th, 2011

I may as well publish this now rather than wait longer. It’s still rough in places and/or lacking in content but the main site is:

http://portfolio.donder.co.uk

It should at least give you an idea of what I’m aiming to present. I’m not sure I’ll be happy with it for another couple of weeks at least however.

I’ve got the two demonstration sites online (and all the donder sites are now on a dedicated virtual machine) although they look rather like 4 day projects at the moment (which they were). I’ve setup Google Analytics on the site and I’ve got it so that if you click on print you actually get something readable for each page via some print.css work.

I’ve still got lots more to do but work have given me 7 days off in December which should be enough to really get some good content in it. My list of fixes I want to put in is about 2 pages long currently. For now please feel free to explore and poke it.