Merging modern software development with electrons and metal

Random header image... Refresh for more!

Packt Publishing’s Yearly $5 e-book sale

Packt Publishing is having their annual $5 e-book sale, from now until….hmm, I’m not sure when.  For me, it’s a bit like going to Daiso:  hey, it’s cheap, so let’s get this, and this, and….what, I spent that much!  In my case, I just spent $50 for 10 e-books on a variety of topics.  All e-books are available in PDF; many are also available, for no additional charge, in ePub, Mobi, and Kindle formats.

Packt’s books are primarily oriented towards software developers and IT.  I recommend browsing the table of contents and checking Amazon for reviews before buying; I’d say their quality is more uneven than another favorite of mine, Manning.

Some notes of what they have that I’m interested in:

  • Lots and lots of books on Python and related topics such as SciPy.
  • A good selection of maker/hobby/embedded books on the BeagleBone, Raspberry Pi, Arduino, OpenCV, ROS (Robotic Operating System) and such.
  • Some interesting .NET books on C#, WCF, and such.


December 16, 2016   No Comments

Blog Notes: Slow Progress, Trac, and Svn

My blog improvement project is still going, just very slowly.  I have done more research on trac, Redmine, gitlab, and such, and after some thought I’ve decided to do the following:

  • Migrate my trac site to Redmine.
  • Create an account at gitlab and move my svn projects to gitlab.
  • I will also update my WordPress installation, including fixing issues such as extra characters all over the place on old posts.

Some notes on these choices:

  • I’m using Redmine to replace trac because it seems to have better import abilities, and is much easier to install on Webfaction (my hosting provider) than gitlab.  Also, gitlab can use a lot of resources.  Redmine also looks like a better match for my wiki style.
  • I want to move from subversion to a distributed version control system.  Although there are advantages to systems such as mercurial, git has by far the largest mind-share and support.
  • I like the fact that gitlab supports both hosted (for here) and local (for work) servers, unlike alternatives such as github.
  • Howerver, projects on github seem to be more visible and more easily found.
  • Finally, if I run into some big road-blocks, I might change my mind.

November 28, 2016   No Comments

Blog Notes: Why look at trac alternatives?

I’ve been using trac for about a decade, and overall it’s worked well.  But I have found some annoyances over the years, such as:

  1. I have found it difficult to install, often requiring some searching for answers.
  2. I have found that upgrading to a new version can be an exciting adventure (but not an easy one).
  3. I have found migrating a trac installation to a new server to be difficult.
  4. I feel that trac development has been slow, and the trac interface has not kept up with recent advances in web interfaces.

Since my current trac installation isn’t perfect on 64-bit Linux, I will have to upgrade trac yet again or switch to something else.

If I switch to something else, it will be similar project management software with a wiki and such, because I will switch both here and at work.  Another requirement is that I need to be able to easily migrate my trac wiki to a new system, which also rules out most wikis.

I have been investigating Redmine and Gitlab.  Redmine is the most likely choice, but I need to do some more research and actually play a bit with both.  Another similar, highly regarded, project is Phabricator, but it doesn’t appear to have good support for importing trac projects yet.

November 4, 2016   No Comments

Blog Notes: Purpose of Trac Wiki Server

Since I already have this main WordPress site, why do I have a trac site too?  It’s because I’ve found that trac works better for some of the things I like to do.

Let’s take a look at where some of my content fits best:

  • Typical blog posts, which describe what I am doing (like this one).  These are a perfect fit for WordPress.
  • A series of related blog posts.  I could do this on trac (by continually updating the wiki), but WordPress feels like a better fit.
  • Directories, such as my piezo motor page or my MCAD software page.  I’ve tried both WordPress pages and trac wiki pages; over time, I’ve decided I prefer these topics on trac.
  • Reference information on topics such as my motors and my cabling standards.  These fit trac best, with its easy hyperlinking and table support.
  • Repository viewing – only trac does this well, although I haven’t made much use of it (yet….)
  • Bug tracking / project management – I haven’t used this yet, but this is where trac shines.

