OpenCAN 0.4 is another major release with changes to the API and Testbench. There was one addition to the API, support for providing and accessing device and plugin information such as descriptions, version, manufacturer, etc. The addition is aimed mainly at providing more information to user interfaces using OpenCAN.

The Testbench application received a major update. The user interface was given an overhaul so that multiple send and receive windows can be opened at one time, which alone makes sending different messages much easier. Now you can also set up multiple receive windows for watching different devices and messages by specifying a filter based on the message id and data for each window, or simply show all received messages. These updates make Testbench a much more useful tool for CAN networking with or without OpenCAN.

You can download the latest version of OpenCAN from the OpenCAN website.

OpenCAN 0.3 was released today. This release is considered a more major release than the last as there are additions to the API to support user-friendly descriptions of devices. Previously, the only way for a user to differentiate between devices was the system's device name or via additional code written for each application. So this update improves usability and maintenance.

To gain a small increase in performance I analyzed the use of the data structures in OpenCAN and converted some from QVectors to QLists. I also cleaned up the QMake project files for Win32/64 so that compiling is less of a hassle. Documentation for the API changes was added along with a few other changes.

You can download the latest version of OpenCAN from the OpenCAN website.

I released OpenCAN version 0.2 today which removes a delay in the startup of the OpenCAN driver for PEAK PCAN Linux devices. The OpenCAN driver included a short delay after starting the devices to prevent the driver from crashing and hanging the controlling application. However, the issue was only present in version 6.19 of the driver and version 6.20 fixes the issue, adding a short delay back in.  So I removed the no-longer necessary delay to increase the responsiveness when starting devices using the OpenCAN driver. None of the other OpenCAN drivers included an extra delay. I also made a few minor changes to the documentation.

You can download the latest version of OpenCAN from the OpenCAN website.

I've written many pieces of software in the past that utilize Controller Area Network (CAN) communication. Some software was written for Windows and some software was written for Linux. Plus each CANbus device requires different code and libraries to control the device and several applications required support for multiple devices. So I began using the Qt library from Trolltech (Nokia) to simplify development by creating a shared codebase for Windows and Linux. Over time I've rolled that code into a simple API so that I can easily add support for CAN communication to software. Later I added dynamically-loaded plug-ins to support new CANbus devices without modifying the software. 

Today I released the software as the OpenCAN platform. OpenCAN is open source software licensed under the LGPL. So you can support GPL and proprietary CAN device drivers and use OpenCAN in free and proprietary software. You don't have to look far to find software using OpenCAN. CreateX is one piece of software that implements CAN communication using OpenCAN. 

For more information and to download the code visit the OpenCAN website.

I just sent my official notice of intent to enroll in the Electrical and Computer Engineering (ECE) masters program at UW-Madison this fall. I am very excited about continuing my research and studies in machine learning and computer vision. Pursuing a masters in ECE will allow me to focus on applying these technologies to embedded and robotic systems as well as provide more in-depth knowledge of those systems. Using the knowledge and experience gained I will be able to provide greater expertise to help businesses create innovative products and services by leveraging software.

I will also continue working with the camera network research group on distributed collaboration using computer vision on mobile phones, potentially extending my previous project Social Tourism. This summer, along with CreateX and a few other projects, I will be working with Professor Suman Banerjee on a wireless networking project involving streaming video, but for now I cannot say any more about that. So there is a lot to do this summer, yet I am looking forward to begin work in the ECE program this fall.

Recently I gave a talk on a few research papers that reflect an idea I like to call collective vision, the process of using the billions of images on the Internet with computer vision algorithms to learn information about our world. The text on Internet web pages has been scoured for years to infer many different things from the relevance of websites to the level of buzz for a product. The billions of photos and images found on the Internet provide another large resource of data that until recently hasn't been tapped, and the potential for new insights is increasing with the proliferation of websites such as Flickr, Panoramio, and Facebook. Mobile phones with cameras make it easy for everyone to capture and upload photos, increasing the amount of available information every second.

