HTML journal

m15o's journal


We're almost in May! In a few weeks I'll be travelling to Chicago for work. Not looking forward to the airports and planes, but I remember the pizza being incredible there. That's all the motivation I need.

A few months ago, I started to learn PHP. I am very happy with the language so far. I enjoy a lot how easy it is to deploy and update a page. If I want to update the text on a page, I can just edit the file, save it, and that's it. If I want to push the latest version of a site, I just copy the files to the server. Since I start to have many little projects, this simplicity helps a great deal. I also really enjoy how many things are available directly in the language, removing the need for me to use external dependencies (besides one I use for sending emails). Most of the use-cases my project use are covered with very stable APIs that aren't going anywhere. What's interesting is that PHP relies on an existing webserver much more than other language who implement the webserver directly. There's still a ton for me to learn!

I've also released It's a place to share JPEG pictures. The pictures are heavily compressed to save on disk space mostly. And although saving space was one of the top motivation, a part of it is also to keep images blury. Blury images makes us focus on the whole picture rather than the detail. The colors are off and they make it hard to recognize something. They are the type of images we see in our dreams. Since there are many places on the web to share beautiful pictures, this place can be where we share the poor ones!


Wow it's been a while since I've written anything. I don't know if it's similar for you, but I feel like when I don't do something for a while and I want to do it again, I sometimes put it off because I know that I would first have to remember how to do it. I think we can call that cold start! The cool thing with static HTML is that the cold start is basically non-existant. If I want to write something here, I just edit the HTML of the page and off we go! The more simple we keep things, the less overhead we'll have when getting back to them. Speaking of overhead, I've been bad at responding to messages/key requests recently, so apologies for that. I'm actually working on little ways to automate some parts of this process just so that it doesn't take so long.

In recent news, I've created MeBo, a very simple message board. It's done in PHP + mysql and is there to be simple to deploy. I wanted to build the most minimal version of a forum I could think of, so that the overhead of installing it is reduced as much as possible. I used MeBo for Speakeasy, an addition to the Midnight. I've also been enjoying writing Tny, a little virtual console inspired by uxn.


Happy valentines! So many things changed in my life in just a year. But some little things remain. I'm still enjoying drinking coffee while writing things down in the morning. I still have a blast learning and discovering all the incredible things people create. I still enjoy writing form software, somehow! These are the little things that give color to the whole picture. I miss colors. Being in winter doesn't help with grey sky. It does help with bugs though: there are none around town at this time of the year!

If I were a generative language model writing this entry, I would probably talk about work and stress. So guess what, I won't! Doesn't mean I'm not stressed at work these days though. I should probably take some time off. Might book that today actually! But talking about generative language model, I've found myself going to chat GPT a lot less lately. What I miss the most from it is the ability to check if what it's telling me is based on a source I trust.

I've switched my desktop from fvwm to cwm. If you don't know cwm, it's a desktop that ships with OpenBSD and it stands for "calm window manager". It's a really simple desktop manager where we can move around windows. It doesn't do tiling, just allows you to have windows and move them around. I like how straightforward the configuration is, and its man page is one of the best I've seen. So, thank you fvwm, it's been fun hanging out with you in the past few month.

In the last entry I hinted that I was learning PHP. I am currently re-building the software behind the Midnight. My goal is to make it as simple as I can, so that anyone can deploy it and run their own discussion board. The only requirements to run it are: php and mysql. My skills in php aren't great and it probably won't be the best designed software out there, but the use-case is straightforward enough. What I enjoy a lot is how it's possible to customize all aspects of it rather simply. It's only text files, so if you want to change the style, open style.css, if you want to change the header, open header.php, if you want to change the way messages are displayed on a thread, open thread_read.php, and so on.


It's been more than a month since I wrote here. It's crazy how fast time can go. One day we get into 2023 and the next, we're more than a month later. Work has been keeping me really busy, as it often does. While my overall stress level is still rather high overall, it's starting to go down. I think it's mostly due to how I see things now: not everything can be perfect. Heck, not everything will be good. I'll get some things wrong, do mistakes. Not everyone will like it. People will be mad. I think I've started to accept these. The other learning that I got from the last month or so is that things change fast in tech. And by that, I mean that every week brings with it its own set of changes.

