"In the world ye shall have tribulation: but be of good cheer; I have overcome the world." –John 16:33

Category: Software Page 4 of 6

Revisiting Xubuntu

XubuntuLast night, I spent a couple of hours replacing Windows 10 with Xubuntu 15.04 on my most powerful computer at home. I currently work on three projects where Xubuntu is just better for my development needs than Windows. I had changed my cheap/travel laptop to Xubuntu 14.04 and was happy enough with that, that I switched my server/archiving computer from Windows 8.1 to Xubuntu 15.04. There were no monster differences that I could tell between Xubuntu 14.04 and 15.04, neither of which is the latest version (15.10), but every time I try a new version it is incrementally better than the previous version. I am not sure whether the work that I do has morphed into stuff well suited to be done on Linux or the tools and quality of Xubuntu has gotten better, but the whole endeavor has now arrived at a threshold where the way I use the computer is better accommodated by Xubuntu than by Windows and profoundly better than a Mac. Everything just works.

The main tool I hear does not have an equivalent in Linux is Microsoft Project, but I never use that. In addition, I cannot use my browser of choice (Opera) to watch certain kinds of encrypted videos from on of the major video providers, but I could facilitate that by viewing them with the Chrome browser. I am sure it will be available in Opera soon, too. The only computer in the house now that runs Windows is the one Lorena uses for schoolwork. I think we will leave that one as it is.

P.S. Both my buddy John (serious developer of cross-platform, internet-centric code) and Christian (my Electrical Engineering PhD candidate and very math-centric son) both run Debian stable (the Linux distro that used to underlie Ubuntu) on their main computers. I was going to do that, too, but decided I better stick with what I know.

Betty Blonde #426 – 03/04/2010
Betty Blonde #426
Click here or on the image to see full size strip.

Windows 10 install after Xubuntu 14.04 install

Installing Xubuntu 14.04 and Windows
I installed Xubuntu Linux the day before yesterday on a brand new Windows 8.1 (dual boot). When I got home last night from our Bible study, I found a note on another computer telling me Windows 10 had downloaded and the computer was ready to be updated. I started the install, then went off and did something else for a bit. I think the whole process took my computer about half an hour. I tested a few things without any trouble–I will have to do that more extensively tonight, but it actually looks fine for my most important stuff. Neither of the installations were any trouble at all. They just worked.

What struck me as odd is that I can do just about everything I want to do on both the Linux box and Windows box without any trepidation or confusion. Both are intuitive and just do all the things I want to do. Even more odd, I do not care that much whether I am on one or the other. They really are just appliances to me. I do not know whether that is a good thing or a bad thing. The days of extreme enthusiasm for one OS over another appear to be over for me. The only time I notice is when the computer does not do something I think it should. Now, my only considerations are utility and cost, in that order. It is like when I go older, I quit buying cars because they were really fast and looked fancy and started buying them based on comfort, price and utility.

Found a great little article on what to do right after Windows 10 is installed for the first time. I hate it that all these guys spy on us. Also, go to this page and opt-out of the personalized ads for “this” browser and opt-out of the personalized adds from your Microsoft account. If you do not do that, Microsoft will track way more stuff than you want them to track.

Betty Blonde #389 – 01/12/2010
Betty Blonde #389
Click here or on the image to see full size strip.

Linux and civilization

Installing LinuxThe “scratch and dent” computer I bought from the Dell Outlet website with a discount coupon arrived today. I think I got a screamin’ deal. I bought it because I needed a Linux computer for some contract work I am doing in the evenings to get one of my old employers over the hump with a product they are trying to get out. So I spent most of yesterday evening loading all the tools I need to do the development onto the new computer. That included Xubuntu 14.04 LTS, Qt/Qt Creator, OpenCV (finally moving to version 3!), a subversion client, etc., etc. I needed to build OpenCV in a specific way required by the application so I did that, too.

The upshot to all this is that I needed to sit and wait for things to finish downloading, installing and building. During that time, I found a great article about three phases through which civilizations pass: Barbaric, Vigorous and Decadent. Here is the premise of the article titled A Tour of Our Decadent Civilization on the Sultan Knish blog:

