Originally a blog about PWKF, an easy-to-use workflow solution, but as my interest in PWKF faded, it evolved into a generic blog.
Therefore now it is more about random thoughts, Munin or even low-level techy stuff I’m doing with my sons.
Posts
Micro-services are Mostly Harmful in Your Case
Micro-services are very fashionable nowadays but the real questions are:
- What do they really bring to you?
- What is their hidden price?
- Can you avoid paying that price?
USB-C Connectors Explained
Having a USB-C device that only works when the cable is inserted on one side ? Having a USB-C device that only works with USB-A to USB-C cables ? While USB-C is a wonderful standard, it has its little quirks.
Read More...Always Optimize for Junior Devs
There is a single advice I would give to anyone writing software, and specially to great devs : Always optimize your code for your most junior developers. I agree that it is not a very popular advice, but it is the one that, in my experience, give the biggest bang for the buck.
Read More...Emulating 8051 with AVR
As stated before, 8051 is here to say. Very much like the 8086 is still alive with the newest x86-64 architecture. Since the Arduino Uno is the de-facto form factor for many things, let’s try to emulate 8051 on AVR.
Read More...Sizes of SMD Components Explained
Through-hole tech is very nice for hobbists. But it is getting obsolete. And many components are not available anymore in anything else than SMD. The main problem is that there isn’t a single standard size anymore
Read More...Enhance an 8051 Simulator
As a followup of my clock kit, I’m growing a genuine interest into the 8051. While more modern MCU are vastly more powerful, the 8051 is just barely as complex as needed to be useful. That’s a sweet spot that makes it invaluable for learning purposes.
Read More...Simple AT89C2051 programmer with Arduino
Several AT89C2051 programmers exists. The most advanced one being the one from Paul Gallagher, as it is fully constrainted. Even generating the 12V onboard with a charge pump.
Read More...Adding Navigation Links
Navigation inside a blog site is essential to discover related content.
Read More...Adding Comments to a Github Pages Blog
Jekyll makes it super easy to host a static blog on github pages. It feels like a match made in heaven, as it becomes really serverless. Just write some Markdown and do a git push for publication. Everything else is nicely handled for you by Github.
The biggest downside is, being static, it obviously lacks comments. Disqus fits that gap nicely, but I don’t like to rely on another service. Besides Github issues are already implementing a comment system, so let’s reuse that.
Read More...A Tale of Two Programming Religions
The obvious but overlooked secret of computing is that it is always about only 2 things:
Read More...Test Markdown Formatting
Formatting is important!
Read More...Many ways to Blink a LED
Blinking a LED is the electronics equivalent of the famous “Hello World!”. Therefore it has a very special meaning, and it is also the basis of “clocks” which are very imprtant in digital electronics.
Read More...Minimal NE555 Blink
My son recreated the “blink” with a NE555 and tried to remove the wire from RESET pin to VCC. It actually worked well, and we wondered “what’s the minimal BOM for a NE555 blink ?”.
Read More...DIY 4-digit Clock Hacking
I got my hands on a 4-digit clock DIY kit. Soldering it is rather easy, and it works as advertised.
Read More...Emulating Logic Gates with an ATmega328P MCU - Part 1
I’m discovering the world of electronics with my son. We encountered to some nice videos that are about recreating a whole CPU with only logic gates. The most well known one being the one from Ben Eater and the one from the NAND2Tetris project.
Read More...Humble Beginnings in Electronics
When I was this summer at my parents, I rediscovered a long-forgotten “electronics lab box”. I was super glad, since it was that box that enabled me to get into electronics. Not the digital kind with micro-controllers, but the old-school analogic one, with transistors, resistors & condensators.
Read More...Fix the HDMI output in the ODROID-HC4
I bought an ODROID-HC4, but it didn’t work with my TV. Let’s fix it.
Read More...Using Computer Modern Fonts
I always tried to have a minimalist blog style. I almost totally agree with Fabien Sanglard’s 0x10 rules, except on the part with “monotype fonts”.
Read More...Fun Yet Effective Meetings
⚠️ This article is extreme & satirical on the purpose of being thought-provoking. Therefore, please, do take it with some grain of salt.
This is a followup of my Remote-mostly working is a paradigm shift.
Remote-mostly working is a paradigm shift
💡 As our daily life has been disrupted and work-from-home is slowly becoming the new normal, distributed teams are much more common. But normal work patterns don’t translate immediatly, they have to be adjusted.
How to try Munin 2.1.x easily in Debian-derivatives
In my previous post I explained how to setup a simple development environment, but I feel that's a little too much if you only want to try that new, shiny, munin version. Read More...
Tutorial - Setup a dev environment for Munin
I discovered some time ago the marvelous
dev_scripts/
directory in the munin source code. So, as its usage is very easy, I'll just write a tutorial about how to use it Read More...Experimenting with a C munin node
As I wrote about it earlier, Helmut rewrote some core plugins in C. It was maintly done with efficiency in mind. Read More...
Spinoffs in the munin ecosystem
Munin's greatest strength is its very KISS architecture. It therefore gets many things right, such as a huge modularity. Read More...
Do not fear git rebase : make snapshots !
Git is a nice version system, but some commands are destructrive, such as rebase. Read More...
When having good relationships with package maintainers can also be a curse
I advise every user to only use the packaged version of munin. Here's a short article to explain the background of my reluctance to ask for users to directly use the official tarball. Read More...
Avoid those milli-hits in Munin
A recurring question on IRC is :
why do I have 500 million hit/s in my graph ?
. Read More...Enhance RRD I/O performance in Munin 1.4 and Scale
As with most of the RRD-based monitoring software (Cacti, Ganglia, ...), it is quite difficult to scale. Read More...
Autovivification in Perl : Great Idea but also Huge Trap - Another Leaking Abstraction...
Autovivification is one of Perl's really great design success. Read More...
Waiting for Munin 2.0 - Break the 5 minutes barrier !
Every monitoring software has a polling rate. It is usually 5 min, because it's the sweet spot that enables frequent updates yet still having a low overhead. Read More...
Waiting for Munin 2.0 - Keep more data with custom data retention plans
Munin keeps its data in an RRD database. It's a wonderful piece of software, designed for this very purpose : keep an history of numeric data. Read More...
Waiting for Munin 2.0 - Native SSH transport
In the munin architecture, the munin-master has to connect to the munin-node via a very simple protocol and plain TCP. Read More...
CGI on steroids with FastCGI, but on a CGI-only server - The FastCGI wrapper
FastCGI is very common way to increase performance of a CGI installation. It is based on the fact that usually the startup of CGI scripts is slow, whereas the response is quite fast. Read More...
Waiting for Munin 2.0 - Performance - Asynchronous updates
munin-update
is the fragile link in the munin architecture. A missed execution means that some data is lost. Read More...Waiting for Munin 2.0 - Performance - FastCGI
1.2 has CGI, it is slow, unsupported, but it does exist. Read More...
Waiting for Munin 2.0 - Performance - Architecture
Munin has a very simple architecture on the master :
munin-cron
is launched via cron every 5 minutes. Its only job is to launch in ordermunin-update
,munin-graph
,munin-html
&munin-limits
. Read More...Waiting for Munin 2.0 - Introduction
This is the first article of a series about the coming version 2.0 of Munin. Read More...
Don't use Excerpt... At least with DotClear.
DotClear automatically generates a
meta description
tag from the blog entry, but it doesn't take the excerpt into account. Read More...API Design: Avoid hidden costs of simple features
Programmers are usually like water : they always use the path of least resistance. Read More...
Avoid the Preprocessor : Use ''Compile-Time Polymorphism'' for Cross-platform Development
We'll take a very simple file I/O subsystem here as an example (
open
,close
). We'll also only take Linux and Windows, since that's usually the 2 most common platforms people want to develop for[1]. Read More...Native SSH transport for Munin
Actually the tunnel won't disappear, but they will be launched only when needed and, most importantly configured in
munin.conf
. Read More...Sed is much slower than Perl, or not...
I wanted to do some text replacement with a huge file (think ~18GiB), filled with huge lines (think ~2MiB per ligne)[1]. Read More...
Synchronize clock between hosts with SSH
NTP is very handy for server clock synchronisation, but it can be cumbersome to deploy. Read More...
Overloading a method is hard : a common pitfall
As I said in my equality article, overloading in Java[1] is resolved by the static type of the argument, not the run-time type. Read More...
Free Exception lunch : Use unchecked exceptions, but still announce which ones you might throw.
In a previous article I choosed my side : Unchecked Exceptions are much simpler to use. Read More...
Databases: Efficient Case-insensitive searches with Function-based Indexing
Case-insensitive search is sometimes very useful, but a naive approach can be very harmful to your performance. Read More...
Databases: Better Defer Constraints than Avoid Them
Constraints are a very important tool in a programmer's belt. But they come with a price, which can usually be mitigated simply. Read More...
Equality in Java is a Hot Topic, but a Hazardous one.
It seems that comparing two objects isn't as a simple task to do as it seems at first. Read More...
Synthetic Style for Blog Posts : Presentation Style Blogging
Blogging has become so mainstream it is fading away to more modern media, not with some drawbacks. With some enhancements, we can have the best of both worlds. Read More...
Compare Efficiently in Java : Embrace Smart Comparison
Bill the Lizard shows us a nice trick to avoid this NPE when used with string literals : call the method on the string literal. It's possible because it's also an object, and cannot be
null
. Read More...Are Excerpts a Good Thing ?
One thing I'm really wondering is :
Should I use excerpts
? Read More...Databases: Efficient Denormalization with Views
On the other side, to denormalize is sometimes seen as a way to : Read More...
Surrogate Keys : Globally Unique, Application Unique or Type Unique ?
Type unique : One sequence per table
The most common idiom out there. Just define a surrogate key per table, usually done via an
auto_increment
field,serial
field or asequence
per table. Read More...Immutability of an URL
In the pure spirit of Data is King I think that URL should never change. Even the W3C agrees with their Cool URIs don't change article. Read More...
Bringing C++ Const to Java
In Java, the commonly accepted way is to use the
final
keyword. But it has a major drawback : the object cannot be redefined, but can be modified by calling mutable members. You have to convert it to an immutable type. This is a simple task, but radically different ways exists. Read More...Checked or Unchecked Exceptions for Legacy Code ?
In theory checked exceptions are quite nice since the called code can communicate with it's caller when something unexpected happened. Read More...
Email Ping to Comments Reply on Blogs
As a blog writer I can receive the comments written on my blog via email. Read More...
Should The URL Include a Date, or Not ?
A common issue is that a blog entry takes time to be written, refined and then published. Therefore the date contained in the URL isn't the publication time. But since the publication time is the time the entry is created in the point of view of the public the date in the URL conveys only little meaning, just the time is took to create it. Read More...
Databases: Partial Indexing
Let's take the table that contains orders that we created in my previous post to show you some examples. Read More...
Databases: Version History
One concept gaining huge momentum lately is file versionning (mostly Git and Subversion). It is quite interesting to track the evolution of the data contained in the files, and not only the last time the file was updated. Read More...
A Simple Dns Server for a SOHO Network
I'm in search of a very simple DNS Server for a small network. It should be : Read More...
Databases: Meta-Data (ctime & mtime)
Having this, knowing the last modification of an item is as easy as querying this extra information that is updated automatically by the system. Read More...
A Poor Man's Munin Node to Monitor "Hostile" UNIX Servers
Munin is a nice monitoring system. Simple but quite effective. It's main selling point is the UNIX-esque simplicity of the architecture. You can just create a new plugin in a matter of minutes to monitor whatever you can imagine. Read More...
Daisy Chain Setters and Handle Optional Parameters Effectively
The Pure RAII way
You use many different constructor signatures. It's quite suboptimal if you have many parameters that have nothing in common except their type : you have to use the infamous null, or have a special value that conveys a not specified meaning. Read More...
RAII in Java to clean your code
RAII is a very common idiom in C++ and some other languages that don't have an integrated garbage collection management. Read More...
Why Negative comments are better than positive ones
Why Negative comments are better than positive ones If you are reading this blog and thinking
Hey ! What a He's just talking nonsense...
please don't walk away in horror. It would be very much appreciated if you drop me a comment about what is wrong in my post instead. I actually prefer to have negative comments than positive ones... at least when they are well argumented. Read More...Speed Up OpenOffice with LeapHeap
Using a new heap manager like Leap Heap under windows takes OpenOffice to blazing speeds. Tried the same with FireFox with the same conclusions. Read More...
A Little History of PWKF
It all began with a scratching need as I just felt that workflows (mostly BPM engines to be more precise) were the way to do many things in IT of the future. There are even many workflows out here already. My main feeling was that they put too much emphasis on how much of the standard they support, mostly in order to be "Entreprise Grade". Read More...
Use Immutable Objects to Avoid Synchronisation
With the future and its multiple core environnements as stated in a previous post about workflows, efficient locking will be more and more an issue. Read More...
Keep your caches coherent : Scope them !
You can mostly have these kind of scoping : Read More...
Clean-Up Your Code and Boost Your Google Ranking at the Same Time : Post-process Your Links
The search engine ranking of a web site is very important nowadays. As usually every optimisation means an complexification of the code, many developpers just pay that price. It's mostly paid with a javascriptification of the links that we don't want to be followed, and javascriptification of functional dialog popups. Read More...
Convert your Log Files into Gold
Log files are a necessary evil on a live system. A few rules can transform your log files from a useless heap of textfiles to a gold mine. Read More...
Are Workflows the Future of IT Computing ?
We are about to change from a "CPU power is cheap"-paradigm to a "CPU are cheap"-one. Everyone knows now that the 10Ghz barrier will not be that easily broken like said Herb Sutter in his famous The Free Lunch Is Over DDJ article. Read More...
Should SQL die, and can it ?
I just draw a comparison of the data language and the general languages : Read More...
Avoid the runtime penaly of Singletons
A common way to do the Singleton pattern involves a
getInstance()
method which does a runtime test like this : Read More...Inheritance of a public method considered harmful
I'm always wondering why all textbooks and reference material on the web always describe inheritance with the same kind of example : Read More...
First (Real) Post
This is my first attempt at making a live blog. It should have been a way of expressing my progress of one of my pet project : Personal Workflow. Read More...
subscribe via RSS