Home Page

Lost Boys Mobile Archive

Lost Boys Mobile Archive

Thursday, Mar 3, 2022 by Leon

The latest project that I’ve been indulging on is for the Lost Boys Center For Leadership Development and their Lost Boys Interview Project. If you aren’t familar with these groups please take a moment visit these sites. The latest iteration of this project is to come up with a mobile solution that would allow them to take everything they need to search and print the interview archives in a self containted unit to their new center in Juba, South Sudan.

Images Of The New Juba Center

Juba Center 2


Some of the challenges for this solution are:

  • lack of internet connectivity
  • intermittent and unreliable power
  • secure the archive data
  • use low cost computer solutions in case they are lost

The short version of the answer is going to be a web based search interface powered by a Raspbery Pi embedded computer. All of the archive data will stored in an encrypted database, and queries be able to be done on standard tablets and smartphones while at the center.

We will have a desktop laser printer for producing hard copy documents, along with a self contained Power Source to keep everything going. Some of the units we are considering are:

Each of these units should power everything for at least a couple hours, along with recharging the tables and phones and running a few lights when needed.

I’ve created a project page which I will update from time to time with details on the implimentation in case anyone is interested.

Stupid Linux Tricks

Stupid Linux Tricks

Monday, Nov 8, 2021 by Leon

It’s been a while since I’ve posted. Nothing earth shattering. Just been keeping busy with personal/family stuff and have picked up a few gigs on UpWork. From an IT standpoint I decided to try and make my work environment a little more efficient. Part of this was spurred on by spending an hour or two tracking down something that turned out to be the result of a keyboard-bounced character that I couldn’t spot easily. After that I decided to get a better keyboard, and set up a bluetooth mouse that I can take with me on the road.

While the keyboard is on order, and should be able to just be plugged in, the bluetooth mouse is something I’ve toyed with over the years but haven’t really had much success with.

As a little background, my laptop (a Lenovo X240) spends 95% of it’s time in a docking station next to my desk (and usually under a cat, but that’s another story). When I do take it on the road I find it annoying that brushing the trackpad or touchpoint devices have some undesired effects - especially since I’m using the Awesome Windows Manger. My windows and screens wind up flying around in the most undesireable ways. The local Officemax had a clearance on Logitech bluetooth mice so I picked one up and much to my surprise, the Linux support for it is much better than it was last time I tried it. The mouse automatically connects each time I reboot the computer.

Now when I’m on the road I can take the mouse with me, and if it’s turned on the following script that is run at boot time will automatically disable the trackpad and pogo stick on the laptop:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/tclsh

set btMouse "Bluetooth Mouse M336"
set targetList [list "TPPS/2 IBM TrackPoin" "Synaptics TM2749-001"]
set disableList [list]
set gotBTMouse 0

set inputpipe [open "| xinput list"]
while { [gets $inputpipe thisDevice] >= 0 } {
	 set deviceName [string range $thisDevice 6 25]
	 puts $deviceName
	 if { $deviceName == $btMouse } {
		 set gotBTMouse 1
	 } elseif { [lsearch -exact $targetList $deviceName] != -1  } {
		 puts $deviceName
		 set thisId [string range $thisDevice \
			   [expr [string first "id=" $thisDevice] + 3] \
			   [expr [string first "id=" $thisDevice] + 4]]
		 lappend disableList $thisId
	 }
}
close $inputpipe

if { $gotBTMouse } {
	foreach thisDevice $disableList  {
		exec xinput disable $thisDevice
	}
}
WebDAV Revisited

WebDAV Revisited

Friday, Jun 4, 2021 by Leon

One of my clients wanted me to set up a simple single page web site that she could access and edit via WebDAV on her Mac. While I haven’t dabbled in WebDAV for a few years, how hard could it be. I’m using NGINX, and there are a couple of modules for it, so I should be good to go. Or so I thought.

While I was able to initially get it set up and working with linux utilities such as DavFS, and Litmus didn’t complain too bad, her Mac balked and would only open it in readonly mode, and couldn’t create any new directories. After an hour or two of testing it turns out a few years ago Apple decided that they wanted a full featured WebDAV implimentation that is beyond what NGINX provides, no matter how much you tweak the configuration file.

