# n1ne

nein nein nein

## Adding Matomo tracking to my WriteAs blog

You know, I like to take a look at statistics of the content I create. WriteAs has built-in functionality for this, but it is quite limited. The reports it gives you contain only data about views, without giving more information. And also, their charts are broken: my previous post has 21 views, but the chart shows only one.

I can solve this by adding my own tracking to my blog, using the same analytics software as WriteAs itself: Matomo (previously named Piwik). I have it installed on my dedicated server and need it anyway for my client's sites. I can add it to my site by selecting my preferred blog URL to be n1ne.writeas.com, and then going to the blog customization page to edit the JavaScript code that is injected in every page. Custom JavaScript is a pro feature.

Here's what it looks like on the customize page:

## Solving exam schedules using PySchedule

I'm in the process of creating an exam scheduler for my end of studies project. It involves a GUI for entering all the data and a solver that takes all the data and creates a solution.

After looking around a bit, I come to the conclusion that I cannot create a solver from scratch. There are multiple ways to approach that problem: genetic algorithms, heuristics and constraint programming. I chose to go with the last one mainly thanks to the next paragraph.

I'm quite lazy, so I went looking for the nicest library I could find that would handle as much for me as possible, no matter the programming language. And to my surprise, I found the perfect one: PySchedule. As you may guess from the name, It's a python library that does scheduling stuff. The maintainer is very active on the project and there are tons of examples.

I created a script that parses yaml files for a list of teachers/classes/courses and the links between them, and PySchedule happily solves it in under 0,25 seconds for the test data I have entered (see below). The test data is the data from the exam schedule of the previous year at my school, but only for the years 1, 2, 4, 5 and 6, which is half of what needs to be scheduled.

The source code for the entire project is available on the github repository, which includes the interface part built on top of Electron. The complete project should be fully working in 3-4 months, as I do have a deadline :p

## Learning how to touch-type

A few days ago I started learning touch-typing will all my fingers. It's not easy but I think it will help me a lot in the future. I've always been pretty familiar with my keyboard, at least that I can remember. I can type without looking at an acceptable 60 words per minute, but I would love to type more quickly.

Learning a new way of typing makes me type more slowly for a certain amount of time, as you can guess. But it's worth it.

## Working on a content management system

I love building web applications, and I find that most of the applications clients have asked me about can easily be built on WordPress. WordPress is a great platform, but it has a flaw: it's slow, bloated.

So, I started working on my own CMS. I called it Golog for now, and it is built in Golang. A part of it is working already: theme loading, administration panel (written using the Vue framework), but no functionality is implemented yet. That will be for tomorrow.

Here's the GitHub repo: kindlyfire/golog

I'll continue to post any updates on this blog.

## Finding my why

It's not an easy task. I want to start my business, but why do I want to do what I do ? It's a very important step, but also a very hard one. What I want to do is easy to find. How is a little bit harder. Why is difficult.

Is it, to empower the people to do greater things ? Empower small businesses to do greater things ? Help people in this world of madness ? Who knows, I haven't found yet.

And I need a name for my business. Why do we always need to find a name for everything ?

I started reading The Seven Habits of Highly Successful People for the third time. The last time is almost four months ago. It's a really nice book and reading it makes me want to work on my projects.

I'm turning 18 next month, so I'll be able to start my business. I'm working as much as I can at my student job to make money to start it, though I have just enough. My first product is a vacation house manager. I have first-hand experience with that activity so I think it suitable for a first product. It will allow anybody to manage their vacation house(s): edit availability, prices for each “season”, track payments, online booking page, public and embeddable availability calendar, API, widgets, and so forth.

On the tech side, everything is done in Golang, using the Macaron framework. It's blazing fast and stable.

If you're interested in such a product, let me know ! It isn't going to launch right away, but we can always talk: me [AT] kindlyfire.me.

## PoC keylogger in Golang

Yesterday I wrote about me working on a keylogger in Go. I published it on github.com as a module you can import in your application.

The reason I created this keylogger is because I couldn't find one that didn't hard-code the keyboard layout. All the other keyloggers I could find limit their characters to A-Za-z0-9 because of their hard-coded keymap, and they fail to recognize any special characters like \$^£¨ø.

My keylogger design is flawed as well, but not on the key parsing design. Like most other keyloggers, I use the GetAsyncKeyState Windows user32.dll method to query the state of the keyboard every few milliseconds. This isn't the best option performance-wise because Windows exposes hooks for the keyboard, but it is easier to build.

Feel free to use my code !

## Running Kubuntu

You know, in my last post I said I was going to install Solus on my computer, getting rid of Windows. I ended up not installing Solus but installing Kubuntu instead. Don't get me wrong, Solus is amazing, but it lacks some packages and personalisation through the system settings.

I'm now running a full disk-encrypted setup, including all non-primary hard drives I have in my computer. A VPN is yet to come.

Having setup all that, I can now get to why I did all that: because I'm a programmer and Windows gets old really fast. I'm now working on a PoC virus written in Go, made to report to a CoC server (hopefully over the Tor network). I'll open-source it if it gets anywhere, and do some write-ups.

## Moving to Solus

As a first step to improving my online security, I am moving to a Linux distribution. The distribution I have chosen is Solus, developed from the ground up and receiving updates almost every day.

I will write another post after the installation.