What to do in 2017


Over on my wiki I have an area called Project Cody.  The code name is for my youngest dog and a play on the word “code”.   It's a private area where I keep project plans I'm not ready to talk about or share with the public.  Only a few choice compatriots have access (until the Russians get wind of it, I assume).

I keep a page in Project Cody with ideas for future projects.  This past year I collected a bunch of ideas I want to work on, most of which are related to extending PiBox in one manner or another.  Some are related to protecting my web sites and servers. This doesn't include continued work on PiBox issues nor does it include my plans for adding iot support for managing devices via wifi.  The IoT projects are part of my IronMan project – the idea that I can build Iron Man's house using existing technologies.  It's not really much of a stretch.  The real issue is getting glass that will act as a display, either directly or by electrically opaquing the substrate. 

I've been working on ideas for Iron Man for some time.  I already have the Jarvis project for accepting voice commands and evaluating them for basic control of the house by simply passing audio files to Google's voice to text translator (though that may not be the one I have implemented in Jarvis now) and then passing the text through a natural language processor to interpret the command.  There really isn't much to that project now except a proof of concept.  And it doesn't have Jarvis' voice.  Generating a realistic voice is a fairly time-consuming activity and I've so many other things that take precedent.  But the basic structure is there.  Extending it to do something useful won't happen till I have some devices to control.

Which leads me to some of the technology plans I have for PiBox in 2017.  Take these with a huge grain of salt.  I fully expect my aging pups to occupy much of my time in 2017.

Custom smartphone based on raspberry pi

I'm so frustrated with the bloat on my android Phone.  It worked fine when I bought it but automatic updates have pushed it to its limits, making most apps fail to start or crash after they do.  It's not like I have many apps on the thing.  I don't use the phone for anything other than the occasional text with my wife.  You can blame the bloat on Android or the provider (Virgin Mobile) if you want.  But the truth is that it makes sense for phone vendors to bloat the OS to force you into the next model.  It's a trick they learned from the PC world.  And it's crap.  We should be able to build our own phones.

Fortunately, it's possible to build your own phone.  What's important about this project is that

  • it uses a Raspberry Pi Model B or B+, which is compatible with the Pi Zero, meaning I can improve the design.
  • it uses a Raspberry Pi, which means I can port PiBox to it.

I'll need to add touch screen support but I'd already experimented with that previously so it shouldn't be a major effort.  My launcher app will have to understand the size of the display in order to scale icons appropriately.  It doesn't do that now, but I think I know how to do it.  And I'll need to write all the basic phone apps:  dialing, contact list, text messaging, etc.  None of these are particularly hard.  And no, I won't be using scripting languages.  It'll all be done in C.

This isn't a high priority, but it would be an interesting update to the launcher to see the same apps on a phone as on a TV or desktop monitor.

Update: 2017-03-09

I just finished adding display resolution identification and touchscreen support to libpibox, the launcher and a couple of apps.  The library supports 9 touch regions or absolute coordinates.  So the launcher works by touching an app icon while the apps use navigations (next, prev, pause, stop, etc) through the touch regions.  I've also added the much needed scaling capabilities to the launcher to allow it to fit on just about any screen size.  This support may not be fully sufficient for the small screen of a phone, but it works great on the 7″ official Raspberry Pi touchscreen!  And it may be enough for any small screen.  Caveat: the launcher still requires X.org, so really tiny screens might not work well.

Update: 2017-10-03

Still not working on this (because of the job change/move to boulder-area issue) but I found this today:  ZeroPhone.  Someone beat me to the project, but that's okay.  I'm still interested in building my own.  And putting the PiBox UI on it for ease of use, probably with a larger screen (like the original model).

Echo Pi

Echo Pi is a project I want to work with Jarvis (my experiment with “AI” software). It's really just an omnidirectional microphone that can be used to acquire audio to feed to Jarvis.  Put one of these in each room and I can talk to the butler without screaming.

Bluetooth audio transmitter and receiver