It’s easy to find examples of barbaric and decadent civilizations. We can find all the barbaric civilizations to suit an entire faculty’s worth of anthropologists in the Middle East. And then back home we can see the decadent civilization that employs their kind to bemoan the West.

Vigorous is what America used to be when it was moving west, producing at record rates and becoming a world power. Decadent is what it is becoming.

Christian and I had an interesting talk about all this on the phone a couple of nights ago. The thing that amazes me is that the vast bulk of people in America do not get it. In our conversation we attributed it to the fact that most people under the age of 30 get their information from Reddit, Slashdot, Comedy Central and Huffington Post while people over 30 get their information from Facebook.

I think we are partially right. People buy into the pseudo-scholarship of Richard Dawkins, Bart Ehrman, Marcus Borg, Stephen Hawking, Lawrence Krauss, Sam Harris and the like who represent their false ideas based on personal agendas and/or ruminations way outside their fields of expertise. It makes its way into pop culture because it allows people license to live how they want in the moment rather than do the hard work and self denial based on morays driven by objective truth.

The conclusion of the matter is the same as it has always been. Our chunk of civilization in our time and place will wake up one way or the other. Unless there are changes, it will be a very rude awakening.

Betty Blonde #388 – 01/11/2010
Betty Blonde #388
Click here or on the image to see full size strip.

Project day – Embedded Ingenuity

Piece of trash Dell Vostro 220The picture to the right is of an old, piece of trash Dell Vostro 200 desktop computer that was cheap and incapable the day we got it. As can be well attested over the years of this blog, I have pieces of projects in various stages of completion and a ton of software to go with them. Now, I have a partner in crime. My buddy John, from my last job and I are embarking on a project that includes the new little BeagleBone Black computer we bought a couple of weeks ago. The idea is to develop some capability for embedded computers that will be both educational for John and I and to create something interesting.

So, for want of another idea and maybe because of our lack of creativity, we decided to start with something simple that might be a base for something bigger if we get this first thing to work. So, here is the plan. We want to put up a website that allows a user to click a button that takes a picture with a camera connected to the computer in the picture. Next, we want to get that same functionality running on the Beagle Bone at my buddies house in Arizona. A much more portable, cheaper computer makes the project much more interesting and a little bit more difficult. There are lots of ways of very simple ways to do precisely what we just said, but we want to put infrastructure in place to extend the ability of computers to do Machine Vision, sensor fusion and robotic control tasks.

When (and if) we get this done, we have an idea about what we want our webified cameras to do that is special. It is actually a little bit more ambitious than what I did for the GaugeCam project, but also a little bit more challenging. Truth be known, the GaugeCam project was very challenging because it had to be able to work 24/7 outdoors in any kind of weather or physical environment.

Betty Blonde #384 – 01/05/2010
Betty Blonde #384
Click here or on the image to see full size strip.

BeagleBone Black with Wifi and a camera

BeagleBone BlackMy buddy John from my last job in Prescott and I stay in pretty close touch. Neither of us are anywhere near retirement. He has kids still in school and I think of retirement as working when I want to work rather than actually quitting work. Are skills are complementary and we like to work together, so we decided we ought to do a demo project so that if, someday, we ever have enough money set aside we can consult. There is a good likelihood that will never happen, but it is always fun to take on side projects.

This side project involves a BeagleBone Black single board computer, a camera and a wifi link. We have a couple of great ideas about what to do with it, but want to put a ton of infrastructure in place so we can produce quality work quickly when we decide what we actually want to do. This morning, I bought a BeagleBone Black, a USB Wifi Adapter, and a 64 gigabyte microSD card on Amazon to get started. I already have a webcam we can hook up to it. I am setting up a Linux computer as a temporary server to use to archive our work–temporary because I do not have a whole lot of confidence in the computer nor the hard drive. As we start making some progress we will probably make some other arrangements.

As we make progress, I might describe some of what we are doing here so that we can have a record of what we might contribute as consultants if everything is not already completely obsolete by the time we get to doing that.

Betty Blonde #366 – 12/10/2009
Betty Blonde #366
Click here or on the image to see full size strip.

The Senior Developer

