User Tools

Site Tools


Table of Contents

Jacob Christ





Jacob Christ is a product designer and proprietor of PONTECH is an exciting venture that is contributing to the open source hardware movement by creating unique products for industrial applications. Jacob has personal concern about creating sustainable and renewable manufacturing techniques and believes that by creating open platforms. Open platforms help reduce the obsolescence of a product by extending their useful life beyond the traditional life of a similarly proprietary device. The extended life comes by enabling individuals to re-purpose the device after its initial purpose has been exhausted or by allowing the product to be serviced after the original creators of the device have long since moved on.

Besides being the chief product advocate at PONTECH Jacob also adjunct faculty at Mt. San Antonio College where he teaches electronics and programming in the technology division.

Education and Credentials

Self (and sometimes externally) taught programmer that started dabbling in the art at the tender early age of ten years old. After a rough time in public education and being ejected from high school after his third freshman year Jacob went on to great success at Mt.San Antonio College studying electronics. Later transferring to Cal Poly Pomona where he studied Electrical Engineering then later switching to Computer Science.

My Major Life Events and Technology

  • 1971: March 21: DOB
  • 1977: Star Wars Major Theatrical Release, saw seven times (+ Stopped counting after 30+ viewings over life)
  • 197x: Discovered the pleasure of playing music
  • 1982: Discovered TRS-80, later that summer began programing in Microsoft Basic on an Atari 800
  • 1985: Failed attempt to understand assembly language of the 6502
  • 1987: Started learning C then later Pascal
  • 1988: Ejected from public education system mid way through 3rd freshman year of High School, enrolled at MtSAC Jr College later that year (fall semester)
  • 1989: Assembly language mastered on the 6502 processor
  • 1990: Assembly language mastered on the 6800 and Z80 processors
  • 1990: Regional, State (CA) and National Gold Medal Winner in Electronics Technology (Tulsa, Oklahoma)
  • 1991: Transfer to California State Polytechnic University, Pomona. Second week of first semester joined CaPSET (Cal Poly Solar Energy Team)
  • 1992: Travel to Japan to participate in Grand Solar Challenge in Noto (Major life altering experience, humbling)
  • 1992: First introduction to object based languages (C++ then ADA)
  • 1993: Electrical Student Leader on the Cal Poly Pomona Solar Car Team which set the world record for the worlds fasted two person vehicle to cross the Australian Desert. The Cal Poly Pomona student run team beat out such notable competitors as Nissan Motor Corporation and University of Michigan.
  • 1993: Pon Nonliboon (founder of PONTECH) joins CaPSET, later that year Jacob becomes employee #2 of PONTECH
  • 1993-1994: Worked briefly with Paul McCready and students of Marshall Middle School in Pomona, California on Hamster Powered Flight
  • 1994: First introduction to JAVA, lisp and prolog
  • 1996: launched
  • 1998: PONTECH has growing pains, Pon and others leave company to pursue other interests, Jacob retains PONTECH name, products and two consulting customers
  • 1999-2002: Spend some time learning about telecommunications at Ortel, er, Lucent, or was that Agere
  • 2000: (Date may be off) and feature article on Palm Pilot Robot created by ???? at Carnegie Mellon University
  • 2001: (Date may be off) Jacob Christ, Danial Mata and Fausto Rivera converge in Jacob's dorm room and is born
  • 2004-2007: Spend some time learning more about telecommunications and a lot about wafer fabrication at Xponent Photonics, Inc.
  • 2007-2008: Development of Ascent Wrist Mounted Vario / growth of PONTECH.
  • 2008-: Development of automation equipment for solid phase drug testing for SPE Ware, one of the products I was princeply involved in is described here ALD-2 Users Manual.
  • 2011-: Development of chipKIT embedded solutions. Including the PONTECH UAV100 and the PONTECH QuicK-240

Companies I've help found

Current Projects

  • Growing PONTECH
  • chipKIT products (UAV100, Quick-240)

A brief history of PONTECH

PONTECH was founded around 1992 by Pon Nonliboon. In 1993, Pon joins the Cal Poly Pomona Solar Energy Team (CaPSET). Jacob Christ also a member of CaPSET and Pon meet and later that year Jacob becomes employee #2 of PONTECH. Pon and Jacob design a few PONTECH products together including the SV200, SV203, STP100 and Glyph (with Dennis Walker also from CaPSET). During this time they also and engage in consulting working on projects some interesting project including the following:

RDMS (Remote Disconnect Management System) - off shore oil 
Slack controller laying cable on the ocean bottom - off shore oil
Dispensing control system (similar to a gas pump) - off shore oil

In 1998 PONTECH has growing pains, Pon and others leave company to pursue other interests, Jacob retains PONTECH name, products and two consulting customers.