Ok, besides that, I've seen there is a 24/7 twitch channel that runs AI generated Seinfeld episodes and I'm amazed at how I like to watch it! What's wrong with me? Why do I find this funny? The fact that the whole thing is so bad makes it great. It's exactly at the right level of terribleness for it actually be a work of art. I've never watched Seinfeld before, but it makes me want to watch the real show to see if the story lines are similar.

Speaking of AI. Is ChatGPT going to be a fad? I mean, I enjoyed using it to ask it tech questions, until I realized that it made me lose more time than anything else. There's no way to trust any answer it gives, and learning things wrong it harmful in my opinion. So I found myself not using it so much anymore, if at all.

I've been learning php. Crazy that I never looked at this language before. I love that it used to be called "Personal Home Page". Kind of which it stuck with that name. My favorite thing about this language so far is how easy it is to set up php hosting and how the language includes everything needed for a project to run: in my case, no need for external dependency. It might be early for me to say that, but it feels as if php scripts would have a good chance to stand the test of time. I might say so because I chose not to use any package manager or framework. Just stock php.


Feels strange to type 2023! But hey, that's the reality now, so happy 2023. On the brighter side, I'm feeling much better than last week. Not fully recovered but much better. I feel like I'll be dragging this one a couple more weeks, but it's okay. Last week's been really strange. I didn't have much work but the work-related anxiety was to the roof. This week I have much more things to do, with people coming back, etc, but so far the anxiety level is ok. Let's keep it that way?


Still sick. I can't say if it's much better than last time I wrote. I don't have anymore fever or anything, just bad cough and am generally tired. I think I got burnt out a little as well. Work has been overwhelming in the last few weeks and it's (I think) taking a little toll mentally on me these days. I'm not on vacation, but it's a quiet moment and I'm leveraging this to take things much easier. There always so much to do, doing them a little later is fine! I've been generally happy with my new phone. The battery is what I like the most, compared to the one from my 5S. The year is wrapping up and the remaining days feel like a strange liminal time. I'm still unsure of what I'll be doing for New Year's eve. Part of me just wants to stay home and enjoy it peacefully. Friends are telling me to go with them to parties and my motivation for that is not super high. Given how I feel I don't know if my body would be up for something that involves seing too many people and staying up very late. Really sucks to be sick at that time of the year.


*Cough* good morning! I had a mostly good night and wasn't disturbed so much by the bronchitis. This week is the last week of 2022. What a year is has been. And it can still be! I'll probably leave time for introspection sprinkled throughout this week. I started the year at a very different place than the one I'm finishing it in. I don't make new year resolutions, but I like to think of the one or two things I'd like to start/stop/continue. I haven't fully thought about it it yet. What I definitely want to continue is this journal. Taking a bit of time in the morning to write has been very helpful to help me understand myself a little more, and it's an activity I'm looking forward to do. I don't have a lot of dedicated time to connect with me, so this checkin stays in 2023!

On the "start" section, I'm thinking travel. Most of my travels have been work related. The ones that haven't weren't initiated by me. I love traveling but flying scares me and puts me in a very anxious state. After the trip to NYC I realize that it's not so terrible, and that I can 100% manage this. I also realize how great the feeling is when we arrive in a new place and visit it. Not every fear has to be listened to. Especially the ones that prevents us from living a fulfilling life. I also wonder how traveling solo is. I'd love to try this out. So we have the start and continue! What should I stop, then, if anything? Overthinking? Thinking of all the different ways a particular situation can go wrong? Not doing something because it scares me?


