Simon Marache-Francisco

X As a Service

  • 20/10/2021
  • POST
I had a bit of fun over the last few months working on server apps. I focused on building simple, well-contained services that I would be able to use to learn new paradigm and languages: bibin: a swiss knife of a pastebin I started with something simple but useful to learn the rocket framework, SQLite and async programming in rust. I made a fork of bin, a very minimalist pastebin-like service, that I upgraded by adding all the features that I could think of:

Micro project: PNG Implementation, Chunk Decoding

  • 11/07/2021
  • POST
I wanted to have a quick look at the PNG implementation, to see if I could have a high level understanding of the W3C spec over the weekend. After a quick implementation of the chunk parsing logic in rust, I started to dig into the specification for the IDAT chunk, … and things got a bit ouf of hand… I am now reading the RFC1950 (zlib data format) and RFC1951 (DEFLATE algorithm), as they are are used to encode the image data.

Micro project: md5 implementation

  • 27/12/2020
  • POST
I made a simple implementation of the md5 algorithm based on the original RFC 1321 from 1992! It was quite interesting to see the original code for the reference implementation, as it is using the old-style K&R syntax. For instance, the types for function arguments are defined separately: /* Decodes input (unsigned char) into output (UINT4). Assumes len is a multiple of 4. */ static void Decode (output, input, len) UINT4 *output; unsigned char *input; unsigned int len; { I tried to stay as close as possible to the RFC, without considerations for speed.

3d terrain rendering for embedded hardware

  • 09/08/2020
  • POST
Screenshot in 1080p I had some fun writing a simple real-time ray-caster and a triangle rasterizer years ago as a student, and recently wanted to implement another of these old 3d rendering algorithms. I remembered being impressed by the voxel rendering of the Outcast and Delta Force games as a child, so it was an obvious next step. This project was a nice way to use my new PocketGo mini-game console.

video stabilization using ffmpeg

  • 09/05/2020
  • POST
With the lockdown, I had some time available to finally take a small video of the squirrels roaming outside. I tried to take a video with my camera and a tripod but couldn’t avoid some annoying shaking. I usually use youtube to do the de-shaking, but for some reason, they removed the feature recently, so I had to see what other options were available. I was looking for a way to zoom in the video as well, and I already had used FFmpeg before for that kind of thing so that was my first option.

Migration to Kubernetes

  • 01/05/2020
  • POST
It is never easy to get your company to move its entire infrastructure to the new shiny buzzwordy tech stack, and it is probably for the best. But the nice thing with your personal infra is that the stakes are lower, and the scope smaller. I have always been fascinated by Docker-based infra since I first came into contact with them (Mesos, Docker swarm, Docker compose), because they seem to provide a much lower coupling between the SysAdmin and the dev/devOps.

Compiling Chicken Scheme scripts

  • 18/08/2019
  • POST
A few things I have learned about building binaries with Chicken Scheme The binaries The binaries generated by the compiler have a hidden set of parameters that start with -:. They can be used to enable debugging, perform statistical profiling or control the garbage collector’s behavior: $ csc gen.scm $ ./gen -:? [Runtime options] -:? display this text -:c always treat stdin as console -:d enable debug output -:D enable more debug output -:g show GC information -:o disable stack overflow checks -:hiSIZE set initial heap size -:hmSIZE set maximal heap size -:hgPERCENTAGE set heap growth percentage -:hsPERCENTAGE set heap shrink percentage -:hSIZE set fixed heap size -:r write trace output to stderr -:p collect statistical profile and write to file at exit -:PFREQUENCY like -:p, specifying sampling frequency in us (default: 10000) -:sSIZE set nursery (stack) size -:tSIZE set symbol-table size -:fSIZE set maximal number of pending finalizers -:x deliver uncaught exceptions of other threads to primordial one -:b enter REPL on error -:B sound bell on major GC -:G force GUI mode -:aSIZE set trace-buffer/call-chain size -:ASIZE set fixed temporary stack size -:H dump heap state on exit -:S do not handle segfaults or other serious conditions SIZE may have a `k' (`K'), `m' (`M') or `g' (`G') suffix, meaning size times 1024, 1048576, and 1073741824, respectively.

Readline and pkg-config in ubuntu

  • 17/08/2019
  • POST
I have been busy trying to learn Chicken scheme recently. The issue is that by default the REPL is a bit barebone. You are supposed to “augment” it by injecting a library of your choosing, like readline. The documentation for the project is quite good, even if a recent transition to a new major version has left some part of it out-of-date. I tried to install breadline, which provides bindings to the readline library, but the build process failed because pkg-config cannot provide the compiler flags for readline:

Temperature and Humidity logging: Arduino and ESP-01

  • 01/11/2018
  • POST
We have problems with condensation in our house (UK weather). In order to evaluate the situation, I planned to log the day-to-day humidity and temperature. It seems to be a popular subject, with plenty of material online. The DHT-22 is a popular sensor, fairly cheap, 3.3V and 5V compatible, with a very simple wiring: Only need GND, VCC, DATA. It seems to have a broad support on almost all platforms.

Back to c++

  • 20/05/2018
  • POST
I missed C++ since I started my job 2 years ago, and I think that now is the right time to have a look at what has changed. I bought Effective Modern C++, which is really well written and to the point. I am now going to update my old 3d rasterizer project with what I gained from the book. I already made a few changes to support SDL2, fixed a few cmake issues, added travis support to make sure it would build properly, and added support for the STL file format.
Next
LATESTS
X As a Service
  • 20/10/2021
  • POST
Micro project: PNG Implementation, Chunk Decoding
  • 11/07/2021
  • POST
Micro project: md5 implementation
  • 27/12/2020
  • POST
3d terrain rendering for embedded hardware
  • 09/08/2020
  • POST
video stabilization using ffmpeg
  • 09/05/2020
  • POST
Migration to Kubernetes
  • 01/05/2020
  • POST
Compiling Chicken Scheme scripts
  • 18/08/2019
  • POST
Readline and pkg-config in ubuntu
  • 17/08/2019
  • POST
Temperature and Humidity logging: Arduino and ESP-01
  • 01/11/2018
  • POST
Back to c++
  • 20/05/2018
  • POST

© Simon Marache-Francisco

Powered by Hugo.

Robust designed by Daisuke Tsuji.