I want this so I can play audio in my trailer from PiBox without wires.  I want to route audio to either the audio port or to a Bluetooth transmitter.  This doesn't solve my problem of routing the audio output from my xmpcr since it has to first be routed into the Pi.  But it's the end goal and it's something I've wanted for some time.  We can use wireless headphones while we watch outdoor movies when camping.

Smartwatch

It was only a matter of time before smart phones went the Dick Tracy route, or as old dudes say, like Space Ghost.  We don't quite have Mr. Ghost's three button power bands yet.  So a smartwatch (who makes up these names?) is as close as we get.  This actually looks pretty simple.  It's unclear what software I'll put it on it, however.  A Pi Zero might fit but may have too high power requirements.  I don't know if I can port PiBox to an AVR (though I did something similar with the AVR toolchain once before). 

IoT controllers

This is a high priority project for me.  The goal is to extend PiBox to home automation, becoming a central controller (or distributed set of controllers) for managing my home.  It starts with simple motor controls for blinds and vents.  But there is no reason it can't also manage the thermostat.   Eventually I want to be able to schedule light switches and outlets to power on and off based on my schedules.  This will eventually replace the home automation system I have now and finally get rid of the horrible management interface they provided.

DIY Segway

So my employer, WD, is moving to new offices this spring.  The current office is about a 6 minute commute from my house down fairly busy streets.  The new office is about a 3 minute commute and I only have to cross one busy intersection.  Seems a waste to drive that far, but walking isn't an option given Colorado winters.  So what's a techie to do?  Build a Segway, of course.  It just needs to be a bit all-wheel drive given the route I have to take, but I think this will just meet those requirements.  I just worry about the stability of the software.  In this project, I'm less likely to be working on that than the others.

Onion Pi

This one isn't really that important since I can do the same thing right on my laptop, but it might be interesting to see if I could put it in PiBox.  I'm not sure why I would since browsing the Internet is not supported in PiBox (WebKit takes forever to build), but you never know. 

The Onion Pi is a Raspberry Pi with Debian acting as a Tor proxy.  The Tor component anonymizes (mostly) your online browsing.  It doesn't do much to prevent access to your computer (try running a firewall and use ipset to block ranges of IP addresses for that) but it's not a bad idea to keep people from snooping on your obsessive and highly unhealthy need to know what the Kardashian's are doing.

Two Factor Authentication everywhere

This isn't a PiBox thing.  It's a protect-my-systems-from-bad-dudes thing.  I just want it because, well, everyone is pushing it and it kinda seems like a good idea.  Except for having to use my smartphone to login to my linux boxes.  That seems sooooo counter-productive.  I really hate smartphones.  Except for the one I'm going to build myself, of course.

HTTPS for all web services

This is something I haven't done yet because I don't do financial transactions on any servers.  But I hear the entire net is migrating into HTTPS so I guess I better do something for my array of domains.  It doesn't seem particularly difficult given the use of certbot.  But working with keys and certificates has always been a bit annoying to me.  Perhaps because I just hate the idea that someone doing mischievous things forces me to do something I didn't feel like doing.  Bad guys are annoying.  Can't we all just get along?

IPSet to block the annoyers

I also plan on improving my internal security net for my home and public servers.  I've already added ipset to block large IP ranges which has had a noticeable improvement in my public web servers.  It also makes it pretty easy to block addresses trying to crack our email server.  I'm sure I can't keep them out.  But I can make it particularly annoying to try.

And then there is…

I've also got notes on working on water harvesting for my garden and power harvesting for off-grid PiBox.  But those still need better plans.  I'd also like to do more work with solar power to charge batteries and hydro– and aquaponics.  I've experimented with hydroponics in over-winter gardens but these were mixed with plants from outside that were brought in, which led to bug infestations and a failed project.

And my back yard DIY vegetable planters needs to be migrated across the back yard so they're out from under the now-too-tall trees and into the real sunlight – at least for the three-month growing season here in Colorado.  And I need a new potting bench.  And my wife wants new planters in the front yard.  And the fence needs mending.  And the porch needs painting.  And the side yard needs to be re-graded.  And the railroad ties in window wells are rotting and need replacing.  And ….

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.