Saturday, October 29, 2016

What Might Have Been part 2.

I was never a good reader. In high school and college I would go to the library to read Aviation Week, or look at books on flying (not many) and electronics. There were always little project books. About 1978, I went into the very back of a B. Dalton Book Store, and found a section on computers. I suddenly was someone who would buy books, and actually read them. B Dalton and Barnes and Noble merged in the early 80's so I would seek out book stores where ever I was.

Through the 90s I relied on Barnes and Noble (B&N) to have the books I needed for the various jobs I was pursuing. As technology changed, so did the book shelves. I think for a while my local B&N store had 2 or 3 rows with multiple shelves full of computer books. The variety was very good from end users, to developers.

In the late 90s Amazon was born, and my book buying shifted. I went from perusing the book shelves at B&N to shopping on line, and ordering whatever I needed. It didn't matter that it might take 3 days to get the book, it was probably available, and I was going to get it. Eventually Amazon gamed the system with their multiply rejected one-click patent, and I vowed never to buy anything there again.

It didn't matter, there were other book sellers on line. I mostly use, but there were others including A1 (now out of business). These book sellers would sell new and used books at a fraction of the price others were.

As technology started moving faster, some of the books were out of date by the time they hit the shelves. Online forums replaced the tech books. Open source software begat open source documentation, and eventually tech books seemed obsolete. I mostly stopped shopping in book stores, since everything I was looking for was on line.

A funny thing happened though. The magazine stores went out of business, so I would go to B&N about once a month to browse magazines for some of the fringe subjects I am interested in (Model Railroading, Wooden Boats). These are subjects I am interested in, not always for the actual heart of the subject, but they are craftsmen and hackers on a whole nuther level.

This month, I had an article published in Kitplanes Magazine and I wanted to get a couple copies. While wandering the aisles in B&N to see what else is going on, I noticed several kits that might be useful. The store carries Little Bits and Arduino kits, along with some other robots and RasberryPi kits.

The kits sold at B&N are not the cheapest, but are probably suitable to the retail space where clerks may not be able to provide much after the sales support. But maybe their staff knows a thing or two. On top of kit display, there was a sign:

Yes a mini maker faire at all the stores. I am hoping the staff is helping and participating. It sounds like they are moving in the right direction. Engaging the community. Go if you can, tell 'em it is a great idea.

If you go, please give me some feedback.

Saturday, September 3, 2016

Becoming an Embedded Programmer

