L’Ordre des Ingénieurs du Québec et l’informatique

Au Québec, la Loi sur les Ingénieurs interdit à quiconque qui n’est pas inscrit au tableau de l’Ordre des Ingénieurs de porter le titre d’Ingénieur. Lorsque j’ai gradué de l’École de Technologie Supérieure en 2012 et du coup obtenu mon Baccalauréat en Génie de Technologies de l’Information, il était attendu que je fasse ma demande à l’Ordre afin de devenir un vrai Ingénieur. Mais est-ce pertinent en informatique?

J’ai passé beaucoup de temps à réfléchir sur cette question et à discuter avec mes collègues et autres ingénieurs sur le sujet. Est-ce qu’être membre de l’Ordre est vraiment une valeur ajoutée à une carrière en informatique?

Protéger le public

Ça prend une certaine rigueur pour réaliser les calculs pour construire ponts, routes, bâtiments et procédés industriels. L’Ordre existe en partie pour protéger le public. Si un ingénieur se trompe dans un calcul de charge pour un pont, des vies humaines sont en jeu. Si un programmeur se trompe dans une ligne de code, ça peut être catastrophique, mais pas de la même façon.

Pour la plupart des travaux en ingénierie, il est possible de prouver l’absence de fautes techniques de façon scientifique. Peut-on en dire autant pour la conception logicielle, domaine qui n’est pas une science exacte et qui est en constante évolution? Un logiciel libre d’anomalie n’existe pas.

Je ne vois pas comment l’aspect protection du public de l’Ordre peut s’appliquer à notre industrie.

Formation et audits

En informatique, on meurt si on arrête d’apprendre. Alors que l’Ordre oblige ses membres à suivre 30 heures de formation par deux ans, mon entreprise impose un minimum de 80 heures par année. 5 fois plus que l’ordre! En réalité, j’en fais beaucoup plus, à tous les jours.

L’Ordre se réserve le droit d’auditer les ingénieurs à leur travail pour s’assurer qu’ils respectent “les règles de l’art”. Outre le fait que nos “règles de l’art” sont en constante évolution, si quelqu’un se présente pour auditer mon travail, qu’est-ce qu’il va regarder? Le code propriétaire que je ne peux pas montrer? Mes courriels?

L’ordre ne peut pas encadrer la formation et les audits dans notre domaine.

Reconnaissance dans l’industrie

Sur le marché du travail, les employeurs qui cherchent des “Ingénieurs logiciels” traduisent litéralement “Software Engineer”, un terme utilisé partout au monde pour désigner un développeur qui a un baccalauréat universitaire. En fait, aucun de ces postes ne requiert de diplome spécifiquement en génie.

Ce n’est pas un titre reconnu dans notre industrie: les employeurs cherchent des certifications comme MCSDCCNA, ou CISSP. Contrairement aux entreprises, une loi québécoise ne peux valider la compétence à l’extérieur de son territoire. Notre domaine est global et ces certifications le sont également. Je compétitionne contre des gens aux États-Unis, en Inde et au Brésil qui appliquent pour des positions de “Software Engineer”, “System Engineer”, “Network Engineer”… Qu’est-ce que je suis sensé faire?

L’ordre ne me permet pas de me démarquer car il ne s’agit pas d’une organisation reconnue mondialement en informatique. La protection du terme “ingénieur” n’est pas réaliste en informatique.

Être membre de l’Ordre, en pratique

L’inscription au tableau de l’ordre implique le paiement d’une cotisation annuelle d’environ 450$. Si les firmes d’ingénieurs paient cette cotisation pour leurs employés, aucune entreprise d’informatique n’en fait autant.

Être inscrit au tableau est nécessaire pour pratiquer les actes réservés aux ingénieurs comme signer des plans ou surveiller des travaux. Comment cela se traduit en informatique? Mes plans sont des diagrammes de classes, mes travaux sont l’écriture de code. Va-t-on modifier la loi pour forcer que ces “plans et travaux” soient validés par des ingénieurs? J’en doute fortement.

Aucun acte légal réservé par la loi aux ingénieurs ne s’applique en informatique.

Fierté

Ets 25 Mars 2012 Pda-1.mp4_snapshot_01.02.26_[2013.10.24_14.27.07]

