Skip navigation.


New (best) laptop ever...

I was suddenly without a laptop... so a new one was needed.

I had had a ASUS Zenbook UX330, but four years had passed the quad core, 1920x1080 resolution, 4 GB of RAM, 256 GB of SATA III SSD -- time for upgrade!

After much deliberation, I picked up the ASUS UX501VW; 4k touch display (3840x2160), eight cores, 16 GB of RAM, 512 GB of NVMe SSD.

My main criteria was:
- Huge resolution (I'm nearsighted, so I can see clearly without glasses), but I like lots of landscape
- Lots of CPU (I code in Scala or C++ with threads -- so cores scale better than faster speed)

SPL, new generation compiler, intro

Glassbeam SPL Semiotic Parsing Language language is basically ETL
(Extract Transform Load) on steroids.

Not only does define ETL with multiple patterns to multiple tables, but
it also defines the searchability, aggregation, labels along with almost
every aspect of the user interfaces for dashboards, thresholds and graphs.

SPL is based on dividing logs into logical namespaces, parsing them into
tables using icons (which define what type of pattern should be used;

Debugging vs. logging

I, personally, consider the use of debuggers, with breakpoints and stepping through individual statements to be very much a waste of time... especially as languages have evolved to have expect/require, and even a drop into a REPL.

To borrow a quote of a quote from Log4J (or Log4cpp):

As Brian W. Kernighan and Rob Pike put it in their truly excellent book "The Practice of Programming"


In addition to my blog, there are a two other sites that may be of professional interest.

To Be Or Not To Be

I find it interesting, that many people "need" to put me in a box called CTO or VPEng.

Reminds me of [ancient] Mork and Mindy, where a psychologist got miffed, when Mork successfully stuck a round peg in a square hole... ("how did he do it?" "I don't care... he ruined by block test")

  • A CTO dreams up technologies, solutions, has little constraints
  • A VPEng deals with processes, Quality, releases, schedules, mentoring
  • An Architect Designs systems (the more systems you know, the more choices for "the" right technology you have)

Mailbox conversion

Converting from uw-mailboxes (mbx) to Unix format (dovecot)

It took me by surprise how the mailbox formats had changed, when I switched to Dovecot which is the best IMAP/POP3 mail program, in my opinion. It handles large (enormous) mailboxes with many (hundreds of) users. Caching makes things go fast again.

Here is a simple bash utility, to take all users, and convert all mailboxes & folders.

cd /home
for u in *
if [ -d /home/$u/Mail ]; then
echo "User: $u"
cd /home/$u/Mail

Tools: What file system?

On Linux, you have a plethora of File Systems available.

Recently I was testing databases (MySQL, MariaDB) especially with ThreadPool against a Violin Flash Memory Array, and I forgot what file system the LUN was mounted (and formatted) as.

There are two ways to find out:

  • df -T (show mounted life systems, along with the FS type)
  • file -s /dev/xxx (show more details about a FS node)

Net tools

A set of internet tools, is available at

  • Traceroute
  • Whois & JWhois
  • NSLookup
  • Ping
  • DNSWalk
  • NetStat
  • ENUM ( phone number lookup)

More to come, as (if/when) I get time -- suggestions welcome

Weather station

I wanted to add a weather station to my home automation system for a number of reasons...

  • watering lawn (temperature, season, moisture, dew point)
  • weather (temperature, chance of rain)
  • historical (collect data over years)

In 2006, I bought the weather station WS2300 and integrated it in a number of ways.

  • I have a sizable MySQL database, so using the mysql2300 module, I stick weather data into the database every 10 minutes

Water the lawn if temperature exceeded 80 degrees

I read somewhere that you should do extra watering of lawn (after sunset), if the temperature exceeded 80° F during the day.

So, a really quick hack works like this:

A bash script

TEMP="`/usr/bin/mysql -ss open2300 -e \"SELECT FLOOR(MAX(temp_out)) FROM weather GROUP BY (rec_date) ORDER BY rec_date DESC LIMIT 1;\"`"
if [ "$TEMP" -ge 80 ]; then
/root/water2.exp 120 1
/root/water3.exp 120 1

Syndicate content