Mark Lenz

Posts by Mark Lenz

by Mark Lenz

The latest release of OpenCAN introduces a user's request for runtime support for switching between CAN 2.0b extended and standard, as well as several bug fixes. Autonomous message polling now completely empties the receive queue every time a device is polled. A bug in the Windows PCAN plugin was fixed that caused the device to continuously send a single message, and a confusing compiler warning when using the MingW compiler on Windows was fixed.

Currently, no issues are known to exist in the OpenCAN API core and plugins. Issues may remain in Testbench, but no major issues are known to exist.

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

by Mark Lenz

In an effort to bring OpenCAN to production-ready status several critical bugs have been fixed along with minor improvements to the documentation and Testbench. The OpenCAN core was left unchanged, but the most critical bug was a crash in Testbench if no device plugins are loaded. Two bugs were also fixed in the PCAN plugin for Windows. The first, not correctly setting the baud rate, and the second, not correctly reporting the status of the connection to the device. Testbench was improved by increasing the drawing speed of the receive message windows.

Currently, no issues are known to exist in the OpenCAN API core and plugins. Issues may remain in Testbench, but no major issues are known to exist.

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

by Mark Lenz

OpenCAN has received a much-needed update, version 0.5. Both the API and Testbench have received major updates. Support for multiple devices has been improved by making it easier to request a specific device as well as making plugin and device information more clear. Support for changing the baud rate and displaying message timestamps was added to Testbench. Nearly the entire UI for Testbench was cleaned and polished. The documentation was also updated to include more information on compiling, installing and using OpenCAN.

String processing efficiency has been increased by using Qt's fast concat. So, OpenCAN requires at least Qt 4.6 and is written and tested using Qt 4.7.

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

by Mark Lenz

I had a great conversation today about social media that inspired me to share my thoughts on social media and its future, an open and distributed network that reflects the intent of the Internet. Everyone on The Business Source team met for an extended lunch to discuss our goals for the next few months. One of the major focuses in our discussion was helping businesses get the full potential from their social media efforts. Social media can be a valuable marketing tool, but many businesses run into issues utilizing the tool and integrating it into their overall marketing strategy. Laurel Cavalluzzo, owner of Madison Marketing Communications, has joined our team to use her knowledge and experience to provide sound, valuable advice on doing just that. 

If you know me you know I have a few qualms with social networking sites. If you don't know me, it may be because I'm not on Facebook. Maybe it's the engineer in me since 85% of engineers don't like Twitter. I admit I just started using LinkedIn and social networking sites can be useful, but they also have their disadvantages. One recent example is the latest attack on Twitter by an Australian high school student which wasn't malicious but could easily have been. The main issues I have with the current state of social networking and media is security, ownership, privacy, redundancy and censorship. In fact, even though site membership has increased, users are hardly satisfied with current social media sites according to the American Customer Satisfaction Index. So given my feelings you can begin to imagine where our social media conversation went.

Laurel responded to each of my inquiries with precision, but with so many other interesting and important topics to discuss there was little time to share my complete vision, nor I'm sure Laurel's. I believe that social media is a very important new communication and archival vehicle, and we've only seen the very tiny tip of a very large iceberg. Not to sound prophetic, but I think "Web 3.0" is nearly upon us and it includes full integration of social media and traditional websites through an open social media network. We can solve many of the issues with social media by developing and harnessing an open network, and there are many additional benefits to an open network.

Security

The most critical concern of any business should be protecting its assets. Social networking sites are famous for their lack of security. From attacks similar to the Twitter attack that take control of users' accounts to users themselves leaking sensitive information with and without intention. A recent article describes many of these problems faced by small and medium businesses, costing many businesses upwards of $5,000 in the first half of the year. That's just another unpredictable cost of using social media sites, and with everyone's accounts in one place it makes for an easy decision when choosing targets to attack. 

As an example of the fragility, a few days ago Facebook was mysteriously offline twice in 24 hours, and the lack of security with regard to the U.S.'s networks is one of the NSA's top concerns. The NSA chief and head of the U.S. Cyber Command recently told reporters he wants to create a secure partition of the Internet to protect our most vital infrastructure. One attacker could get millions of users' private information with one attack. Issues with security will probably never be completely solved, but we can continue to improve.

Ownership

The ownership of intellectual property, the text, images, video and music you post, is another major issue with current social networking sites. Currently, sites such as Facebook will continue to publish your content long after you've removed it. When you post content on these sites you agree to allow them to use the content in nearly any way they wish. I am not familiar with the terms of use for corporate accounts on social networking sites, but clearly there are implications for personal use and there's no reason to expect them to be any different for businesses. Facebook has had many issues in the past, and even though they may not keep all of your data for whatever purpose forever, they can change the rules at any time.

