Featured Post

The New ClickOnce Version of Witty Twitter

Never Installed The ClickOnce Of Witty? If you’ve never installed the previous version, no worries just click the link below to download and install the app. Download here:  http://keithelder.net/software/witty/witty.application Previous Install If you happen to be running the ClickOnce version...

Read More

Apple and open source, state of Linux

Posted by Keith Elder | Posted in Open Source, PC Software | Posted on 29-06-2006

2

Joe Stagner posted on his blog about the 10 people who don’t matter that was spurred by an article on CNN.  Joe’s post got me to thinking about open and commercial software and how the two mix.  It also got me to thinking about why one fails and another succeeds.  I’m not sure where this is going to wind up but here are some thoughts.

Apple has already found a way to use open source in a commercial business. I think they have a great blend of commercial and open source software.  For example, Mac OSX was built out of the open source operating system BSD.  We know this effort today as the open source project Darwin.  So yes, if you are using a Mac, your operating system is open source based.  Apple chose BSD over Linux for the OS primarily because the license that Linux used wasn’t condusive for a business.  If you read the GPL license and compare it to the BSD license you’ll understand.

Apple also took the foundation for Konqueror, the web browser integrated with the KDE environment, and turned it into Safari.  Well, sorta took, let me clarify that.  Apple primarily took the rendering engine just to be clear.  There have been some rumblings in the KDE community about Apple “not giving back” and the Firefox guys have had some issues as well , just checkout some of the newsgroups.  Time will tell if this relationship will work or not.

There are tons of other examples as to how Apple has embraced open source software.  Two more examples come to mind that I think other companies could learn from are:  OpenLDAP and Samba.  OpenLDAP is the open source equilvalent to Active Directory if you want to think of it in those terms.  Samba is the tool used to allow Unix operating systems to connect to Windows computer shares or printers.  The problem with these two packages is it would take a novice 6 months or an expert the good part of a day or maybe even more reading howtos to figure out how they work.  It’s not sometehing you are going to install by clicking next, next, next, next.  LDAP would probably take a month, it’s a beast.  What Apple did though is take these two projects and incorporate them into the OS so users could easily connect to a Windows PC or join and Active Directory domain.   Kinda smart if you think about it because they didn’t have to write it from scratch.

Now stop and think about it for a second.  Apple built their Mac OS X on an already existing open source operating system, built their browser on an already existing engine, and utilized standard protocols that were built by the open source community and incorporated those into their OS.  Hmmm.  Do you see a pattern?  I do.  What Apple is doing is taking the best of breed open source projects in certain areas and then providing a much needed feature to those projects so the average end-user can use them which is an Interface.  This is important and I’ll give some more insight to this down the road.

I’ve said this over and over again when I taught Linux certification classes at the college level.

“The open source community is great at building things based on a protocol or an RFC.  If you don’t give them a spec, you never know what you’ll get.”

That’s a bold statement I know, but allow me to give a few samples.  The main reason this occurs is the developers don’t have to think about what they are building.  The spec is already written so all they have to do is write their code to the spec.  Anyone that’s a developer will tell you this is some one of the easiest programming tasks in the world to do.  If all of the hard “engineering” has already been done for you, you are simply converting english sentences into code.  I like to call it translation programming.  If you have ever wondered what the difference is between a “Developer” and a “Software Engineer”, this is it.

This is why Apache, Sendmail, OpenLDAP, IMAP, POP3, OpenSSL, OpenSSH and other programs based on standard protocols and specs work very well in the open source world.  When you move away from these documented protocols and into something less tangible that businesses really want, like the ability to have a single application that does calendering, scheduling, email, etc (you know.. Outlook?), the open source community fails to produce anything.  To this day there is no equilvalent to Exchange in the open source community.  Why is that?  More on why later.  The only thing out there currently is Evolution which is an Outlook client knock off written for the Gnome Desktop that looks 15 years old (yes I am not a fan of the GTK interface).   Suse Linux has tried to “piece the puzzle” together by offering a web based version of Exchange using open source tools derived from standard protocols such as LDAP, IMAP, ICAL, etc.  I’ve demoed the product and it doesn’t work.  Sorry but: Microsoft 1, Suse 0. 