Why use trac instead of a dedicated wiki?  Well, I originally picked trac for use at work, and since I knew it, it made sense to use it here.  Also, I wasn’t expecting to use the wiki as much as I have.

November 3, 2016   No Comments

Summer is over, and so is my blogging vacation

For a variety of reasons, I’ve taken a break from blogging over the summer.  Now that it’s fall, it’s time to get back.

My plan is to concentrate first on improving the site a bit, including posting updates on my progress, along with some normal posts.  For example, I need to look at the theme which hasn’t changed in a long time, I might switch to a secure website (https) now that’s more affordable, and I’ll probably replace subversion with git (possibly hosted somewhere else such as gitlab).

I’ll also try to get back to regularly posting notes and micro-reviews on Instagram (mostly stationery related, but some automation tools, too).

But my first priority is to update my wiki, most likely moving from trac to Redmine.  I feel that trac made a lot of sense which I choose it eons ago, but it’s development has been glacial and I’ve found it’s hard to update or move.

I will do my best to provide weekly updates on my progress in modernizing Factory Software Blog.

October 6, 2016   No Comments

Blog Notes – July 2016

My apologies for not posting much – and it might continue for another month or two.

Partly I think I might be a bit burned out; I haven’t felt excited about blogging recently, so a little summer break will help.

Also, as I’ve said before, I’ve been pretty busy.  On the industrial side, I’m doing some research on PLCs (which will hopefully lead to some blog posts) and I’ve been playing with some new connectors because they’re interesting, I might use them at work, and I might write about them here.

July 21, 2016   No Comments

Factory Software Blog Is Back!

My apologies for the down time – I did a transition from 32-bit to 64-bit hosting, which screwed up WordPress.  I should’ve been better prepared, but I’ve never had an issue with WordPress before, so given my inexperience in WordPress maintenance plus my normal lack of time, it’s taken a while and some learning to get things back.

I’m still not sure everything is perfect on this site, plus it could use some more updates, so my plan is to check over everything and make some more improvements before getting back to regular (or semi-regular) new blog posts.  Update yes, I have some work to do — none of the links to older blog posts work.  I’ll try to fix this within a day or two.

Also, the trac site has some issues with browsing the subversion repository, and needs some updates.

6/27/2016 – links to older blog posts now work.  There are still some issues to fix, such as extra characters.

June 21, 2016   No Comments

The End of WiMax: What I Did

Since Sprint turned off WiMax last November, I had to make a change.  LTE was one choice.  I’ve done some LTE testing; with newer MiFi units such as the ZTE Z915 device it can be faster than DSL with excellent voice quality for VoIP.

But LTE performance is still much more variable than DSL or Cable Internet, while the cost is comparable to DSL/Cable, and more than WiMax.  With WiMax, I could go cheap, fast, and limited (10G for ~$20/month) with FreedomPop or cheap, slow, and unlimited with Clear (~$35/month).  Average LTE rates are around $40/month for 5GB at decent speeds.

My choice is’s PHLO+, which is around $51-$55/month (including all the annoying taxes) for unlimited DSL as fast as you can get, and an analog phone line (I didn’t want the analog phone line, because it’s the reason for all the taxes, but I didn’t have a choice).  It is very similar to’s Fusion service, but since I had already had good experiences with LMI as a previous DSL customer I went with LMI.

I also liked that LMI was open to bringing or buying your own modem, while Sonic emphasizes rental.  So after discussing which modems LMI preferred, I bought a Smart RG SR510N for ~$20 from eBay.  The Smart RG  has worked perfectly so far.  I highly recommend both companies; Sonic does have its advantages, such as more service options (FTTN, FTTH).

My peak speeds are about 18Mbps down and 1.25Mbps or so up using my favorite speed test from DSLReports.

