It’s a little weird to jot down skills and grade them, so I’ll just write a little blurb about what and why. Mostly I dive into technology just for the fun of it, for my own pleasure and curiosity, sometimes it is some new emerging technology that seems cool… But here goes .. in no particular order.
Arduino and ESP8266
Have been playing around with Arduino boards for while now, like the closeness to the metal, pull a pin high or low, read something analog from another pin, broadcast a wifi probe request or push a custom UDP packet down the wire towards the internet. It’s almost as fun as coding X86 assembly language again. But this is a C-flavored language, compiled to a binary that is flashed to the device .. but still close to the metal.
C# and dotnet
Built lots and lots of nifty thingies when I worked at BBN, for import/export, parsing, mapping, transforming and interpreting data. I can manage but haven’t written much in C# lately, hoping that will change.
I have written a few scripts, mostly for easing or automating administrative tasks, but also some production-grade scripts that after initial tweak has been running for months without any problems. The secret is error- and exception-handling and have just the right amount of it.
Fluent in PHP as I’ve done pretty much everything in it since 2001. PHP isn’t flawless but like it for web stuff. Still learning new stuff.
When I had written and used my own blogging tool for a while and wanted something more feature-rich, I found LiveJournal and blogged there for a few years, but as it was a shared platform, you couldn’t do much with it beyond it’s limitations, then I found WordPress. I’ve been using it since early on and have written plugins and themes, helped friends set up and configure podcasts and mitigate DDOS-attacks. At the moment I’m involved in 5-6 WordPress driven sites.
RegExp or Regular Experssions
I use them a lot. I like them and the perform lots of work for me. I always try to keep RegExp as simple as possible, if need to perform several operations, I usually iterate with several expressions instead of clobbing together a massive expression that does everything and her dog.
XML, XPath and XSLT
Whenever fiddling with XML, XPath often is what I use to fetch desired information in elements or attributes. XSLT transformations is a bit wonky and to add to wonkyness, just fire up any mapping tool and you’ll get generated XPath. Handcrafted XPath will almost always win over generated.
Perl is fun and I’ve built lots of parsing/import/scraping scripts for my various projects, it’s powerful and easy and a little quirky.
Been fooling around a bit with Python and starting to like it, indentations.
Was early on using windows, have experienced pretty much every version since its initial release, Windows/286, Windows/386, Windows 3.x, Windows 9x, Windows XP, Windows NT4, Windows 2000, Windows Vista, Windows 7, Windows 8 and some of the mobile variants such as Windows CE and Windows NT Embedded. Nowadays I do not own any Windows machines, my wife do, the single windows machine in our home. Everything else runs Linux or Androind, which is also Linux.
I’ve been through a couple of Linux distributions, RedHat and its variants (among them HardHat), a few variants of BSD, Slackware and Debian. I liked Debian because it was stable and had sane update cycles and such, but it wasn’t much for the desktop (at the time) so I switched to Ubuntu.
Apple OSX and MacOS
Inherited some machines and played around with them, had a few at work and thought they were useful. Wouldn’t buy any Apple product for private use because of price, as an hardware-wise identical machine with anything else on is dirt cheap and the only thing you pay for is the branded product.
Funky and different, compared to contemporary Windows variants. The first time I connected to the internets and browsed gopher sites in 1994 was on an OS/2 installation on my spiffy DEC Venturis 1100 (a 486/DX4 with a whopping 120Mb HDD).
First real operating system I came into contact with, for that time and purpose it was the best thing. When DOS 5.x and 6.x was current I wrote lots of nifty little programs and utilities in assembly language and compiled basic for special purposes such as repackage zip files on my bulletin board system (BBS) after doing anti-virus scan an adding a little BBS-intro program. Learned to tweak CONFIG.SYS into perfection to get 624Kb free after necessary drivers were loaded out of the available 640Kb.
Several years after closing down my BBS and instead calling for internets access, I could from heart recite the optimal configuration string for my modems. I could also whistle connect sequence in the handset and connect at 14400kbit/s. I used them for fun, war-dialing companies at nights to explore switchboards and exchanges, even found a dial-out once, popped out in the USA and could call national for a short while until it got discovered. Innocent fun in the 1990’s.
Bar codes, QR-codes and OCR
I’ve always been a bit fascinated with bar codes, curious to find out what it’s contents are, how to read and create it, what the numbers represents. I’ve written some code to parse and map the information within them, QR-codes added another dimension to that and far more information within them. OCR numbers on bills and invoice has also been an interest, how to read them and create them. Luhn-3 and Luhn-10 is your friend.
I own 3 bar code scanners of different shape and form.
Magstripes and NFC
The interest for hidden information, as with Bar codes and such, also reaches into the domain of magnetic stripe cards and RFC. Curious about what is in them I bought a magstripe reader and started scanning all sorts of cards, club card, medical insurance cards, hotel pass keys and VISA cards, to find out what makes them tick. There is lots of information in them, more than people generally know about. NFC are generally just numbers, streams of digits, to be looked up in databases somewhere.
I was tasked to research the possibility to bring a large subscriber base online, to have subscribers logon to a portal where they could use loyalty-points as cash and rebates, turned out the subscriber numbers where generated randomly and half of them would not fit on a card with club card prefixes and check sums, with lots of collisions if shortened, so the whole project had to be scrapped as the subscription management system also was so inflexible and wonky that the nightly updates were impossible or even practical, if you even managed to connect and also were lucky enough to get a slot to run a query. If it would have succeeded, the subscribers would have received imprinted cards with magstripe as a national tourism card coverage over Sweden.
With the same fashination as Bar codes and OCR, VIN-codes or Vehicle Identification Numbers, were a part of my job at BBN to verify and check and sometimes even derive information from, at some time I could tell what engine, transmission and model year from a specific vehicle manufacturer, just by looking at the VIN-code. Some other manufacturers just cobble together numbers and slap on a serial number to get their VIN-codes and that annoys me still to this day, no structure or information at all.
X86 assembly code
Writing assembly code in the 1990’s were what often kept me away in the nights, how to get the most out of each processor and you could really do fantastic things with as little as 1k (Kilobyte) program. I wrote never-released viruses by looking how others had done, I wrote cracks and patchers for games and utilities, to patch on disk or in memory, or to terminate and unload certain programs or drivers. Today we just throw hardware at problems, instead of trying to optimize programs to use less memory or have a small footprint on disk or perform as fast as possible, makes me a little sad when I know what is possible, with some hard but interesting work.
At present day, when I stumble upon a piece of software that has an evaluation timer and the company who published it has moved on or gone out of business, I want to tear it apart and patch the stupid lock away, as 10, 30 or 90 days evaluation period is not fun anywhere when there is no fully functional product to buy anymore. A few sprinkled NOPs here and there and a strategical unconditional jump, it’s done.
As I have done lots of “carving metal” with assembly code, it was fun to actually know something about the chips I was commanding through programming, so when I started in the hardware-for-telecom job, I plowed through data-sheets and knew what each chip in the 82xxx family of each iteration were about, as the manufacturing company we worked with had pretty close ties to Intel, we often got prototype or first-spin boards to play with.
I even proposed a few changes to a chip, wrote down a few notes on a napkin and passed it on in the right direction, a few months later that feature were implemented in silicon – I’m not sure if it was on my suggestion or if it was somebody else, but the wished for feature made it into production. Bridge-chip. I can’t really take credit for that in any way, but my notes were pretty specific.
As you probably read through it all, you can tell I’m a nerd.