The solution I settled on was Sabre, which is a PHP implimentation of a webdav server. It turnes out to be full featured, includes multiple authentication methods, didn’t take too much to get set up, and Litmus and my client’s Mac seems to be happy at this point. Guess we’ve got another wrench in the toolbox.


photo by Manuel Geissinger from Pexels

Upgraded File Upload Logic

Upgraded File Upload Logic

Saturday, Mar 6, 2021 by Leon

Recently one of my clients asked to have their file upload pages upgraded to show a progress bar and allow multiple files to be uploaded at once. After some DuckDuckGo-ing I settled on a solution based on FlowJS.

While not the documentation was not totally intuitive, I was able to get things up and running pretty quickly. Besides the above link, I found a number of tutorials online, but this one was most helpful, including pointing me to the simple PHP Based Server to handle the uploads on the other end.

Flow easily allows you to craft custom handlers for not only upload progress but also completion messages.

Worth noting is that I also came across FilePond, but thought that in the end the flow.js base solution looked best.

Docker Mini Server / AWS Elastic Beanstalk

Docker Mini Server / AWS Elastic Beanstalk

Saturday, Sep 5, 2020 by Leon
I haven’t gotten into Docker much yet, even thought it’s had quite the buzz over the past few years. As both part of a proposal for a prospective client, along with doint a proof of concept, I put together a docker image based on Alpine Linux, utilizing ClamAV/Freshclam and Darkhttpd to provide a local mirror of ClamAV virus definitions. There was a bit of a learning curve to get all the moving pieces to work togther, but I think it turned out pretty well. Read More
What, Another Web Framework?

What, Another Web Framework?

Tuesday, May 12, 2020 by Leon
I’ve been developing applications for the web since the dawn or time (or at least the dawn of the internet). Everything from Server Side Includes (SSI), Perl (known as the duct tape of the internet), and PHP. However, I feel that something is lacking. I feel that PHP is just too bloated for what I need it to do, and don’t get me started on some of the legacy applications (such as Wordpress). Read More
Linode Object Storage

Linode Object Storage

Thursday, May 7, 2020 by Leon
So I recently found that Linode began offering S3 compatible object storage. Upon reading the documentation I found that it had the one options that pushed me to Rackspace Cloudfiles. Namely, it has an api to create a time-limited public link to individual files. This is what has been driving me to Rackspace Cloudfiles (along with their CDN) rather than Amazon S3. I also preferred the Rackspace pricing structure, which was much more straight forward than Amazon. Read More
Linux Live CD

Linux Live CD

Wednesday, Oct 9, 2019 by Leon
While trying to get my new laptop set up I used my normal procedures - namely using a USB->SATA connector to format the new drive, copy everything over, then booting a livecd with the drive in the new laptop in order to set up grub. That didn’t work so well. Up till now I’ve been using the Finnix live cd since it was the one linode uses. However, when I try to boot the new laptop with it, it doesn’t boot up properly (namely, it didn’t detect the new SSD drive). Read More
MYSQL Upgrade Remnamts / Dump Error

MYSQL Upgrade Remnamts / Dump Error

Monday, Apr 30, 2018 by Leon
While doing some maintenance and upgrading a backup server I noticed that the mysql dumps that are done before rsyncing daily were too small. We had just a production database over to this server a few weeks ago, and I was assuming that the dumps were happening since I wasn’t getting an error in the logs. This was on a machine we inherited from another IT provider, and it turns out that the mysql database had been languishing for a while and wasn’t updated after a mysql upgrade some time in the past. Read More
Connecting TCL To MS SQL Server (Linux) (Continued)

Connecting TCL To MS SQL Server (Linux) (Continued)

Saturday, Oct 21, 2017 by Leon
After a couple weeks of development, debugging, and testing, the revised scripts have been put into production. We just came across a couple of finer points that we had to word around. I’m guessing that these may be resolved in the future by switching to TDBC. In the previous post on this topic I mentioned that we had to use a connection string/dsn instead of a username and password. That wasn’t too bad to figure out. Read More