Address
Mikael Lyngvig
Lillegade 2A, 1. tv.
DK-8500 Grenaa
Denmark
+45 31 41 82 19
mikael@lyngvig.orgObjective
A part-time or full-time job as a compiler engineer or build master at your company.
Education
1991, Grenaa Gymnasium, high school, 13 (A+) in Computer Science.
1993, University of Copenhagen, Computer Science, two years, interrupted by job offer in the USA.
I basically accepted the job in the USA, and thereby quit the university, because I was disappointed by the lack of education relevant to the commercial career I planned to pursue. Things such as the IBM PC, coding standards, and profiling tools where hardly mentioned in the curriculum. I already had some business experience prior to attending university and therefore knew what I wanted. So I chose to become an autodidact software engineer and have continuously picked my jobs so that I learned more all the time.
Experience
01/91-10/91, Circuit Design A/S, Karlslunde, Denmark
Wrote a FAT12/FAT16 disk I/O driver:
- The module was 30 to 100 percent faster than MS-DOS and delivered constant speed.
- Accomplished the then extreme goal of delivering 360 KB/sec to the hard disk.
- Tested the module very thoroughly so as to make it ready for production use.
| Platforms: | IBM PC with MS-DOS. |
| Languages: | Borland Turbo Pascal for DOS and 8086 assembly. |
09/92-01/93, Konsulentfirmaet Boeje Larsen A/S, Copenhagen, Denmark
Wrote the utility “Swap” for the DOS program SprogMagisteren (SM):
- Wrote a keyboard interrupt handler that managed the virtual keystrokes sent to SM and WordPerfect for DOS.
- Wrote a screen buffer analyzer that made decisions on what keystrokes to send to the apps.
| Platforms: | IBM PC with MS-DOS. |
| Languages: | Borland Turbo C++ and 8086 assembly. |
10/92-05/93, Lizzi’s Exquisite Software Designs, Copenhagen, Denmark
Wrote various low-level modules and an automation tool to automate the use of a program:
- Wrote an exception handling facility (
setjmp()/longjmp()-like). - Wrote a backup program for in-house use.
- Wrote a macro facility for a program where the source was no longer available; the macro facility fed virtual keystrokes into the application's keyboard buffer while analyzing the screen buffer to determine what to do.
- Wrote various very fast assembly support routines for use in the main application.
| Platforms: | IBM PC with Windows 3.x. |
| Languages: | Turbo Pascal for Windows v3.x and 8086 assembly. |
11/93-05/95, Systems & Software, Inc. (SSI), Irvine, California, USA
Was the only developer on the company’s line of absolute linkers:
- Started out by optimizing the main linker’s execution time by some 200 percent.
- Fixed hundreds of bugs in the main linker (“Link&Locate 386”).
- Assisted the Test department in working out test cases for the linkers.
- Wrote 80386+ protected mode reset initialization code for use in embedded systems.
- Wrote a run-time library, including heap manager, for use with 4 compilers.
- Wrote a COFF loader module for use in the company’s Windows debugger.
- Wrote a Borland Debug Info to CodeView converter (it was reversible!).
- Wrote a C++ to C debug info converter because the debugger did not support C++ constructs.
| Platforms: | IBM PC with Windows NT, Sun SPARC with SunOS. |
| Languages: | ANSI C, C++, 80386+ protected mode assembly, 4NT. |
06/95-10/95, Decision Consultants, Inc., Dallas, Texas, USA
Worked as a firefighter in SABRE Decision Technologies (the software department of American Airlines):
- Wrote a network abstraction layer that supported Netware, NetBIOS, and TCP/IP.
- Proposed a number of methods for increasing performance of the main application.
- Held seminars on better coding style in corporation with management.
| Platforms: | IBM PC with Windows v3.x and OS/2, Sun SPARC with SunOS. |
| Languages: | C++ and 80286 assembly. |
11/95-03/96, Systems & Software, Inc., Irvine, California, USA
Resumed my former position at SSI (SABRE was too big, too formal, and too heavy for me):
- Finished up some documentation and prepared for the move to Denmark.
| Platforms: | IBM PC with Windows NT. |
| Languages: | C, C++, 80386 protected mode assembly. |
04/96-06/97, Toolwood v/ Mikael Lyngvig, Hoesterkoeb, Denmark
Worked as a consultant for SSI while living in Denmark:
- Wrote a very advanced debug info loader that handled a wide variety of formats.
- Assisted in creating the world's first visual (GUI) linker.
- Fixed many bugs in Link&Locate 386.
| Platforms: | IBM PC with Windows NT. |
| Languages: | C++, 80386+ protected mode assembly. |
07/97-02/98, DDC-I A/S, Lyngby, Denmark
Worked as a programmer on an Ada95 compiler specified in VDM:
- Worked briefly on an Ada83 linker written in Ada83.
- Discovered some very severe bugs in the VDM specification.
- Proposed various ways of optimizing the compiler and its implementation.
- Wrote three dumpers of the internal parse tree in the compiler.
- Wrote a C-style preprocessor for Ada.
- Helped porting the compiler system to PowerPC 603.
| Platforms: | Sun SPARC with Solaris. |
| Languages: | Ada83, Ada95, C, PowerPC 603 assembly. |
04/98-05/98, Danware Data A/S, Herlev, Denmark
Worked as a software developer on the Danware NetOp product:
- Optimized the application to run 75 percent (average) to 93 percent (maximum) faster by implementing a transfer optimization suggested by one of the owners of the company.
- Wrote an advanced remote control debug application that ran a given application on two systems and compared the displays generated in both ends so as to reveal errors and incorrect transfers.
| Platforms: | IBM PC with Windows NT. |
| Languages: | C++. |
08/98-09/99, Navision Software A/S, Vedbaek, Denmark
Worked as the only Build Master in the company:
- Evaluated a variety of scripting languages and selected Python as the tool language.
- Redid most of the former CMD.EXE Batch-based build system in Python.
- Enhanced the build system to send out email notifications and to make a report web site.
- Automated backup of the build system fully so that I became virtually redundant.
- Documented my changes and the system I had made prior to quitting the job.
| Platforms: | IBM PC with Windows NT, Alpha with Windows NT, AIX, HP-UX, SINIX. |
| Languages: | Python, CMD.EXE batch, C. |
10/99-05/02, Toolwood v/ Mikael Lyngvig, Denmark
Worked as a consultant for various companies while I ran my own company (made plenty of money!):
- Made an embedded Linux distribution from scratch (from a stock RedHat v6.x).
- Made parts of a gas station pump software.
- Made parts of the specification for a mail system for a set-top box.
- Designed and implemented parts of a portable print server.
| Platforms: | IBM PC with Windows XP+, IBM PC with Linux. |
| Languages: | C++, Python. |
09/02-present, none, Denmark
Retired, but I have been working on and developing all sorts of projects during this time:
- NutBox for .NET/Mono: A set of command-line utilities for the .NET and Mono platforms.
- www.braceless.org: The Braceless Programming Language, A new programming language still very much in the works.
- “C with Exceptions”: A proposal for very fast exceptions in C (and any other imperative language).
| Platforms: | IBM PC with Windows, IBM PC with Linux. |
| Languages: | Python, C++, C#, Intel EM64T/AMD64 assembly. |
Code Samples
If you need code samples, you can download any of these:
- The "C with Exceptions" source of the abandoned "cwe" project at www.Sourceforge.net.
- The C# source of the Braceless project at http://www.braceless.org/doc/html/index.html.
- The C# source of the Nutbox project at www.nutbox.org.
Professionally
I probably shine the most when working as a software handyman or build master; I can code, I can help out, I can test, I can lots of different things. I am sort of a very skilled jack of all trades rather than an expert on any particular trade. I love having a varied business day where I leave for home with a genuine feeling of having accomplished something worthwhile.
I have programmed in some fourteen to fifteen programming languages on five to ten platforms, and have spent the majority of my time on development tools. My absolute favorite languages are C# and Python, but I have coded in C and C++ for some 20 years. The reason C# outranks Python is twofold: C# is compiled and Python breaks when you try to refactor large code bases (5000+ lines): I’ve tried it a few times and every time I ended up with a dead project that was beyond repair.
I am more than anything else autodidact: Give me a task and some time, and I’ll figure out how to do it in a wonderful way that takes both maintainability and performance into consideration.
I have never been fired or asked to leave the premises. As a rule of thumb, my employers asked me to stay when I inevitably left for greener pastures (I was young and all pastures seemed greener to me back then, this is the reason why I have worked in so many companies). Nowadays, I am looking for a long time/life long career at the same company because I have finally figured out that this is how you get the really exciting tasks.
Privately
I am a quiet person who is normally very good at what he does. I prefer to express myself in writing as this leads to a permanent result that can be used and reused endlessly. Unlike the majority of software developers, I actually like documenting what I do and why.