Why open source software (FOSS) struggles for acceptance

I like open source stuff, for a variety of reasons. I like the philosophy behind it, and I like the idea of many eyes and many hands working together to create better things. While I do understand that there are situations where open source is not appropriate, such as with the proprietary things I work on in my day job, I also believe that there are many cases where open source is not only appropriate, but necessary.

Software is a case in point for open source. With open source software there is less likelihood that someone will slip a nefarious backdoor into an application, and the overall “attack surface” (as the security folks call it) is much smaller than with closed applications. Free open-source software (FOSS) also has the benefit of multiple eyes reviewing it, finding bugs, suggesting (or creating) improvements, and serving as inspiration for other projects. But there are two problems with open-source software that I believe will be fatal in the long run: The documentation sucks, and the attitude of some of the people who write FOSS does nothing to help the cause. I believe that these two things are closely related.

Continue reading ‘Why open source software (FOSS) struggles for acceptance’

The ESR electronics Tricorder: Update

In case anyone is wondering, the ESR project isn’t dead, I’m just waiting for some small OLED displays to show up. I ordered these a while back (in December), and they have yet to arrive. The plan is to use some of the empty space on the front panel next to the display already slated to go there. Here’s what it looks like:

oled_disp_crop

It has a 128 x 32 display space with an I2C interface. You can find this OLED display on eBay, and they go for around $4 each.

It was originally slated to arrive by the 3rd of January, and the tracking info says it’s supposed to show up today, so we’ll see.

 

Distributed Control and Sensing with USB

Distributed I/O systems are a key element in many industrial processing settings, distributed environmental controls for buildings of all sizes, vehicles large and small, scientific research settings like large telescopes and particle accelerators, and in laboratories with equipment connected to a central data collection and processing system. Multiple microcontrollers units (MCUs) provide the sensing and control to automate systems for improved efficiency, better data collection, and enhanced safety. Without MCUs, modern life as we know it could not exist.

There are multiple ways to connect an MCU-based device to a host computer system, ranging from industrial serial interface protocols like RS-485, CAN, or ProfiBus, to conventional Ethernet or wireless protocols. USB is also a possibility, but it seems to be largely confined to small-scale and consumer type applications. But does USB have what it takes to be used for applications other than just connecting a printer to your PC? Can it be used to collect data from an automated test system, or control the various components in an industrial process?

Continue reading ‘Distributed Control and Sensing with USB’

Frustrating Development Tools

I have a complaint (well, to be honest, I have a lot, but I don’t trot them out all at the same time): Why do hardware and development tools vendors insist on using things like Windows .net? It annoys me to no end to have to resort to reading through KB articles from Microsoft just to get something as straightforward as a compiler up and running. It annoys me even more when I can’t get the software running even after jumping through hoops and hopping up and down on one foot while patting the top of my head. Does it really have to be this way?

Continue reading ‘Frustrating Development Tools’

Creating Time-Consistent Loops for Embedded Systems

In an embedded system there are typically four main ways to architect the code: Simple loop, foreground-background, cyclic executive, and RTOS. In this article I will look at how to create a simple main loop with a time-consistent execution period, similar to what a cyclic executive does.

Continue reading ‘Creating Time-Consistent Loops for Embedded Systems’

1000 mW Laser Engraver

A while back I bought an Neje DK-8-KZ 1W laser engraver. It was on sale, and I was curious about it. At only 1W (1000 mW) I knew I wasn’t going to be cutting anything except paper with it, but I was looking for another way to create engraved labeling on plastic enclosures. Well, it can do that, with some limitations, and it works pretty well on wood, but my biggest aggravation has been just getting it to actually put the engraving where I want it to go, and also deal with the automatic scaling it employs.

Continue reading ‘1000 mW Laser Engraver’

Ardunio Programming: C++ and Embedded Systems

Ideally we would use assembly language to wring the last drop of performance from small microcontrollers, and at one time that really was the only way to do it. But assembly language programming is tedious and error-prone, and if I never have to wrestle with another assembly language program that would be fine with me.

With the advent of C, things got a lot easier in the embedded systems world. As its creators stated, C is essentially a close relative of an assembler, rather like a macro assembler (there’s a good Google/Wikipedia topic, if you don’t know what a macro assembler is). A C program can be compiled into very tight and efficient code, with an almost one-to-one correspondence to the underlying assembly language that the compiler generates.

But times change, and things are extended, improved, and expanded, and thus C++ arose from C. Over time C++ has become one of the dominant languages in programming, but there are challenges when attempting to use it with a microcontroller. Continue reading ‘Ardunio Programming: C++ and Embedded Systems’


Follow Crankycode on WordPress.com

Little Buddy

An awesome little friend

Jordi the Sheltie passed away in 2008 at the ripe old age of 14. He was the most awesome dog I've ever known.