Posts in the “technology” category

Why companies are leaving the Cloud

Here are two good quotes from this article, Why companies are leaving the Cloud:

“Another significant driver was the failure to meet internal expectations, at 24%.‘Unmet expectations’ describes most technology trends I’ve been involved with, including client/server, enterprise application integration, service-oriented architecture. and now cloud.

Those surveyed also cited unexpected costs, performance issues, compatibility problems, and service downtime. The most common motivator for repatriation I’ve been seeing is cost. In the survey, more than 43% of IT leaders found that moving applications and data from on-premises to the cloud was more expensive than expected.”

How to put multiple lines in a Markdown table cell (multiline table)

In this short article I show a solution for how to display multiple lines of text in a Markdown table cell.

Admittedly this is an ugly solution, but to create an HTML table in Markdown where a cell in the table has multiple lines — i.e., a multiline cell — use the HTML <br> tag to make the line display as multiple lines, like this:

A large collection of Gnuplot examples

I needed to use Gnuplot a little bit over the last few days, mostly to create 2D line charts, and these are my brief notes on how to get started with Gnuplot. If you haven’t used it before, it’s a pretty amazing tool.

Jumping right in ...

Installing gnuplot

Use MacPorts or Homebrew to install Gnuplot on Mac OS X systems:

port install gnuplot
brew install gnuplot

Sample data files

My examples use the following 2-column and 4-column data files:

[toc hidden:1]

Radio Pi (formerly “Al Radio”)

I’ll write more about this as time goes on, but I’ve finished the first round of software (and hardware) development on my “Radio Pi” project (which, thanks to a friend, I now refer to as my “RadioPi” system). This project lets me play local FM radio stations, online radio streams, recorded radio streams, and podcasts, all from a little Raspberry Pi (RPI) computing system.


First, here’s a short video of my RPI Radio in action:

[toc hidden:1]

ImageMagick: How to create a photo montage

Recently, I was looking for an easy way to create a montage of photos (or collage), and after a little research and testing I found that this ImageMagick montage works:

$ montage 1.jpg 2.jpg 3.jpg 4.jpg -geometry '400x400+2+2' -background '#333333' output_file.jpg

For more help on those montage command options, see this link or this link.

How to convert Docbook to AsciiDoc

If you ever need to convert Docbook to AsciiDoc, this Pandoc command seems to work well:

pandoc --wrap=none -f docbook -t asciidoc \
       DocbookFile.xml > AsciiDocFile.adoc

As I have found out in the long run, if you want to edit the resulting LaTeX file, the wrap option is very helpful.

Facebook deleted the “Lists (of friends)” link

When I use Facebook, I like to use lists to group people that I know, friends, relatives, people from different states, etc. But on Thanksgiving of 2019, or maybe the day before, Facebook deleted the “Lists” link from their web app. It used to be with this group of links. I don’t use their app on my phone, so it’s pretty crazy that they removed this.

So, dear friends, if I don’t see and like your stuff, it’s not my fault. I’m sure not going to type in the name of each friend to see if they posted anything.

Update: You can find the Facebook “friends list/groups” URL here:

Notes on how to transfer large music and movie files to an Amazon Kindle Fire HD 10 microSD card

These are some very brief notes on what I just did to get a 500GB microSD card to work with an Amazon Kindle Fire 10, so that I can store some very large files on that microSD card inside the Kindle Fire 10. The notes are cryptic, but hopefully they’ll make sense to me in the future, and may make sense to you as well.

How to delete individual pages from your Firefox browser history

This website used to be based on Drupal, and as a result I have a bunch of URLs like this in my Firefox browser history:


Since this blog is no longer based on Drupal, having those pages in my history is annoying, so I wanted to delete those individual URLs from my Firefox history.

Deleting individual URLs from my Firefox history

The steps to delete individual pages from your Firefox history aren’t obvious, but they aren’t too hard either:

Bazel docs style guide “Defining Principles”

These are the “Defining Principles” for the Bazel documentation, from the Bazel docs style guide:

  • Concise. Use as few words as possible.
  • Clear. Use plain language. Write without jargon for a fifth-grade reading level.
  • Consistent. Use the same words or phrases for repeated concepts throughout the docs.
  • Correct. Write in a way where the content stays correct for as long as possible by avoiding time-based information and promises for the future.

As technical writing goes, those are some smart ideas. Some time after I created this website I learned, “Anything I write here I have to maintain,” and it turns out that’s a lot of work.

Getting started converting documents with Pandoc

I’m looking into producing my Scala/FP book as a PDF, and as part of that I have been looking into Pandoc. With the exception of converting HTML tables into other formats such as Markdown or LaTeX, Pandoc has been working well so far.

Here are a couple of Pandoc commands to show you how easy this is:

# create a pdf from a markdown doc
pandoc -s -o test1.pdf

# create an html doc from a markdown doc, long form
pandoc -f markdown -t html -s -o test1.html

# convert markdown to latex
pandoc -s -o test1.tex
pandoc -f markdown -t latex -s -o test1.tex

# read a markdown doc and print html to stdout
pandoc -s --to html

# convert a latex document to html
pandoc -s test.tex -o html

As a “note to self,” I confirmed that LaTeX to HTML approach in October, 2019. It creates a large, single-page HTML document. It’s not perfect, but it worked surprisingly well on a large LaTeX project.

As another note to self, this command helps a little bit with the Pandoc HTML to Markdown table conversion problem:

pandoc table.html --to=markdown_github -o

As a better note, both of these commands work when converting tables in ODT and DOCX files to Markdown:

pandoc Test.odt -t markdown-simple_tables-multiline_tables-grid_tables -o

pandoc Test.docx -t markdown-simple_tables-multiline_tables-grid_tables -o

I can confirm that those commands create pipe-delimited Markdown tables from ODT and DOCX input files.

For more information on Pandoc, see their getting started doc and user’s manual.

AsciiDoc FAQ: What is the AsciiDoc image syntax?

AsciiDoc FAQ: What is the AsciiDoc image syntax?

The AsciiDoc image syntax looks like this:

image:images/hello.png["Put the HTML ALT text here"]

This example assumes that you have a file named hello.png in a subdirectory named images. Here’s a more complete example that also shows an AsciiDoc image with a title/caption and HTML image “ALT” text:

.Put the title/caption text here
image::images/hello.png["Put the ALT text here"]

I suspect that how the caption and ALT text is rendered will depend on your tools/toolchain, but this is the way I use it.

VisiCalc was written in assembly language

If you think programming now is difficult, VisiCalc was written in assembly language for an Apple II. Here are a few words from this web page that describe this code:

“Each line represents no more than one CPU instruction. The poll_keyboard subroutine call was important. As Bob Frankston describes it: ‘There were no interrupts nor a clock [on the Apple II]. If the user typed a character before the keyboard input buffer was emptied it would be lost ... To avoid [losing characters when the user typed fast during a CPU-intensive operation] I polled the keyboard in the middle of potentially long loops — keyboard checks were strewn throughout the code.”

The code was written at night while dialed into a time-sharing system with only a keyboard and printer.

It’s almost all on your cellphone

Almost every product on this 1991 Radio Shack ad is now on your cellphone (sans the scanner and radar detector).