A Survey of Free Software

One of the most vibrant areas of software development world is the free/open source software movement. A big reason to learn and use Freeware and Web 2.0 software is most of it is available free.

Most people think primarily of Linux when using this term but there is a much larger eco system. You have to do some research and trial and error since you won’t see a bunch of ads around (it’s free remember) Actually the “free” part is the biggest Ad.!

The movement covers most “normal” functional areas of software, from

Web 2.0 services,

  • E-mail, MSN, Gmail, Other Google services,
  • Web hosting, Blogs: WordPress.com, Blogger, others,
  • Regular web hosting, Microsoft Live. Microsoft live does not get much respect but is a very rich offering , now up to 25 GB of space and web site, automatic file backup/synchronization, blogs, picture storage, collaborative workspace and more.
  • Google app engine is so big and multifaceted I have not yet started to use it, and it’s free.

It is a bit hard to find the good and distinguish from the bad, many Google search results are pretty confusing. I generally have to poke around a bit in a regular Google search to find the host site as opposed to some fly-by-night site. You really want to “know” what you are looking for, find reviews and make sure that you are getting the “original” product. I am including links in this paper to most of the key products which I mention.

For instance I wanted to use Eclipse a major free Software development platform,. I figured I would need the Linux operating system. I downloaded and installed the Ubuntu version of Linux and configured it to “dual boot on my machine. One of it’s features is an automatic software installer, which is very cool, just click what you want and the operating system downloads and installs the software. Unfortunately, it did not work for Eclipse, I later found out that the version that Ubuntu had in it’s repositories was out of data. A direct download from the Eclipse site rand fine, in the process I also discovered that almost all of the freeware I was interested in was available in Windows, it was not just a Linux phenomenon! In fact most freeware is pretty platform independent, this is because the developers are very conscious of wanting to appeal to all audiences and since most of the software is built using freeware tools themselves which incorporated “cross-platform” libraries.

Some of the software and systems fall into the category of, “some assembly required”. While if you get everything from Microsoft, you can generally expect it all to work together right out of the box. Well, sometimes not quite that easy. In the free software arena you may very well be getting numerous pieces from separate vendors to work nicely together. In my case Mysql, JDBC driver, Birt report writer, query browser, Eclipse, Subversion, and Heidi SQL. In general the process is not too painful, and the online support community is very responsive, more so that the “Normal” vendors. You may often hear directly from the developer. Learning each products support methods is a bit of a chore but the more you do the more they all begin to feel very similar.

Sometimes documentation can be an issue a project called Floss manuals is a relatively new attempt to address the issue, check out the site free manuals for freeware.

I started to document my journey to the brave new software world. Wait! you say, its not new, and well you may be right! But it is new to me and from poking around in the process of learning it it seems that it is new to a lot of other people also.

I began by setting up a web site on Microsoft Live. Located at Http://TomBrander.com which hosts information about my real estate statistical consulting services. While Microsoft is not normally associated with great web stuff, this product is a wonderful exception. I got it when they were still handing out free domain registration, which sadly they have discontinued, now its something like $14.95 per year. However, the hosting remains free. You can get a free subdomain (like http://myname.live.com) and still get completely operational for free. Since, as some have pointed out, search is the most common way to find information now on the web. I don’t think the lack of a full domain registration is the handicap it once was, Google does index top level domains better, I hear, though.

I also incorporated a Blog hosted here at WordPress, a free service, http://tbrander.wordpress.com and incorporated into the main site via Iframes. I also maintain a Tech blog which will have this posted on it as well at https://tombrander.wordpress.com.

I’m now exploring Linux (Ubuntu), MySql, Eclipse, Open Office. I’ve got them loaded but I have a ways to go to get fully operational. I’m Using a dual boot Dell Win XP pro Machine with the newest Ubuntu Hardy. I’ll pick up some of that next time. I’m striving to create a solid free software development replacement to my entire Windows experience. I need a replacement for MS Access and eventually Photoshop CS3, although If I could get that in Wine I’d probably be ok with it.

