Christian sent us this article about how Uber has suspended all use of their self-driving cars. It is literally right in front of where Christian lives. He said it would even be possible to see the street sign of the street name where he lives if it had not been stolen by thugs. Actually, it is a pretty great place for a college student–half a block from the light rail that picks him up and drops him off in front of the building where he works at Arizona State. I told him I would probably hold off on using Uber self-driving cars for awhile. Come to think of it, when they end the suspension, it might not be that safe to walk to the train anymore.
I love my job. That is not an unusual thing. I think I have written here on this blog about how Grandpa Milo’s frequently reminded us we might as well love our jobs because we have to go do it whether we love it or not anyway and its corollary with food that we were going to eat it and we were going to like it whether we liked it or not. My current job, however, is not one that is hard to love. Yesterday, one of the VP’s walked into my office (an office with a door!!!) and saw I had one of the old stainless steel cups with the company logo (the one on the left in the photo with the blue top).
He said, “Man, you don’t have a YETI cup yet.”
I did not realize that YETI products were a thing, but I really like the new cup he gave me (the one on the right with the YETI logo at the top). I have to admit I was pretty happy with my original blue-topped cup, but now I am doubly happy.
At the bottom of the picture, there is a camouflage thing that looks a lot like a cellphone. That is a Seek thermal camera. It is interesting, fun and I get to work with it to do cool stuff in my day to day job. I have not run a Windows computer at my work since I started as everything I develop is for use on a Debian embedded system. I am doing some Windows develop as part of my contribution to the CWRU sickle cell disease diagnosis project, but I do all my development for that project just like I do for my day job, on a Xubuntu box. The sickle cell stuff will eventually go onto a Raspberry Pi so I am doing the development cross platform and building installers for both Windows computers and Ubuntu/Debian computers.
It is truly a gift to love your job and my current job is not like pulling green chain at the mill, I do not have to force myself to do it.
This weekend, I put the final touches on the prototype/demo version of the sickle cell disease software I am developing for Case Western Reserve University and HemexHealth. It will be demonstrated to potential partners in this week. I am not sure how much longer I will be needed for this project other than some tweaks to make it work better and easier to use, but it has been one of the most gratifying projects on which I have ever worked. It has huge potential to do good. I hope I get the opportunity to do more projects like this again in my lifetime.
Lorena took me to McDonald’s early this morning then dropped me off at the airport. If all goes well, I will have a look at our (hopefully) new house along with my real estate agent and my builder (thank you Mark P. for driving up from Oregon). Then I will get on a plane at midnight and arrive back in Dallas just in time to go to work on Tuesday morning when we are going to make the first major new installation of some machine vision/machine learning/video analytics software.
In the mean time, the working I am doing on finding low cost new methods to diagnose sickle cell disease in developing countries is getting to a critical juncture. I need to put some finishing touches on the work I am doing on that project so they can start real tests. I will have to work on that on the airplane ride to Seattle and in the hotel room so I can deliver it to the team that needs it at Case Western Reserve University in Cleveland. Thankfully, that is something that can be done by email and dropbox.
I saw the video below that a friend posted this video on Facebook last night about challenges for millennials in the workplace. I think it says some important things that has caused me to think I need to work on some of my own behaviors. He talks about addiction to social media–on cell phones in particular and the dopamine high that is triggered. He talks about what a great disservice it was to tell children they were great when they were not great. He talks about the idea of delayed gratification that seems to be completely missing in an entire generation of young people. He talks about the increase in suicide and accidental drug overdose in that generation that is most probably a result of this. I think he is exactly right on all that. The video is truly a worth 15 minutes of your time.
It was kind of depressing though that in about the last third of the video he espouses the idea that the corporations need to take responsibility for fixing this. That is a completely different subject, but he is objectively wrong on that. The corporations might need to address the issues associated with this large problem because it prevents them from finding good, long term employees that facilitate them meeting achieving their purpose–to make money. Corporations should not be tasked with social engineering. They should, like government, achieve their purposes without meddling in peoples’ in areas where they are so patently unqualified. They really, really have competing interests with respect to what is good for individuals and that is not necessarily a bad thing. The individuals themselves, their families and, most importantly, God and their spiritual communities are the only ones who have the truly worthwhile answers to these kinds of challenges. Disinterested third parties whether they are government school teachers, coaches, bureaucrats, academics and even bad parents are the ones who trained them in this wrong thinking in the first place.
11.4 of 60
This weekend, I am finally getting to the place where I will be able to work on some of my side projects. I have decided to put a system together to do the things I normally have to do for small, cheap control projects. I did a drawing for one of the people I am helping so he can show people how we plan to make things easy to use in addition to making them work well at a cheap price. The idea is to put a framework together that runs on a Raspberry Pi. The Raspberry Pi runs as a secure server that can be accessed via a secure web browser either locally or over the internet to control hardware and execute machine vision tasks. I have done a lot of work on this already, but now I have a first “real” application that will provide the incentive to turn it all into a commercial quality, reusable framework. This could be used for the medical device apps I am working on as well as some side projects I use as to learn new stuff. Should be fun.
After things started to settle down a little in our lives since the funeral, I had been trying to figure out what to do next. The folks were gone and the kids are on their own and are way too low maintenance for our taste (still going through withdrawal from their going off to college three years ago). Fortunately, I was recently selected to help a group of researchers at Case Western Reserve University and a company named HemexHealth develop a product with an incredible social mission. I really do not know much about how it all works (after all, I type for a living), but the product is designed to rapidly and inexpensively diagnosis sickle cell disease. I DO know how to do my part of the product and am thankful for the opportunity to contribute to such a noble endeavor.
It is going to be a ton of work, but this is exactly the type of project I love. If this is not a good hobby project, I do not know what is. The other thing it will do is take up enough time that maybe Lorena will fill some modicum of guilt about browbeating me into exercising so much. “It’s for a good cause honey and you know I program better with a belly full of biscuits and gravy!”
Christian uses his phone so much for the stuff he does at school that after two and a half years with his Samsung Note 4, he about wore it out. He wanted to get a new one, but the deals are so bad at Sprint these days for decent smart phones–about all they have available for a reasonable price are iphones, but who in their right mind would want one of those–that he decided to get the Google Pixel phone because he had heard good things about. The first thing he found was that, while the back camera is just awesome, the selfie camera is really pretty mediocre (see the picture below). The screen is great and the phone does everything he wants it to do (which for him is a lot), but the main feature is that the phone is not so locked down you cannot do what you want. Christian says the phone is about the same size as our current Samsung Note 4’s and then he says the following:
It’s not as ‘impressive’ looking as some of the other phones because it has the bezels. It is also very bland, 0 features 0 bling, but that is the point. Its a good phone with no garbage.
I think that is the whole point. Most of the service and phone companies try to control what you do with “their” phones so much that you cannot use it the way you want. At any rate, it is great he got the phone when he did because I, for the third time, got him an AM ticket when I thought I was getting a PM ticket so he is getting in to the airport WAY early and will have something with which to entertain himself while he is waiting. I think Kelly will probably show up early and take him to dinner.
Kiwi continues to help me with my work on the Gaugecam project. We all recevied an email yesterday describing some of the new information that will appear in the next refereed journal article. Some of it will have an impact on my work–we will know what to do to make the system even more accurate under changing conditions. It is slow work since I have so much other stuff going, but my hope is that I can turn this into my retirement project. I hope to have a demo of some of the stuff we are doing to put up here within the next few months.
The following image speaks for itself. It shows the graph of water level from GaugeCam‘s camera viewing water level in a body of water near Goldsboro, NC at 6:30 AM yesterday morning in the face of flooding caused by Hurricane Matthew. There is an image that appears as you hover the mouse cursor (arrow) over the dots on the graph. It is an amazing visualization of the flood from which we are working on a video. The spikes in the middle of the curve are anomalies. On the far right side of the graph you can see the water rise dramatically.
Lorena and I were amazed the Rasperry Pi 3 I ordered from Amazon at 10AM yesterday morning actually arrived on our doorstep at 6PM yesterday evening. I am working on it now. My job is to get it running with a 5 mega-pixel camera. In reading about it, I found that it runs hot so I installed the two heat sinks that came with it. The heat will probably not be so bad for the work I am doing on my day job, but it might create a challenge for the GaugeCam project where we need to run our system outdoors in all kinds of weather. The CPU gets throttled if the system runs too hot and the reason we switched from the Beaglebone Black to the Raspberry Pi three was for speed considerations having to do with how we plan to use the camera. It probably will not be a problem, but it is another thing we will have to give some fairly extensive testing. The things that came in the $49.99 purchase were the Raspberry Pi 3, the wall-wart power supply, the heat sinks and the case. It turns out that if we put the top on the case, it runs enough hotter that the CPU throttles, so the case will not do us much good. The Beaglebone Black to the left is the one we are replacing. It honestly worked great with the exception that it was not possible to capture the large format (not that large actually-1280×960) images we need for our projects.
I ran into a brick wall on my Beaglebone Black (BBB) project. I love the BBB, but the hardware is not fast enough to do what I need it to do, so I looked around for something faster that could run the same code and thought I would try the Raspberry Pi 3. Amazon has a reputation as a terrible place to work, but the Raspberry Pi 3 I ordered has a promised arrival of this afternoon and I ordered it earlier this morning. Kind of an amazing thing. Also, the Raspberry Pi 3 is about the same price as the BBB, but has a quad-core, 1.2 GHz Arm 8 microprocessor while the BBB has a single core 1.0 GHz Arm 8 microprocessor. I looked around a little and had no trouble finding another board doing exactly what I need. I hope I can make it work.
Update: Just amazing. It arrived at 6:00 PM at my doorstep through the apartment security gate and it included the other stuff I had ordered the day before.
I got my we GaugeCam development site, http://gaugecam-dev.duckdns.org/, that I run from my home office on the BBB up and going again. You can see it here. It is pretty rudimentary right now, but I will start moving the new GaugeCam software there as I get it written. I am, again, putting up a list of the things I did to get there for my own self so I can duplicate it again and when I get to the next project. This post is going to be a list of links to a couple of videos and the stellar duckdns site that provides free dynamic DNS services for hobby and volunteer projects like this. So here is the list that got me up and running:
- Beaglebone Black (HD) – Wired Internet Connection through the Ethernet Port There is another tutorial by the same guy that demonstrates how to do this wirelessly, too.
- Beaglebone Black – Web Server Tutorial There are a couple of additional links in the video to how to great little tutorials on how to start from ground zero and setup up your Beaglebone Black.
- DuckDNS Free dynamic DNS service with instructions on how to set up the service and links to how to set up your router to get to the outside world.
The purpose of this video is to show the status of my work on an application to process live video in real time from a webcam (or other camera) using OpenCV and the Wt libraries. I will try to get this up and running live on the Internet from my BeagleBone Black in the next few days.
I spent much of the day today trying to figure out how to use CSS to control the way the web pages look in the Wt application I am writing. This is the one I hope to use to learn how to capture images from 1-n cameras to the web with analysis in real-time. It is fun, interesting and frustrating all at the same time. The funny deal is the frustrating part is that it is difficult to get all browser types to behave the same way. I have decided I will just aim at Firefox and Chrome because they are the most ubiquitous in my little world. The companies that make those browsers have, in my humble opinion, very sketchy reputations, but that is another story for another time.
The next step will be to start hooking up the camera. I think I might go back to the license plate reader as my first application for this thing, but I am not sure yet. When I get a camera hooked up that is controllable from my local network with a browser, I will port it over to the little BeagleBone Black I have been running as a web server that does not do much from the apartment for quite awhile now. My buddy John H. from Arizona is helping with this whole thing. He will be a big help because we will be getting into some pretty serious 3d/time domain image processing here as we get past the one camera application.
The video of the hovercraft Christian made when he was eleven just passed 70,000 hits!
My hard work paid off this weekend. I am working with my long-time friend and colleague, Frank, to develop some EKG software for our $27 EKG’s. Actually, the EKG part has gone up now to $51 and the Arduino needed to run it costs another $20. At any rate, the software shown here accommodates six channels (even though that has not yet been tested because I only have one channel). It needs some cleanup, but it works great.
When I started building my $27 EKG, I just assumed there would be an excellent library to chart the output to the screen in a compelling and useful way. There are a couple of libraries that are pretty good, but they are either really old, have bad open source licenses, are not fast enough (we need to eat a lot of data in real time) or they do not do exactly what we want. It is a little bit of a hassle to write something like this when in a rush, but it could not be helped. That is what I did most of the day yesterday. I hope to have the thing all up and running in the next few days. It will be useful to have an unencumbered library for a lot of the things we want to do with this little project and probably for future projects, too, so it is not a loss.
I had a little bit of a breakthrough on my EKG project last night. I actually had the idea when I was completely away from the project for a few days. It caused me to re-read the manual where it said the readings from the EKG are sent down the serial cable in big endian order. Each value for a 10-bit number takes up two bytes. The high order byte can either be first or last. The receiving computer expected little endian order. I now swap the bytes before they are plotted or recorded and we get the beautiful plot above. You can barely see four little lines below the left side of the signal plot. Those lines make up the legend for the electrode channels. The system can handle six channels, but we are going to try to do just four on this setup. The next step is to get the graph to be a moving strip chart. The graph, as it is right now, just writes over itself.
I completely duplicated my current setup for a friend, Frank who is joining this project. He is way more skilled than I in a lot of this stuff–especially the electrical engineering parts. I need to order myself an additional three channels of electronics, but that is on its way to Frank right now.
P.S. We are thinking of cross platforming (Windows/Linux) and open sourcing (free as in both freedom and beer) the software and writing a user guide/tutorial on how to set the thing up if anyone shows any interests because there does not seem to be anything out there that is really hobby friendly. If I am wrong, maybe someone can correct me. Because of our day jobs we are still months away from that.
I have had little time to work on the GaugeCam project due to other responsibilities. We got a helping hand with this product when we found that there are now cameras available that do precisely the part of the product we did not want to do and at which we were not that good. The camera in this post is an example of that. Before, we had to put together a cellphone enabled remote camera with mounting systems, batteries, a solar setup, etc. Now, you can just buy it and install it yourself. So now I think we will be able to concentrate on the software and the water level data that is accumulated from the product which is really our strong point anyway.
Now I will be able to concentrate on my EKG project a little more before I go back to GaugeCam. Also, I will be able to use the BeagleBone Black I purchased on the EKG if I want. I am hoping to communicate between the Arduino/EKG electronics and the mothership computer via Bluetooth, but I am not sure I can get it to go fast enough. The Bluetooth will handle it, but I do not know if the Arduino can shovel the bits fast enough for the EKG sample rate I need (1K Hz). We shall see!