The guy who has been most responsible for the success of the company for which I currently work sent me an article titled The Role of a Senior Developer. In the world of factory automation, there is a phenomenon that repeats itself on all large projects no matter the company, client nor industry. The phenomenon is this: A finite, specific amount of time is negotiated to deliver the product, the mechanical engineers, electrical engineers and assemblers all use a little more time than they were allocated and the software engineers are expected to make up the time that was lost. A Senior Developer who has the ability and will to “own” the technical decisions and guide the more junior members of the team is essential.

Matt Briggs, the guy who wrote the article completely nails the situation with respect to the Senior Developer. It is not enough to be smart. A senior developer has to be able to work under the pressure of impossible deadlines with management and customers looking over his shoulder. He has to make judicious use of all the resources available to him. If he does not get it done, it will not get done at all. He has to have both the will and the knowledge to make the decisions about the technology and application of technical resources. It is not for the faint of heart. I love it that Briggs identifies one of the core qualities of a Senior Developer as the realization that he cannot do it all and his job is one of service and empowerment of others and (my word) humility. Here is the core truth of the whole matter as explained by Briggs:

A senior developer understands that you cannot do everything yourself, and that their primary role is to help their team get better, in many of the same ways they themselves strive for personal improvement.

A senior developer understands that leadership is not about power, it is about empowerment. It is not about direction, it is about serving.

Full disclosure: While I have worked as a developer, I in no way believe I am the kind of Senior Developer described in the article. Really, I am a Research Engineer and develop new technology so, while I have difficult deadlines sometimes. It is nothing like what is described above. All of us who work in the factory automation world depend on Senior Developers’ for our jobs.

Betty Blonde #347 – 11/13/2009
Betty Blonde #347
Click 
here or on the image to see full size strip.

Weekend learning (and setting up to learn)

This last weekend, I spent most of the weekend taking Grandpa Milo and Grandma Sarah around and working on the learning/development stuff I have described here over the last few weeks. It has felt like I have been trying to drink through the proverbial fire hose in an effort to learn too much stuff at once, so I have started to break it up into bite-size chunks. When I did that, I realized I needed to do some infrastructure work before I even started. So this weekend, I decided to spend most of my time getting set up to work rather than invest a lot of time in learning. I held to that for the most part; the exception being that I started in on a set of tutorials on how to use GIT.

So, here is what I did:

  • Decided to use DropBox as a way to back up and share a bunch of stuff (bought a tera-byte for a year).
  • Set up a web server with WAMP on the new (cheap) desktop computer we had Fry’s make for us (on a special).
  • Made it available from other places with the help of Duck DNS (awesome free service).
  • Added an ftp server to that.
  • Installed Ubuntu LAMP server on the old desktop (32-bit x386)
  • Set up a GIT repository on that.
  • Made it available in other places with Duck DNS
  • Installed R and RStudio on all the computers
  • Went through the first third of a GIT tutorial because I am so pathetic at that. It was great and I am up and going now.
  • Added Qt, Qt Creator and OpenCV to the Linux server
  • Added XMing to my laptop
  • Learned how to SSH to the Linux box to perform code testing remotely

Next, I am going to start working up the learning curve on Machine Learning with R and continue to code on my previous projects. All-in-all, it was a great weekend. Lorena and I even went out to eat a couple of times. Now, all I have to do is start working in a few walks and my life might arrive at a sense of normalcy again.

Betty Blonde #303 – 09/15/2009
Betty Blonde #303
Click 
here or on the image to see full size strip.

A tutorial on machine learning

I just found a book, available free online, about machine learning. It has a lot of great recommendations and is in an area where I have yet to advance my skills beyond a beginner level. It is a book Kelly might be able to use if she is not already too advanced. I thought I would start to try to work my way through it. It might finally get me kick-started in this area.

Betty Blonde #296 – 09/04/2009
Betty Blonde #296
Click 
here or on the image to see full size strip.

A new (old) project–finding something to do

My buddy John from North Carolina via New York and I have started up a new software/vision project based on some previous work both of us have done. Now that Lorena and I are starting to get settled here in Oregon, we have time on our hands. John is in the same boat, so we are putting together some software to do some hobby stuff. We put together a preliminary project plan and even have a name for the work. We are not sure what we want to do with it yet. Maybe it will turn it into an open source project. We might just use it for our work. It will be a ton of work and, like always, worst case, we will learn a ton.