Je prête serment à ma remise de jonc le 25 mars 2012

Je me suis quand même farci les cours de Thermodynamique des fluides, physique des ondes et chimie, qui n’ont rien à faire avec notre domaine. J’ai prêté serment à une cérémonie organisée par la Société des Sept Gardiens, je porte mon jonc à l’auriculaire, et je suis fier de mon diplôme.

J’avais initialement fait une demande d’inscription accompagné d’un chèque, mais lorsque j’ai appris qu’il n’est pas nécessaire d’être membre de l’Ordre pour profiter des avantages sociaux, j’ai rappelé l’Ordre pour annuler ma demande.

La fille qui a traité mon dossier m’a demandé pourquoi je ne voulais plus être inscrit au tableau. Je lui répondit en terminant par “je vais simplement signer B. Ing. au lieu de Ing.“. Elle m’a répondu sur un ton accusateur que c’était illégal car “ça peut porter à confusion sur le fait que je ne suis pas vraiment ingénieur”. L’Ordre peut m’interdire de me prétendre ingénieur mais je suis très certainement bachelier en ingénierie.

Je pratique depuis la profession dans mon domaine, loin de l’ordre et quand je discute avec mes clients, je suis Ingénieur*!

*offre non valide dans la Province de Québec

Télécharger les vidéos sur le site de Musique Plus

Je n’ai pas la télévision par câble: pas besoin puisque j’ai Internet! Seul notre serveur multimédia est branché sur l’écran du salon. Je suis quelques émissions “classiques” sur Radio-Canada et Musique Plus et, heureusement, les deux permettent l’écoute d’une partie de leur programmation sur le web. Cependant, ces sites ne sont pas du tout adaptés à la navigation “de salon” (sans clavier, sur un grand écran). Je dois donc me débrouiller pour télécharger les épisodes sur mon serveur afin de les écouter plus tard avec XBMC. Read more

Go Paperless at Home with Google Drive

Every day, I’m handling and processing a lot of information that’s coming through that glowy rectangle that we call a computer screen. Even so, I’m having a hard time managing the few pages of paper I get in my mailbox on a daily basis.

Some of that paper is getting lost, important things that I should keep are recycled, graymail is lying on my desk indefinitely (not to mention spam), sensitive information is not handled properly… I don’t want to deal with any of this!

What I’m really targeting here is a paper-less home. I want to be able to scan, archive, shred the physical copy and forget about it… right until I need it where I must be able to find what I’m looking for quickly.

Strategy

I have a multi-function printer that has the ability to scan to a specified FTP location at the touch of a single button. From that location, some software could pick it up and automatically process it.

I evaluated Google Drive against other services and software. Here is what I found:

Feature PDF from scanner Foxit Phantom Evernote* Google Drive*
Storage location Local Local Cloud Cloud
Maximum storage size Local Local +1 GB / Month Up to 5 GB
Maximum PDF size None None 25 MB 2 MB
Maximum number of pages Infinite Infinite 100 10
OCR None Manual Automatic Automatic
Price Free 80$ 5$ / month Free

The text in the PDF must be searchable so I can find what I’m looking for quickly (that’s the whole point). That means the solution I choose must have OCR capabilities.

There is some commercial software that’s doing exactly what I want but those are targeted to businesses and cost quite a lot. Foxit PhantomPDF Standard is the cheapest PDF editor that includes an OCR engine I found but there is no way to automate the process. A real deal breaker.

Let’s be realistic when comparing the remaining two cloud services: most if not all the paper I scan is at most a few pages. Longer documents are processed through a separate workflow and will be stored somewhere else. Evernote would have worked great but the 5$/month premium isn’t justifiable if I don’t use what it has over Google Drive.

How to

I think all the scanners have to way to “one-button scan” to a target machine by now. Check the user’s manual of your scanner or multi-function printer. Once it’s done, all you have to do is to install the Google Drive client on that machine, configure it so your scanner outputs the files in the right folder and you’re good to go!

Once you press the button, the paper will be scanned, moved to the cloud, OCR’ed and archived. Don’t forget to shred the original.

Looking for something? Hit https://drive.google.com, type some keywords in the search bar and you’ll instantly get it. Google magic!