The ways in which you can use your content on a social networking site are governed by the how each site is designed. None of the social networking sites make it easy to swap content between sites or export it to other media. When a social networking site becomes obsolete, as MySpace has, all of your content, friends and likes are stuck on that site and you have to rebuild your profile and connections on another site. If I were a betting man I would wager that Facebook won't be the social networking site du jour forever, and the new Google Me or Apple Ping could be the replacement. Businesses haven't been the first-movers in this space. So businesses will eventually be forced into paying to rebuild their status on a new site once a critical mass has migrated. If we could retain control of our content by hosting it ourselves, or through web hosting providers, issues over ownership and portability would not exist.

Privacy

Privacy issues arise in part because of a lack of security but also for various other reasons. Facebook has dealt with many privacy issues in the past. Many of the issues were due to features created by Facebook to increase the sharing of user content and from changes in privacy settings. Google Buzz launched to loud criticism because of the amount of private information that it automatically shared. Since you have little control over how your content is shared and displayed on social media sites, and many settings can be buried under layers of obscure menus, you may not know exactly who can view which elements of your profile or how to change those settings. I don't think these issues will be solved by incremental changes to the current social media sites.

Though social media sites have made progress to protect private data there continue to be privacy concerns. Software techniques called machine learning can be used to infer many surprising and private things using the data collected from you and your friends' public content. Not only is your public data and behavior being tracked, but the sites and applications you use also track your private data. The same machine learning techniques used with your private data can infer even more things about you with an even higher degree of accuracy. Since your content is hosted and controlled by a third party it is difficult to control and know exactly how your content is used. Clearly retaining control of your own content would streamline social media.

Redundancy

Current social media sites are horribly redundant. Not only do you have to waste time sifting through the abundant noise on social media sites, but you also have to waste time replicating the same content across your website and potentially several social media sites. To make matters worse, replication is manual since none of the sites provide a feature for exporting your profile and content. Third party tools can be used to alleviate some of the pain, but they add another layer of complexity and potential for more security and privacy issues. Also, there is no simple or standard way to integrate social media from each site into your traditional website. Integration generally consists of links between social media sites and a business's website, and though this is useful, tighter integration has the potential to increase the quality and timeliness of communication. By removing the redundancy you have more time to focus on your message and effectively communicating it.

Censorship

Nearly every social media site has censored user content at one time or another for one reason or another. This can be a touchy subject, but I feel that the community should decide what is appropriate instead of just a few people. One way to reduce freedom of speech violations is to make this decision open and transparent to the extent it is for hosted websites, which in the U.S. websites aren't taken down without a court order or DMCA notice. An open and distributed social media network would be systematically identical to the traditional website network, providing the means to a more open decision-making process.

Open Social Networking

So it's clear there are some significant issues with the current state of social media. Will the current social media sites fix these issues? They will probably fix many over time, but the reason these issues exist now is the reason they will persist in the future. Their profit comes from displaying our content, not protecting it. So they need to exert some control. It's not good or bad, it's just the way it is.

However, as a society I think we can and we want to do better, and we can do it by developing and harnessing an open and distributed social media network. Such a social media network would consist of an open source software platform that is installed and run in the same way as a webserver. In fact, you would replace your webserver with it. Instead of everyone communicating on sites such as Facebook, you'll communicate on your website, and you'll be able to search your entire social network from your website. You'll be able to easily integrate photos and videos from your friends' websites into your website and vice versa. You'll control who sees what content and how. You will have nearly complete control over your virtual presence. Sounds awesome, right?

Security risks would be significantly reduced due to the sheer number of people that are self-motivated to improve the security of the platform who would be looking for issues in the relatively simple code. This has been shown to be true in many large open source projects, which I assume such a platform would become. Also, since the network would span the Internet, there would no longer be one point of failure. You wouldn't have to worry about the security of a third party social media site, freeing you to add more focus to your efforts securing your own website. Security issues will still exist, but an open social media platform would allow you to more effectively protect your online and Internet-connected assets.

Ownership of content and privacy are basically non-issues with an open social media network. Everyone with a computer and an Internet connection could easily host their own social media site linked to the entire social media network, allowing you to retain complete control of your content. The software would still need to be developed with enough granular control, but given that it would be open source that's practically inevitable. So if you want what happens in Vegas to stay in Vegas, or at least away from Grandma, you have that control with an open social media network.