Let me answer my own question as to why the open source community hasn’t produced an Exchange equilvalent.    The simple answer:  There isn’t a spec.  Tell me how  the open source community is going to do user testing, gather wants and needs from businesses around the world and role that into an open source product?  The answer is they are not!  This is where things unravel for the open source advocate that preaches all software should be open source.  Open source projects (normally run by geeks) don’t specialize in interacting with businesses, end users, user testing, and usability.   Aha!  So now you see why Apple providing the missing piece to the open source products they’ve added into their OS works.  Notice I haven’t said one bad thing about open source projects.  Honestly, the ones built around protocols and existings RFCs are great but they lack that vital last piece, Interface.  Apple and Micrsoft for this matter shine in this area.  Microsoft to take this one step further shines at the collecting of business wants and needs and then rolling it into a product.  Businesses need to do word processing so they created Office.  Businesses want to do calendaring and email so they created Exchange.  Businesses wanted to share information across different boundaries in the Enterprise so they created Sharepoint.  Where is Apple in all of this?  Well they are hardware focused and simply use software to sell their hardware so they could care less what the Enterprise wants or needs.  But they’ll sell all of your employees an Ipod though!

Something else you should take note of is the correlation of successful open source projects that have a true “leader” to those that don’t.  For example:  linux, perl, php, python, ruby just to name a few.  I bet most open source advocates could name you the person behind each of those projects.  Perl has been around for years and if you don’t know of Larry Wall then I can’t help you.  The reason these projects are successful is they didn’t adhere to the full “bazaar” concept as outlined by Eric Raymond.  Instead, there was one guy making the final decision, not the bazaar.  Even if that decision was wrong, one person ultimately said what was going to happen or be in the release of the product.  What about Steve Jobs or the Program Manager for Exchange? This is no different.  At some point, you have to have someone at the end of the Lifecycle of development to say, “Yes” or “No”.  Whether this is your PM or the guy who started the project in the first place it doesn’t matter.  If you let people program wildly on your project you are going to wind up with extreme inconsistencies.  Some great examples of this can be found in an open source prorgramming language that I’ve used extensively called PHP.  Even PHP programmers are disgruntled because of inconsistencies.  Is it str_replace() or strreplace() just as a quick example.

Everyone looks at Linux as the open source defacto standard but honestly after having used it for years the whole thing is just a mess in my opinion.  There are over 10 prominent versions of Linux in the wild each with their own way of doing things and their own packages.  Why is that?  Well, Linus just focuses on the kernel, but who is the “go to guy” that says Yes or No for the rest of it?  The answer is he/she doesn’t exist.  If you install the various versions of Linux you’ll find files in different places, different versions of software bundled with each system and different packaging systems.  From a developer standpoint developers can’t even write to a standard interface API.  Should they write their app so it works in KDE, or Gnome, or Enlighenment, or FVWM, or whatever?  How are vendors suppose to write programs to all of this?  Most of the time they don’t.  They choose one vendor’s project like Redhat and write to it.  This fact has made me mad on one or more occassions when I had a server running something other than Redhat that I needed to install a commercial product on.  After all wouldn’t you think the open source community would want vendors to write stuff for their platform to give it more market share?  It appears they don’t because there is so much effort going into creating new ways of doing things.  Release early and often they say and if we break something in the process for someone else who cares. 

My point to all of this is Linux is a mess because of the “bazaar”.  Sure Linux is great for a web server and I use it for that to this day.  Why is it such a great web server?  Easy.  Because there was a spec on how to build the web server.  Anything other than a web server and I’m not interested.  I want to dabble in open source software that’s been polished I’ll turn on my Powerbook and play.  This probably explains why a lot of fellow linux advocates that were disgruntled like myself switched to Mac OS X.

So you see there are problems with open source software.   The open source world isn’t a perfect little bubble where everything is all dandy with penguins jumping around hither and tither.  To get the results from the open source community into the hands of end users  the open source projects need commericial interaction.  The project needs the “guy” to say whether or not something is going to get put into the product.  The project needs a lot of TLC spent on it to polish documentation, make things “Forrest Gump” and easy to use.  Look at MySQL as another example of a company who’s product is open source and the difference between it and PostGreSQL.  If you didn’t know anything about either one, which would you rather use?  More than likely MySQL because it has better documentation is easier to setup and configure, has a better interface etc. 

Companies like Microsoft, Apple, Sun, IBM and others can get ahead of the competition if they choose to add that missing piece and use open source effectively.  The question now is, which one besides Apple is going to do it?

Sidekick 3 now available but is it as good as the 8125 Windows Mobile Phone?

Posted by Keith Elder | Posted in Mobile Devices | Posted on 29-06-2006

0

