SE-112 36 Stockholm
Sweden
T: +46-702-82 33 27
claes@surfar.nu
Twitter: @claesjac
LinkedIn: claesjac
IRC: claes on MagNET, claes_ on Freenode
Profile
I'm a technologist driven by knowledge and innovation. Where other people see obstacles, I see challenge. My interest range from hacking C on the tiniest of 8-bit MCUs with limited RAM to financial systems, mobile apps, massive databases and distributed systems.
Open Source and its communities lies close to my heart and I've been releasing software, running user groups, speaking at and organizing conferences since the late 90's.
Experience
SELF-EMPLOYED, STOCKHOLM - DEC 2013 ...
Doing consultancy and working on botani.st - a sensor network ecosystem for plant monitoring.
CONSULTANT, INIT AB, STOCKHOLM - SEPT 2012 TO DEC 2013
Maintained and improved core libraries used by various systems at the Swedish Tax Agency (Skatteverket). C, Perl and shell running on HP-UX and Linux systems.
Implemented the synchronization engine, automatic web publisher, consistency checker and backup solution for the ICAO PKD solution at the Swedish National Police. Mostly written in Python with extensions to the OpenSSL bindings M2Crypto done in C using SWIG. Also X509, PKI and LDAP.
Initiated the creation of a new team focused on Open Source and DevOps. Arranged a number of internal and external technology days with presentations and spoke at most of them.
CTO, TRUSTLY AB, STOCKHOLM - NOVEMBER 2010 TO MAY 2012
DEVELOPER, GLUE FINANCE AB, STOCKHOLM - JULY 2009 TO NOVEMBER 2010
Trustly AB (previously Glue Finance AB) is a payment provider that lets your pay directly using your online bank. I was in charge of technology and a key developer on several components among them:
- A SOCKS5 proxy for routing multiple TCP streams from backend systems to the destination host via the users own browser. Implemented in Java using Apache MINA and a signed applet in the browser.
- Custom standalone Java applet runner making applet interactions scriptable and other functions needed for browser emulation.
- High-level library for doing web requests using libcurl.
- Libraries for interfacing with custom hardware over USB.
- Customizations to Selenium WebDriver
Also did system administration, architecture, databases, iOS development. Lots of difference environments and languages such as Linux and Mac OS X, Java, Perl, C, Python, PostgreSQL (including PL/pgsql), JavaScript, Erlang
SELF-EMPLOYED, VERSED SOLUTIONS, STOCKHOLM - OCT 2006 TO JUNE 2009
Did consultancy specializing in Perl and open source software. Some examples of work I did is:
- Perl bindings to the NSS cryptographic library to be used for performing HTTPS requests with client-certificates stored on PKCS#11 hardware tokens.
- Firefox plugin to search within the cache
- Module for interfacing with Movex/M3 operations web-UI. Released to CPAN as M3::ServerView
- Developed a social/community site for people interested in mutual fund trading. Complete with programmable analysis engine and automatic portfolios. Some components released to CPAN as VS::RuleEngine and VS::Chart
DEVELOPER, SWEDISH PREMIUM PENSION AUTHORITY, STOCKHOLM - AUG 2002 TO SEPT 2006
Developer on the core system Pluto, which handles all the people portfolios, and the workflow system Elwis. My main responsibilities were the framework which handled communication between the two over SOAP and handled incompatibilities between different SOAP implementations among many other things.
Also in charge of the automated testing system for Elwis which provided a XML based language for writing test-cases that non-developers could use.
I also provided help where needed such as the IVR system when it needed to talk SOAP to Elwis, RPM packaging, system administration and functioned as a mentor and held several in-house courses in development.
In the last years I was part of the group which handled IT-architectural questions such as platform choices etc. My last assignment was choosing a new CMS platform for the agency.
DEVELOPER, CONTILLER AB, STOCKHOLM — 2000 TO JULY 2002
Worked on SiteCommander - an object-based Content Management System. My main areas were the rendering engine, API:s, language bindings and server-side parts of the user interface. During this time I started work on JavaScript.pm (see Open source) which made it possible for us to run server-side JS. SC was built with a very advanced in-house object-database in the bottom which provided features such as multi-version and multi-language attributes, triggers etc. Among the customers were FOI (Swedish Defense Research Agency), The trade union LO, Kodak Sweden and GB Glass (part of Unilever).
DEVELOPER, VOGON AB, STOCKHOLM - DEC 1998 TO 2000
Part of the development team that created a new electronic trading system for Nordic Growth Market (SBI at the time). My specific areas were the development of a high-speed and very compact transmission protocol for transfer of objects between Perl and Java which was written as a tool which auto-generated XS (Perl modules written in C).
For NGM I also developed a server which provided real-time market data to parties such as Reuters and wrote most of the test tools for the matching engine. Wrote excel macros to to export test portfolios and scenarios into our testing tool for the trading system.
Also worked extensively on SiteCommander which is described above.
DEVELOPER, ENTRAPPA AB, STOCKHOLM - MID 1996 TO DEC 1998
Worked mostly with backend web-development in ASP with MS SQL. Among the projects I developed were an auction engine for Auktion Express, production comparison tools for Pc Express and design and implementation of a search engine / sale system for real estate complete with auto generated banners.
Education
CompSci at KTH Royal Institute of Technology, Stockholm, Sweden — 2004 & 2005 (not completed)
Skills
Very good knowledge in architecture, analysis and design of software systems, common algorithms and data-structures and different paradigms such as object-oriented and functional programming. Vast experience of automated testing, test driven design, agile development methods, version control systems like CVS/SVN/SVK/Git, various editors and IDE:s such as emacs/TextMate/Eclipse/ Netbeans/Xcode.
Expert knowledge in Perl, C and Java and have also worked in several other languages such as assembly (x86, PowerPC, 68k), C++, C#, Objective-C, Python, Visual Basic (VBA, VBScript, VB6), Erlang, io, JavaScript, sh, SQL, Ruby.
Long experience of Linux (since 1996) and other unix and unix-like environments. My desktop of choice is MacOS X. Experience from setup and administration of web-servers such as Apache/ IIS/ Lighttpd, Samba, Kerberos, MTA (Postfix and qmail), databases such as MS SQL, MySQL, PostgreSQL and Oracle. Good knowledge of networking and relevant protocols.
Open source and communities
Since the late 90's I've been involved in the open source community as a developer, mentor, speaker and organizer.
CONFERENCES AND PUBLIC SPEAKING
I like going to conferences and I've also been a speaker at the big european Perl conference YAPC in 2001, 2002, 2003 and 2004. Together with Jonas B Nielsen from Copenhagen Perl Monger and Salve J Nielsen from Oslo Perl Mongers I started the Nordic Perl Workshop conference series in 2003. In 2005, 2008 and 2012 it was organized by me in Stockholm, Sweden. I've been a speaker at multiple NPWs as well as the London Perl Workshop 2011.
I co-founded the FOSS Stockholm network with Daniel Stenberg in 2009 which is a interest group for people in Free and Open Source Software and we've organized a large number of events.
Interest in PostgreSQL lead me to co-found Stockholm Postgres User Group together with Magnus Hagander.
Apart from above I've spoken at a number of smaller events and gatherings.
PROJECTS AND CODE CONTRIBUTIONS
I maintain a github account where much of my software is kept. Some of it is also released on CPAN under my PAUSE ID claesjac. A highlight of some of my projects:
- JavaScript.pm - A bridge between Perl and the JavaScript engine SpiderMonkey that is used in Firefox. It lets users execute JavaScript from within the perl process and provide Perl classes and functions to the JS environment as “native” functions.
- pg-json - A custom datatype for PostgreSQL with functions provided by the Jansson JSON library. Since PostgreSQL 9.2 a native JSON datatype and functions is included and thus this extension is no longer needed
- Runops::Recorder - An alternate runloop for the perl interpreter that records when a number of ops are executed. This allows the users to playback the execution afterwards and see what was executed etc.
- pg-parser - A fancy hack to make the PostgreSQL parser available from PL/perl stored procedures. This allows users to create analysis tools that needs to tokenize and parse PostgreSQLs dialect of SQL
I've also contributed time and code to a number of projects such as libcurl, the Perl module Imager, perl, OpenSSL, etc.
Other interests
When I'm not busy working or doing open source stuff I enjoy cooking, golf, videogames and reading books.
References
On request