Betty Blonde #271 – 08/03/2009
Betty Blonde #271
Click 
here or on the image to see full size strip.

BleAx rewrite: Introduction

My daughter Kelly drew a comic strip called Betty Blonde five days per week for two years starting when she was thirteen years old. I wrote a program called BleAx a few years back to help her accumulate the four hand drawn panels of her daily comic strip into a single image with a title, date, copyright, borders and that sort of thing. The program allowed the her to automatically upload the strip to a website for display. I did the whole thing by hand for about a year, then spent about six months writing BleAx whenever I had an hour or so free, here and there. BleAx stands for Betty Blonde Aggregator of Comix.

I wrote BleAx in Python and still have it, but have decided to rewrite it as a learning exercise. I normally write programs in C/C++ in my day job, but have recently been wrapping some of the time critical stuff I write in C++ in a Python wrapper so engineers who do not normally write in a “non-garbage-collected” language can use it easily. I now have started using a set of libraries called PySide to write Qt GUI’s in Python. It took me a bit of time and hassle to get my environment set up to automate the GUI development and C/C++ wrapping in so I did not have to go through a ton of manual processes to build the programs and put the results where they needed to be. I do a lot of work with OpenCV so I will talk about how to use that effectively in this environment, too.

I am sure my process is not perfect and that is part of the reason I am doing this publicly, so some of the people that might read this can beat up my process and tell me how to do it better.  To that end, I am going to start rewriting BleAx. I do not have a ton of time, so this will be a little bit of a slow process. I am mostly doing it just for fun and documentation, but if it helps anyone else, that will be great.

Betty Blonde #222 – 05/22/2009
Betty Blonde #222
Click 
here or on the image to see full size strip.

More C++, Python, PySide, SWIG, OpenCV and an early Christmas gift

We received a great Christmas gift last night. The big, big boss of our company in Sydney (not just the big boss from Prescott) wrote a letter and gave us an extra five days of vacation over the holidays because we had such a tough year and because of some health issues in our new executive team. The reality is that no one has taken much of a vacation over the last two years and most of us have worked just about every weekend. It will be nice to spend a couple of unfettered weeks with the family.

Just as good, I have been put on a project that involves writing programs in two different languages using a couple of libraries I really like in both of those languages.

“Why two languages?” you ask.

Well, C++ is a language that is very good for doing things very efficiently and effectively, but that can really get you in trouble if you do not know what you are doing. Well written C++ code generally runs much faster than code written in higher level languages like Python. It lets you do just about anything you want and does not provide any restrictions with respect to leaking memory or jumping off into areas of memory that are totally unrelated to what you are doing. Python is a great language for people who are not so comfortable with the freedom of C++. It also allows user to write a lot of functionality fast and has lots and lots of add-on libraries to do lots and lots of things easily.

I normally use C++ because of the need for speed. Other members of my team need to use my code in programs they can develop rapidly for use in scientific experiments and production code for the instruments we make. So, we have decided that I will write my machine vision code in C++, then wrap it up in a Python wrapper using a tool called SWIG. All the tools I normally use in C++ to build GUI’s (Qt) and perform image processing tasks (OpenCV) are available in Python as libraries. The Qt libraries we use are called PySide and the OpenCV libraries are just called Python OpenCV.

I have set up my environment so that whenever I write a C++ library, the Python wrapped results are automatically built and stuck into the correct directory for use by the rest of the team. In addition, when I build a GUI with Qt Designer, I can run a batch file that turns the C++ code into a Python program. I have to do a little merging with that if I change the GUI, but it is all quite painless. I think I might write up what I have done and post it here. I am sure I have some inefficiencies and someone might be able to make some suggestions.

Betty Blonde #219 – 05/19/2009
Betty Blonde #219
Click 
here or on the image to see full size strip.

No Shave November (more than Movember), Python, C++, PySide and SWIG