Places To Visit (or have visited)

  • Tokyo, Japan (been there done that)
  • Noto, Japan (been there done that)
  • Adelaide, Australia (been there done that)
  • Darwin, Australia (been there done that)
  • Sydney, Australia (been there done that)
  • Mexico City D.F, Mexico (been there done that)
  • Bangkok, Thailand (been there done that)
  • Ayuthia, Thailand (Old capital of Siam, been there done that)
  • Kanchanaburi, Thailand (Bridge over river Kwai, Death Railroad, Erawan Waterfalls - been there done that)
  • Colmar, France
  • 37150 Luzillé, France
  • Ozarrete Forest, Spain
  • Barcelona, Spain
  • Rome, Italy
  • Rich Dad, Pour Dad (Richard Kiyosaki)
  • Rich Dad, Pour Dad's Business Quadrants (Richard Kiyosaki)
  • The E-Myth (Michael Gerber)
  • Good to Great: Why Some Companies Make the Leap… and Others Don't (Jim Collins)
  • The World is Flat (Thomas Freedman)
  • The Innovator's Dilemma (Clayton M. Christensen)
  • Crossing the Chasm (Geoffrey A. Moore)
  • The Clue Train Manifesto (Rick Levine, Christopher Locke, Doc Searls, and David Weinberger)
  • Out of Control (Kevin Kelly)
  • Only the Paranoid Survive (Andy Grove)
  • In the Plex (Levy)
  • iWoz (Wozniak)
  • Creativity, Inc. (Catmull)
  • Contagious: Why Things Catch On (Berger)
  • The Martian (Weir)
  • The Everything Store (Stone)
  • Hatching Twitter: A True Story of Money, Power, Friendship and Betrayal (Bilton)
  • The Vertical Farm (Despommier)
  • Makers (Anderson)
  • Public Parts (Jarvis)
  • What Would Google Do (Jarvis)
  • The Lean Startup (Ries)
  • Where Wizards Stay Up Late (Hafner, Lyon)
  • DNA (Berry, Watson)
  • The Alchemy of Air (Hager)
  • Republic, Lost (Lessig)
  • ENIAC (McCartney)
  • The Demon Under The Microscope (Hager)
  • Automate This (Steiner)
  • Steve Jobs (Isaacson)
  • What Technology Wants (Kelly)

If you want to understand me better read the following

  • Specifically read: Hackers (Steven Levy) but in general, read all of Steven Levy's work

Viewing List

Mostly on Netflix, some you can find on YouTUBE

  • A Crude Awakening
  • FUEL
  • Cadillac Dessert
  • Frontline: College. Inc.
  • Frontline: Ten Trillion and Counting

Reading List

  • Vicky King: How to write a screenplay in 21 days
  • Save the cat: The last book on writing screenplays you'll ever need

Things I want but don't want to make myself

  • 2010-09Jan-29: intelli-sense for Word (or word processing). I should be able to type “phil<space>” and philosophy is rendered on the page.
  • 2010-01Jan-20: git (or git like) contact repository that syncs with my cell phone (whom ever may make it)

Random Thoughts


The most interesting part of this idea is that it's illegal to fly UAV's in the U.S. and the hazard of mid air collision with (anything) could create a public outcry should this actually be attempted which would put the company in a difficult position. I suspect its a publicity stunt to get funding. The nice line of thought for this idea is that its quite audacious and quite viable. But to make it happen will require a lot of infrastructure to make it work. I had been thinking about a similar idea but for pizza delivery. To make lots of UAV's flown by different entities over any area would require flight plans. These flight plans could be registered with a database so to reserve UAV air space. When a vehicle is about to take off it could file its flight plan provided no other vehicles will be in its path during flight. If the vehicle has on board internet connectivity, the flight plan could be updated in real time should the vehicle decide it wants to go somewhere else (though it would have to only alter course to non-reserved air space). If the system worked smoothly, it could be used for commercial air craft as well, eliminating the need for air craft controllers, or for that matter pilots. I've been told that Boeing 747's pretty much can take off, fly the there course and land all on auto. The pilot is there to taxi.


On Tue, Mar 27, 2012 at 9:17 AM, Alireza Partovi wrote:

Hi Guys,

That is an interesting idea.

Best, Ali

Limited repeal of minimum wage, with emphasis on limited (2011-01Jan-09)

The idea: allow for 10-20% of a companies work force to have a very low minimum wage, say $2/hr, with the caveats that the particular employees must be provided with full coverage health care for their entire family. Additionally, they should receive compensation for a 40 hour week irregardless of hours worked and be entitled to holidays. Further, the positions must be in such that could only be filled by overseas workers. As economy recovers, the percentage of workers allowed with this status can slowly be reduced. The repeal would encourage companies to hire at a great discount while giving the low wage families an alternative to a higher salary with no health care. A side benefit is that it may encourage some companies to consider domestic production rather than foreign. Which would in turn reduce greenhouse gas emission by lowering fuel used to move good overseas.

Six Degrees of Kevin Bacon

