Resumé

Martin Paljak

  • I was born on 16th of July, 1982 in Tartu, Estonia. I'm an Estonian.
  • I'm happily married and have a son.
  • You can reach me via the contact page. I currently live in Võrumaa.

Languages

  • Estonian - I'm Estonian so this is my mother tongue
  • English - Quite fluent
  • Russian - Medium speaking skills
  • Hungarian, Finnish, Spanish, German - I've lived for some time in these communities so I know how to order another beer in the bar ;)

ICT related

  • I've enabled about 20% of Estonian eID users by creating the software to use the card with Firefox, Mac OS X and Linux
  • I've made it possible for about 10% of Estonian e-voters to vote. By making the software that made it possible to use the card on 'alternative patforms' and by pushing everybody to have the e-vote client software available on Mac OS X and other alternative platforms.
  • I've opened the the Estonian eID card for the rest of the world by creating openid.ee OpenID service
  • I'm passionate about what I do and eager to let common sense and best practices always win.

Domain knowledge

  • Smart cards, authentication, PKI, cryptography, multiplatform (Windows, Mac OS X, Linux) client programs, eID. With my work on Estonian eID I've worked on isses from reader firmware debugging, cardreader drivers (I first implemented the PC/SC v2 based pinpad support for the open source CCID driver), different card operating systems to different cryptoapis like CDSA, Windows CryptoAPI, PKCS#11, OpenSSL and XML applications like XAdES digital signatures.
  • Mobile operator services and messaging - SMPP, MM7, EMI, Wap push, MMS, EMS, iMODE, SMIL, GPRS, business system integration (I've integrated several customer systems like billing with new service delivery platforms) and real life business use cases of mobile technologies.
  • Platform Web, Web 2.0/AJAX/REST buzzword. This means HTTP/1.1, XML, RDF and friends. Especially the way personal, restful webservices can be built with the help of eID cards.
  • Common sense and best practices in software development and delivery processes. How the software quality term does not mean 'we test at the end'.

Hardware

Though I'm more a 'softcore' guy one has to know the tools he uses. So here's an incomplete list of hardware platforms I've worked with
  • Intel x86 - more commonly known as the PC. From the smallest up to now common 64bit machines. I've also worked with some x86 compatible embedded solutions.
  • SPARC - mostly different SparcStations are the ones I've opened with a screwdriver
  • PowerPC - AKA Apple Mac. This means my old sweet PowerBook G4.
  • Various minor hacks and platforms - embedded x86, Zilog, Commodores, MSX. I used to like electronics and knew how to solder but I wouldn't bet much on those skills any more.

Operating environments

Again - some like the term operating system and some even argue that operating environment means something totally different. I don't care.
  • Unices. (If you want to argue about what is UNIX and what not then i'd limit it to POSIX) Including (Debian) GNU/Linux from writing kernel modules to remote administration of GNOME thinclients. I've been running Linux since late 1996 - i got my first 32bit machine then and was able to do the switch from Minix. Some other noteworthy platforms i've looked into for inspiration or have been forced to use: Free/NetBSD, Solaris, HPUX (ARGH!), AIX, OS X, [plan9/inferno]. I've looked into several 'funprojects' that make use of the UNIX philosophy somewhat or anyway are enough fun and not mainstream to be interesting to study - HURD, QNX, BeOS, Flux developments. Lately i use Darwin and Linux as my main platforms.
  • Windows - Enough said. XP and Vista.
  • Handheld - PalmOS, J2ME, Symbian Series 60, iPhone

Internet

As it is hard to draw practical separators between hardware and software sometimes, it is hard to define 'the internet'
  • Core IP networking - IPv4, IPv6, TCP, UDP, ETC. Though not a heavyweight network administrator, I know how to do several networking tricks with software (Linux). No Cisco certificate though...
  • Core internet services - In my understanding it includes DNS, SMTP, HTTP. Two latter ones generate most of the traffic (oh yeah, 50% of SMTP should be spam...) and depend ~90% on proper functioning of DNS. In addition to those I expect P2P and specific streaming protocols to be big in near future too (Not big in transfered bytes for ISPs but big as important for the society).

Languages (programming)

I know how to program. Though I'm not so sure if I like the word 'program' that much. It's more about the ability to think in a certain way - structured, logical. It's more about the way of thinking because WHAT you think will result in what you express (write) in a language selected for a given task. A computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute. (The Structure and Interpretation of Computer Programs, H. Abelson, G. Sussman and J. Sussman, 1985.) My favourites:
  • Python - elegant, practical. Fast (not 3 hours of working but 10 minutes).
  • Scheme - previous favourite. Elegant, powerful, but lack of a common and well supported platform (practical extensions) is somewhat hurting.
  • C - mostly in POSIX context but also for low-level hardware. Right tool in many cases.
  • BASH - quick prototyping and gluing together things 'the unix style'.
  • JavaScript - 'Javascript is the thing that makes my browser shiver and open up popups, right?' NO! It is a nice and fast language powerful for many scripting requirements. But AJAX rulez the buzzword world.
  • Java - though not a big fan of Java, this is what is de facto standard in common IT industry. As a language it is somewhat nice, but the so common 'pure java approach' requires you to marry a woman and her three ugly sisters too...
  • Others - not-so-favourites and stuff used in the past (no particular order): BASIC (Qbasic, MSX, Visual Basic) I can't hide that i started with basic on some strange old machine. C++ - i would prefer Java. Pascal (Also some Delphi) - mostly used on competitions when the limitation was to use either c/basic/pascal perl/sed/awk - Sorry Perl camp - I consider all this as legacy Lisp family - I prefer Scheme but most of the time it is too 'academic' for practical uses. PHP - no comments. Assembler - Sparc32/Zilog/x86
FoxPro, Fujitsu COBOL, Prolog, Haskell, Self, HTML/OS, MetaHTML, XSLT, ETC. Specialized languages not of general interest.

Professional experience

  • 03.2008-07.2008 - Airwide Solutions, Helsinki/Montreal/Reading Delivery architect and trainer
  • 07.2004-12.2006 - FirstHop, Helsinki, Finland & Spain, Thailand, Netherlands Working on various system integration projects. Customer projects software process improvements and solution design/architecture consultant.
  • 07.2003-12.2003 - Webmedia, Tartu, Estonia J2EE developer, working with Bea Weblogic, EJB, Oracle, JSP and related technologies. There's a recommendation letter from my PM in Webmedia available from [here](http://martinpaljak.net/blog-stuff/soovitus-wm.pdf) (in Estonian)
  • 04.2002- ... - Freelancer, Tartu, Estonia & Internet I'm running a software consultancy named Ideelabor (Idea lab) Main areas are (eID) security, web services and software process management.
  • 10.2001-04.2002 - IT Servis, Riga, Latvia I was one of three partners of a small IT startup, responsible for everything IT related - understanding and defining the needs of customers, system analysis, development etc. As business was better on hardware than software side I quit.
  • 06.2001-08.2001 - Dzingel, Tallinn, Estonia Project to setup internet connection to the hotel administration, guests, netcafe WiFi. Built a local network, a netcafe, setup of web security cameras based on Axis technology. Back in 2001 it was a novel setup in Estonia - 4 public webcams at one site!
  • 10.2000-04.2001 - Inetcomm, Budapest, Hungary System administrator of a webhosting company. Administered Linux servers and services running on top of them (HTTP, DNS, SMTP, FTP, LDAP, databases etc). And used BeOS in my workstation on daily basis.
  • 07.2000-04.2001 - 3D Express, Budapest, Hungary Programming in Unix environment (C, BASH, 2D/3D image processing), website automation and database integration (PHP, MySQL, HTML/OS). Local network administration (Ethernet/IPv4, Windows 2000, Linux). Keywords: 3D, Superscape, image processing, Unix automation
  • 04.2000-07.2000 - Mobline, Budapest, Hungary Design of a hardware SMS< ->E-Mail gateway TCP/IP and SMTP stack. Keywords: SMS, GSM, Zilog, C, Assembler. Based on Rabbit Semiconductors TCP/IP board

About possible future position

I'm available for interesting and innovative challenges in Estonia or EU, where I could apply my knowledge about unices, networks and software systems. I'd prefer a position, or projects related to nonprofit organizations, education, and generic 'culture' related institutions. I value fun projects and flexible conditions. I'm passionate about what I do.

Fun information

I'm a quick learner and with broad knowledge and quick orientetion in fields related to IT/IS. I prefer new, innovative and nobel solutions, free/open source software movement and correct and cleanly designed solutions. But if something works as it should work, there's no need to modify or upgrade it ... I've used computers for more than half of my lifetime (starting in ~1990/91 with commodores, XT and Yamaha MSX machines), written code for computers since that time, and used the internet since it was available in Estonia (~1993/1994? Sending e-mails was FUN!. My first modem was a 1200bps 0.5kg beast bought from local flea market); Used unices since the moment I got my first computer (Toshiba Super Turbo 16 running minix). I've used Linux since ~1996. I've participated in several programming competitions (hey, I even got some diplomas: 2nd place in Estonia and 3rd place in Estonia). I'm a bit paranoid (you can never be secured enough), idealistic and have lots of energy if needed. I think I'm quite good with analysis/synthesis when learning different (software) systems, and I have good spatial skills. And I think that I have good skills concerning abstraction and visualization - before you do something, draw it! This explains the big whiteboard in my bedroom. I'm interested in (neural)network solutions, graph theory and autonomous intelligent agents. Practical interests include DNS (I've written different DNS severs, including one that runs as a Linux kernel module answering requests from Linux file systems dentry cache), and naming systems and their problems/solutions/applications at large. I love to travel (however possible!), read (popular science, philosophy, religion, politics, sci-fi) and think. I love cyberpunk and hippies, I believe in the future of digitality and virtual(real)ity. I'm a member of Estonian Defence League and NGO Offline.ee that unites open source software folks in Estonia. I tend to say 'in theory' at the enf of every complicated sentence.

What do you work on currently?

I've been involved with the Estonian ID-card project for some time. You can see the results there http://ideelabor.ee/id-kaart or contract me if you need assistance in this field. My latest venture has been Enabling the ID-card in the rest of the wild-wild-web using OpenID @ openid.ee I'm also the driving force and partner behind the ideelabor.ee consultancy.