Merry Christmas! Happy Holidays! It turns out I have bronchitis. I'm feeling much better than last time I wrote here. The fever is gone at least, which was really dragging me down. It got pretty high, which got me concerned. I decided to stop taking calls on Tuesday and Friday because I just couldn't. Not the merriest experience to be sick during christmas one might say, but I'm grateful it's evolving in the right direction. I'm still overall feeling tired and coughing a lot. And coughing hurts a ton. I didn't plan any vacation in the next following days. I'll be working, and there are a few things that increase my anxiety level when I think of them, but since it's the 25th of December, I'll not focus on them for now. I haven't been exercising over the last few days and It impacts me psychologically. At least a little.

I bought a new phone. It's the iPhone 13 Mini. Its size is close to the one of my beloved 5S, but a bit bigger. I'm so annoyed by the lack of an audio jack on that device though. I'd rather not have a wireless headset. My solution is to use a little jack<>lightning dongle. I know I'm going to lose it at some point. But hey. At least it works. Besides that, great phone so far. I've migrated almost everything. So that's one thing off my todo list!

I finished a little game in 15f that I re-wrote a few times. It's called netspeed. Your goal is to catch as many "+" as you can during the alloted time. I re-wrote that game at least 3 time. I started it in the airport when I was going to New York, worked on it in the plane, then realized my design was terrible and restarted it. I've been trying to incorporate the ideas from Thinking Forth such as creating components and defining lexicons for these components. It's helped. I can't help but notice how object oriented and component are similar. At this point, I'm not sure I fully grasp what differentiate the approaches. It seems like components are objects, and the associated lexicon are the methods that operate on that object. Well, now that I think about it, objects seem like a specialized type of Component. I looked at uxn for inspiration on how to draw sprites. I'm always so fascinated by how elegant the solutions are on uxn. Not only elegant but incredibly well implemented, with as little memory footprint as possible. The opposite of everything I'm doing with 15f right now haha. I've implemented the 2 bits per pixel format to draw sprites, added a function that returns a random number and a few other things. I haven't delt with handling arrow keys yet, so we need to use wasd to move.

For the next project, I'd love to create a visual prompt. A window in which one is able to write a line of 15f, press enter, and potentially look at the content of the stack.


So I'm sick. Fever and cough and all. Just had about the worst night one could imagine. Weird dreams where I was asking questions to ChatGPT and somehow ChatGPT was able to answer everything. It was unsetteling! Why would I dream about ChatGPT in the first place? Surely, that's part of being sick. I wish I could remember the questions I was asking it during my sleep, that would've been fun. I should totally have a notebook next to my bed and write this dream-related things. I started getting sick yesterday, and today it went up a notch. Not sure how long it will stay. I was supposed to go to a work dinner tonight but I'm going to cancel because there's no way I do that in my current condition.

I have two phones: one for work and a personal one. The personal one is an iPhone 5S that I absolutely love. The battery isn't great, but the size and form is great. It's the best iPhone in my opinion. Unfortunately, even though the phone itself works well, I'm not able to update to the latest version of iOS. This makes a lot of applications unavailable. I don't need many apps, but I do need some like my banking one, etc. It's terrible to know that a fully functioning device can't work only because of software support. There's literally an "IF" somewhere that tests the version and prevents it from updating. I don't mind my phone being slow or having a bad camera. I just want to be able to run the 3 apps I use confidently. According to ChatGPT (hi!) this phone was released in 2013. That's not even 10 years ago. If I buy a new phone now, will I have the same issue in 10 years? E.g. perfectly functionning phone but no more software updates? Surely this would have to stop? Anyway, I'm still going to need a new phone for an upcoming (personal) trip. I'm not going to go far with my phone not able to install the Metro application.

I've no idea how I'm going to get through today. Lots of meetings. Some big ones. I need to attend them. I'll work remotely for sure though. Caffeine and paracetamol will be my companions. I really need to find a way to detach myself from work and understand that my work isn't me. It's not everything that defines who I am. In fact, in many regards, my personality is lightyears away from the role I have. I also need to keep in mind that there's no situation I can't get out of, if I operate with kindness, transparancy and understanding. It's ok to make mistakes, that's how we learn and grow. It's the capacity to own these mistakes and learn from them that matters.