Other neat tools/ services I’ve picked up are: Many Items in Google such as my new favorite: Google “reader” the Shared items page, Base, Mail, Docs, adsense, to do lists, portfolio, finance and a bunch of others, something new almost every day.

Metadot: A free hosted Wiki. My experimental site is here.

Mindtouch Wiki a hosted free service. My site is here.

PB wiki Is a hosted free service. My site is here.

Del.icio.us; A great way to keep bookmarks organized so I can get to them via any computer and not use my browser which keeps them stuck on one machine.

In fact one of my main goals is to move as much as I can into the “cloud” so that depending on a particular machine or location is no longer necessary. So this means giving up on Microsoft Outlook. So far no problem.

One last item for today is getting Firefox instead of Explorer, It has been a great improvement. I happen to be in Explorer at the moment, for no particular reason but I find myself most of the time in Firefox, which seems noticeably faster and much less crash prone, when running exactly the same stuff!

Advertisements

The 25 Best Alternatives To Your Enterprise Applications & Functions

The following article on one of my favorite subjects, freeware. This selection is slanted to “enterprise” type solutions.

I’m in the process of updating some material which I will soon post here but in the meantime you should take a look at this article. It has some great ideas. Click on the link below for some good ideas and links. Some of these are new to me.

John Perez, Wednesday, December 10, 2008
2009 Budgets are in and for many who oversee the Operations and IT Budget, you are probably challenged to reduce your capital budget by at least 40% lower than what you originally put in. As the pressure to cut continues, you may want to rethink about the software vendors you have selected to introduce into the Enterprise, or even think about replacing your legacy Enterprise applications with more cost effective open source alternatives.

Still not convinced about Open Source or Lower Cost Alternatives? Well according to Gartner, approximately 85% of companies surveyed are already using Open Source Applications in 2008. The other 15% surveyed have plans to incorporate Open Source Strategies within their Enterprise in 2009. Whether your a small business, or you are looking to minimize costs – attached are some of the most cost effective applications on the market that can easily replace some of your more expensive Enterprise solutions and functions.

Here is the link to the Slashdot discussion of the article, it has a bunch of interesting insights.

Just found a site “Find Open Source Alternatives to comercial Software”. Looks pretty good at 1st blush.

Putting Two Columns into one In MYSQL

No Biggie but in a single select clause you can use the concat to combine fields like so

Select concat(vw_curr_new_over4_names_fxd.NAREA,’ ‘,vw_curr_new_over4_names_fxd.Area_name)AS AREA

Note the use of commas and the single ‘ mark to provide a space the result is this new Field

110 Fultondale/Gardendale/MtOlive

From these two old fields

From NAREA=110

and Area_name=Fultondale/Gardendale/MtOlive

Installing SQL Explorer Eclipse plug-in In Ganymede

Installing SQL Explorer Eclipse plug-in Using auto Update: Hat tip to 5thcross.wordpress.com.  I noticed this set of instructions had not been updated for a while but they worked like a charm. The tool seems to have picked up some support recently and may be a good addition to your toolbox. Paticularly since the Data Tools Platform Eclipse component still seems to have a way to go. I’ll be trying to use this along side Birt for report wrting to edit the underlying queries… we’ll see. These instructions are lifted verbatum, they work. With Eclipse 3.41 and SQL Explorer version 3.5.0.RC6

  • From the Eclipse menu,
    select Help->Software Update->Find and Install. You will be
    displayed with a Install/Update dialog box.
  • Select Search for new
    features to install radio button & click next.
  • Click on the New Remote
    Site on the right hand side of the Install dialog box
  • Enter the name as “SQL
    Explorer” & “http://eclipsesql.sourceforge.net/” (without quotes) for
    the url in the New Update Site dialog box and click ok.
  • Select the SQL Explorer
    site in the Install dialog box and click finish.
  • Once the search is
    finished, it will present with the features to install.
  • Select the features you
    want to install. In this case select SQL Explorer branch & click next.
  • Accept the license
    agreement & click next.
  • Select the install location
    where you want to install this plug-in. By default it will be installed
    into the eclipse plug-in directory. If you want to add another location
    click on the change location button on the lower right hand corner and
    specify the directory where you want to install. Once you are finished
    with the selections click on finish button.