Remember 2002 in terms of what was available for Smart Phones? Not a whole lot to be honest. Palm was just starting to add phones to their PDA line up and about the only other phones available were Java based. I bought one of the first Sidekicks and used it for awhile. I loved the flip around keyboard and the ability to check email on it and surf the web but I ultimately gave it up for the T68i because I wanted to use Bluetooth with my new Mac. The Sidekick was a fun device but it didn’t take me long to outgrow it and get frustrated. I think I had it what, 2 months? Today the Sidekick 3 was introduced to T-Mobile subscribers and will be available officially on July 10th. The new Sidekick offers a 1.3 megapixel camera, Bluetooth, color screen and a built-in MP3 player. It also comes with a mini SD memory slot. You can checkout a video of the Sidekick on YouTube. Is it just me or does this device make too much freanking noise? There are tons of blurps, bleeps, wangs and ticks in the video. Watch it and you’ll see what I mean. Obviously the Sidekick has gotten better over time but my big beefs with it were

  • battery life
  • had a weird proxy system for checking email that wasn’t secure
  • locked up a lot
  • didn’t support good integration with various contact and calendar programs ( I remember having to login to a web site to add contacts for example)
  • no touch screen
  • lack of API support for developers

Anyway, it is kinda cool to see it survive and the really weird thing is the phone I have today pretty much has the exact same form factor. Talking about coming back full circle! I still prefer my 8125 over the Sidekick. The 8125 is just capable of much more. Plus I can write my own apps for it by just firing up Visual Studio. I am in the process of writing an RSS Reader for it in my spare time. In terms of form factor the Sidekick still spins out as the 8125 slides out but they are very similar. Here they are side beside: Cingular 8125
Sidekick 3 A few comparative thoughts So what’s the bottom line? Well for starters the Sidekick doesn’t have Wifi and you can’t touch the screen. For me this is hugh. I love navigating with a stylus. I do like the jog wheel on the Sidekick but the Sidekick suffers on the software side of the house. I don’t see any companies rushing out to buy 1,000 devices and deploy them to their sales force. The Sidekick is just not an enterprise device. More of a teeny bopper device. The 8125 also supports direct push email with Exchange which is a huge plus. Both have 1.3 mega pixel cameras and MP3 players. Big difference here is the 8125 syncs automatically with Media Player and can also play videos. Have a Media Center PC? With a third party tool you can save a show you recorded to your phone and watch it whenever. Another big difference is the Office tools bundled with the 8125. Reading word, excel and watching power point slides on windows mobile 5 is now native. In other words however the document looks and renders on the desktop, it will appear the same on the phone (even power point transitions). I guess the bottom line is this: Teen who wants to look cool: Sidekick Power User, Professional, Enterprise Customer: 8125

TIP: Managing BindingSource Position in Data Driven WinForms

Posted by Keith Elder | Posted in .Net, Programming, Smart Clients | Posted on 28-06-2006

12

If you are working with a Windows Form where a user can create and edit data in the same form you may run into the problem of trying to set the BindingSource to a given record in a DataSet you want to work with. 

For example let’s say you have a DataGridView in a Smart Client.  When the user double clicks a given row in the DataGridView a form opens so they can edit the data.  More times than not (no matter how many demos you watch) user’s do not edit data values in DataGridViews.  Although this is a supported feature, business objects are too complex.  Imagine having to edit a contact in a single row in Outlook for example, not fun and not very user friendly.  Why every Microsoft demo I watch shows editing in DataGridViews is beyond me.  I digress though.

When the new form is instantiated we need to pass two things:  the dataset we are working with, and the IDof the item we want to edit.  We can pass this information into the constructor of the form without any trouble as seen below. By passing in the DataSet we can add new records, delete records or whatever we need to do.  The other benefit is since the dataset is passed by reference, any changes to it will automatically appear in the row the user just double clicked on.  In order for the form fields to be auto bound to the record the user clicked on we need to set the DataBinding of the controls in the form to a BindingSource.  The BindingSource serves as the go between between the UI and data store.    Here’s a sample “CellDoubleClick” event that would happen in the DataGridView:

    1    int id = Convert.ToInt32(DataGridView.Rows[e.RowIndex].Cells[0].Value);

    2             MyForm myForm = new MyForm(dataSet, id);

    3             myForm.Show();

As the form loads the problem we face is having to tell the BindingSource in the form which record we want to set as the BindingSource.Current item.  At first glance it looks like we would just get the DataRow and then set it as the Current property.  Wrong.  The BindingSource.Current property has only a get accessor.  Instead we need to use the BindingSource.Position property.  Note:  Any change to the position property updates the current property used by the bindingsource.  The problem we face now is the BindingSource.Position property wants to know the index of the item in the underlying DataSource.  

We don’t know the index value used by the BindingSource but we do know the ID we want to use.  This is where the BindingSource.Find() method comes in.  Using the find method we can basically search the underlying datasource and retrieve the index of a given item.  Here’s an example:

contactBindingSource.Position = contactBindingSource.Find(“Id”, 2);