I feel like it's been forever since I last wrote here. Last week has been incredibly busy. I went to New York for work, and while I was there, other work kept on piling up. It's a strange feeling to get back with even more work than I had before I left. But hey, one step at a time. New York has been a great experience overall, if we set aside planes and airports. I almost missed my first flight, but it turned out it got cancelled. Thankfully I was able to get to the next one. One thing I absolutely love is pizza, and wow, New York has incredible ones. My diet has been terrible mainly because of that! I'm impressed by how many pizza places there are. I also like how everyone has their own personal favorite. If anything, I wish I would have spent more time just to try more of these pizza. Perhaps at some point in the future I'll go there and try all the places. And document them on this journal. That'd be a good plan for a sabbatical. Whenever I travel, my overal anxiety level skyrockets mainly because I'm scared of planes. It's a strange fear, rooted in nothing substantial. I just can't relax on a plane. My mind keeps on jumping to crazy scenario of things that won't happen but maybe will. It was also the first time I took the plane in 3 years. It wasn't that terrible.

So as I said previously, I need to focus on the "one step at a time". Also, I should focus on a big learning from forth: when a problem seems overly complicated, just break it down in smaller components. Today, I have a few overly complicated problems that make my brain spend cycles trying to process them. Of course, those cycles are spent when I'm trying to sleep. Not ideal! So here's the overall strategy for now: 1. break down large problems into smaller ones and 2. take them one step at a time. I'm forgetting the step that comes before 1, which is prioritize those problems. There I have it.

I picked-up going to the gym when I got back from London a little more than a month ago. I don't go often, usually on weekends. However, I realize that it makes me feel better and helps me mentally. When I started, I was barely able to do a single pull up. I went back on Saturday and I was able to do 4, so there's progress! Funny how little progress like that impact the mind.


Everybody's talking about ChatGPT. This is some crazy thing. For example, when I asked it "write a short paragraph describing why people are scared of chatGPT", here it what it says:

Some people may be scared of ChatGPT or other large language models because they are advanced AI systems that can generate human-like text. This ability may make some people uneasy, as it can sometimes be difficult to distinguish the output of a language model from the writing of a real person. Additionally, the potential power and capabilities of these systems may be intimidating to some people, who may worry about the impact they could have on society. Additionally, the fact that language models are trained on vast amounts of data, including potentially sensitive or private information, may also be a concern for some people.

And it goes on. I just asked it a question about FORTH and the answer is surprisingly accurate. I'm honestly fascinated by this. I could picture such a technology being used in so many places in companies, where knowledge management is often an issue. Such a bot can become an entry point you ask questions to, and get answers as well as links to documents. The best thing is that it'd learn and get better as time progresses.

I'm just not looking forward to the day where most of the content online is generated.


Been working on a simple color picker for 15f. It's inspired by the color picker example from easylang. For now, colors are encoded in 3 decimal digits ranging from 0 to 9 for r, g, and b. For example, white is 999. Blue is 009, and so on. Using that system, I can encode 1000 (10^3) colors, which should probably be enough! Building the picker took me the whole day. I've added missing words such as *, AND, < >. I had written a few routines to draw directly in FORTH as part of the standard lib. One of them was a word to draw a rectangle. However, I realized that on larger screens, drawing a rectangle was a bit slow when the rectangle was large. Because it's such a common thing to do, I decided to re-write the rectangle word in C directly. It's now very fast. I'll add another word for drawing a line, which I'm probably going to write in C as well. But before that, I'd love to have a way to write on the screen a number from the stack. I am not 100% sure how I'd do that just yet. But that's a problem for another time!


Saturday evening. Currently enjoying a home-made old fashioned. For the first time, it doesn't taste too bad! I had some oranges I could peel for the extra flavor. Surely, it adds to the mix. I haven't used bourbon, but scotch. It's a tad strong but I don't mind. I'm glad I was able to rest today. This week has been really intense and I'm still there, so cheers! I'll be travelling to New York for work the week after next, and even though I don't like planes, I'm looking forward to that.

