The internet came up today. Based on my previous experience with DSL, I have to admit I was stunned the whole process was so painless and even inexpensive. We plugged it in, filled in a few lines on the screen, set up the wireless router part of the whole deal and were up and running. Not only that, I checked the upload and download speeds and they were as advertised. I was pretty sad because we do not have access to cable internet on our property. We are not so far from town, but in a little pocket where it almost certainly does not pay to run the cable out here. I should have known that since the many years that have passed since we previously had DSL, they have gotten their act together. I know some of the speed and quality issues have to do with how close one is located to a hub and we are pretty close so that might be why everything works so well. On the other hand, we ARE close. That was a dodged bullet.
I will have one more work week in Texas after today. I enjoy my job and the people where I work a lot and it was agonizing to turn in my notice. Part of the job I love the most is the requirement to create sophisticated machine vision and video analytics applications with cheap USB cameras and ARM embedded computers that run embedded Linux, usually Debian. We prototype a lot of the stuff on Raspberry Pi’s which is great because there is such a big user community it is easy to quickly get answers about just about anything. There are four cameras in the article accompanying this post that range in value between $20 and $50.
All of the cameras work just fine right out of the box for the purpose for which they were design–that is generally streaming video with camera controlling the capture gain and offset. Conversely, it reduces the repeatability and precision of most machine vision application if the offset, gain and lighting controls are not managed by the application. So, it has been part of my job to dive into the driver code far enough to figure out how to set the registers that need to be set to control cheap cameras well enough to work in accord with the stringent requirements of many machine vision applications. That takes a lot of patience and, although it is not exactly rocket science, it is very rewarding when the last piece of minutiae is chased down and the stuffs starts working.
One thing I have learned is that this “big data” thing is here to stay, at least in my world of machine vision, embedded computing and video analytics. There are tons of things you can almost do deterministically that become tractable when enough data and machine learning are thrown at them. I am loving working with Weka and R and the machine learning functionality in the OpenCV library because they open up new vistas, not to mention I can more frequently say, “I think I can do that” and not squint my eyes and wonder whether I am lying.
This ruggedized case and computer came in the mail yesterday. If is for the project to drive cost out of the diagnosis of blood pathologies that often occur in certain developing parts of the world. This is just a prototype, but for a prototype, it is very impressive. I am looking forward to firing the thing up. I am at least a week or two from being able to do that because of everything else on our plates. My hope is to eventually be able to replace the laptop computer with an embedded computer like a Raspberry Pi or one of its more industrial strength cousins.
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.