Version Control?

I’ve been looking into if and how I ought to set some sort of version control up and if so what is my easiest method that will allow for growth? I found a good comparison of version control systems here, at smashing mag. But I don’t feel up to speed enough to fully evaluate the alternatives presented, or for that matter am I ready to undertake this complexity, now? I found a good intro to SVN at Peter Gecko Here. But even that article gave me pause, and I posted a similar question there.

I’m a lone and very basic developer with no current experience with version control systems. A friend recommended SVN but I’ve barely gotten my hands around Eclipse and Mysql. which are the current backbone of my development environment. I am using the Brit, Eclipse based, report writer against MySql databases.(I’m on windows, XP and vista with Freeware only) I’ve looked at the Svn documentation, but am very wary of adding that complexity into the environment I barely understand. I’d like to continue to set up an environment that can grow, (languages and tools) as I do. I only have so much bandwidth for learning!

What advice does this much smarter crowd have to offer???

Zero dates or Null in MYSQL?

As a follow-up to my earlier post on date conversions, I noticed that the MYSQL database was getting loaded with a lot of zero dates where the original data had null dates, I wondered how to deal with this and if it would present issues… well here is a great tip: Also note that MYSQL more or less requires zero dates and does not like nulls for dates…

The following from http://hartsock.blogspot.com

Magical MySQL URL parameters Save my Groovy Code

I’ve been working with legacy databases in MySQL and basically forbidden from using hibernate by a bug I had with all zero dates of the format ‘0000-00-00’ which is perfectly legal in MySQL but completely disallowed in JDBC.

Stack trace for this problem contains:

SQL Exception: Value ‘0000-00-00’ can not be represented as java.sql.Date

The answer? Apparently there is a hidden setting to use…

dataSource {

driverClassName = “com.mysql.jdbc.Driver”

dialect= org.hibernate.dialect.MySQLMyISAMDialect

url = “jdbc:mysql://localhost:3306/legacy?zeroDateTimeBehavior=convertToNull”

username = “legacyUser”

password = “legacyPassword”

}

That little flag on the URL is absolutely magical and now I can map my Grails objects onto a legacy database. Isn’t life grand?

Thoughts and Ideas: Magical MySQL URL parameters Save my Groovy Code.

Date Conversion to MySQL From Access/ SQL server

It took me a while to figure out how to convert dates from the format produced by Microsoft Access or Microsoft SQL server to the date format required by MYSQL. It is essential if you want to do any date manipulation.

My data comes as an ascii text file from a MSQL server which I import using Heidi SQL, a neat free package that can be found here. As far as I can tell it’s the only freeware supporting imports to MYSQL with some graphical help. It also has a number of other nice features and is under active development. In general it is better suited for me that the MYSQL workbench (which is pretty useless in the “free” edition), and for the time being I don’t feel like spending even the small $ to get the full edition. For the import, define the fields as terminated by \t and define the lines as terminated by \r\n .Ignore one line (to skip the headers, since you have to import into a defined table with field names. It took me a while to find those escape chars!!! not intuitive for someone accustomed to Microsoft!!

Anyhow once you get the dates into the database they are simply text and  may be in various forms, long or short. The fields Month Day Year are in different order.. so here is a small piece of code that changes the Microsoft format into a MYSQL one, you must have defined the destination field (DATE_MODIFIED in my example) in your database as a date field. The code uses two nested functions, The substring_index, and the STR_TO_TEXT to get the job done. So you can look up the references to see how it does its’ work. It handles nulls and blanks in the source field.

Old hands may think how simple, but I was rather pleased with my 1st, and so far only line of MYSQL code!

This takes the text contents of SDATE_MODIFIED (a string field) and puts a proper MYSQL date into DATE_MODIFIED (a date field).

Update ARESIMPORT set DATE_MODIFIED= STR_TO_DATE(substring_index(SDATE_MODIFIED,” “,1),’%c/%e/%Y’);