There are a few research groups diving into the sea of Internet images, funded mainly by Microsoft, Google, and Nokia. I think the first novel use of Internet images was by Hays and Efros at CMU in 2007. They used a huge database of Internet photos to attempt to convincingly fill holes in photos, scanning the database for photos with similar regions to fill the hole. The Community Photo Collections team at the University of Washington developed the system they call Photo Tourism, which was the first system that can automatically reconstruct and visualize 3D scenes using photos gathered from the Internet. Further work has gone in to speeding up the reconstruction process to enable the reconstruction of full cities. Google uses photos from the Internet to power part of their Google Goggles search as well as a world-wide landmark recognition engine.

Collective vision could be used beyond reconstruction of the world and filling gaps in photos, and it can apply to other large sets of images that may not be collected from the Internet. In the short term, collective vision could aid in social tourism, something I'm investigating as a final course project, or it could help in disaster relief. I think some longer-term possible uses could be detection of infrastructure in need of repair or tracking and prediction of fashion trends. Other researchers and groups have begun investigating the potential of collective vision, and even more have shown an interest in it. So with tons of potential uses and lots of minds, it won't be long until someone finds another novel use of collective vision, and then there's video.

In the article The best free open source software for Windows, InfoWorld's Randall C. Kennedy details a list of 10 very useful open source software applications for Microsoft Windows. Of course, the first application mentioned is Mozilla's Firefox, the free web browser that is revolutionizing the Internet. However, as Kennedy points out, there are many more powerful open source applications for Windows just waiting for you to use. Many of these applications fill needs left by Windows and offer a free alternative to equivalent commercial software, and you may notice that I've mentioned some of these applications before.

There's millions of different software applications, but there are only a few applications that nearly everyone needs. A good word processor is something that everyone needs at some point, and the OpenOffice suite offers a competitive alternative to Microsoft Word, as well as the other Microsoft Office product offerings. Image editors come in handy quite often. Paint.net is an easy-to-use image editor, with less power than Photoshop but more simplicity. MediaPlayer Classic is a very powerful and easy to install and use media player. It actually doesn't require any installation at all, and handles more media formats than Windows Media Player and iTunes.

Open source projects offer many powerful, less-common software such as hard drive encryption for securely storing your files. TrueCrypt is one of these applications, providing a superior alternative to the commercial Microsoft BitLocker. VirtualBox is another powerful application, providing an open source alternative to VMware. VirtualBox is perfect for anyone who doesn't need the advanced features of VMware.

You can never be short on Windows utilities, and open source projects offer tons of Windows utilities. If you need to transfer files using FTP servers, then FileZilla is the application for you. I haven't found a better alternative, free or commercial. PDFCreator is a great alternative to the expensive Adobe Acrobat, though it doesn't contain quite all of the same features. Finally, 7-Zip is a superior file compression tool, unmatched by the likes of WinZip and PKZIP.

Kennedy also mentions ClamWin as an open source anti-virus solution, but it doesn't offer the features necessary to truly provide automatic virus protection. However, I agree that the remaining 9 open source applications are definitely worth downloading.  There's nothing stopping you, so have at it!

There are many ways that Open Source software can improve a business. Businesses can deliver enhanced products and services at very little or no additional cost by incorporating Open Source software. They can reduce operating costs by using Open Source software for administrative tasks such as OpenOffice instead of Microsoft Office, or in the back-office by using MySQL instead of Oracle. Businesses can embrace the future of voice communications, VOIP, and do things with Asterisk, an Open Source software implementation of a PBX, that would cost thousands to do using commercial hardware and software. These are just a few of the many examples of how Open Source software can improve a business.

So how can Open Source software improve your business? You can start by using the faster, more compliant, and more secure web browser Mozilla Firefox instead of the easily corrupted Microsoft Internet Explorer. Web pages will look and work better, your computer will experience less attacks, and you'll see more easily identifiable issues when they happen. But the benefits don't stop there. Since Firefox is compliant with web standards, your company's intranet will take significantly less time to develop and maintain, as well as be far less of a headache for the developers. Firefox also provides a whole host of features and plugins for enhancing the web experience above and beyond Internet Explorer.