I can finally find that banana carrot muffin recipe, T4 tax form or receipt for that hard drive without going through that stack of paper that’s lying on my desk.

That makes me wonder: how do you manage your paper?

Home Server Adventure

While servers are at the center of most businesses, there is also one a at the center of our digital lifestyle. A server that can store an ungodly amount of data, automatically backup all the PCs in the house, allow remote access to our files, play any kind of video file, hook up in the television, play video games, stream video files over the web to our mobile devices and make coffee (well, maybe not the latter).

Building and operating such a complex system is an adventure.

I compared solutions such as Drobo (expensive, missing features), Unix-based OS (complicated) and pre-built WHS machines (not scalable). In the end, only a custom WHS PC had the features, ease of use and scalability I wanted in a server.

Geek porn

Hardware

  • Case: Fractal Design Define R3 (a cool, silent and classy-looking case with plenty of room for hard drives and fans)
  • Motherboard: ASUS P8H67-M PRO (built-in HDMI output)
  • CPU: Intel Core i3 2100 3.1GHZ Sandy Bridge 3MB (enough for 1080p encoding)
  • RAM: Corsair 1X4GB DDR3-1333
  • Power: Coolermaster Extreme Power Plus 500W
  • Additional SATA Controller

I already had 8 hard drives totalling 12 TB worth of storage.

OS: Windows Home Server

WHS is really a file server at its core. The users, folders, permissions, backups and remote access components are all accessible from a nice dashboard that’s available via an application that you install on your laptop or desktop PCs.

That same client will handle the backup process for you. On the server side, you specify when you want the backups to be done, and it’ll turn on, perform a differential backup and turn off the machines every night. If you lose something, you can restore files individually or do a full machine restore. The machine restore is done by booting on a USB stick that you create through the dashboard. I’ve actually done it twice and it worked better than I expected.

The server can be configured to send you email alerts when there’s something wrong or needs your attention. Those alerts can range from “this machine is late on its updates” to “3 of my hard drives are melting” and everything in between. Of course, you can choose to ignore some of the alerts. To know I’ll be notified when something breaks puts my mind at ease.

stay-at-home-servers3

Additional software

While the OS already does all the filesharing heavy lifting, there is additional software required in order to transform this file server into a media server.

First and foremost, XBMC. This free, open-source, multi-platform and extensible media center application is the choice of geeks and enthusiasts since 2003. Boxee is based on it. It was the only logical choice.

StableBit DrivePool combines the free space of any number of hard drives into one big virtual pool drive. Additionally, it can duplicate data from one drive to another and integrates in the WHS dashboard much like the now deprecated Drive Bender feature of the previous version of WHS. Thanks to this, I’m not living in constant fear of my data becoming corrupt if I have a hard drive catastrophically failing.

With all those hard drives running constantly all day long, it can get hot in there. That’s why I also use StableBit Scanner to monitor the temperatures and SMART data of the HDDs. It hooks into Bit Flock (a hard drive health analysis tool) to inform you that your drives are unhealthy before they break. I recently installed additional fans in the case because I kept receiving emails telling me the temperature of the hard drives was too damn high. If not for that add-on, things might have gone ugly.

StableBit Scanner for all your HDD monitoring needs

Since I use my iPad a lot, I also found some applications that add iOS “friendliness” to the server:

  • XBMC can receive AirPlay content
  • AirPrint printing with FingerPrint from Collobos Software
  • AirVideo for streaming media files on the iDevices locally and across the Interwebs
  • The XBMC Constellation app for iPhone and iPad is a great way to browse files and doubles as a remote.
  • Having iTunes installed allows me to backup my phone and tablet wirelessly on the server instead of my PC (those backups can take a considerable amount of space, up to 64 GB in my case)

Remote control

I bought a Logitech wireless keyboard that proved unreliable because of the 10′ distance between the television (where the receiving dongle is) and the sofa.

After much trial and error, I finally found a Microsoft Media Center Keyboard on eBay which use an IR receiver that works great… with a little bit of tinkering. By default, you can’t use that IR transceiver in Windows Home Server because it’s based on Windows Server 2008 R2 and the drivers are not available for that OS. Fortunately, they are for Windows 7 x64 and the easiest way to make this work is by following the instructions on this site.