Social media would no longer need to be redundant with an open network. An open social media network and platorm would let business and personal websites merge with social media. Gone would be the days of checking and updating your website, blog, Facebook, Twitter and LinkedIn pages. Instead they can be rolled into one social media website linked to the global social media network. Think of the amount of friends and followers you can accumulate from that pool!

Realization

So if this open social media platform blathering really makes sense why aren't we doing it? Well, some people actually are. Four students from the New York University's Courant Institute of Mathematical Sciences, Dan Grippi, Maxwell Salzberg, Raphael Sofaer and Ilya Zhitomirskiy, found funding through Kickstarter and developed the platform they call Diaspora. If I were to bet again I would say that they and many others have had similar thoughts as myself. I applaud them for taking the initiative and turning ideas into reality. The Diaspora project will definitely kickstart the creation of an open social media network, and it's already doing so. I'm seriously considering becoming actively involved in the Diaspora project, if at the very least by creating a presence on the network, but I say that only to try to express my confidence in the project's direction. Regardless of any involvement from me, Diaspora will become the realization of an open social media network.

Neither Diaspora nor the idea of an open social media platform is perfect, and they are bound to create other issues, but it's progress, open and transparent. Since the software behind Diaspora is open source, development happens transparently and critical security issues can be quickly discovered and resolved. Within two days of releasing the source code for Diaspora many critical bugs were discovered by outside developers. Diaspora isn't the last such open platform to be created either. In fact, it will probably spawn many other platforms that will link to the same network. You won't have to use each platform but instead pick one platform to create your social media site that will link to the global social media network. This should also increase competition and innovation as different platforms create distinguishing features to compete for your use.

It will take some time for the world to migrate to an open social media network. Migrating to a new social network requires a significant amount of effort and motivation. There must be enough compelling reasons for enough people to switch to reach a critical mass. It's happened at least once before. I outlined a few compelling reasons for an open social media network, and there's bound to be more. Yet there is one more roadblock, Internet bandwidth, not so much for businesses who already have websites but for individual users who currently rely on the social media sites for hosting. The bandwidth required to host a site increases with increased traffic. That means if you want a lot of friends with a lot of conversation you may need more bandwidth than most households can access. However, web hosting is a low-cost solution to the lack of bandwidth that individuals can take advantage of, and none of these issues are show-stoppers.

Don't start closing your Facebook and Twitter accounts yet. Diaspora isn't quite ready for primetime, but it won't be long and more like it will follow. So dust off your social media strategy because social media is about to become an integral part of every business's marketing toolkit. 

by Mark Lenz

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.

by Mark Lenz

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.

by Mark Lenz

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.

by Mark Lenz

CreateX development has reached the beta stage, and we've received some initial feedback so far. In order to give customers a preview of the new technology and to get more feedback on how CreateX is used we have launched a public beta program. We invite you to learn more about CreateX and sign up for the program.

You can read Announcing CreateX for a bit of CreateX history, and for more information check out the CreateX site.

by Mark Lenz

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.

by Mark Lenz

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.

by Mark Lenz

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.

by Mark Lenz

For the last five years I have been developing software for embedded graphical displays using a custom API I wrote and tweaked throughout the years. However, the main reason I began developing the API was not simply to write software more quickly but to build a tool on top of the API that could significantly speed development, what I called CreateX. Instead of writing code you can use CreateX to define the entire look and behavior of an application using an intuitive GUI, and it's tailored to embedded displays including support for CAN communication.

It took about two years of developing CreateX to reach an initial stage of completeness, but by then several applications developed using CreateX were already in production. So far CreateX hasn't been publicly marketed and has only been used in consulting projects. However, the overwhelming positive feedback from people who have used CreateX has convinced me to enhance and extend CreateX to solve a broader range of problems and begin marketing it to customers. The end result of this development will be CreateX 2.0.

In order to ensure a high-quality release there aren't any hard date-based deadlines. Instead, I plan to implement a set of desired features and then open up a public beta program. From there minor features may be added and bugs will be fixed until there are no outstanding critical bugs. At that point we'll release the completed version 2.0.

I'm very excited about more people using CreateX, because I believe it can be the solution many people are looking for to quickly develop innovative devices and services. I'm also very excited to make CreateX easier and more useful. As a side effect I won't get much sleep until I'm satisfied, but I would love to hear your questions, comments and suggestions about how CreateX could help you. So don't hesitate to contact me.

For more information visit the CreateX site or contact us.

by Mark Lenz

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!

by Mark Lenz

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.

by Mark Lenz

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.

by Mark Lenz

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.

by Mark Lenz

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.

by Mark Lenz

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.

by Mark Lenz

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.