Lowering your costs, and getting more for you dollar, is one of the ways to improve your business. Microsoft Windows is a very costly operating system. For example, the latest Mac OS upgrade costs $30. Microsoft couldn't sustain Windows if they offered upgrades for $30. Instead it's a good bet that it'll cost you more than $100 to upgrade one Windows machine. Then, you have to purchase anti-virus software and the subscriptions to keep it up to date, deal with crashes and slow response, worry about which emails and links you can click on, and don't forget about support costs. Linux is an Open Source operating system without all of these problems, and it's free!

Linux is offered for free through many different distributions. Linux distributions are complete systems that include the Linux OS along with thousands of applications. Fedora is one example of a popular Linux distribution. Since Linux is an operating system just like Windows and Mac, you can do everything using Linux that you can with Windows and Mac. However, you don't have to pay for Linux like you have to for the commercial operating systems. You don't have to deal with the virus and crash issues that you do with Windows, and you don't have to be locked into any platform or vendor with Linux.

Linux offers many different choices from how your desktop looks and works to how you listen to music, far more than what's offered by Windows and Mac combined. That's the power of Open Source. With Linux you can take back your computer, make it work for you instead of the other way around. I have personally been using Linux for my desktop for over 10 years. I get a personalized computing environment that allows me to get much more done in less time than with anything else. Many computer suppliers like Dell and HP offer computers with Linux installed, avoiding the "Microsoft tax" right from the start. So the next time you need to purchase or upgrade a computer look to Linux to reduce your costs and get more out of your computers.

Another way that Open Source software can improve your business is through the use of the Apache Web Server. The Apache web server is the fastest, most popular, secure, and flexible web server available. The majority of websites on the Internet run on the Apache web server. Switching to Apache is a relatively simple change, and the benefits are well worth the switch. Even if you don't host your own website, as many small businesses don't, using a web host that uses Apache will be cheaper, more secure and offer more features to your web developers.

Company intranets provide a great way to share information with your employees and allow your employees to share information. It's secure because it can't be accessed through the Internet, and you can require that users log in. You can provide individualized information, specific to that person's duties. You can post company-wide information such as employee manuals, negating the costs of printing. All you need to start a company intranet is a computer and the free Apache Web Server.

You can use Open Source software to streamline your operations, offer higher quality services, and innovative products. The great thing about Open Source software is that anyone can modify it. There are literally millions of Open Source software projects. So you may find that a slight modification to an Open Source program will give you an edge over your competitors. Your modification can be made with very little cost compared to writing the complete program from scratch. You may also find that you can offer a new or enhanced product or service by simply combining existing Open Source software.

This opens the door to many more possibilities for your business. You don't have to think in terms of starting from scratch. Instead you can look for already existing software that you can use to innovate with a simple modification or combination. Innovations can be created in hours instead of months with Open Source software. Imagine the possibilities. This is why many businesses of all sizes around the world use, develop and support Open Source software.

Open Source software is different from commercial software, or software you'd buy at Best Buy, because it is software that provides access to its code. This allows anyone to modify and redistribute the software. So Open Source software is essentially free, though there are costs for things such as CDs, printed manuals, and support, if you need them. The great thing about Open Source software is the ability to modify and redistribute the software, allowing anyone to customize the software, use the software as a foundation to build new software, or simply use the software for free.

You can be confident in the security and stability of most Open Source software. Since the code for Open Source software is open for all to see and contribute, there are many individuals, organizations, and corporations working on many different Open Source software projects. This means thousands of eyes are pouring over the code to verify its quality, and if you have any doubts you can look at the code yourself or have someone look for you. However, since some Open Source projects are more popular than others, if the software doesn't meet your standards or needs you are free to modify it so that it does.

There are many Open Source projects providing software above and beyond what you can find commercially. One great example is the Apache Web Server. No other web server is used more than Apache, by far. Nearly every website on the Internet is run on Apache. The speed, power, flexibility, stability and security of the server is unmatched by any other general purpose web server. The Apache web server has been the foundation of the web since nearly its inception, and since it's Open Source it will continue to do so for decades or more.