Since PHLO+ comes with a full featured POTS phone line, I bought a ObiLine for my Obi 202.  Some people complain about echoing on the ObiLine; I have noticed occasional echoing but overall the quality has been acceptable.  However, I found I didn’t like how it handles incoming calls forwarded from Google Voice.  (To be fair, I haven’t tried much troubleshooting on these issues, but since I’m happy with my setup, that’s a low priority).

Some other service changes from my last update:

  • I dropped Anveo.  Anveo still has excellent rates for E911 service and unlimited person DID (incoming phone numbers), but I wanted CNAM and didn’t care about Anveo’s features such as advanced call flow.
  • I ported the Anveo number to, which was quick, easy, and free.  I’m not using that number a lot, but I value it so it’s a good match for with their new usage restrictions (but since is free, no complaints from me).
  • I dropped VestaLink after my contract ran out.  VL did work well for me, and since they offered a great deal for a 2-year pre-pay I thought about renewing, but I don’t need it now, and it’s hard to commit to 2 years to a company that isn’t actively looking for new customers.
  • I added CallCentric’s free New York DID, which includes CNAM (Caller ID name lookup).  It’s working well so far, and I’m fine with paying $1.50/month to CC for E911 service.
  • I played around a bit with; right now I’m not actively using it, but there’s a good chance I will in the future.  I also thought about trying out CircleNet, but decided against it because they don’t offer California DIDs.

So my current Obi 202 setup is:

  • Callcentric DID for primary incoming calls.  Both Google Voice and forward to CallCentric, which provides CNAM.
  • Google Voice is the primary line for outgoing calls.
  • Localphone is the backup line for outgoing calls (so I have two outgoing lines).
  • The Obiline (LMI analog line) is used for 911, and backup.
  • One Service Provider is currently empty; I might put back in here.

The system is working well enough, but my “I’ll do it someday list” includes:

  • Different ring tones for different incoming lines.
  • Automatic switch over (ring on one phone first, switch to second if first line is busy).
  • Maybe add a PBX such as Asterisk.

I know it’s not that hard to do these things, but they just aren’t a high priority.


April 29, 2016   3 Comments

Reactive Reading

I’ve managed to do a bit of professional reading in the recent past, from process to PLC to mind-blowingly functional.

Business Process Books

I read one business book, Profit Beyond Measure by Johnson and Broms.  They use the Toyota Production System and Scania’s modular design process to examine how to manage by means (MBM), instead of manage by results (MBR).

In MBR, management sets financial targets such as profit margins, sales level, or market share.  In the MBM approach, management focuses on the process (how) the company achieves its result, for example, how work flows through from customer order to customer delivery (and payment!).

Three Fun, Mind Blowing MEAPs

I skimmed three MEAPs.  A MEAP means you get to download and read the book while it is being written.  Since I still like dead tree books, I paid a little bit extra so when the books are finished, I will get real books hot off the presses.  I thought all three books were good, maybe excellent.  My selections were:

  • Grokking Functional Programming (Grokking FP) by Aslam Kahn is an introductory book on functional programming.  The goal is to introduce the fundamentals of functional programming in an easy manner, without any scary mathematics, and then to get you to truly understand (“grok”) how to approach programming challenges in the functional way.  The book is filled with examples and exercises, since you don’t really understand a method until you do it yourself.
  • Functional Reactive Programming (FRP) by Blackheath and Jones.  FRP uses cells (representing values over time) and streams (actions/events over time) to handle dependencies.  Since you declare what depends on what, when something happens (such as a new event), the FRP system knows how to update everything that depends on that change in the proper order.  Think of how a spreadsheet updates itself when you change a value.  FRP is a good match for event-based systems such as GUIs, but not so good when you need actions to happen in a predictable sequence (especially hard real time systems).
  • Reactive Extensions In Action by Tamir Dresher.  Reaction Extensions (Rx) is described as “observables + LINQ + schedulers” and has many (but not all) of the features of a Functional Reactive Programming library.  Originally written in .NET by Microsoft, Rx has been ported to at least 13 languages (including JavaScript, C++, Ruby, and Python) and is used extensively outside of Microsoft.

