2010-06-04

Curriculum Vitae

Kalle Hallivuori (Toivonen)

Senior Multidisciplined Information Systems Developer

Contact Information

Overview

I chose development of software solutions as my then future profession at the age of twelve back in 1983. Through hobbies, studies and work I have learned and practiced many different aspects of the trade: Systems, network and database administration; design, development, testing and documentation of new media, embedded, utility, SOA, web and GUI application software; different ways of working in and among teams; providing customers with packaged as well as tailored solutions. I come with ideas but without expectations about what your particular methods of software development may be. Fellow engineers I work with tend to like and appreciate me.

I prefer small, cross-functional teams and good communications over narrow roles in complex processes. I prefer empiric knowledge to guesswork as a basis for decisions, plans and designs. To me it seems that most fruitful projects often begin with a very clear vision, rely on readily available solutions, reduce or clarify overall system complexity and publish some of their results. I strive to continuously improve my work at all levels. I am drawn to quality and thrive in intelligent company, and find it rewarding to listen to and understand everyone.

Goals

I find successful engineering highly rewarding. I love to learn new things; proper functional programming has been on that list for long. However, I also want to optimize the happiness of my family as my three children grow up. So I want to complete work goals within limited but efficient hours while honing my skills and reputation. Eventually I hope to be able to develop some useful free software.

I aim to deliver long-lasting, deeply satisfying solutions, and spread related abilities around me. I intend to live and die happy: with red tests turning green in my hands.

Achievements

Languages

Select Customer Cases

Embedded network device development at the Finnish branch of a health/security/defense corporation, 2008-09 - 2009-04:
Perl/C++ development. Acceptance test automation for network devices with Hudson and Perl TAP. Helped a multinational, multisite team benefit from agile methodology.
RDBMS driver and tool development for Truviso Inc, 2007-10 - 2008-02:
Successful open source development with C#, C++ and wxWidgets.
Development of Oracle and PostgreSQL databases, J2EE and JEE radio network optimizer, 2007-04 - 2008-06:
Radically reduced database usage overhead in a complex domain and in teams with pretty good Scrum implementations.

Work Experience

Senior Software Engineer and Consultant at Koodaripalvelut.com, 2007-04 onwards:
Customer cases above and more; server administration; internal software development with Java 6, Wicket, ORM with Hibernate and DataNucleus.
Senior IT Engineer at Sulake Corporation Oy, 2005-04 - 2007-03:
Postmaster. Unix systems integrator. Internal services architecture, design and development.
J2EE Product Support Engineer at DEM Solutions Oy, 2004-05 - 2005-03:
Created processes and integrated tools for support of large J2EE systems (mainly for Sonera). Managed support and participated in development of those systems.
Stakeholder and Linux Consultant of Tietopaimen Oy, 2004-04 - 2003-03:
Network, server and software solution provider.
Entrepreneur and Linux Consultant as Korpikuu Tmi, 1998-06 - 2006-10:
Internet server and application provider. Software developer, both alone and in teams.
Software developer at Elma Oyj Electronic Trading, 1998 - 2002:
Extranet solutions with Perl, C and Informix. Rolled own AJAX.
Multimedia software developer and Unix server administrator at To the Point Oy, 1996 - 1998:
Design and development of production time boosting framework on top of Macromedia Director with Lingo.
IT architect and remote administrator for Citlembik Ltd, Turkey, 1996 - 2000:
Network and Unix server with required services for Windows clients in some offices and an internet cafe.
Programming course assistant at University of Helsinki, 1996 - 1997:
Guided students through their first own application designs and implementations.

Education

  • Undergraduate of Kallion Lukio, 1989, specialized in theater lighting and sound.
  • Four years of Computer Science at University of Helsinki, 1993-1997. I felt I learned more at work.
  • Self-educated computer programming and software design since 1982.

Courses

  • XML/XSLT; AJAX; Oracle PL/SQL; Configuration Management; ASL; Project Management.

Certificates

  • Sun Certified Java Programmer; Certified Scrum Master.

Read and Enjoyed Lately

  • Clean Code by Robert C. Martin
  • Working Effectively With Legacy Code by Michael Feathers
  • Agile Project Management with Scrum by Ken Schwaber
  • Extreme Programming Pocket Guide by chromatic
  • The Pragmatic Programmer by Andrew Hunt and David Thomas
  • Design Patterns by Group of Four

