Thomas Hallgren CV
Presentation
During my 35 years of software development I have implemented microservices, messaging systems,
REST apis, and routers. I've written parsers, evaluators, and even participated in development of
virtual machines and operating systems.
The last three years have been mainly devoted to programming in Go. Prior to that I have
17 years of Java, +10 years of C/C++, and several years of Ruby experience.
I'm well acquainted with with Cloud Computing services such as AWS (EC2, S3, Beanstalk) and container
technology (Docker)
I have learned to take advantage of the benefits gained by good architecture, code reuse,
peer reviews, documentation, and quality awareness. I posses the knowledge needed to construct
and sustain a development process that will live on in an ever-changing environment.
I have participated in two start-ups. The first was situated in New York where me and
my family spent three years. The second, where I was one of the founders, was a virtual
company that eventually got acquired in 2013 by Puppet Inc., a Portland based company
focused on automating software delivery/operation.
Both start-ups focused on building model-driven tooling based on Java and JEE which
aligned well with my previous roles during the 90's, when I was an architect and designer
of similar multi-layer application frameworks written in C/C++ at Abalon AB
I was employed by BEA Systems (now part of Oracle) 2004-2006 (between the two start-ups),
working with client tools in Java and the JRockit JVM
I was born in 1960 and raised in Skåne (southern part of Sweden). I moved to
Stockholm in 1987 and have remained there since, except for the 3 years in New York.
I am married to a girl from Hälsingland. Together, we have 3 wonderful boys.
Experience
|
April 2020-present |
Tada AB |
Täby, Sweden |
- Created MQTT-NATS bridge, which enables MQTT devices to publish and subscribe to the NATS communication system
- Continued support on Hiera, the Go version of Puppet's data lookup system
|
May 2013-March-2020 |
Puppet Inc. |
Portland, Oregon |
- Main developer of Lyra, an Open Source Workflow Engine for Cloud Native Infrastructure (Go/TypeScript)
- Built a Terraform Bridge for the Lyra Workflow Engine
- Created Dgo, a framwork for dynamic types in Go
- Ported the Puppet parser/evaluator from Ruby to Go
- Ported the Puppet parser/evaluator from Ruby to Java
- Wrote Go implementation of Puppet Hiera Lookup
- Developing core parts of the Puppet language compiler
- Implemented the Puppet Hiera 5 configuration data lookup system
- Implemented a NATS service for Puppet Bolt Inventory
- Added RBAC security to the Puppet Forge repository
|
October 2006-May 2013 |
Cloudsmith Inc. |
Täby, Sweden |
- Chief Architect and Founder of Cloudsmith Inc.
- Project lead and chief architect for Buckminster, an Eclipse tools project.
- Architect and supervisor/implementer for Cloudsmith.com service, an AWS based web site/service written in Java, based on Hazelcast (Kafka-like), and PostgreSQL
- Committer to the Open Source projects
Buckminster,
and Equinox Provisioning project (P2
- Contributor to several Eclipse projects including the Eclipse Communication Framerwork (ECF) and the )
- Member of the Eclipse Architecture Council
|
February 2004-September 2006 |
BEA Systems Inc |
Stockholm Sweden |
- Development of Oracle's Java Virtual Machine, JRockit, mainly focusing on
client Java tools and Eclipse plugins
- Architect and Developer of the Eclipse Technology Project Buckminster
- Continued management of PL/Java
|
December 2003-January 2004 |
Tada AB |
Stockholm Sweden |
- Founded Tada AB
- Working as a subcontractor for Veratech in Stockholm helping with
Veratech's Open Source offering
- Participate in the Eclipse Web Tools Project
- Deeply involved in launching the Frameworx Open Source Project
- Created PL/Java, a language mapping for Java Stored Procedures, Functions and
Triggers for the PostgreSQL backend, project
- Designed and implementation fo the Tada.se website.
|
June 2000-November 2003 |
The Frameworx Company |
New York, USA |
- Architect and supervisor/implementer of a major part of the extensive J2EE
based meta-data driven framework that became the company's main product.
- Designed parts of an Object Publishing facility that enabled transparent
publishing of objects both as EJBs and Web Services.
- Single-handedly designed and built a comprehensive OQL to SQL translator
that exposes OQL as a JDBC driver.
- Principal architect, designer, and supervisor of a OO-RDB mapping facility
that is configurable using an UML-model.
- Helped write an advanced system to ease up the build/assemble/deploy cycle
of components under CM control.
- Wrote a UI framework for advanced SAX event driven XSL transformations
that replaced Cocoon.
- Deeply involved in merging the frameworks product suite with the Eclipse
environment.
- Advocate for making the company products available as Open Source.
- Acted as mentor and advisor in a significant part of the company's
projects.
|
Jan 1999-June 2000 |
Industri-Matematik AB |
Stockholm, Sweden |
- Made recommendations on architectural strategies to the board of
directors.
- Researched Enterprise Java Beans (EJB)-server technology. The objective
was to use EJB for next generation of the framework
- Researched Messaged Oriented Middleware (MOM). The framework had high
demands on scalability and both synchronous and asynchronous Inter Process
Communication.
- Designed an XML based messaging system based on Java Messaging Service
(JMS).
- Designed a transaction coordination package that could be used in place of
a commercial TM-system making it possible to deploy the same code-base on both
small and very large installations.
- I was the Architect, designer and supervisor for the implementation of a
Multithreaded, Component Based, and Object Oriented Framework that now serves
as the foundation for the CRM-application developed within IM.
- Architect and implementer of a SOAP-like protocol that includes
distributed garbage collection and the ability to pass object by reference.
- Designed data-replication capabilities in the application framework using
Universally Unique Identifiers, Universal Coordinated Timestamps and a
globally accessible Counter service.
- Architect and designed a Load Balancer / Dispatcher service for HTTP
requests.
|
June 1996-Dec 1998 |
Astea International AB |
Stockholm, Sweden |
- Senior member of a research project, tasked with defining an ideal platform
for an applications architecture and application development tools focusing on graphical
declarative software construction using an assembly paradigm.
- Designed and implemented a component model similar to the (at the time
non-existing) Enterprise Java Beans architecture.
- Worked as the architect and implementor of a comprehensive C++ framework
based on OMG standards for a multi-tier architecture.
- Designed and implemented a lightweight OMG 2.0 Object Request Broker
(ORB).
|
Jan 1996-June 1996 |
Abalon AB |
Stockholm, Sweden |
- Responsible for the development of the Abalon Application Software
framework.
- Managed the Object Oriented analysis and design of the framework.
- Built prototypes and implemented designs for the next generation of the
Application framework using Smalltalk.
- Designed and implemented a bi-directional COM to CORBA bridge.
- Designed and implemented a CORBA 2.0 compliant interface repository.
- Evaluated different Configuration Management Systems. Selected and
implemented ClearCase.
- Moved our entire development environment from Sun Solaris to Microsoft
Windows NT.
|
June 1993-Jan 1996 |
Abalon AB |
Stockholm, Sweden |
- Managed a six people strong framework development team.
- Performed salary and performance reviews.
- Recruited new engineers.
- Built and reported the R&D budget for this team.
- Designed framework software, overall architecture as well as components.
- Mentored and performed knowledge transfer activities with the team.
- Managed a project that re-designed our framework as a multi-tasking
operating system to be run embedded on MC68K board computers.
- Implemented, and enforced the use of, a Configuration Control System based
on SCCS.
- Designed and implemented a bug tracking system (SPQR: System Problem and
Quality Reporting).
- Designed and implemented a shared memory version of the Virtual Machine.
This version was far more efficient in both inter process communication and
memory utilization.
|
Aug 1988-June 1993 |
Abalon AB |
Stockholm, Sweden |
- Designed and implemented an object oriented framework and application
development environment in C. The framework had abstractions for persistency
and user interface and was largely meta data driven.
- Wrote a portable C++ front end for C compatible to AT&T Cfront, enabling
future framework development to be implemented using C++.
- Designed and wrote training material for C, C++, Informix 4GL and SQL
- Trainer in C, C++, Informix 4GL and SQL, both internally and externally.
External customers included NCR, Swedish Defense, Swedish Nuclear
Inspectorate, and Data General.
- Translated the Informix product suite to Swedish.
- Continued development of a windowing system for character terminals
(C-Screen). The new product was renamed CB-term and was acquired by Informix
Inc. for use in their development tools.
- Integrated CB-term into Informix NewEra at Informix headquarters in Menlo
Park CA.
- Developed a Meta Data Driven Object to vendor independent RDBMS mapping,
still in use for Abalon's core products. Designed and implemented back ends
for Informix, Oracle and DB2.
- Analyzed the framework garbage collector and increased performance by 100%
by making the scavenging part incremental.
- Wrote a sampling profiler for the Xip Language Virtual Machine.
Presentation of statistics using graphics.
- Analyzed the VM using gprof and the sampling profiler. Tuned the VM by
removing optimizing bottleneck code and implementing method call optimization.
- Wrote compiler for the interpretative Xip language.
- Designed and implemented a special purpose low bandwidth communication
protocol between our thin user interface client and the server.
- Implemented a comprehensive Smalltalk like class library in C++ and the
Xip language. The class library contains most of the classes found in
Smalltalk.
|
Jan 1988-May 1988 |
Carl Lamm System AB |
Stockholm, Sweden |
- Product specialist for Unix based systems from Pyramid and Zilog
- Assisted Zilog Inc. (Menlo Park, CA) in completing their Intelligent
Communications Board offering
- Designed advanced systems configurations and communications solutions
based on Pyramid computers.
- Also designed the communications offering for both synchronous and
asynchronous communication that Carl Lamm System offered its customers.
|
Sept 1987-Dec 1987 |
Adaxus HB |
Malmö, Sweden |
- ADAXUS (Advanced Development and Adaptations for Xenix and Unix Systems)
HB was my own company.
- Developed a lottery system in C for Skånes Art Association.
- Developed C-Screen, a fully event driven window system for character based
terminals. A predecessor to CB-term (see Abalon above).
- Developed a financial system for Transportvaruhuset AB in Malmö using
C-Screen and Informix SQL. This system was developed in C, using Object
Oriented design patterns.
|
April 1986-Sept 1987 |
Carl Lamm System AB |
Malmö, Sweden |
- Systems programming in Unix on pyramid RISC systems and Zilog super
microcomputers.
- Implemented SNA-3270 communication protocol on a Zilog UNIX system.
- Converted and re-wrote systems written in Basic into C.
- Implemented laboratory administration systems in Informix RDBMS.
- Installed and configured Uniplex office suite in Unix.
- Helped Zilog Inc. engineers fix severe problems in their hardware and
software for synchronous communications protocol (SNA). This consisted of
writing low-level code for Zilog intelligent communication boards.
- Contracted as a software developer to a software company, and developed
financial systems in C.
|
Jan 1985-April 1986 |
Kommundata AB |
Lund, Sweden |
- Developed administrative systems for managed healthcare in COBOL for
Tandem non-stop computers.
- Worked with Unix and C using Borland Turbo-C compiler and wrote utility
programs.
|
Jan 1984-Jan 1985 |
Zetner AB |
Malmö, Sweden |
- Maintained and serviced Wordplex word processing equipment in southern
Sweden.
- Worked with CP/M 2 and dBase II.
- Designed and implemented a CP/M 3 compliant kernel on the WordPlex
word-processor machine using Z80-assembler.
- Transferred dBase II databases in CP/M to dBase III in MS/DOS
Knowledge
Programming languages
I fully master C, C++, Java, Go, and Ruby and have worked with several
different assembler variants. I'm done scripting using Perl, PHP, Python, VB,
and JavaScript along with various shell variants (bash, csh, tcsh) and Windows bat
files. I am very experienced in using tools for compiler/parser technology, like
YACC/Bison, Java CC, and Lex/Flex. I've written several recursive descent parsers.
Well acquainted with markup languages such as HTML, XML, and miscellaneous
helpful "languages" to dynamically construct markup (JSP, XSL transformations,
Jakarta Velocity, PHP, and Eclipse JET).
Development environments
I fond of the Jetbrains product suite and also well acquainted with Eclipse,
Netbeans, and Visual Studio. I master build systems like Maven, Ant, and CMake.
Some experience with Autotools. I've been using Git and GitHub for the past ten
years and have earlier experience with Mercurial, Subversion, ClearCase, Perforce,
and CVS.
Cloud Providers
Mainly Amazon where I've worked with EC2 and surrounding technologies such
as Elastic Beanstalk and RDB.
Architectures
I have worked extensively with Java and related technologies and possess a
deep knowledge of JNI, JMX, JMS, EJB, JCA, and JDBC. I have long experience of
different types of inter-process communication such as CORBA, Microsoft COM and
Java RMI. I've written several RESTful solutions based on JSON and JQuery and
I'm familiar P2P built on SOAP and WSDL.
SSH/SCP has been part of several back-end solutions.
Application servers
More than 3 years experience with JBoss and Websphere. Some experience from
Weblogic and JOnAS. Experienced with Tomcat and Apache.
User interfaces
I have developed for both terminal based and graphical user interfaces using
curses, Swing, AWT, SWT, and Win32.
Databases
Extensive experience in SQL based databases. Especially Oracle, DB2,
PostgreSQL, and Sybase. Some experience with MySQL and MS-SQL Server.
Environments
The main operating systems have been MacOS, Linux, and Windows and a variety
of unix flavors including HPUX, Solaris, and AIX. Early in my career I developed
software for some minicomputer and mainframe operating environments. I have also
designed and implemented virtual machines, real-time kernels, and hardware drivers
for embedded systems.
Education
1967-1976 |
Korsbackaskolan |
Kävlinge, Sweden |
9 year grammar school and Junior High School
1977-1978 |
AMU |
Furulund, Sweden |
1 year Vocational College
1979-1980 |
Pauliskolan |
Malmö, Sweden |
1 year of two year college program
1981 |
Statens Skola för vuxna |
Norrköping, Sweden |
Micro processor technology course
1981-1982 |
F10 |
Ängelholm, Sweden |
Military Service (mandatory in Sweden). Airforce K-9 Guards
1982-1983 |
Scandinavian School |
Stockholm, Sweden |
Correspondence course, Computer Technology, Computer
Management, Programming
1983-1984 |
Sperry-Univac |
Stockholm, Sweden |
Mapper and CTS training
1984-1985 |
Zetner |
Stockholm, Sweden |
Hardware and software training, Z80 assembler, Wordplex,
CP/M, dBase III
1985-1986 |
LärData |
Malmö, Sweden |
Training in Unix, C programming, MS-DOS
1986-1987 |
Carl Lamm System |
Stockholm, Sweden |
Training in Unix, C programming, SQL, Informix 4GL
1988 |
Pyramid Technology Inc. |
Menlo Park, CA |
Training in OSx (Unix) Administration
1996 |
ClearCase |
Stockholm, Sweden |
Training in ClearCase System Administration
|