Miscellaneous
Use the green menu above for information about some of the projects that I have led over the years. Below is a short summary of me and my life.
+ About me
I was born in 1973 in Copenhagen. My parents were children of their time, and I remember my first years in one of the strongholds of Danish hippie culture, the district of Brumleby. In the seventies, these apartments had no bathrooms and only shared toilets in the yard. But the area was completely car-free, so we children could run around and play as we wanted (and so could the adults, by all means).
Just before I was to start school, we moved to the countryside in a small remote municipality in Jutland. I grew up surrounded by farmers and got to see the daily chores being dictated by the seasons. When it was harvest time, everyone got up extra early and worked until late in the evening. During the winter there was more free time. We drove tractors in the fallow fields and built huts in the forest. We played in barns, machine halls and stables, and when it was snowing, we went sledding on the many slopes that are common in this part of the country.
I quickly learned to read, and the imaginative world of books captured much of my attention throughout the rest of my childhood. At the same time, I loved singing, and I loved homework. However, my relationship with primary school as an institution was ambivalent. On the one hand I wanted to learn as much as I could, on the other hand I was an unprincipled prankster who loved to provoke the teachers and cause all kinds of problems. I thought the teaching pace was too low, and everyday life at school was usually boring — so I spiced it up with various mischiefs. I had little respect for authorities (and still have, for better or worse).
During my early teen years, I was basically ready to run away. I remember that I wanted to get out and see the world, experience the world. But my young age prevented me from doing this. Instead, I fantasized about my future, and I had several fictional life stories to choose from when everyday life became too grey.
As soon as I turned 18, I dropped out of high school, moved to the city Aarhus, and started looking for exciting people. Within a couple of years, I realized that there were plenty of such individuals both at the university and in the music industry.
A human being consists of several (partially overlapping) parts. Below is a brief presentation of what I consider to be my most important parts.
+ The math part
I have always loved numbers. By the age of three, I had learned to count to 1000, and by the age of eight, I solved my first quadratic equation. Then it stopped because of the creativity-killing effect elementary school has on many kids, and it wasn't until high school that I found my way back to mathematics. I eventually realized that I wanted to be a mathematician.
At Aarhus University, I studied basic mathematical analysis and linear algebra. At the same time, I became interested in number theory, and in my spare time, I delved into the old texts (Euler, Gauss, Lagrange, and others). Eventually, I encountered Hilbert's problems, Russell's paradox, Gödel's incompleteness theorems, and the Turing machine. It became clear to me that axiomatic systems were my main area of interest. I still love the days when I get the chance to step away from everything (except the espresso machine) and geek out on mathematical logic and metamathematics. I've also come up with a few little things over the years (see the OEIS sequences A363657, A363658, A224914, and the Mixed texts page), and my interest in math contributed to the creation of Inverted Dice.
At the University of Gothenburg, I studied logic, abstract algebra, and more analysis, but eventually the computer science questions took over, and I changed my direction. A few semesters later, the music took over for five years — and then I started OffCircle, and suddenly another fifteen years had passed.
Mathematics remains an important part of my life, and I still give public lectures on mathematics and logic. In addition, I give workshops in programming for math teachers where the focus is on problem solving and the use of automation as a mathematical tool.
Brute force is a somewhat disreputable problem-solving method in mathematics. But the facts remain, many problems can be solved quickly with a well-optimized script instead of many hours of thinking. If the programming is combined with a careful analysis of the mathematical situation, brute force can be an elegant solution, and I often manage to solve problems in this unconventional way. Sometimes pragmatism wins out over theory, at least when it comes to short-term speed and cost-effectiveness.
I plan to eventually get involved in the debate regarding the education system's relationship to basic mathematical skills. We need good mathematicians in the future. But teaching things that are outright wrong and prioritizing so-called digital learning aids over old-fashioned paper-and-pencil deduction counteract this goal. Mathematics is an exact science that requires precise definitions, concentration, and patience.
+ The programming part
As early as 1985, I got my first computer. It was a Commodore 64, a very popular model at the time. It had a built-in interpreter for the programming language BASIC. A couple of years later, I gained access to a machine with IBM's operating system PC-DOS, a kind of predecessor to today's Windows computers. I learned the languages Pascal, COBOL and C (I haven't used Pascal since I was a teenager).
During this period, I also received some of my first "jobs" as a programmer, including a poetry program for printing autogenerated poems that were constructed based on an algorithm for which Steen Krarup Jensen (my father) was the inventor. In the fall of 1989, this poetry generator was featured in a large art exhibition in Copenhagen and received some attention in the media of the time.
Another example of my early "projects" was a small script to calculate fake social security numbers. Technically, it was illegal to use the script, but hopefully the statute of limitations has expired for this mischief, so here's the story:
At the time, I lived in Aarhus (Denmark), and to use public transportation, a valid ticket was required. This posed as a challenge for financially struggling students, including myself, who had to find ways to overcome the expensive fares. It was alright to get on the bus without a ticket, but ticket checks were frequent, and the inspectors carried a handheld device that allowed them to verify the authenticity of a social security number. However, since this was before the existence of a mobile data network, the inspectors had no way to connect to a personal registry on the spot.
With my script, which could run on most programmable calculators of the time, it was easy to generate a new social security number, which was then memorized, before the bus trip. Many used their regular birthdate and only replaced the last four control digits with the new "valid" digits. When inspectors showed up, all the travellers had to do was to tell them that they did not have any identification and then provide an arbitrary name along with the memorized "social security number". Only after the inspectors' shift did they discover that the name and social security number did not match, so no penalty fee could be sent to the cheater.
For a while, so many people used this method that it was mentioned in one of the local newspapers. Eventually, the inspectors changed their strategy, and my contribution to society, which I, with youthful enthusiasm, called Free Public Transportation for Students and Others in Need, stopped working.
In the early 1990s, I developed a small forgotten strategy game. I was also commissioned to build drivers for various printers and other external devices that often suffered from compatibility issues at the time. It didn't pay much, but I learned a lot from it.
Then I took a few years off from all modern technology, and in the spring of 1994, I settled in a cabin without electricity. I installed a small local power plant consisting of a truck battery and a gasoline-powered generator for charging, backup, and various vacuum and construction projects. With gas-powered appliances in the kitchen (and a 12V battery for lights, TV, and radio), daily life worked reasonably well. During this period, I focused on music and poetry, as well as the mathematics courses I took at Aarhus University, and at the same time, I reflected a lot on concepts such as informatics and cybernetics. I realized that I needed a lot more theory before I could even choose what I wanted to do.
In the fall of 1996, I changed university and moved to Gothenburg (Sweden). That's when I completely left behind the self-taught methods and pragmatic approaches that had previously characterized my work. Instead, I became interested in computer science problems, and in the summer of 1998, I started theoretical studies in numerical methods, algorithms, and other topics relevant to systematization. At the same time, I studied physics and more mathematics. During this period, I primarily programmed in C, C++, Fortran, MATLAB, and Mathematica, but Visual Basic and Prolog also appeared in the workflow sometimes.
I never completed any program at the university. Instead, I took independent courses and chose my direction solely based on interest, more or less randomly and without a goal. At the same time, I started working part-time at a company with technical development as a business area. It gave me good experience in translating theory into practice. Among other things, I was involved in the construction of the prototype for a medical device for detecting skin cancer.
Just before the spring term of 2001, one of my teachers completed his dissertation and left the school for a new job. As a result, I was assigned the responsibility of teaching two evening courses on hardware programming in the field of physical measurement technology. This was my very first teaching assignment ever, and I remember spending several intense weeks at Chalmers' library digging through the entire C99 standard.
After one semester, this activity expanded, and I was then in charge of four courses. From 2001 to 2003, I gave a total of 175 lectures and an equal number of laboratory sessions in which we built systems for measurement and control, with a focus on laboratory equipment. We used LabWindows/CVI (a development environment similar to LabVIEW but using the C language) along with an add-on to Visual Studio called Measurement Studio (so that C++ could be used with the GUI from LabWindows/CVI).
In the fall of 2003, I started teaching C++ half a day a week at Gothenburg Technical College, a job I still have.
Around 2004, I partially switched tracks and started focusing more on web development. I learned JavaScript (and of course HTML and CSS) and worked for a while as a freelance client-side developer (now commonly referred to as frontend developer).
In the fall of 2006, I started OffCircle, which I ran for 15 years. During these years, I was involved in about fifty programming projects. In addition to all the previously mentioned languages, I gained experience with Python, Java, and C#.
An explosive spread of the WordPress framework led to the growing importance of the server-side language PHP. Nowadays, this language is one of my main skills, and over the years I have constructed and updated a large number of themes and plugins for WordPress. Further backend work has made me consider myself a full-stack web developer. I am also skilled in modelling and have experience with simulations (often using C or C++). Finally, I have been involved in the development of several mobile applications.
In the beginning of the autumn semester of 2019, the book C++ på riktigt (C++ for real) was published, in which I have collected the essence of eighteen years of teaching basic programming. A couple of times I have also held courses in Python, which resulted in the e-book En ultrakort introduktion till Python (An ultra-short introduction to Python) written in the summer of 2021.
Knowledge is one thing, accuracy is another. There are many companies offering programming, but particularly in web programming, there are also many who create things that do not work. Over the years, my specialty has been to perform a thorough review of what is malfunctioning, identify the problems, and then solve them. I have always enjoyed that kind of assignment.
+ The music part
In due time, more information will be presented here (both text and some photos). But it takes the time it takes. For now, there are some tunes and som sheet music at the Music page.
+ The text part
This section is not ready yet. Please visit the Mixed texts instead.
+ The graphical part
In due time, more information will be presented here. If you're interested, you'll find a microscopic portfolio at the Graphics page.