Ever since hearing about the Six Degrees of Kevin Bacon (I'm three degrees myself) I have been fascinated with the idea, but recently I've had some interesting things occurred that are in hind site obvious to occur (but I guess not to me). I have some friend that have friend in common, one day I realized that two of these friends were in the room with me and had just met each other but neither realized that the reason they new me in the first place was that they had a friend in common. Visions of digraphs in my automatically rearranging came into existence.

(for the record, I'm three degrees from Kevin Bacon)

e-mail agents

(2010-04Apr-23) I recently discovered Hilary Mason and her talk on how to replace yourself with a very small shell script which has emphasis on using scripts for answering e-mails for commonly asked questions. This has lead me to a few thoughts on the subject.

  • If you are contemplating such an activity (using scripts to answer e-mails), it probably means that you have reached a critical point in your life where your time is more valuable to others than you wish it were or have yet to determine a way to monetize the problem so that supply and demand can kick in.
  • If you had a smart intelligent agent I could see it having conversations with your associates that are divergent from your actual life and when you synchronize with your associates in person you may find that your agent has made commitments for you that you were unaware of (hence the need for a really smart agent).

Our Brains Crave Knowledge

Many years ago (in my early to late teens), despite my early hatred of school I discovered that I loved learning. Further thinking on this led me to believe that I'm not alone, and that people in general crave new knowledge without even realizing it. The result is our general fascination with television and video games. Both provide immediate stimulation to our brains without (in most cases) substance that helps further our survival.

Our Brains Crave Orthogonal Knowledge


In computer science, it is my opinion that, it is generaly regarded among better computer scientists that computer languages that are orthogonal in nature, that is, look the same for different behaviors, are better than (or easier to use) than those that are not. Today while coding some stuff that is used by non-computer scientist I've been wrestling with an issue due to its lack of orthogonality. While doing this I had the insight that the reason it was bugging me was not that I wanted it to be orthogonal for the sake of be orthogonal but that if it was orthogonal that the non-computer scientist that would be using the program would find the program easier to use as well. This in turn made me realize that not only to our brains crave knowledge, but they crave orthogonal knowledge. It makes sense if you think about it, things that operate the same way are easer to deal with once one of those things has been mastered, hence the popularity of windowing GUI interfaces and the frustration with MS Windows every time Microsoft releases a new version that works differently than in the past. As I think on, orthogonality is all around us in the products we use and design, the first thing that comes to mind are the controls for an automobile. We already know that truck drivers and motor cyclists are required to have special licenses for these vehicles with specialized controls and challenges to operate. Imagine if each vendor had a different user interface for there automobile, it may require specialized licenses for each make and model of car sold. So if our brains crave this orthogonality and companies continue to patent GUI innovations they may be in essence hurting themselves by limiting the use of there innovation if every other program works differently but the same.

One World Networked Drive


This is an idea that has been festering in my head for about 17 years from my days of having to deal with 6GB of storage spread across 6 or more computers as a CAD admin and constantly dealing with missing files due to the vast amounts of storage we had (I personally have about 10TB of storage myself now on two computers). Recently, I've had clarity of vision on how to implement a partial solution to the problem, that is keeping track of ambiguous data without wasting storage capacity. The clarity came from learning and gawking over Linus Trovald's git version control system. My idea may not be unique and others may already be implementing such systems and I'm just not aware of it, but here here is my plan… The idea is to build a world network drive that stores users file by sha1 hash therefor keeping only a single copy of any single uploaded file that may be in the possession of millions. Stage one would run on a single server, stage two would use torrents to allow you retrieve your file from the world network. Stage three would be the appearance that all your terabytes of files are on your local machine by caching your most frequently accessed 500GB or so, maybe even caching the first 1-10% of less frequently use mp3 files so that you can start listening right away while the remainder is downloaded over a slower network connection. This would allow 500GB of mp3 storage to appear as 5-50TB of local storage as long as the network is there to retrieve missing portions. Sha's could be calculated locally with disambiguating numbers as well so that if your file is already in the cloud then there is no need to even upload it, it would be just added to your list of files (this could pose security issue by allowing someone to spoof a sha to get access to your cloud data. Just wanted to put the idea down in case I don't have time to implement it, maybe someone else could benefit from the vision.

On the starting point of a computer program


Although it is generally the case (especially with PC software), [computer] programs do not have to always start at the same point.

An idea for


Crowd sourced link correction

Hilary (Mason),

I had an idea for today. Maybe you've already thought of it or have one up'ed my idea and have something in the works. I'm sharing it because I don't have time to implement it and its inline with what already has working.

On more than one occasion I've clicked a link in a e-book or even on a web page that take you to a like that has been moved, taken down or generally changed from the original link intent.

Wouldn't it be nice if crowd sourcing could help fix the broken link. Say you come across the following link:

but the server or file is missing. The users of the link could log into and indicate this is the case and offer alternatives to the missing url. The next users that come along instead of being redirected are presented with a page that has a link to the original link as intended and also alternatives that were added by others.



Sometimes I find it hard to classify (rightfully so) notes about an application under a specific operating system due to programs increasingly running cross platform. So I'm creating this section for notes on just such applications.


sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts


Resizing a VirtualBox Hard Disk

VBoxManage clonehd --existing oldhd.vdi newhd.vdi

Linux / Ubuntu Help

Useful information for Linux / Ubuntu users, especially myself

This is a list of applications I install in Linux upon bringing up a new system. One day I'll make my own distro so that I don't have to worry about this.

Desktop Applications

  • Blender
  • Inkscape

Developer Tools

  • git, as in you stupid
  • QT Develop

Command Line Programs

Here is a list of some of the most useful Unix Command Line Programs

  • man - manual pages → documentation for commands you know
  • who - show who is logged on
  • pwd - present working directory
  • ls - list files
  • df - disk filesystem space usage
  • du - disk usage for files or directories
  • touch - update file time/date stamp
  • ps - show list of running processes
  • mkdir - make directory
  • rmdir - make directory
  • cal - calender
  • cat - concatenate two files
  • cd - change directory
  • chmod - change mode (access permissions of a file / directory)
  • chown - change owner and group of a file (access permissions of a file / directory)
  • cp - copy a file
  • mv - move a file
  • rm - remove a file
  • date - date
  • find - find files on disk
  • jobs - show jobs running in current session
  • tee - tee a pipe
  • less and more
  • lpr and lp
  • kill
  • set
  • vi
  • top
  • nmap -sP 192.168.168.* - scan open ip address on network
  • nmap -sS 192.168.168.* - scan open ip address on network (and show open ports)

Files & Locations

Useful Files and there locations

  • /etc/hostname
  • /etc/fstab

Setting up a new file / web server

  • Setup GRUB for dual boot, or whatever is needed.
  • Setup ZFS mirror
  • Install OpenSSH Server
  • Install mysql server
  • Install mysql client
  • Install / Setup Samba
  • Change from dynamic IP to static IP
  • Migrate user accounts UID/GID
  • Setup Apache2
  • Move Files
  • Adjust Backup Scripts to point to new server

Static IP Address in Ubuntu


  • Set static IP (, network mask ( and gateway (
  • Point gateway for DNS server (

ssh / ssl

Install Server on Ubuntu

sudo apt-get install openssh-server

Configuration Guide

How to put your public key on a remote machine so you don't need to type a password to log in

Creating the key (local machine, windows using putty)

  • Download PuttyGen
  • Run PuttyGen then click Generate and wiggle the mouse
  • Save the private and public keys locally
  • (skip if loaded) Open PuttyGen
  • (skip if loaded) Click Load
  • (skip if loaded) Load your private key
  • Go to Conversions→Export OpenSSH and export your private key
  • Copy your private key to ~/.ssh/id_dsa (or id_rsa) on a linux box.
  • Create the RFC 4716 version of the public key using ssh-keygen

ssh-keygen -e -f ~/.ssh/id_dsa > ~/.ssh/

  • Convert the RFC 4716 version of the public key to the OpenSSH format:

ssh-keygen -i -f ~/.ssh/ > ~/.ssh/

  • Push the key to the server using

ssh-copy-id -i username@computername

Creating the key (local machine, linux)

  • ssh-keygen -t rsa (default file name / path, no pass phrase) / ALT: ssh-keygen -f ~/.ssh/id_rsa -q -P “”
  • in ~/.ssh make sure there is priave key: id_rsa
  • in ~/.ssh make sure there is public key:

Put your public key on a remote machine

  • ssh-copy-id -i username@computername

How to make SSL certificates for Apache2 that do not prompt at start up of httpd

openssl genrsa -des3 -rand file1:file1 -out server.key 1024

openssl rsa -in server.key -out server.pem

openssl req -new -key server.key -out server.csr

openssl x509 -req -days 30 -in server.csr -signkey server.key -out server.crt

cp server.key

openssl rsa -in -out server.key

chmod 400 server.key

This is a good page to read on this topic


time find dir -type f -exec sha1sum '{}' \; > sha1files
cat sha1files | sort > sha1sort
uniq -d -w 40 sha1sort | wc -l


fstab entry

sshfs#remoteuser@remotehost:/home/myremoteuser /mylocalfilesystem fuse user,noauto 0 0


How to make git v1.6.2.3-v1.7.1.1 for Ubuntu 8.10 / Ubuntu 9.04 / Ubuntu 10.04

Download gz file from git web site and extract on to desktop

Using synaptic package manager or apt-get install the following:

  • libssl-dev
  • libcurl4-openssl-dev
  • libexpat1-dev
sudo apt-get install libssl-dev libcurl4-openssl-dev libexpat1-dev libsvn-perl gettext

cd into extracted directory and type: ./configure

to build type: make

When complete, to install in /usr/bin type: sudo make install or to install in ~/bin type: make install

This installs into your home directory so you need to add a path to your ~/.bashrc file


How to create git repository

git init

How to create bare git repository

git init --bare

How to connect a local to a remote git repository

On the local machine:

git remote add origin user@fully.qualified.domain:~/path/to/repo
git push origin master

How to pull svn repos into git

  • -T<trunk_subdir>
  • -b branch
  • -t<tags_subdir>

-T<trunk_subdir> -t<tags_subdir> –tags=<tags_subdir> -b<branches_subdir> –branches=<branches_subdir> -s

git svn clone -T /path/to/trunk/ 

.bashrc aliases for git

alias gr="git rebase"
alias gra="gr --abort"
alias grc="gr --continue"
alias gmt="git mergetool"
alias gco="git checkout"
alias gss="git show"
alias gd="git diff"
alias gds="gd --stat"
alias gdc="gd --cached"
alias gc="git commit"
alias gb="git branch"
alias gs="git status"
alias ga="git add"
alias gl="git log --graph --pretty=oneline --abbrev-commit --all --decorate"
alias gsu="git submodule update"
alias gg="git gui &"
alias gk="gitk --all &"
alias g="git"

Configuring user name and e-mail for git

For an individual repo:

git config “Your Name Here” git config

For an global settings in (~/.gitconfig):

git config –global “Your Name Here” git config –gloabl

Using git in Windows (with Visual Studio 2008)

  • Install msysgit
  • (optionally) Install tortoisegit
  • Add git path to system environment var (does not do this by default), C:\Program Files\Git\bin\


How to make astyle v1.23 for Ubuntu 8.10 / Ubuntu 9.04

Download gz file from astyle web site and extract on to desktop

Using synaptic package manager install the following:

  • g + + (without spaces)

cd into extracted directory and type: cd astyle\buildgcc\

to build type: make

When complete, type: sudo make install

Drupal 7

Installing Commerce From Modules

The book “Getting Started with Drupal Commerce” by Richard Jones has help (but not solved) my Drupal Commerce challenges. The book walks you through installing and setting up a site. Once you have walked through the book once its a challenge to go back and hunt for all the links to needed modules, so I have compressed them here for my needs when I'm working remotely. They are pretty much meaningless without a guild such as this book.

Jones, Richard (2013-09-24). Getting Started with Drupal Commerce (Kindle Locations 471-476). PACKT PUBLISHING. Kindle Edition.

Jones, Richard (2013-09-24). Getting Started with Drupal Commerce (Kindle Locations 691-694). PACKT PUBLISHING. Kindle Edition.

Jones, Richard (2013-09-24). Getting Started with Drupal Commerce (Kindle Locations 791-792). PACKT PUBLISHING. Kindle Edition.

Jones, Richard (2013-09-24). Getting Started with Drupal Commerce (Kindle Location 1108). PACKT PUBLISHING. Kindle Edition.

Jones, Richard (2013-09-24). Getting Started with Drupal Commerce (Kindle Locations 1186-1187). PACKT PUBLISHING. Kindle Edition.

Jones, Richard (2013-09-24). Getting Started with Drupal Commerce (Kindle Locations 1475-1476). PACKT PUBLISHING. Kindle Edition.

Jones, Richard (2013-09-24). Getting Started with Drupal Commerce (Kindle Location 1556). PACKT PUBLISHING. Kindle Edition.

Jones, Richard (2013-09-24). Getting Started with Drupal Commerce (Kindle Locations 1590-1595). PACKT PUBLISHING. Kindle Edition.

Address Field 1.0-beta3
Ctools 1.2
Entity API 1.0-rc3
Rules 2.2
Views 3.5
Commerce and Commerce UI
Customer and Customer UI
Line Item and Line Item UI
Order and Order UI
Checkout, Payment, Product and Tax*
Product Reference
Cart and Product Pricing
Product UI
Tax UI

Batch Importing Video

Backup / Recovery

Export / Import of mysql db

mysqldump -u [user] -p[password] database > database.sql
cat database.sql | mysql -u [user] -p[password] [database]

Moving Drupal from one server to another

On the current server

  1. Identify the mysql database associated with the specific Drupal site that is to be moved.
  2. Export the database: mysqldump -u[user] -p[password] [database] > database.sql
  3. Move the database.sql to the new server
  4. Import the database.sql file into mysql: mysql -u[user] -p[password] [database] < database.sql
  5. Move the drupal files using rsync: rsync –dry-run -aruz dest/

Migrating Ubuntu install from one drive to another

  • tested in 9.04

Boot a live disk on computer with both drives connected.

Setup partitions and swap similar to old drive using gparted or fdisk /dev/sda1 is the new drive /dev/sdb1 is the old drive

sudo su
dd if=/dev/sdb1 of=/dev/sda1
find /boot/grub/stage1
root (hd0,0)
setup (hd0)
fsck /dev/sda1


Apache (2)


Ubuntu install

This will get a newer version, but it does not automount.

sudo add-apt-repository ppa:zfs-native/stable
sudo apt-get update
sudo apt-get install ubuntu-zfs
sudo apt-get install mountall

Verify mountall is installed.

apt-cache policy mountall

If the Installed: line does not end with -zfs1, then mountall is not installed.

  Installed: 2.36-zfs1
  Candidate: 2.36-zfs1
  Version table:
 *** 2.36-zfs1 0
        900 precise/main amd64 Packages
        100 /var/lib/dpkg/status
     2.36 0
        500 precise/main amd64 Packages

This will get a little older version.

sudo apt-get install zfs-fuse


To create a pool on drive /dev/sdX where X is the device identifying letter.

sudo zpool create -f filetank mirror /dev/sdX /dev/sdY

To see the status of the pool.

sudo zpool status
sudo zpool list

See if the file system is mounted.

sudo zfs get mountpoint

If not, mount it.

sudo zfs set mountpoint=/path
sudo zfs get mountpoint
sudo zfs mount -a

To get the version of the pool

sudo zpool get version poolname


rsync --dry-run -aruz dest/

–dry-run show output without actually doing sync -a archive bit

-r recursive

-u don't update if receiver is newer

-z compress on transfer

-i indicates changes

-v verbose


rsync with sudo

If you use sudo to run rsync, don't for get that you are running rsync as the root user of your local machine. If the root user doesn't have ssh keys on the remote you will be prompted for a password.



How to get QT Creator 4.5 running in Windows Vista

Just install it, and it works. Nice!

How to get QT Creator 4.5 running in Ubuntu 9.04

The following additional libraries were needed to get QT 4.5 to compile code after install. I was able to retrieve them using the Synaptic Package Managaer.

sudo apt-get install libfreetype6-dev libglib2.0-dev libsm-dev libXrender-dev libfontconfig-dev libxext-dev xorg-dev
  • libfreetype6-dev
  • libglib2.0-dev (complier reported missing gobject2.0)
  • libsm-dev
  • libXrender-dev
  • libfontconfig-dev
  • libxext-dev (which also picked up x11proto-xext-dev) (complier reported: /usr/bin/ld: cannot find -lXext)
  • xorg-dev

Once I installed all of these libs I was able to compile a project containing only a QTMainWindow object.

NOTE: I am very happy that QT 4.5 did not require root access to install itself, this is a well built installer.

MS Windows Help

Useful information for Microsoft Windows users, especially myself

Applications I'll typically install on a new Windows Computer

Open Source


  • SourceBoost BoostC
  • Eagle Schematic and PCB Software
  • Visual Studio 2008 / 2010
  • DirectX SDK



  • Reason
  • Sony Vegas / DVD Architect


  • ITunes
  • Steam

Errors Resolved?

XPS Viewer has stopped working

When I recently got this message trying to open an .xps file, I traced the problem down to my default web browser not being Windows Explorer. If I open Explorer and then this file from with in I can view it fine, if double click the file on the OS then when firefox is opened the message shows.

Using ØMQ (Zero MQ) with in Visual Studio 2010

  • VS2010 Seems to be required to build .net Interop assemblygithub project, this requirement is due to .net 4 being needed
  • Created a new solution with a project to try out ZeroMQ
  • Included clrzmq into the solution directory for the project I'm creating.
  • Complied clrzmq in VS2010
  • Created a reference to the ZeroMQ clrzmq.dll in my new project
  • Added the following to the post-build events: xcopy /y /c $(SolutionDir)clrzmq\lib\$(PlatformName)\libzmq.dll $(TargetDir)

First impressions of ØMQ. Nice for sending data around internally but not good over the internet (due to lack of security), which means learning two different sets of technologies for sending data around networks.

I created a github project with my learning efforts here:

Visual Studio 2005 Notes

Save All Hangs IDE

I recently (13-07Jul-2008) had an issue where when I pressed the “Save All” icon in the Visual Studio IDE the program would hang (lockup if you will). I was able to resolve the issue by doing two things (though I suspect only one is responsable for the fix).

  1. Changed the IDE to run as administrator
  2. Deleted the *.suo file associated with the project (this is what I think really fixed the issue)
  3. Removed the IDE's administrator privileges

I added this note to my wiki page, becuase I couldn't find anything quickly on-line on how to resolve the issue and I thought it might help other developers in despair .

Task List (or other windows disappear)

(2009-11Nov-09) had an issue where my task list window in VS2008 disappeared. It was a result of a flaky mouse button causing the window to move below the windows task bar making it not visable on the screen (since my task bar is set to on top of other windows). I had to turn on auto hide on the windows task bar to be able to find my task list.

Cloud Computing

As much as I try to ignore it, I think cloud computing is going to be a real thing. Here are some intresting technologies:

Fusion 360 is a mechanical CAD program that is subscription based and a very good price for the power they deliver. provide cloud based schematic capture. I haven't tried this product yet, but it has potential.

Embedded Development

Source Boost

Source Boost (Boost C) Compiler

command line registration

wine boostc_pic18.exe register


Hi-Tech PICC18 PRO Compiler

Activation Hi-Tech picc18 9.66 in Linux

2013-09Sep-10 After a long period of not using the compiler, I've returned to fix a bug and found that my compiler was no longer activated. This was probably due to a rebuild of the computer that it was running on. After a day of back and forth with Microchip they offered the following solution which worked! Thank you Microchip!

1. Execute the run file in your Linux command prompt like this


2. Enter the Serial Number when prompted.

3. After a successful installation of the compiler there will be a message as: Command succeeded.

My activation key was in the following format: “HCPIC18-xxxxx” and I was lucky I had the original installs still.


chipKIT an Arduino compatible


My guess is that Massimo Banzi would classify chipKIT as being in the hazy cloud of products that call themselves “Arduino-compatible”

- Arduino-compatibles
There is also a hazy cloud of products that call themselves “Arduino-compatible” but their actual compatibility is sometimes really marginal.
We go from products that have a semi-compatible port of the Arduino API but use very different processors, to boards that call themselves an “Arduino” just because they have a couple of connectors mechanically compatible with Arduino.

-Massimo Banzi — July 10th, 2013

This, for example, is very common on Kickstarter where a number of projects try to get traction by using (sometimes obsessively) the Arduino keyword throughout the project description. Normally we’re pretty relaxed about these unless they are really shameless, then we email them and sometimes they realize they have gone too far.

Massimo, you keep using this term “open source” but I don't think it means what you thinks it means.

Whats wrong with chipKIT (and Arduino)

The "libraries" directory

The purpose of this directory is to store libraries that can be used across projects. The idea is great provided a library is stable and complete. However a library that is changing over time presents the following problem.

Project 1 is created with library Version 1 and everything is good. A year later Project 2 is created but a newer version of library is available. The library is updated to Version 2 and Project 2 works fine. Another year passes. Project is found to have bug that needs to be fixed quickly. The project is loaded and the developer finds that the project does not compile. The frustrated overworked developer quickly realizes that a days worth of work is needed to re-factor the code to fix a simple bug. The re-factor is minor compared to the test suite that must be run to verify the re-factor to support the newer version of the library didn't break the existing code. Additionally, by changing library versions the Project 2 code is now broken. And a endless cycle of pain begins.

How we deal with this: Every project gets there own mpide_projectX/ directory so that libraries can be tracked with the project. The down side is MPIDE needs to be restarted to pick up the new libraries directory.

What would be better: If the individual sketch folder could have a libraries directory that can be searched prior to the mpide sketch folder. This libraries can be tracked as submodules of a specific sketch.

chipKIT PIC32 Interrupt Treaties

(Updated 2014-07Jul-07)

The purpose of this entry is to document my effort in determining what interrupts of the PIC32 are used by the chipKIT core libraries and what are available for user code and libraries.

Content from



Content from Digilent

chipKIT™ Pro and Interrupts

Content borrowed and edited from

Task Manager (does not use interrupts but millis() and eats into loop() execution time

Attaching a callback to the Core Timer Interrupt as used by chipKIT

SPI interrupts used by chipKIT

Programming Hints with interrupt treatment

Robot with interrupt examples (that are not abstracted)

Serial Interrupt(s)

USB Interrupt(s)

Ethernet Interrupt(s)

Timer Interrupt(s)

Change Notice Interrupt(s)

Majenko CN library

RTCC Interrupt(s)

Arduino-32MX795F512L>V show interrupt Vectors
EBASE          =9D000000
IntCtl         =00000020
VectorSpacing  =00000001
+++ 0= 02 00---0B4017F0 jump 9D005FC0  _CORE_TIMER_VECTOR
+++ 1= 00 00---FFFFFFFF unused         _CORE_SOFTWARE_0_VECTOR
+++ 2= 00 00---FFFFFFFF unused         _CORE_SOFTWARE_1_VECTOR
+++ 3= 00 00---FFFFFFFF unused         _EXTERNAL_0_VECTOR
+++ 4= 00 00---0B401E5A jump 9D007968  _TIMER_1_VECTOR
+++ 5= 00 00---FFFFFFFF unused         _INPUT_CAPTURE_1_VECTOR
+++ 6= 00 00---FFFFFFFF unused         _OUTPUT_COMPARE_1_VECTOR
+++ 7= 00 00---FFFFFFFF unused         _EXTERNAL_1_VECTOR
+++ 8= 00 00---FFFFFFFF unused         _TIMER_2_VECTOR
+++ 9= 00 00---FFFFFFFF unused         _INPUT_CAPTURE_2_VECTOR
+++10= 00 00---FFFFFFFF unused         _OUTPUT_COMPARE_2_VECTOR
+++11= 00 00---FFFFFFFF unused         _EXTERNAL_2_VECTOR
+++12= 00 00---FFFFFFFF unused         _TIMER_3_VECTOR
+++13= 00 00---FFFFFFFF unused         _INPUT_CAPTURE_3_VECTOR
+++14= 00 00---FFFFFFFF unused         _OUTPUT_COMPARE_3_VECTOR
+++15= 00 00---FFFFFFFF unused         _EXTERNAL_3_VECTOR
+++16= 00 00---FFFFFFFF unused         _TIMER_4_VECTOR
+++17= 00 00---FFFFFFFF unused         _INPUT_CAPTURE_4_VECTOR
+++18= 00 00---FFFFFFFF unused         _OUTPUT_COMPARE_4_VECTOR
+++19= 00 00---FFFFFFFF unused         _EXTERNAL_4_VECTOR
+++20= 00 00---FFFFFFFF unused         _TIMER_5_VECTOR
+++21= 00 00---FFFFFFFF unused         _INPUT_CAPTURE_5_VECTOR
+++22= 00 00---FFFFFFFF unused         _OUTPUT_COMPARE_5_VECTOR
+++23= 00 00---FFFFFFFF unused         _SPI_1_VECTOR
+++24= 00 00---0B401B67 jump 9D006D9C  _I2C_3_VECTOR _UART_1A_VECTOR _UART_1_VECTOR _SPI_1A_VECTOR _I2C_1A_VECTOR _SPI_3_VECTOR
+++25= 01 00---FFFFFFFF unused         _I2C_1_VECTOR
+++26= 00 00---FFFFFFFF unused         _CHANGE_NOTICE_VECTOR
+++27= 01 00---FFFFFFFF unused         _ADC_VECTOR
+++28= 00 00---FFFFFFFF unused         _PMP_VECTOR
+++29= 00 00---FFFFFFFF unused         _COMPARATOR_1_VECTOR
+++30= 00 00---FFFFFFFF unused         _COMPARATOR_2_VECTOR
+++31= 00 00---0B401BDD jump 9D006F74  _UART_2A_VECTOR _I2C_2A_VECTOR _SPI_2_VECTOR _SPI_2A_VECTOR _I2C_4_VECTOR _UART_3_VECTOR
+++32= 00 00---0B401C53 jump 9D00714C  _UART_2_VECTOR _SPI_3A_VECTOR _I2C_3A_VECTOR _UART_3A_VECTOR _SPI_4_VECTOR _I2C_5_VECTOR
+++33= 00 00---FFFFFFFF unused         _I2C_2_VECTOR
+++34= 00 00---FFFFFFFF unused         _FAIL_SAFE_MONITOR_VECTOR
+++35= 01 00---FFFFFFFF unused         _RTCC_VECTOR
===36= 00 00---FFFFFFFF unused         _DMA_0_VECTOR
===37= 00 00---FFFFFFFF unused         _DMA_1_VECTOR
===38= 00 00---FFFFFFFF unused         _DMA_2_VECTOR
===39= 00 00---FFFFFFFF unused         _DMA_3_VECTOR
===40= 00 00---FFFFFFFF unused         _DMA_4_VECTOR
===41= 00 00---FFFFFFFF unused         _DMA_5_VECTOR
===42= 00 00---FFFFFFFF unused         _DMA_6_VECTOR
===43= 00 00---FFFFFFFF unused         _DMA_7_VECTOR
===44= 00 00---FFFFFFFF unused         _FCE_VECTOR
===45= 00 00---FFFFFFFF unused         _USB_1_VECTOR
===46= 00 00---FFFFFFFF unused         _CAN_1_VECTOR
===47= 00 00---FFFFFFFF unused         _CAN_2_VECTOR
===48= 00 00---FFFFFFFF unused         _ETH_VECTOR
===49= 00 00---0B401BA2 jump 9D006E88  _UART_4_VECTOR _UART_1B_VECTOR
===50= 00 00---0B401C18 jump 9D007060  _UART_6_VECTOR _UART_2B_VECTOR
===51= 00 00---0B401C8E jump 9D007238  _UART_5_VECTOR _UART_3B_VECTOR

MPIDE Development

Building MPIDE

These notes for building MPIDE for chipKIT are based on information from Rick Anderson whom pointed me to these notes. Additionally the notes were augmented from e-mail threads with Rick.

Also note that this setup is for Windows 7.

Building Arduino


Install java SDK and ant

Environment Variable Mods:

ANT_HOME = C:\Users\jacob\Downloads\apache-ant-1.8.4
CLASSPATH = .;C:\Program Files (x86)\Java\jre7\lib\ext\
JAVA_HOME = C:\Program Files\Java\jdk1.7.0_03

To build:

cd /path/to/mpide
cd build

If everything went well, you'll have no errors.

Then to run it

ant run -Dversion=anydata

To build MPIDE into a package with a version use:

ant dist-test -Dversion=anydata

Which will output the following:

mpide for Windows was built. Grab the archive from


PCB Assembly Notes



Open Letters

To The Filmmakers of FUEL

Subject: Hypocritical Film Makers (

Dear Filmmakers,

Like An Inconvenient Truth, to see your film I will have drive my car at least 50 miles in one direction. A 40 year old technology exists today to prevent this waste, but like the fuel companies themselves, it would appear that greed and fear of the new is preventing your film from reaching a wider audience while at the same time reducing the use of the one thing that your film seems be saying we waste so much of.

Please, put your film on-line for viewing using a pay-per-view model. The fuel I would not have to purchase to go see your film could easily pay for the viewing itself (you could even build in a fuel cost savings calculator into the price of viewing the film on-line). You will make more money per viewing than you would in a theater and you will help me and may others reduce our dependence on FUEL. While your at it, you can do the same for the book “Biodiesel America”.


Jacob Christ President, ProLinear/PONTECH, Inc. ( 1991-2004 Team Member of CaPSET (Cal Poly Pomona Solar Energy Team) (

P.S. If you head my message and need help implementing it, I'm willing to help. I have a team of web developers at my finger tips.

user/jacob.txt · Last modified: 2018/08/04 14:05 by jacob