On top of this, I used LM Remote KeyMap and XBMC custom keyboard.xml to assign the multimedia keys of the keyboard to functions that are actually useful.

Automatic content download

Having a PC to play all kinds of files is nice, but it’s no fun if you have to constantly feed it with new files manually. That’s why I tried to automate the content download process as much as I could.

Most Torrent clients have the ability to use RSS feeds to download files. uTorrent has a great tutorial on how to do this and showRSS is a good place to get the feeds. That way I can watch my TV shows when I want, as soon as they are available.

If you’re more into podcasts, using Juice would be the way to go.

Gaming features

I have installed a SNES emulator and the games can be launched directly from XBMC. I can use my Xbox 360 controllers with the help of the Xbox 360 Wireless Gaming Receiver I have. It’s a bit of a pain to install though because the drivers for this thing are not available for the Servers edition of Windows.

Offsite backup

While I’m protected against loss of data in the case of a hard drive crash, the important data to be stored elsewhere if I want protection against fire or natural disasters. CrashPlan is a service that can securely store an unlimited amount of data in the cloud. In my case, unlimited really means 6.5 TB of data but with my 2 Mbps upload bandwidth, it might take some time to do so I’ll be sending the most important data such as my pictures and documents in there first.

Any minute now

Conclusion

That server is still a wonderful ongoing adventure: I try to add a new feature every month or so. For those who are wondering, its name is Spock (you know, because he holds a lot of data and is half file server, half media center) and while it’s not making coffee yet, I’m working on it. 😉

Transfer files from iCab Mobile to your PC with Powershell

I’m a big fan of iCab Mobile that I use everyday on my iPad as a Safari replacement. Among other awesome features, this browser has the best HTML5 video downloading I’ve seen.

Unfortunately, the device’s 16 GB fills up quickly and I have to transfer the files some place else quite often.

While I could use something like DownThemAll for Firefox to download the files to my PC, I’d much rather be able to automate the process with a script. This looked like a great opportunity to sharpen my Powershell skills.

[powershell]
<#
.SYNOPSIS
Downloads all the files from a iCab Mobile server
.DESCRIPTION
Connects to a iDevice with iCab Mobile running a Import/Export server and downloads all the files to the specified destination
.NOTES
If the file already exists, it will be skipped.
Files are not deleted on the device once downloaded
.LINK
http://spacebar.ca/?p=3153
.EXAMPLE
.Get-ICabMobileFiles.ps1 192.168.0.101
.EXAMPLE
.Get-ICabMobileFiles.ps1 192.168.0.101:8080 C:UserssimonDesktopicab
.PARAMETER server
The ip address and port of the iCab Mobile server. Default port is 8080
.PARAMETER destination
The local destination folder on your computer, without trailing slash. Will use current folder if none is specified
#>

param (
[Parameter(Position=0, Mandatory=$true, ValueFromPipeline=$true)]
[string] $url=’10.42.13.104′,
[Parameter(Position=1, Mandatory=$false, ValueFromPipeline=$false)]
[string] $destination=(Get-Location -PSProvider FileSystem).ProviderPath
)

Import-Module BitsTransfer
$web = New-Object System.Net.WebClient
if (-not ($url -contains ‘:’)) {
$url = ‘{0}:8080’ -f $url
}
$html = $web.DownloadString(‘http://{0}/Download.html’ -f $url)
$regex = [regex] ‘(?i)&lt;a href=”([^”]*)”&gt;([^&lt;]*)’
$matchdetails = $regex.Match($html)

while ($matchdetails.Success) {
$source = ‘http://{0}/{1}’ -f $url, $matchdetails.Groups[1].Value
$dest = ‘{0}{1}’ -f $destination, $matchdetails.Groups[2].Value
Write-Host (‘Downloading {0}… ‘ -f $matchdetails.Groups[1].Value) -NoNewline
if (-not(Test-Path $dest)) {
Start-BitsTransfer -Source $source -Destination $dest -Prio Foreground
Write-Host ‘Done’
} else {
Write-Host ‘Already downloaded’
}
$matchdetails = $matchdetails.NextMatch()
}[/powershell]

I’m aware that this probably isn’t the best way to do it (I’m looking at you, regex!) but I’m fairly new to Powershell so if you have any comments, please share 🙂