Mozilla Firefox provides another example of a software product that is superior in many ways to its commercial competitor. Microsoft Internet Explorer originally beat out Netscape Navigator as the most used web browser because Microsoft bundled it with Windows and gave it away for free. Yet Internet Explorer had problems. It was critically insecure, displayed websites incorrectly, and locked users into proprietary and substandard technologies such as ActiveX. Firefox gained in popularity simply because it excelled where Internet Explorer failed. Not because it was bundled with every new computer or required to run certain software. In the years since Firefox's release Microsoft has tried to undo its past, but still fails. Firefox's success is built on its ability to provide innovative, stable and secure software through the Open Source methodology.

For software to be considered Open Source the software must be distributed with an appropriate license that gives any user the rights to modify and redistribute the software. There is an organization that approves software licenses as Open Source, called the Open Source Initiative. Software licenses that adhere to the Open Source Definition are approved. There are many different Open Source licenses, each with slightly different rules. Examples of such licenses are the popular GNU General Public License (GPL), the Mozilla Public License (MPL), the Apache License, and the BSD License.

We all benefit from the use and improvement of Open Source software. Open Source software will never go away. It can't, since someone can always pick up where the last person left off. So it will only improve with time. The better it gets, the more people will use it. With more people using the software there are more people to improve the software, as well as find and fix issues. Anyone can use the software, thus we all benefit when one more person starts using an Open Source product or a developer contributes code to an Open Source project.

So if Open Source software is so good and free, why does any other software (i.e. custom, commercial) exist? Open Source software is good at many things, but not everything. There's a "cycle" to Open Source software. Generally, software that requires some financial investment in research, or to be built upon commercial software, starts off as commercial software. But as the underlying software become commodities and Open Source software foundations become available, Open Source equivalents can be created, and the commercial solution becomes a commodity. Basically, innovative software starts off difficult to create and replicate, but as software technology progresses, the innovation becomes easier to replicate. Even still, niche software can't be easily developed as Open Source since there just aren't enough users. There will always be a need and desire for commercial, Open Source, and custom software.

Read more on how Open Source software can improve your business.

Custom software is a cheap way to innovate your business's operations, products, and services. Everyone wants custom software, but custom software can be expensive when compared to existing alternatives. So do you need custom software?

This question is not easy to answer the same for everyone. Whether or not you need custom software is a function of both cost and features. If there isn't any existing software that fulfils your need then your only option is custom software. However, for most people the question is much less black and white. Your needs might be partially fulfilled by existing software, or you might be able to customize the existing software, or even "weave" together a solution using different existing software solutions.

If you're in the grey area, you must consider the costs of each solution before making a decision. Not all costs are upfront or easily determined. For instance, many businesses run into the problem when they first purchase off-the-shelf software just like the rest of their competitors. It roughly does what they want, but it turns out to not offer the flexibility they need to deliver the truly innovative product or service they had envisioned. They may spend more time and money working with support staff and customizing the software, or they may simply start over with custom software. If you're planning to incorporate software in your product or service, research the available options and make sure ahead of time that you know the true costs and that the solution will provide the features you need.

If existing software fulfils nearly all of your needs, and you can accept what it doesn't, then the existing software is probably a good solution. Some times this is easier to see than others. Take your time to think through all of the ways you will want to use the software now, and into the future. You want your software decision to last as long as possible, often referred to as the software's lifespan. How often is the software updated with new, relevant features? If you're going to need features in the future that don't exist now, including those features now through some sort of customization could save money while providing you with those features now.

If there is existing software that is close, but just doesn't cut it, there could be the option of customizing the existing software. Whether or not you have this option depends upon the software owner. If they won't do the customization, or allow someone else to, there's no option. However, most software owner's would be glad to get more customers, and aren't as resistant to customization as you might think. Customizing an existing product is a quick way to provide the solution you need.

