Compiling libcaca for Windows using Visual Studio 2012

As the authors describe it, “libcaca is a graphics library that outputs text instead of pixels, so that it can work on older video cards or text terminals“.

I’ve always been fascinated by console-based applications and the ingenuity that some programmers have demonstrated when trying to provide a usable and attractive UI through ASCII characters.

From file managers (such as Midnight Commander), MOD Trackers, graphing calculators, games to even video players. At “the time”, everything worked on a text-based console using simple ASCII characters and some very clever tricks.

Even I had to develop several console-based UIs in my days.

Unfortunately, I can’t find any those programs (nor their source code) but as soon as I do, I’ll post some screenshots here.

Those days are now over, but we can still get a nostalgia fix through a library known as “caca” (which happens to mean “shit” in Spanish).

VLC is among the few programs that still uses this library… just for the kicks of it. I guess because “they can” as there isn’t any useful need to use it. Or is it?

Scene from 2001 using libcaca as the video output in VLC

Scene from 2001 using libcaca as the video output in VLC

I just find it mesmerizing looking at a movie in text mode; it’s just mind-melting, if there is such a thing. […]

Building mazes and synchronizing threads

Maze Builder

A maze builder is a program that every newbie should try to code, right after learning about arrays, branches and loops. And if you want to visualize the maze, it is also a great project to practice how to draw and paint.

As I was learning VB.NET, this is one of the first projects I decided to attempt and it was a really fun experience. […]

KeyLaunch 3.0 or the awesomeness that never got released…

First, a little bit of history:

Once upon a time, in February 2002, I was watching my favorite geek show on my hacked Ultimate TV: The Screen Savers, when, all of a sudden I hear the words “never been done”. I immediately hit the Replay button on my remote keyboard to hear what was being talked about…

Leo was demonstrating a Mac OS X app that, using a very simple interface, was able to locate files on your Mac.
A simple searching application with a very unique implementation. An app launcher, as known by then.

The thing is that, contrary to how most app launchers worked back then, this one made searching programs and files in general extremely easy:

  • Hit a shortcut key to launch the finder
  • Type a couple of keywords
  • Select the desired file from a list of matches

Sounds familiar? Well, of course it does! It is the way Spotlight and the Start Menu work! Wait, that’s also how the dreaded Start Screen in Windows 8 works! […]

x8086NetEmu, an 8086 emulator written in VB.NET

x8086NetEmu Boots PC DOS 1.0

I remember the time I used to know the 8088/8086, inside out!
Heck! I new the 80286 inside out!

The first program (if you wanna call it that) I wrote was in a Casio Pocket Computer; I then moved to a TRS-80 and then a Commodore 64; later the 128, and then an XT, and even on an HP 28 and on a 48 and… well, you get the picture: I’m old.

The important thing here is that the Casio Pocket Computer had to be programmed using a minimalist version of Basic and, for the most part, it did the job. But not for me. I simply wanted to do things that its Basic implementation couldn’t do.

Then, I learned about a programming language known as “assembler” or “assembly“.

This coincided with me having the Commodore 64.
One of the first programs I wrote for the C64 was an “assembler interpreter” that substituted its default Basic-based one.
It was cool and it was a nice way to familiarize myself with all the “hidden secrets” (thanks to the Transactor Book of Bits and Pieces #1) the C64 had, without having to rely on a bunch of PEEKs and POKEs.

Several years later (in 1990, to be specific) I got my first “real” computer: an x286 /w 1MB of RAM and a 20MB hard disk.
One of a kind, by those days standards.

At that very same time I was taking a class in the university that required you to learn (on your own) x86 assembly language, so I did… and I loved it, and one of the things I loved the most is that the more assembly language you learn, the more you understand the inner-workings of the computer you’re working on.

<irrelevant to the article>


One day, in a laboratory for that class, the professor (who had a crush on my, then, girlfriend, today, wife) gave us the following assignment: to write a program (in assembly) that could multiply two numbers.
As he dismisses the class, calls me and tells me that, since I have some (apparent) experience I should do a program that calculates the factorial of any whole/positive number… up to ten.
Just to mess with him I wrote a program that could calculate the factorial of any whole/positive number as long as the machine had enough RAM to perform the computation.

Since that day, I started coding many programs in assembly language, most of them useless, others quite interesting and complex.

</irrelevant to the article>

I remember understanding everything about the 8086 — everything!
The CPU itself, the way memory worked, the latches used to transfer information, the PIC, the PIT, the hard disk controller… everything!

Fast forward a couple of decades…

And so I thought, about 4 years ago, that I could write an 8086 emulator.
This is a project I work on when I’m, well, bored… but honestly, I never thought it’d turn to be one of my greatest nightmares!

One of the most important motivations for this project was to:

  1. Satisfy my ego (knowing that I can code an emulator)
  2. Hopefully, help others (specially youngsters) better understand how computers work by providing some visual feedback representing the way all the components in a (8086) computer work

So, highly motivated (and even more naively) I started coding away… […]

Network Monitor 2.0

Over a year ago I created a small and simple Network Monitoring tool to compensate for the missing network activity icon in modern versions of Windows. Maybe it’s just me but I LIKE to know when there’s some network activity going on, without having to open the Task Manager.

Network Monitor

Network Monitor’s Activity Icon

I have updated it several times and post it the update as a new downloadable version in the original post. I believe the first version was 0.7 (or something like that) and the one available right now is 1.0.

Network Monitor Leds Mode

So today… I was kind of bored and decided to make some changes that I really wanted to implement for some time:

  • Fix a frigging start-up crash that would happen if the predefined network adapter no longer existed
  • Add more visual modes (for purely cosmetic reasons):
    • Line Graph
      Network Monitor Line Graph Mode
    • Solid Graph
      Network Monitor Filled Graph Mode
  • And, above everything else, fix the damn auto-scale functionality.

So, well, here it is. Version 2.0.

Here you can download the binary version (which requires the Microsoft .NET Framework 4 Client Profile):
Network Monitor for Windows (538 downloads)

And here you can download its source code as a Visual Studio 2012 project:
Network Monitor Source Code for Windows (584 downloads)

What other features would like to see implemented?