What you see below is a little program I have worked on over the last week or so. It does not look like much, but there is quite a bit under the hood. The GUI is built with something called PySide which is an open source version of the wonderful C++ Qt libraries in a Python wrapper. It is amazing how easy it is to use. I knew nothing about it less than a week ago. In addition, I built a C++ capture library based on OpenCV (I will switch to camera specific libraries when we decide what camera we want to use for our project). I then used SWIG to add a Python wrapper around the library. I write this, not because I think it is particularly interesting to anyone, but because I am having a great time learning some new things, there appears to be a lot more coming and it will be good to remember what a good time I had doing it a few years from now.

You might notice that I got a little jump on No Shave November. I decided to go with the beard, partly because I have been away from home quite a bit over the last month, so Lorena has not been able to wrestle me down and shave it all off. If I can just last until Thanksgiving…

Python/C++ GUI for Machine Vision Development

Betty Blonde #212 – 05/08/2009
Betty Blonde #212
Click 
here or on the image to see full size strip.

Programming Python (again)

I have been given a project at work to write a program to control a camera, some motors and I/O and perform some machine vision. That is pretty much what I do anyway, but the high level parts of the project are to be developed in Python with the low-level, “need to go fast” parts to be written in C/C++ with a Python wrapper. I am going to be able to develop some new skills and play with some new toys, but will have to slow down my Our Homeschool Story posts a bit. I hope to keep going but not a post a day, at least for awhile.

Betty Blonde #207 – 05/01/2009
Betty Blonde #207
Click 
here or on the image to see full size strip.

Walking and a new short term project

Dad's new walking toolsI have to admit I have been struggling a little with a lot of very little things over the last month or two. It is almost a perfect storm:

  • The kids are moving three thousand miles from home to go to college.
  • My day job company is just about to deliver on the first (really hard) product so I will start on a new, big project that does not require 60-80 work weeks.
  • We lost Lorena’s father(Grandpa Lauro) which did a pretty hard reset on my priorities.
  • I have delivered a ton of new functionality to GaugeCam so my work there will probably just consist of bug fixes for at least a few months and probably a year or so.
  • I am fatter and more unhealthy than at any point in my life.
  • A few months back it seemed like a good idea to “finish” this blog and go on to something else, but I can’t bring myself to do it.  The problem is I realize I do not have anything very interesting to say.

So yesterday, when I was feeling sorry for myself, I decided to try to do something about my weight and health, so I went out for a five mile walk.  About half way through, I realized I was getting a sunburn on my bald head, so I stopped and got some walking tools (a ball cap and some sunglasses) displayed in their full glory in the obnoxious selfie accompanying this post.  This morning, I got up early enough before Sunday morning meeting to walk to MacDonald’s for some oatmeal.  Before I left, I downloaded one of those walking applications from my Samsung S3 (My Tracks by Google) and used it.  It is very cool, but the only direct place to post results is to Google+.  The stats, map, and graphs are cool, but Google+ is not really where I want to post them.

So, I think I got a short reprieve.  It is possible to send the walking results as a CSV file to my Google Drive.  So, to keep me interested in continuing to walk and for a short-term project, I think I am going to try to write an application that takes the results of the My Tracks app from my cell phone and posts them to this blog.  That will give me a little more time to think about what I want to do with the blog, find some new, bigger projects on which to work, get a little healthier, and get my act together again.

Betty Blonde #132 – 01/16/2009
Betty Blonde #132
Click here or on the image to see full size strip.

Back to work on GaugeCam


I have finally gotten a chance to spend an hour or two on GaugeCam.  I really did not have the time, but was so burnt out on everything else, I took a little time after dinner last night and fixed a few things.  Here is the blog post for the latest update.  The video shows what I did.  It used to take three or four clicks of the mouse to calibrate the water level measurement system.  Now it only takes one.  You can see it in the video above.

I have decided I am going to spend some more time on this over the next few months until Lorena and I have had a chance to figure out what we will do next. More and more people are getting interested in it and we keep thinking of new things to improve. It should be fun.

Betty Blonde #120 – 12/31/2008
Betty Blonde #120
Click here or on the image to see full size strip.

Switching to Opera

Day 960 of 1000