Sometimes you can combine different software using custom software to get the solution you need. Usually you won't need permission from any software owners to do this, and it can be a very simple task. Scripts are a perfect example of a simple solution that can combine different pieces of software together to create a new solution. There are many other ways that this can be done as well. In fact, most software today combines many other pieces of software.

All of these options include the cost of the existing software as well as the incorporated custom software. A complete custom solution may be the right solution for simple and complex needs. A good idea is to decide which options completely fulfil your needs, and then determine how much each costs. The solution that requires the least amount of time to implement is probably the cheapest and best option, because it will presumably be less complex. But that is not always the case. A full custom solution may be less complex and much cheaper to maintain, because it was developed from the start to satisfy your needs.

Custom software is software that is created to fill a need left by a gap in the features of existing software, customize existing software, or to combine existing software in order to accomplish a new task. With new devices and technologies coming out every day to take advantage of, there will certainly always be holes in the features of existing software. Custom software is written to fill these holes.

The main motivation for custom software is innovation. Businesses incorporate custom software in their operations, products, and services in order to stay competitive in their industry. Custom software is written to do something that software has not done before. So custom software is inherently a vehicle for innovation. Custom software also happens to be a relatively cheap way to innovate compared to the costs that go into creating or modifying a physical product.

Many businesses write custom software every day. One of the more common forms of custom software are scripts. Scripts are generally short and simple pieces of code that are written to execute a repetitive task. They are used to combine existing software so that manual tasks can be automated. Scripts are used in all aspects of a business, from operations to sales. Scripts are simple to write and have the potential to offer great value. So they are a very cost-effective form of custom software.

Businesses also create more complex custom software for their operations. For instance, most large corporations use custom Oracle, SAP, or other similar software to handle things from ordering and inventory to sales and market tracking. Businesses may have custom software that runs part or all of their production or manages workflows. Custom software is often used to run company intranets which provide an accessible way for you and your employees to share information.

Many products and services incorporate custom software. Nearly every new electronic product incorporates custom software for the simple fact that no software was already written since no such device has existed before. Yet many products are enhanced by incorporating custom software. You wouldn't necessarily think that software runs on firetrucks, at least not beyond the engine. However, custom software controls and enhances many of the tasks a firetruck carries out such as providing more information and control to the firefighter running the pump.

More and more services are incorporating software, and adding custom software to your service gives you an edge over your competitors. Whether you run a restaurant that delivers pizzas or a fitness club, custom software can add value to your service. For example, many restaurants offer online ordering, utilizing custom software to process the orders from the web and send them to the kitchen. This is a great way to provide an accessible and "at your own pace" way for your customers to place orders. They can take the time to browse your menu and decide what they want, then quickly place their order, and you didn't have to provide any staff to take the order. Plus, you can update your menu without the cost of printing.

Custom software is written to do something new or different, but its intent is not necessarily to be sold as packaged software. It's used to enhance a business's operations and create innovative products and services. Custom software doesn't need to be complex or take months to develop, it can be as simple as a script written in less than an hour. So any business can use custom software.

Read more to find out how to determine if your business needs custom software.

A technical definition of software goes something like this: a set of instructions or procedures that are defined in a mathematical language so that they can be repeatedly run on machines, i.e. computers. Simply put, software is a tool that can be verified to always run correctly. It can be run over and over to repeatedly complete a task or set of tasks. Tasks can be as simple as sending an email or as complex as deciding whether the person on the phone spoke the word "fax" or "sax."

Anything that can be controlled by electricity, either directly or indirectly, can be controlled by software. Software runs on electronic computers, which can send electronic signals to attached devices, such as your keyboard or a camera. Software also controls the gauges in your car and the traffic lights you pass every day. The software controls these devices in much the same way that it controls the pieces of your computer like its hard drive, RAM and monitor.

So what does software look like? Some software is easy to see, like your web browser in which you are reading this. But what about the software that controls the gauges in your car? What does that look like? As I said before, software is written using a mathematical language. So all software looks like pages from a book, just not in English. People generally only see what software does instead of the software itself.