I've been having a blast using mercurial on some projects recently. What's interestingly is that conceptually, it's pretty close to git even though there are some major differences. I like how both projects came out roughly at the same time, for similar purpose. Last weekend I took some time to start a mercurial server on an openbsd machine. I'm thinking about moving all my projects there at some point. Not now. We'll get there! Speaking of projects, it's fun to see grow. I also should soon start restricting the number of statuses shown on the homepage, since there starts to be a lot!

Have been doing some more FORTH today. Last time I actually wrote about the ['] word, and I finally found a use for it, so it's now implemented. I've been (re-)reading uxn and I'm so in awe at how well thought the whole system is. I'm thinking about implementing a similar "device" / ports system to interact with the screen and other functions. Speaking of the screen. I'm starting to add ways to draw to it. I'm probably going to change everything soon, but for now, here is how it goes: we can set a color. The color is expressed with 3 decimal digits (inspired by easylang). E.g. 009 would set the color to blue. Then I can CLEAR, which would set all pixels on the screen to blue. Then if I want to draw a pixel, I first need to MOVE ( x y -- ) to where I want to add it. Now that we've positioned ourselves at the right place, we can just run PIXEL ( -- ). It uses the current color to draw the pixel at the current position.

Anyway! That's enough writing for today.


: COMPILE ['] LIT , ' , ['] , , ; IMMEDIATE

This would probably be what compile would look like if I took it off the C code and defined it in FORTH. I'll just stick with keeping things simple and having COMPILE as part of the C code. As I learn more about FORTH and become more confident, I'll be able to change a few things and bootstrap lower level words like this one. It was a fun experiment though. Also, I'm leaving this there for future reference. Always good to keep track of little things! Speaking of little things. To make the above code work I had to add the ['] word. And even though it's a useful word, I'm not using it at all for now, so I'll just remove it. Again, for reference, here's what the C code looks like:

/* ['] push adr of next mem cell */
  errc run_btk(Ctx *ctx) { /* ( -- adr ) */
    return stack_push(&ctx->pstack, ctx->[ctx->m_ptr++]);

Hope you don't mind me adding this to the journal! Didn't feel like adding a single tiny function to source control, given I might never actually get back to it. But didn't want to lose it either.


Some weeks feel like a mountain to climb. Only Tuesday and I feel like I already need a break. Worst part is that Monday wasn't the hardest day. There's a lot to process and even more to do. I somehow need to shut down the "process" part and focus on doing. I'll probably need to accept that it's okay if what I do isn't perfect, or as qualitative as what I could have done. That it's ok if people are disapointed. As long as I try. And I'm trying. Not my hardest, but am still trying. What's the worst that can happen at work? Not getting a promotion? I don't need one. Being exited? Great -- I'd love some time off! At some point, the pace in big companies is hard to keep. I guess there are harder days than others. I just need more coffee than usual. Way more!

On a much more fun note, been I've added a few nice bits around writing text on my forth interpreter. I added a non-standard forth word, !", that stores the following string at a specific address. It uses a lower level word (non standard too) called QOT that does the same thing in a non-IMMEDIATE way. Using that word I was able to write ." that writes the following string on the screen directly. To write on the screen, I've implemented TYPE that EMIT letters as they come. I've struggled quite a lot to implement ." (dot quote). I struggled because this word does a lot of things. It took me time to realize that. I bruteforced my way into trying to get something working with simple words. At some point I thought "hey, I just need to break down the dot quote into smaller pieces". And that was what unlocked me. I've added a word that I called SEEK which simplified the problem by a lot. So here's the learning: whenever writing a word is hard, break the word down in simpler words.


Good morning, good evening, good afternoon. Definitely morning around here, and freezing too! In fact, I am wearing a coat writing this as I'm sipping hot coffee. Best feeling. Yesterday's been hectic: so many things to do at work, so little time. I enjoy going to the office and see colleagues, but I'm so much less productive than when I work from home. Then of course, slack messages pile up, todo lists grow, and I end up the day with much more to do than when I started it. Never a good sign!

I've started a disk with everything I'm learning from OpenBSD. I'm saying OpenBSD, but it's really about administrating an OpenBSD system, and little things around. The goal is for me to be able to refer back to it when I need to do something specific, or to revive some knowledge that slipped my mind. The format is the following: one DOCUMENT for each learning. So hierarchy. I just LEAP to get to where I need to be / search around. It's still small and a work in progress. I've added it to, which is probably going to be the place I'll be adding my code repositories from now on.

Putting up has been fun to do! I discovered relayd, an incredible software that I used as a simple reverse proxy to hook requests on port 80 to port 8000. But there's so much more to it. It's interesting, and a first quite frustrating, to see that proxying request isn't included in OpenBSD's httpd. But come to think of it, it allows each tool to focus on their job. In this case, I already have a webserver running (using hg serve), so I don't need to run httpd.

I've been a little FORTHtrated since yesterday. I'm trying to write the COMPILE word in FORTH directly. For that, I'm using other words (obviously). One of them is OP, it reads the next word from the input stream and puts its opcode on the stack. Compiling would then just be "OP ," (comma writes what's on the stack in the memory). But this creates a lot of problem, one of them being that we don't really use COMPILE outside of colon definitions. I feel like FORTH is such an incredible puzzle: we can always cut down problems in smaller chunks. How small do we want to chunks to be? As I'm writing this, I feel like I'll just include COMPILE as part of the system's words. As I get more knowledge on building FORTH systems, I can always re-write a new interpreter in the future with more learnings. For now, I'll stick to a simple one.


How time flies. Taking time to write what's on your mind will make you realize that. It certainly does to me. When I look at the day it is, and realize how many have passed since I first started writing, or working on a project, or when I simply look at other entries it feels strange. I feel like a few days ago it was still spring, not quite summer yet. I was in a different place then. So much has changed / evolved in the last few months that it feels like years have gone by, but yet, that everything happened quickly. I don't like to think of time as a finite resource that we just consume. Heck, I don't like time so much. Well I do. But I don't. Why am I making zero sense right now?

I'll be travelling to NYC for work in a few weeks. While I still need to book the trip, I'm already starting to think about it. The city must be beautiful by that time of the year. I'm not sure I'll be able to spend much more than a few days there, but I do hope that I get to enjoy at least one evening without colleagues. Just walking around and be amazed, and stop at a bar, get a cocktail (or 4) and watch people. Even though time goes by quickly, I hope I'll be able to fully appreciate my time there and not be overwhelmed by work. Perhaps I should start to practice meditation. I'll certainly need it when I'm in the plane. I don't like being on a plane!


So the funny thing is that internet is currently down at my place. Actually, not that funny, to be honest, but I like the irony of writing without an actual connection. I enjoy being able to do things with my computer while offline. Actually, I enjoy doing things on my computer that don't require a web browser. Such as reading PDFs for example! I've recently installed xpdf, a simple program to read PDFs and it's been very useful. Before that, I was using Firefox. Firefox's PDF viewer works well. But I like that I'm not using my browser for literally everything.

Today, I decided to try mercurial. No specific reason besides that it's something I didn't know. I've had lots of fun reading the docs and trying it out. I enjoy the simplicity of the design. It's crazy to think that both mercurial and git came out roughly at the same time. So far, I like the simplicity for my development workflow, which mostly consists of creating revisions every now and then when I make sufficient progress. While I don't use branching often, it seems like the branching model is very flexible. I like that there's an integrated server called hgweb. I decided to use mercurial for 15forth, which is now available on Let's see how it goes!

Speaking of 15forth, I removed a few words from the actual C code and instead added them to the standard library. I'm starting to really see how powerful FORTH can be, and how having well-defined, useful small words has a multiplier effect on rest of the codebase. A good example is the "!" word, which allows to write a value at a specific address. Using it, it's possible to define the "," word, which makes it possible to define the [LITERAL] word. I've also started to remove loops from the C code re-writing them in FORTH directly. Next step will be to add IFs.

I've started to read "Thinking Forth". It's great that it's a package that's included within OpenBSD! The book is fascinating. I particularly like the following quote: "You shouldn't write any serious language in Forth. As a language it's not powerful enough. What you should do is write your own languges in forth (lexicons) to model your understanding of the problem, in which you can elegantly describe its solution."


Friday already. How time passes! This week is not over yet, I still have a ton of things to finish today and quite a lot of meetings to attend as well. But it's still hard for me to believe how quickly it went. I got so tired yesterday that I feel asleep incredibly quickly and as a result, had a great night. Great nights are cool. I'll take a great night every night. I'm feeling recharged and it's only Friday. Let's hope this day doesn't take too much of a toll on me!

I've quickly added the COMPILE word to my forth interpreter. I'm certain there are a lot of bugs but it worked when I ran the test. Small victory! Next up: adding the LITERAL one. I've named it "push" but I'd rather stay consistent with the spec. Once I have these, I'll be able to start writing DO LOOP and IFs directly in FORTH. I think? We'll see!


It's the morning, my coffee's already cold and almost finished, but as I promised in yesterday entry, here I am! Writing before going going to sleep definitely not stop the thoughts from popping-up in my mind right before falling asleep. Next-up: meditation? Writing is a little meditative though. We focus on the moment. Well, not only, since we're literally exploring our thoughts. Ok forget what I just said. Not meditative. Reflective maybe. This morning I've been looking into adding FORTH words to extend the compiler. I'm so awestruck by some of the design decisions of FORTH. Things feel very meta in a simple way. My first approach was to add a lot of words, and now I'm trying to remove as many words as possible but instead just add words that allow to define other words. There's this idea of IMMEDIATE words that are executed while a definition gets compiled. I've added these. Next up will be adding the COMPILE word to let the immediate words do useful things, like compiling for example. I'm sure I'll run into a million roadblocks but at least it's a fun and humbling learning experience. And it makes me think about other things. It's incredibly cold today these days. Yeah. I'll leave it to that!


I realize I write most of the time in the morning. Usually, it's right after I get up. Just when I'm getting my coffee. I don't often write during the evenings though. Which is interesting, because evenings are a great moment to reflect on the day, aren't they? What better moment to pause than before wrapping up the day? The way the brain works is strange. It's only when I go to sleep and am ready to fall asleep that many thoughts start racing through my consciousness. They're calling me "hey, think about this quickly before you sleep!". Of course, it's a trap. Giving in to these thoughts is the best way to not sleep, and also a great way to build anxiety. Being tired and just about to fall asleep isn't the best moment for clarity. Yet, somehow my thoughts keep jumping in my brain before sleeping. So here I am writing before that time, hoping that perhaps my mind will decide that it had its chance to express itself, and will simply give in to recharging its own batteries. But let's be honest, we all know that it's not going to happen. The moment the lights are off is the moment I'll start thinking about what specifically am I not looking forward to tomorrow? Then hey, I'm probably going to dream about it. I'm joking though, it's not always like that. Sometimes I also think about stuff that gets me excited, or about how I should refactor this or that part of an on-going project. The result is similar though, since I get to not sleep that much. But it's more pleasant. The added bonus is that in the morning I know exactly what to update in my code. The funny part is when various topics from seemingly different places get intertwined in dreams. Recently I've been working on a FORTH interpreter on my free time, and got to report to a different manager at work. So somehow I've started dreaming that I had to do all my 1-1s in FORTH exclusively. And while FORTH is very expressive and I like it a lot, I'm not sure if this was a dream or a nightmare! So hey, I don't know if FORTH will be on my mind tonight. Maybe not? Perhaps I should report on the situation tomorrow, when I wake up.


This week has been incredible. So many things happened, it's hard to believe it's only been a single week. At work, things are evolving quickly. Last Monday I've been told about a change in my scope, which I'm excited about and scared of at the same time. I've met very interesting people this week two, and I'm grateful for that! I've also seen a friend I hadn't seen for many years, and it's been great to catch up with them.

I've also spent some time working on my FORTH system. Not as much as I would have hoped, but at least a little. I'm currently trying to incorporate compiling words such as CREATE and DOES>. I've been struggling today to get those in. My implementation is slightly different from the standard, but that's a tradeoff I'm willing to take. I've also started to write a simple standard library where I'm hoping to put all the words that aren't critical. It's also fun to start defining words with words that already exist.

My experience using FORTH is still very limited, but I'm starting to appreciate the beauty and simplicity of the language. I love the idea of writing words and composing with them. It's a good philsophy to approach problems: break it down in simple parts, and compose other simple parts with those parts. It's very elegant.


It's been a few months now (I think?) that I've changed laptop. I didn't really want to, it just somehow happened. I wanted to learn more about OpenBSD, mainly because let's be honest, their logo is the best logo. A puffer fish! What can be cooler? Nothing. And it just happens that the whole system is very interesting to learn. The most striking (to me) element is how thorough and well written the documentation is. I can feel the obsession to not just make things work, but to make sure things work as well as possible, and always stay correct. So yeah, I've installed it on an old laptop I had that was sitting around, and have been playing with it ever since. OpenBSD comes out of the box with this window system for X called fvwm. I enjoy the looks and customizability of it, but I feel like I'm mainly scratching the surface. I take this whole thing as a learning experience. and this learning experience has a bunch of struggles along the way. One of which is simply connecting the system to a monitor, or connecting to wifi.

Today I found out about xfe, a file explorer that's very convenient. I had been browsing my file system with the terminal and emacs up until now, but xfe works really. And the good thing is that I choose the program I'd like to run for specific extensions. Really conveninent to run bitters on .bit files for example. I'll definitely be exploring it more in the future.

I've also made some progress on 15f, the little FORTH machine I'm working on that's built on top of some code I wrote for bitters. I've added the possibility to create variables, and to retrieve or store numbers in them. I've also updated some of the memory part. Every part that can store information now use a "cell", which is an unsigned 16 bits number. I've written a hello world, which looks like that.

There are many things I'd like to add, such as being able to change the background color or the font color. I'm also thinking about adding more characters (e.g. CP 437) to draw some ascii art. Perhaps animate it? That's be fun. But hey, we're not there yet.


Today I've spent a lot of time trying to write a little FORTH interpreter. At the moment it doesn't do much. It's possible to execute a few words like +, - and also : (to create a custom word). But I'm happy since most of the parts are in place, and I can now start adding more words. I'm actually thinking about reusing some of the code I've created for bitters to create a super simple FORTH machine that allows to write text on the screen, change color, do things like that. I'd probably be a fun learning experience, so hey! If you want to look at the code, it's available right here.

Besides that, I haven't done much today. I've updated this site to now have a background color, I think it looks nicer. But knowing myself, I'll probably think differently tomorrow. Then, I'll change the color again because why not!


Heya. I've decided to update my site. The previous version was great, much better than this one! But. I somehow changed-ish laptop, and you know the problem where you change laptop and suddenly you lose access to a few things? Yes. That's one of my problems. This site was using nini to statically generate pages and interconnect them with backlinks, and it's great. But I figured I'll keep it to simple html pages that don't need any compilation for now, so that when I change this laptop, I'll still be able to publish without having to install anything. The site does look very boring, I hope you don't mind! Hopefully what will get written in here will make up for it.

So many things has happened since I last wrote in here that I don't even know where to start! Life has been busy professionally, which is great, but also tiring. On the side I've been learning OpenBSD. I got back to learn C also, and wrote a little text editor inspired by the Canon Cat. In fact, I'm writing this from that editor right now! It's called bitters, and you should definitely take a look at it. It's been a great ride so far. I'm loving C and all the freedom it offers. I'm thankful to all the code I've been able to read and learn from. I've picked up "The C Programming Language" book and I'm utterly impressed by its quality. I enjoy the particular relation unix has with C.

Speaking of languages, I've been reading a lot about FORTH recently. The book "Starting FORTH" is incredible. Very well written with diagram and even drawings. It reminds me of why's poignant guide to ruby. Both "Starting FORTH" and "The C Programming Language" are on my top 3 programming book of all time. Yes, why's poignant guide to ruby is first!

Go back?