Due to Mozilla’s unconscionable and extreme treatment of their former CEO, Brendan Eich, I have decided to kick Firefox to the curb.  Daniel Greenfield explains the issue quite well in his blog post at Frontpage Mag.  He also makes a great case for why Chrome is a bad choice for a replacement.  I thought I would try Opera first because I have heard so many good things about it.  I am writing this post from the ScribeFire extension that I used previously in Firefox.  I have been able to import all my bookmarks and am blocking ads with AdBlock Plus.  The browsers is noticeably faster.  I will have to retrain myself to use the Opera layout, but that does not look to be too onerous.  So far, admittedly only one day, I am quite happy with the change.  I will leave Firefox installed for a few more days to easy the transition, but will put up a post when I am Firefox free.

Betty Blonde #99 – 12/02/2008
Betty Blonde #99
Click here or on the image to see full size strip.

Christian is doing the same stuff as me

Day 807 of 1000

Position probability mapAmazingly, Christian uses many of the same algorithms for his undergraduate research as I do for my day job. Christian created the image to the left. It is a normalized correlation response map used in the process of finding a pattern in an image. His work is very technical–some of the elements of his research requires deeper math skills than I normally use. It has been fun watching the work move forward.

Religious wars in the world of Statistics

Day 772 of 1000

I logged for one summer in North Idaho while I was in college.  Though I had worked in sawmills a lot, I found the logging culture both different and interesting.  There seemed to be a constant flame war going on about which cork boots were best (White is the brand I remember).  There were also continuous arguments about chainsaws (Stihl, Husqvarna, etc.), the “right” way to file you saw chain (whether to do it yourself or have someone else do it), and a million other work and tool related subjects.  It is really not much different in the world of of programming.  There is always a struggle to get everyone on the same page with respect to programming languages, development environments, debuggers, hardware, etc., etc.

I got a kick out of the seventh item on this list in an article at Simply Statistics.  It points to an article about using something called Hadoop to deal with “big data” problems.  I am just starting to learn more about different statistical tools, so it was great to be able to glean information about tools that are new to me from this article like pandas and scalding.  The pop-culture element of the article is the reason I thought to right about it here.  The disdain with which the author writes about Hadoop is more than matched in the comments section below the post.  I especially like an aside written by one of the commenters in response to a commenter before him who extolled the virtues of  language named Erlang while hammering everything else:

[Edit: I have had a poke around, and you appear to have a bit of a history of trolling and flaming-anything-that-isn’t Erlang, so if you don’t mind, I will take your criticism with a grain of salt.]

Christian and I discuss this kind of thing pretty regularly.  It is hard not to get caught up in the religious wars.  It is something I have to fight on a regular basis.  In industry it is critical to do what is best for the company.  Sometimes that means reuse of a really, really bad code base to get something to market quickly.  Sometimes it means using almost dead cult languages like Delphi and Haskell (see, I still have some religion) that have little penetration in the real world.  As I get older I realize there is nothing new under the sun.  Before there were chain-saw arguments, I am sure there were axe arguments.

Swirl: An interactive learning environment for R

Day 770 of 1000

There is a post over at the Simply Statistics blog that talks about an interactive programming environment for the R statistical programming language called swirl.  I have decided to download this when I am back in my Hotel room tonight (I am working in Prescott, AZ this week) and report what I find.  It is amazing how important statistics has become in the work I do in machine vision.  The last four jobs (including this one) is loaded with it.  I just sent a set of data off to members of our team in Australia and China because we do not have anyone here yet who can handle it.  I suspect, I will be hiring a data science consultant to pick up some small projects, soon, but believe we will be hiring a fulltime data scientist within two or three years just to consume the data we produce in my group.  I need to start studying R and Weka to get enough knowledge to hire well.  I would like to learn SAS and JMP, too.  Kelly says JMP is not so expensive, so we might start with that.  Fortunately, I have some data scientist friends who are capable of helping me.

Statistics Unconference

This is something for Kelly.  Is this cool or what.  A live stream, Statistics Unconference with excellent presenters from JHU, University of Washington, and R-Studio.  It is about the future of Statistics and statistical tools.

Page 4 of 6

Powered by WordPress & Theme by Anders Norén