Writing software isn't much different from writing a book. A plan and outline for the book/software must be thought out and created. Then the book/software must be written, in this case using a computer to type it. Several drafts of the book/software are created and distributed for review. And finally, after many revisions, the book/software is publicly distributed. Of course this is an over-simplification, but the details aren't necessary. The two works have different audiences, people for books and computers for software, but the process is the same.

Software, done right, simplifies our lives. Think about how hard it is to type a paper using a mechanical typewriter versus a computer. Major changes often required retyping the entire page. Using a computer, moving a paragraph takes seconds. And it always works, the computer doesn't make a typo when you cut and paste a paragraph.

Software makes us smarter. The Internet allows us to access more information, and to take in more information than we could 15 or 20 years ago. Databases and analysis software help us to use information more effectively. There's software for pin-point marketing and weather prediction. Speaking of weather prediction, software's not all perfect, but science and innovation continually pushes its progress.

Software creates new ideas, new products, and new ways of doing things. By simplifying our lives and making us smarter, software gives us more tools, time and technologies to think in new ways. All this thinking creates innovation. Innovation in our thought, our products, and our every day lives. It may be hard to imagine what it's like to be born in the Internet age, but it's not hard to believe that they will grow up thinking in very different ways, just as easy travel with automobiles and easy communication with telephones changed our culture and created a slew of industries after them.

Software is a tool that provides us with ways to increase our productivity and reach beyond our human limits. Software simplifies our lives and increases our individual and collective intelligence. Yet it's not much different in its creation than the centuries-old technology of books.

There are probably infinite ways that technology can improve your business. Some take large investments in time and money to implement while others can be implemented in minutes and cost nothing. Other ways that you might use technology to improve your business are specific to your business or its industry. I would like to focus on those ways that can apply to many businesses quickly and effectively.

Software is one of the best ways to harness technology to improve your business. It's relatively cheap to acquire compared to physical products, and it can have an immediate, significant and positive impact on your business. There are millions of software solutions available, and if you can't find what you're looking for custom solutions can be quickly developed and implemented. There is almost certainly a software solution that could improve the operation of your business or its products and services.

VOIP (Voice Over IP) is a great technology to take advantage of. VOIP replaces the majority of hardware involved in a standard phone system with a server running software. VOIP software solutions provide tons of features and infinite configurations not available with a standard phone system (at least not within the budget of most businesses). There are many commercial-grade VOIP software solutions available, with costs ranging from free to thousands of dollars. You can convert a small office to full VOIP by using an existing server and a couple hundred dollars in equipment.

Wiki is a funny name, but a powerful technology for collaboration. Whether you have one on your intranet, website or both, a wiki allows you to share knowledge in a very accessible, yet controllable, way. Everyone in your company could share useful information like company manuals, news, product ideas, etc. on your intranet. You and your customers could share support information and user experiences on your website. Wikis are simple to add to any intranet or website and increase the knowledge and relationships between employees and customers.

Blogs are another powerful technology for sharing information, though with less of a focus on collaboration. Blogs "push" information to readers, they're kind of a "stream" of information. Blogs can be useful for internal information, but provide even more value externally. A blog can bring more return visitors to your website by providing new interesting or exciting information. You keep complete control of the blog's content, but they should be written from a more personal perspective than press releases. A blog can become another medium for communicating with your customers. One that keeps your customers interested, excited, and coming back.

Open Source software encompasses a large set of software solutions that are freely available to use, modify and distribute. Many of these solutions can be quickly implemented by businesses to improve their productivity and offer more value. In fact, there are powerful and mature Open Source software solutions for all of the technologies mentioned above. Also, businesses can enhance their products and services with little investment by incorporating Open Source software. There is Open Source software for many business tasks from administrative to production, all of which you can begin using now at no cost. 

Technology can improve your business in many ways, many of which you probably haven't even thought of yet. However, technology can be expensive. Software is a relatively cheap form of technology that businesses can utilize to improve every facet of their business. Open Source software is the most accessible software, allowing businesses to innovate and stay competitive with very little investment.