Technical skills
I have highlighted some specific skills on the top of the page. Scroll down to see the full list of technical skills.
JavaScript/TypeScript
JavaScript can be a very powerful language when you understand it, and it's difficult avoiding having to deal with JavaScript as a developer today; as well as TypeScript, a type system build on top of JavaScript. Not just for web-application development; many modern applications are based on Electron[1], also requiring JavaScript knowledge
But JavaScript is very different from other languages like C# or Java, although some things look deceptively similar. E.g. The class keyword makes object-oriented programmin look very similar to those two languages; but in JavaScript, classes really doesn't exist. The keyword is merely syntactic sugar on top of the underlying mechanisms used before ES6. The object-oriented execution model implementing polymorphism through inheritence is simulated by the prototype chain.
With more than 15 years of experience with JavaScript as well as C# I both understand how JavaScript works; but also how it's different from languages like C# and Java; both in terms of code, and code structure.
This places me in a unique position to help already experienced teams that are starting a journey of web-application development.
TDD
Primarily, I am a practitioner of test-driven development. The process does not only generate more maintainable code; it is also a process that makes me more efficient, due to the reduced amount of time spent debugging
The benefit of TDD is only experienced when you write tests coupled to behaviour rather than implementation. Unfortunately, too many write "unit tests" which are so coupled to implementation that you cannot refactor without breaking the tests
If you want to learn TDD to improve your efficiency, I can help, e.g. through remote one-on-one training sessions
Powerful programming languages
When I talk about a language being powerful, I do not talk about execution speed, but the ability for the developer has to quickly and succinctly express intent in executable code.
Very few programs actually need the execution speed of C++ or Rust; so for most projects, the productivity penalty associated with these languages would make them a poor choice. Video games, or at least the graphics rendering engine, and training the humongous neural networks powering moden generative AI fall into this category.
I personally prefer to choose languages that provide a sensible combination of productivity and the safety relevant for the project (or the ability to maintin the code over a long period of time).
In Paul Graham's essay "Beating the Averages", he describes how they were able to beat the competition because they had written their system using the most powerful programming language, LISP. And interestingly, the risk assessment of a new competitor on the market was primarily based on their technical job listings:
During the years we worked on Viaweb I read a lot of job descriptions. A new competitor seemed to emerge out of the woodwork every month or so. The first thing I would do, after checking to see if they had a live online demo, was look at their job listings. After a couple years of this I could tell which companies to worry about and which not to. The more of an IT flavor the job descriptions had, the less dangerous the company was. The safest kind were the ones that wanted Oracle experience. You never had to worry about those. You were also safe if they said they wanted C++ or Java developers. If they wanted Perl or Python programmers, that would be a bit frightening-- that's starting to sound like a company where the technical side, at least, is run by real hackers. If I had ever seen a job posting looking for Lisp hackers, I would have been really worried.
Programming languages
- JavaScript
- TypeScript
- node.js
- React
- OCaml
- next.js
- tailwindcss
- Go
- C#
- Java
- C++
- Delphi
- Unix scripting
- Python
- Ruby
- Ruby on Rails
Data and integration services
- PostgreSQL
- PostGIS (postgres geographic data)
- MS SqlServer
- MySql
- MariaDB
- RabbitMQ
- CouchDB
- MongoDB
- Cosmos DB
What I learned from Cosmos DB is, don't use it. Don't call me if you've chosen Cosmos DB. You call me if you want to learn to be the most efficient you can in developing software; and if that's your goal, you don't choose Cosmos DB
1. Eksempler på kendte applikationer bygget på Electron
- Visual Studio Code
- Microsoft Teams
- Slack
- Obsidian
- Github Atom
- Discord
- Signal
In fact, Electron was originally build for Atom. This is why you sometimes hear that VS code is based on Atom. It's because it's based on Electron, but because the editor itself is based on Atom