Some people want to be embedded software engineers. Not everyone is cut out for doing web pages, an making the page a little more blue (it happened to me when I was confused, early 2000's). No, some people like to get data in the raw, and make it something that people will use.

I've been hiring for the company I work for, doing interviews for the last year. It has been tough sledding trying to find young people out of school, and people with years of experience to understand what embedded systems can be. Some think, raw hardware, no operating system. Some others think once you have the OS, why not make it all web based. Others don't want to do Linux, and think the system ought to be Windows based.

The company I work for writes software for a Linux based embedded system. Most of the projects are reading data from some hardware device, quickly transforming it, and maybe jamming it back into another hardware device, or writing he values to a hard disk, or NVRAM. Data synchronization is paramount, it doesn't work to get something a few seconds from now mixed up with data that is happening now. Sometimes we need to keep two input sources in sync (IE audio and video), so two threads need to know when to start and finish.

Getting a Rasberry Pi or something similar (IE Orange Pi) is a great start. For the cost of a couple cups of coffee (or only one, depending on where you buy things) you can get an embedded system. The Pi systems are Linux based, and allow writing code right on the device. The Pi's also allow developing on desktop systems, cross compiling for the hardware.

One thing the Pi's all seem to have is rich AV capabilities. All seem to have HDMI out, along with audio in and out. Many folks use the Pi systems as desktop systems, all on their own. Most of a Linux system is available, including X windows, and desktop type programs (word processors, spreadsheets and browsers).

As a developer, play with one of these Pi systems, and use it as a data collector system. Go ahead, connect something to the GPIO pins. It could be an LM34 chip measure the temperature of the garage or something. Fire up a web server an built some Perl or Python to display he last 36 hours of temperature. Tada, you have become an embedded programmer.

Examples... Well give me a couple days. Do you want to collect the stuff you need? There is a service called Hackerboxes that will send you random projects every month to build. For September 2016, they have an OrangePi kit. I am downloading a desktop image while typing this in. Compressed the desktop is 540MB.

Keeping thing in sync, use mutexes and semaphores. If you don't know what they are, read on the web. They are a great tool to allow multiple threads to stay in sync, and keep the data correct and useful. If you code in Java, read about wait and notify Java.lang.object. If you use C or Perl look at posix threads.

It is cheap, and you can be an embedded programmer in no time.

Sunday, February 7, 2016

What Could Have Been

Radio Shack is no more. I am both sad, and not surprised. I got my start with Radio Shack components, 80 in One kits, and Forest Mims books. I relied on Radio Shack for resistors, and my introduction to Integrated Circuits. They didn't have everything, but they had most of what I needed through college building computers and robots. If I needed some wire, or a 15k 1/4watt resistor at 8pm on a Thursday, Radio Shack was the answer.

Tandy wire and cable made some wonderful coax and other wire. The RG-58 was really nice, and available both with a braided center core and with a solid center core. Of course they sold connectors to go with it. Asking a clerk for help, they happily would cut custom lengths, or suggest pre-made cables.

Somewhere along they way, Radio Shack changed. After college many things were in flux. The computers that people built at home were no longer chips (yes, Radio Shack sold 8085, and 8080 CPU's plus others), but were boards. PC's that people built were now plug together boards. Radio Shack only sold some expansion boards, and pre-assembled computers.

Radios changed as well. Fewer and fewer people were buying component stereos, and self installing car stereos. I am sure the sales at Radio Shack declined during the late 80s and early 90s. To compensate, Radio Shack expanded into television sales, and other consumer electronics. Eventually Radio Shack was getting heavily into the cell phone sales for all the carriers.

Expansion of the consumer electronics area caused the reduction in the component floor space. The clerks didn't want to waste their time selling 10uf capacitors when a customer wanted a new cell phone. The knowledge of the staff was on the decline. I've heard stories about EE students that wanted to work at Radio Shack were actively discouraged because they might spend too much time helping with components.

The last couple of years, the president of Radio Shack was really making an effort to "fix" the decline of the brand. There were engagements with hackaday and other hobbiest web communities, The communities were slightly hostile, but most of the ideas were too little too late. The brand was bought by Sprint in 2015, and most of the stores have closed.

What Could Radio Shack Have Been?

I've been going to Micro Center for a bunch of years. They mostly were the place to get reasonably priced PC's. They had all the accessories, boards, power supplies cases, and cables. Their prices are good, for a retail operation. They had a closeout section that often had some amazing deals.

PC prices have plunged. When a PC or laptop used to cost $1000-1500 in the early 2000's, now a modern PC or laptop only cost $300-500. The gaming systems are not making as much money, it seems, and the book sales are almost non-existent. The shelves are still full of accessory boards, CPU's cases and power supplies.

Micro Center has expanded into the hobby space. They have a very large selection of Arduino boards and accessories. The Rasberry Pi selection is equally full. The prices are as good as mail order as well. At Christmas time, they had Rasberry Pi Zero boards for $5, but were sold out quickly. The aisles were full when I went there yesterday. I don't have any insight to the income this is generating, but people are buying the the hobby electronics, and I will continue to.

What if Radio Shack had followed the hobbyist trends? Well Radio Shack did sell Arduino boards toward the end. The prices were very high (I think I remember looking at an Uno for about $24). It was something I couldn't justify. What if they had kept the prices better? With the mall space rent as high as it is, they might have gone out of business sooner. Hard to say.

Do you think, if Radio Shack had done a better job with hobby electronics, they'd still be around?

Sunday, January 17, 2016

Something Similar

My ideas are not unique. Someone else built an engine monitor using some hardware and an Android tablet. The engine monitor box is built by Skylab, and is called a Flybox. The app is in the playstore called Aircraft Instrument Panel.

It is more for ultralights, microlights and LSA's that have only a two cylinder motor. It has:

  • Airspeed (pitot)
  • Altitude (Barometric)
  • Vertical speed (calculated from barometric altitude change)
  • Engine RPM
  • Oil Pressure
  • 2 CHT
  • 2 EGT
  • Oil and Water temperature
  • Fuel computer
  • Battery voltage
  • Total flight hours

It would be nice if the 2 EGT's could be converted to 2 more CHT's (and maybe it can, I haven't looked yet). I posted a question on their facebook page. 

It looks based on their facebook page, they allow other users to help develop this system. Fly is fun is integrating with them as well. It shows at least for now there is a vibrant community around this system. 

Thursday, January 7, 2016

ADS-B compliance, You Can Get a Loan For That

Do your homework, but sure, you can get a loan to install ADS-B right now. Congress just passed a bill that will allow government guarantees on loans for money used in GA ADS-B upgrades. The scheme er plan is called "NextGen GA Fund". The idea is, if you don't have the cash now to upgrade your airplane, just borrow some, and you will be ADS-B compliant sooner rather than later.

Just for fun, I filled out the application. It took maybe 10 minutes, and today I got a note showing I was approved! I can get a loan for $10,000 to equip my Cozy with some new avionics. What would $10,000 cover? Well it wasn't a total magic number. I've been thinking of the MGL smart panels since I started building my airplane. The 8.5" iEFIS would be a wonderful thing to replace the 6 pack in my airplane.

iEFIS Explorer

Their web page says $6000 for the main package, including engine monitor, attitude heading reference and their encoder output box for the transponder. To make this ADS-B out compliant I still need either a UAT or a Mode-S transponder. I'll choose the UAT, since I got this cool display that will allow me to see traffic and weather. The NavWorx for experimentals box was about $700 a year ago, but today it is $1300, which isn't horrible still. That would leave me about $2500 still to go. The MGL panel has remote com and transponder capabilities, and MGL sells com radios and transponders that would connect to that as well, for about $2500 (well $1050 for a com, and $1550 for a transponder). Not bad for $10000.

That upgrade would make my plane pretty sweet. Go fast, ready for the future, and still only have to pay about $320/month.  None of this pricing includes the wiring that would have to go in, or the installation. The installation in my plane, since I am the manufacturer, can be done by me. I can charge myself 50cents an hour if I want. I don't want to be all polly-anna but I could do a lot with ten grand.

If you have a certified plane, I am guessing something similar would be about $30,000, since installation wouldn't be free, and certified equipment would need to be purchased.

(this is where I want to put in a record scratch sound)

Wait a minute, 300 a month for 36 months, that is $10,800. I don't need to put in these avionics yet, I got almost 4 years to go. What if I put away 300 a month for 3 years and wait to see what is available then. I should also look into what I can get a load from my bank for. Probably at better or equal terms than these folks are offering.

There is nothing wrong with waiting 3 years. If it doesn't take a whole year to install all this, my plane will still be compliant in 2020. Avionics are getting better, and cheaper every year. Surely something will break loose and this whole mess will be affordable.

(If you don't know much about paying for airplanes, some airplanes can be bought for under $20,000. Putting $10,000 into an instrument panel for a $20,000 airplane won't increase he value of the aircraft much, certainly not $10K. It is a bad investment. My airplane cost a little more than $20K to build maybe twice that much, even still $10K in the panel won't help the value too much. If I did this it would be for my pleasure. Affordable is still relative, but airplane owners are not all rich people.)

I am sure there are some bankers and others who think this is needed. To me it is some PAC wasting congresses time. The could be working on PBOR2 or funding the FAA or something useful. More and more the congress get the prize for doing something, but not anything useful. (sorry about going political).

Friday, November 27, 2015

Time To Give Up on 8 Bits?

While we were sleeping in, Thanksgiving in the US, the Raspberry Pi folks released a new Pi. The Pi Zero is only $5. This is an amazing board, with 32bits of CPU, 512K of RAM and all the ports people would like, GPIO, HDMI and USB. It supports micro-sd for mass storage.

While the Arduino eco-system is in great shape, is there a reason to stick with an 8 bit CPU for most projects? The Uno and other boards start at over $25. Sure, you can get the boards cheaper on eBay and other Chinese importers.

The Arduino boards are perfect for many projects. If there is a simple input and output situation the Arduino is perfect for these situations. My garage door project is an example. The Bluetooth input, and the relay output makes the Arduino the simple interface.

There are other boards similar to the Rasberry Pi. The C.H.I.P is a $9 computer that has all the same IO as the Raspberry PI, but also has WiFi and Bluetooth built in. The C.H.I.P is still pre-order, but should be available soon.

The big deal with the 32bit processors like the Raspberry PI is it runs Linux (or Windows). That means development can happen on the board or cross compiled (more than likely cross compiled). It also means there are many debug tools available from GDB and tcpdump to a ssh console. The 32bit processors run quicker so other inputs (IE video) are more capable.

I've been planning on putting a 32bit board (waiting for my C.H.I.P) on my robot all fall. The robot will have an Arduino on it for sensor monitoring and motor control. The goal is the two processors will talk to each other and allow the 32bit processor handle thing at a high level, where the Arduino will be doing all the low level work.The 32bit chip can also run R.O.S.

There is a place for 8 bit processors, but more and more it is easy to pass them by.

Tuesday, November 17, 2015

Form Over Function

I know I have railed against this before, but it seems to be getting worse. My examples are Android specific in this blog, not because they are the worst, but because I am most familiar with these apps. Microsoft has and continues to do it, along with Apple and most other software companies. Putting the looks of an app ahead of it's functionality is a disservice to the users.

There certainly is a place for consistent user interfaces. It is really nice that most apps have a file menu, edit menu and view and ... usually ending with help. It makes switching between apps pretty straight forward. Then Microsoft went to the "Ribbon" look and took all that away.  Some people say it improved their productivity, and I might argue it does, for the people who stick to a few apps. Most people though, use multiple apps all day doing this or that.

I am a long time Emacs user. Forever and ever people have been telling me that it is hard to learn, so they stick to whatever editor they like. Right, Emacs is really hard to learn, but after 20 years, I know it too well, and can't teach it. All the commands are muscle memory, I usually don't even know what keys I am pressing. The keys are grouped, so there is consistency when going from one group to another. I am really fast at using emacs, and I credit that for giving me the edge when I get work done quicker than others might.

The trouble comes when people take perfectly fine apps and try to apply another paradigm to them. Microsoft did it with the ribbon. I am sure it helps people who use Word all day long, but for people who switch between Word and Project and Acrobat, it is frustrating. Occasional users will find unfamiliar UIs confusing no matter how hard people say they are easier. Windows 8 might have been a fine UI if it was the first UI anyone had tried to use. People who had been using every other UI since about 1980 will find Windows 8 home screen jarring.

In the last year or two Android has tried to get all apps to use the Material Design concept. Apps that were working fine in their own look and feel are suddenly changing to the new Material design look. The look I don't much care for, but also the functions that an app may have had are suddenly gone. Sometimes it is spacing, sometimes it is a misinterpretation of the design language, sometimes it is some unknown reason.

A perfect example of this was the Google Calendar. It was a really nice app, and then is got "Materialed". In the first iteration, there was no longer a month view, and weeks were chopped off at 5 days. They added a summary view, where the appointments that are happening soonest would show in a list. The summary view is common in some calendars, so this was a nice addition. Missing the weekends or the month view was really frustrating. Eventually weeks became 7 days, and months could be viewed, but by then I and many others had switched to Sunshine calendar or aCalendar and never looked back. It damaged Google's reputation.

Android developers are encouraged to make their apps follow the Material design language. This guide changes occasionally, so tracking the latest guidelines can add work for a small time developer. Some of the guidelines aren't clear, or there are questions how some guidance applies to a certain paradigm. One app may feel the guidance says do function X this way, where a competitor feels the guidance says to the same function another way.

I find the floating buttons are in the way many times. The circle + in gmail is in the way more often than I care for. I find other apps that use floating buttons are equally in the way. There are ways to do things different, but the Material design guidance doesn't mention them.

Colors and Such

There are many studies on Human Computer Interaction (HCI) that offer clear recommendations on color. Many apps are getting it wrong, but people claim the apps are "beautiful". Again, there are ways to make an app "beautiful" and functional.  The Material design guide follows most of the HCI recommendations, but the words do not.

A big thing is I've been told forever in UI design is avoid saturated colors. Back in the early days with 8 and 16 bit screens, the colors were limited. There were only a handful of colors, and to convey information, they needed to be done as best we could. Sometimes older interfaces look primitive or cartoon like. With fewer colors, the choice included many saturated colors. Today, we have millions of colors to choose from, and we can convey more information using more of them.

What is a "saturated" color, and why should they be avoided?

Looking at a color wheel, the saturated colors are the ones on the outside.
Looking at the wheel from farther away, the eye can see little triangles at the numbers. The colors are different through these triangles. The colors are indistinguishable when placed near each other. Placing a color in the 6 area next to a color in the 3 will certainly contrast, but that would be very jarring. Moving in from the edge a little, maybe 20% of the way in from the edge, the colors are less saturated, and the colors are more distinguishable. Selecting 2 greens in this area will likely be visible to the eye, and allow the users to distinguish between information presented using these colors.

There are theories about how to mix colors, using complementary and analogous colors. Following these theories can prevent users from feeling their eyes are assaulted. There are ways to use colors to set moods and to convey a sense of importance to information.  

There are tools on the web for selecting colors to provide the right look. Many of the tools will put the basics there, and offer the chance to blend them to get the unique look desired. 

Changing UIs

The best way to change what users like is to do it gradually. Never remove a feature. Emacs is a great example. Moden Emacs UI's include the familiar File menu, Edit Menu, ... ending with help. All the keyboard commands still work, and I can turn off the tool bar to get more edit space on my screen. All of the macros are available, and there are more, some I discover new. Adding functions is a good thing, but don't force the users to use them. The users know their tool/app and use it their way, maybe not the way it was designed, but certainly in a way that suits them 

The user looks at an application as a tool. They have a problem and they need a solution. If your tool doesn't meet their needs, they will find another tool that does suit it. Maybe Excel wasn't intended to be a word processor, but some people will insist on using it to edit blocks of text. Let the user find the tool that suits them.

What is your favorite tool that someone has destroyed making it "better"?