Once the line above runs, it is going to search the column “Id” in the DataSource associated with the BindingSource and return the index of that item. 

What if you use the same form to create a new item?  Simple, call the BindingSource.AddNew() method which will add a new item to the underlying DataSource.  Then move the index to the last item.  Here’s a sample:

      bindingSource.AddNew();
      bindingSource.MoveLast();

Since items are always added at the end of the associated data source the MoveLast() method will set the index to the last item in the underlying datasource.

I hope this makes sense because it is an easy way to have a form bound to a DataSet and use the same form to perform “CRUD” operations with.

Changing My MSN Messenger Handle

Posted by Keith Elder | Posted in General, Internet | Posted on 26-06-2006

1

I’ve had three or four people try to find me on MSN Messgenger in the past week.  Unless I told you exactly what to use, you would never find me.  Being that I am a junkie of said technology I decided to change my handle so people could better / more easily “guess” my handle.  I do this all the time.  For example I’ll get someone’s business card or I’ll be reading their blog and I will want to chat.  I’ll take their email address and try it in MSGR.  More times than not it works and I have an instant connection with someone.

Don’t worry for those that are on my list, all two of you,  I’ll be messaging you to remind you. Just accept my new handle and be happy.  For those that are dying to know, it will be my email address at this domain which is:

keith at dot net pimps .net
(the above string is an email address obfuscated for spam engines)

 

How to prostitute your information at Tech Ed/PDC or other Conferences and not get bombarded with marketing crap

Posted by Keith Elder | Posted in Funny Stuff, Speaking | Posted on 26-06-2006

1

Jason Follas, who I met at Tech Ed, posted about my winnings on his blog.   Jason stated he wished he would have signed up at more vendor booths instead of just walking past them.  This inspired me to write out some of my “Tips” below.  

When I attend a conference I am a complete vendor prostitute with my “fake information”. And yes the info I use is “fake” in that I can easily remove it and “disappear” into the depths of the Internet.  When I attend a conference it is all about winning.  Sure I am there to learn and network but my main goal is winning.  I’m not talking hats, t-shirts etc.  I’m talking the good stuff. 

To me it is no different than going to Vegas. You have to play the odds.  The more drawings and contests you enter, the better the chances are of winning.  I mean the odds are what, 1 in a few thousand?  I don’t imagine everyone signs up for everything (cough cough Jason) so it just makes my chances better.  Ok, so here’s my “tips”.

Tips on Attending Conferences
Email – Vendors mainly contact you via email and phone.  Very few will go through the trouble of sending something via the postal service.  I can’t remember anything I’ve gotten in the mail from a vendor or booth registration.  Anyway, before you leave for the conference setup an alias email account.  Create a new email alias through your domain.  Most domain hosting providers support this and if you don’t have the pleasure of running your own domain, create a Yahoo! account for example.  The trick to is it to create an alias email account that everything goes to. Something like conferencename@somedomain.com.

Phone -The phone is a little tougher but it is the typical “preferred” way vendors like, I mean LOVE to contact you.  Because of this fact you have to be a little more devious.  I use Vonage for all of my phone services.  I have 4 phone numbers with Vonage; 1 home office, 1 home, 1 dedicated fax and 1 toll free number.  I’ve been a customer of Vonage for a long time and this is just another reason why I continue to use their service.  One of the many services they offer is called the “Virtual Phone Numbers“.  I think you see where this is going.  For roughly $5 a month you can create a virtual number in another area code or market.  This feature is great for small businesses that want to run an ad in Atlanta, Ga but their home office is in Podukaville, MS.  Forwarding, another feature they offer, ties into this as well.  Through forwarding any virtual number Vonage offers can be forwarded to your cell phone or home so you don’t miss a “winning” call.

Mail – This is one I haven’t worried about but if you are really paranoid, walk into the local post office and sign up a PO Box.  It is only a few dollars a month.  Of course it isn’t a “physical” address but if you use something like Mail Boxes Etc. they have a physcial address that Fed Ex or UPS can deliver to just in case you win something.

Business Cards - Once you get your “fake information” all squared away, get some business card printed.  Laser printer + Avery + Word = New Business Cards.  The reason you need the cards is sometimes vendors want your business card.  You know, they’ll put those little fish bowls up?   You may also run into that really *weird* guy at the conference who wants to contact you after the conference.  Fake cards are great. Since you are printing your own cards you get the luxury of making up any title you want.  For technical conferences CIO is always a great choice, other’s, President or Vice President may do.  Have fun with it!

About a month after the conference, delete everything (email, phone and mail) and they have no way of contacting you.  Happy winnings!