(Just Enough Requirements Management, Maven, Hibernate and other less enjoyed books seen on same shelf.)

Obligatory Acronym Listing

I don't consider what I've already mastered as essential to the success of any endeavour I participate in. I think it's crucial that I can understand the situation and goals well and swiftly acquire the skills and tools required for the best solution. So I won't bother you with an exaggerated, exhausting, machine-readable listing of minutia. I hope to find my position among people who think likewise.

  • I know UML coarsely, mostly using only the class and component diagrams myself, improvising visualization of systems under discussion or documentation. I think activity diagrams were called (finite) state machine diagrams when I learned to draw them in school. I can grasp the rest of it on the fly.
  • I learned Basics and machine code for 6502 and 80x86 in the 1980s. I self-studied and wrote a lot of hobby code in C/C++ 1990-1995. A lot of my intuition about machine and compiler workings is based on these.
  • I have years of excellent work experience with at least Perl (1997-), Java (1998-), Javascript (1998-), Python (2003-), C++ (2007), C (2002), C# (2007), PL/SQL (1998-), shell scripts (1997-), PHP (2005-), Lingo (1996-) and Visual Basic (1997). Have another OOP or procedural language you'd like to try me on? Give me two weeks.
  • I have solid developer-level understanding of J2SE/JSE and understand and have worked with the basics of J2EE/JEE. I used to avoid them as clumsy, but accept the fact that nowadays a large part of software world best communicates through them. Learning all about them, too, is a goal and would be routine for me.
  • I understand and work happily with C++ templates (including STL), macros and multiple inheritance as well as frameworks based on those.
  • I find scripting languages with visible internals such as Perl and Python the most efficient to work with. Dynamic languages taught me richer object orientation than what is possible with what I call statical languages, ones where it's not trivial to, say, generate new classes on demand.
  • I think I originally fell in love with the beauty of set theory at first class of basic school. ER diagrams and SQL feel quite natural to me. PL/SQL isn't that great a procedural language, but works for where mere SQL fails to suffice. Yes, I master them. However I think they mix very poorly in pure object domains. Instead of ORM frameworks (be it JPA like Hibernate (2009) or JDO like DataNucleus (2010)) with all the tragedies they bring over time one should seek pure object persistence whenever that is the mandated paradigm.
  • I have written enough of XML and XSLT to find it eye-straining.
  • I am not a user interface specialist per se, but have done quite some GUI design with XHTML, CSS, AJAX and WML as well as wxWidgets.
  • In many teams I've found myself taking care of version, build and configuration management as well as deployment planning as the most experienced member in those areas.
  • Requirements specification I do best with user stories or use cases tightly together with customers.
  • I like to actually calculate resource consumption and limits of the systems I develop, and verify my calculations with tests - whenever we have the time for it.
  • I plan and build solid sets of automated acceptance and unit tests that then also serve as a safeguard against regression. Nowadays I find them mandatory for software quality assurance. I've noticed lack of imagination in my exploratory testing; that's something to improve.
  • I work best on POSIX UNIX, Linux, OS X or Solaris; can do and administrate Windows; have found VMWare, Parallels and Xen useful. I can remember VMS, Prolog and LISP.
  • I define architecture and design on demand only. SOA is fine but best with REST, as WSDL stands for extra work.
  • I do possess very concrete understanding of data structures, algorithms, patterns as well as machinery underneath it all, analysis and the scientific method.
  • Having learned different (if repeating) paradigms over four decades, I sometimes lack proper terminology in my expression. I realize this limits the efficiency of my communication and intend to improve on that.

Family and Hobbies

I live happily at Malmi, Helsinki with my wife, dog, car, 42" TV, two sons and soon a third child. I was active in student and citizen organizations as well as Scandinavian live action role playing scene in 1990s. Nowadays I may occasionally accept responsibilities in professional or neighbourhood organizations, but mostly just play guitar in, compose and write lyrics for a rock band and read nerdy literature, both professional and fictional. I enjoy playing with my kids, digital entertainment, philosophical discussions, excellent company and most any decent vegetarian food.

Further Information