I started writing primitive software on my C64 when I was around 7. They were mostly “enter some text and get some response” type of programs. As interest grew so did my programs.
For a long time I created software to solve my own problems, like an alarm system consisting of switches from a joystick to keep my sister out of my room, and it took some time before I started solving other peoples problems with them.
I have added some old software here and will add information about some never stuff when I get the time.
MCom is an Windows based AMR system. Built as a server/client solution it can collect metering data from nodes using IP, MBus, SIOX, GSM/GPRS, Cell radio and more.
A multitude of development environments and languages make up all of the auxiliary systems used including Embarcadero RAD Studio, Visual Studio, Eclipse with Android SDK, with code in C++, C#, ASP.Net, TCL, Java, Embedded C among others.
dliCore was created to enable an object oriented approach to creating plugins for Osclass. Osclass is a classifieds platform very similar to WordPress in design.
When I started creating my own plugins for it I quickly found issues with the official way of building them. The plugins functions in the public scope and much more.
So I created an eco system and library for the development of my plugins that allowed me to build plugins in a predefined object oriented way with easy mapping of objects to database tables etc.
Along with it I also wrote a helper called dliHelper that helped with creation of plugin skeletons, packaging and version management of plugins etc.
KassaSys was one of my first programs written in C# sometime back in early 2000’s. It was built to run on a cash register with touch screen, scanner, money compartment and receipt printer. It included functionality to handle goods, save and fetch historical receipts, generate reports etc.
AnyBrander was a piece of software I created for a guy named James Jackson. If my memory serves me right he had acquired the ownership of a lot of e-book titles and small programs that he somehow wanted to distribute but also have them show some kind of web page or advertisement when they were opened.
I had an idea and told him that I could build a system that would let him compile exe files that would contain the program or pdf file in question. When the user ran it the compiled exe would either open a preconfigured URL or a HTML file compiled together with the exe. Then the actual exe program would start or the pdf would show up. Say for instance you had a pdf with yoga exercises and when you opened it you were presented with a page showing you the yoga center of the person who had written the book with the ability to book a class.
To keep it consistent I had a small built in web browser or a small pdf reader that was part of the compiled exe. This kept the experience and appearance consistent and also made sure that there were no requirements on the users end. If they had the single exe everything would work.
Emotions Installer started as a small request in the early 2000’s for me to help a company create a simple installer for, if I remember correctly, emoticons for windows or something like that.
It quickly grew and the installer and their ability to build, change and edit installers almost made the system its own installation package creation software.
If their requests and desires grew, their ability to send payments in time did not. But I pressed on. With time it started to dawn on me what the company’s real business model was. The company was located in India and their goal was to include and ship adware and spyware with the installations. Not only that, but I had created a system where each downloaded exe of the installer had a unique id. The installer then phoned home during installation to check this id. To keep track of analytics was what I thought, but I think they had darker plans than this. When all this dawned on me, along with the “not getting paid thing”, I felt I had had enough of them and pulled out. But not before I had already created many ways for the installer to be able to install and circumvent things trying to block it on Windows. Hopefully they never got it of the ground after I pulled out, but if they did and anyone got adware or spyware from one of those installer I humbly apologize.
Before being on the internet was a normal thing for every company and looking on the internet for information was a normal action by every user I was tasked with creating a CD based directory over businesses. Some guy in, I want to say Australia, had gotten this great business idea in his head and asked me to help him code the thing so he could demo it to businesses in different cities. I actually think it was working for him for a while before internet became the de facto standard place to put and look for information.
In true late 90’s early 2000’s style the graphical look of the application was like a toy and consisted of many custom windows controls.
Back in the day, downloading things could be a bit of a pain. Especially if you needed to download large quantities of files from a website. Let’s say you wanted to download an entire website, or all .pdf files on a website. That could be a very manual and tedious endeavor. Especially if you didn’t know where the .pdf files actually were located.
For this reason I created a program that could be instructed to search a given web site, find links to traverse and based on simple include/exclude rules, decide which links to traverse, which to ignore and also which files to download.
You could point it at the index page of a site, tell it to only follow links that contained the base url of that site (to avoid branching out into the ever expanding internet) and that it should download all .pdf files it comes across on the pages it finds.
Although I remember downloading pictures etc using it I must be truthful and say that one of my major use cases was to download roms from sites hosting games for emulators such as the NES, SNES, Genesis (Megadrive to me) etc.
The ability to, with ease and not even having to sit by the computer, have it go through thousands of pages and download all the files I wanted saved me TONS of time.
Warrior Easy Message Sender saw the light of day when the IT admins at our school started to block every message program that people normally used. Before that, people had ICQ, Messenger and other to communicate with each other in the school. But for one reason or another, perhaps because people within the same room sat and sent messages to each other instead of listening to what the teacher was trying to teach.
The only thing that survived was mIRC that was allowed to be used on a few specific computers in the library.
I started resorting to, and showed others, how to send messages using the “net send” command. But after a few mishaps of people sending to every computer on the school grounds it was clear that this wasn’t popular among the teachers either.
Since this was way before I, or most people in Sweden, had access to any kind of broad band connection to be able to host a server I started to scratch my head and wondered if I could come up with a solution for us poor students that would allow us to keep contact with each other in school.
WEMS became the answer. It started out as something very crude to just test my ideas. Which were that, since the network wasn’t extremely big, allow a user who started the WEMS Client to look for other computers running a WEMS Client. It could do this either by going through IP’s, traversing the network if it could get the names of connected clients or by using a predefined list of hostnames/IP’s. If it found a computer running a WEMS Client the username the user had set in WEMS populated a list in the other client and they could now exchange messages. It also send back a list of all the potential WEMS Clients that client already knew of to speed up discovery.
With time functionality grew and the ability to setup your own unique WEMS profile with a profile picture etc was added. This profile could then be viewed by other clients. The ability to send messages was expanded to also include live chat (basically handled just multiple messages showing in the same window) and for multiple people to be in the same chat.
After this came the ability to send files to each other and after that I added the ability to share a white board to be able to draw things for each other.
This all worked quite fine and it was interesting to see the idea of a serverless messaging program go from an idea into actual working software. What I had basically done was to create a peer-to-peer system, without knowing what that was back then.
After school was finished, when I had actually gotten what many back then called broad band (ADSL 2.5MBit/0.5MBit), I did rewrite the software to use a server and a repository of users. This was before I had discovered relational databases such as Mysql and I actually managed to build something similar to facilitate storing and looking up information using flat files and directory structures :). It was alive for a while and old users from the school days used it to stay in touch as well as some random people online who wanted to help me test it. But with time, especially when I started studying again, it drifted into the eternal sleep.
Back around 2000 I bought a Sound Blaster PCI 128. With it came a CD-Rom that contained all the usual stuff. It also contained MIDI Banks for DOS. Four of them to be correct. In WINDOWS, you could chose which bank to use in a very easy way. Even though this is a neat thing it didn’t make up for the, what I at the time considered a, downside off Sound Blaster PCI 128. The fact that it could not use Sound Font 2 (SF2). Two days after I had purchased my Sound Blaster PCI 128, I returned it and instead bought the Sound Blaster LIVE 1024, which I among many other old things still have in one of my many boxes.
Finally I could use the SF2 banks. Now, this card also used MIDI Banks for DOS, but to my surprise it only included the 2MB version. No sign of the other ones, and no sign of any utility to change the DOS Bank. The sound of the 2MB version was noticeably worse than the larger ones so I wondered why such a dumb decision had been taken.
Well, a quick look at the 2MB DOS Bank revealed that both the SB PCI 128 and the SB LIVE 1024 used the exact same 2MB DOS Bank. That, I thought, should make it possible to use the other banks as well. As luck was on my side I found that the DOS Banks from the SB PCI 128 was still in my Systems directory. So I grabbed them, packaged them up and created a small tool to handle switching sound banks for DOS on non supported Creative sound cards. It was simple and it let’s you select which DOS Bank to use from the selection of ones I had originally gotten with my SB PCI 128.
The legality packaging banks probably copyrighted by Creative at the time was above my young mind to contemplate. But since I also used the look and feel of their tools at the time, including their logo to make it “fit in” is probably a bigger issue. But since only legitimate owners and users of Creative’s sound cards supporting the feature could use the program it probably didn’t do much harm.
Another tool that was aimed at helping my fellow students was a simple tool to help you train multiplication. You could keep track of stats and progress. This old thing actually saw real world usage with my daughter some 20 years after I wrote it 🙂
KemiPro was probably the first ever piece of software I wrote with the primary user being someone other than myself. Looking back at it it was very primitive and I would probably scratch my head over the “pro” part of the name today.
It was written by me when I was around 14 years old and was basically a tool to help students who studied chemistry at my school. It contained a periodic table where each element was clickable and you got information about the element in question. You were also able to edit and add(?) elements. Not sure if I thought new elements would show up in the future or if it was meant as a way for me to make some small money by offering the data already filled in or allow the users to fill in all the information themselves(?).