I found FRP to be very interesting, but I don’t see an immediate need for it right now.

I do plan on going back through Grokking FP and doing all examples because although I am somewhat familiar with a lot of functional ideas, I do not yet think in functional way — I haven’t grokked it yet.

I am also planning on going through Rx In Action in depth, because I think it may be a good way to re-factor one of my programs at work that has significant event handling.  I’m interested in Rx because I like its:

  1. Support for handling events as streams (like FRP)
  2. Support for event timeouts
  3. Support for propagating errors that occur in event handlers
  4. .NET support (I like to program in C#)
  5. Better support for sequences (which I need)
  6. Concurrency control with schedulers
  7. The ReactiveUI GUI library

Functional programming is hot right now because some of its features (such as immutable types) can make parallel programming significantly easier.  I do think automation programmers should learn it (I can wholeheartedly recommend Grokking FP) because it will truly expand your mind, and FP is becoming more popular.

Programmable Logic Controller (PLC) News

On the PLC side, I have decided to skim through Programmable Logic Controllers: An Emphasis On Design And Application by Kelvin Erickson.  I started trying to read it thoroughly, but haven’t made much progress so I am changing my approach to skimming.

Based on a reader recommendation, I just bought Progammable Logic Controllers: A Practical Approach to IEC 61131-3 Using CoDeSys by Dag Hanssen.  I plan on skimming it next, and then will share my findings.

Both appear to be well written, both are a bit pricey, both were written by professors, and both are introductory books.

The contrast with mainstream programming books is fun:

  • My three Manning books (print and ebook) cost the same as PLCs by Hanssen.  I paid $70 to Manning with a 50% discount (you can get that by signing up with Manning and being patient).  I paid $70 for PLCs by Hanssen (new, with $9 Alibris discount; list price is $120), and $50 for PLCs by Erickson (first edition, used; list price for current version (Third Edition) is $85).
  • The MEAPs are well written, advanced books covering cutting edge topics.  The PLC books are good, too, but they are introductory textbooks.
  • The MEAPs were written by developers who use these tools in their day to day jobs.  The PLC books were written by professors.

So I haven’t found an advanced PLC programming book yet, however, there is good news: Frank Lamb, proprietor of the Automation Primer blog and author of Industrial Automation: Hands On, has announced that he has started writing one.

April 19, 2016   No Comments

SanCloud BeagleBone Enhanced Indiegogo Campaign

If you’re a BeagleBone fan, then the SanCloud BeagleBone Enhanced campaign is worth considering.  Like many BeagleBone related crowd funding campaigns, it’s not a huge success (so far it has 46 sponsors), but the prices are reasonable.  All the SanCloud BB-E models have 1GB RAM (double the BBB’s 512MB), 1G Ethernet (instead of 100M), and additional USB ports.  Some versions add more sensors and a bit of NOR flash.

For example, the BeagleBone Enhanced Light early bird is $52 + shipping ($7 to USA), which is reasonable considering that a stock BeagleBone Black is $55.  I have already committed, since I have been wanting a BeagleBone with 1G Ethernet for a long time.

As a side note, I’m not sure why BeagleBone crowd funding has a hard time.  Maybe it’s because most BeagleBone folks have not mastered the art of hyperbole, which seems necessary on Kickstarter and Indiegogo these days.  Probably it’s partly because the very hardware oriented Beagle universe is smaller than the simpler (and cheaper) Arduino or more media-centric Pi ecosystems.  In any case, I hope SanCloud can become a permanent part of the BeagleBone landscape, along with the BeagleBone Green and such.

March 31, 2016   No Comments