Welcome

You have reached the blog of Keith Elder. Thank you for visiting! Feel free to click the twitter icon to the right and follow me on twitter.

Apple Leopard Talks Roaming The US, but what’s the point?

Posted by Keith Elder | Posted in Programming | Posted on 07-11-2006

0

It seems Apple has started to reach out more to its developers by putting together what they are calling “Leopard Tech Talks“. A lot of you may be surprised by me posting something about Apple since I write .Net code during work hours but I am a customer of theirs (1 iPod, 2 Notebooks, 1 Airport). However, I still play with an enormous amount of technologies from all walks of life (Microsoft, Apple, Open Source, Linux, etc). I’m a geek, live with it. 🙂 I started writing this post to say, cool, Apple is finally reaching out to the developer community. Then reality set in and went, wait, they are doing what for who? I would LOVE to go to this and give ’em my $.02 about their platform (the good and the bad). The closest talk near me is Atlanta but I have friends who are closer to the talks than me. Maybe they’ll go for me and tell them just how bad their development environment for Enterprise application developers is on their platform. Beyond Apple having a lot of “look at me developers” (the guys that write one off cool plugins) and “small dev shops” (that fill the gap where Apple left off) can anyone point to a single Enterprise using all Apple technology? Ummmm, no. The reason is Apple doesn’t care about the Enterprise. They care about selling more iTunes, iPods and dual core Powerbooks to the Left Wing Open Source club (of which I am a founding member). Yes I like using Macs at home, but honestly, that doesn’t pay the bills. When I go to work, I need several things to get my job done, of which Apple provides zero infrastructure. Sure I can listen to iTunes while coding on their iPod and dual boot their Powerbook into Windows but what does that really buy me other than, “hey, watch this, this is cool, haha”. Here is a list of things I need to develop in an Enterprise that Apple is missing the boat on:

  1. Update-to-date Language – Sorry Apple, but I don’t call Objective-C an update-to-date language. I read the first several pages on why you chose the language on your developer site and honestly, the reason you chose it is because it did objects, big whipty doo. Get a life. Why not at least something newer? You sorta embrace Java but yet you don’t. I don’t get it.
  2. IDE – Yes, I need an IDE to write applications with. While Xcode is what you tout as the end all be all IDE, it is lacking in a lot of areas (just search the internet, there has been plenty said already on this topic of Visual Studio vs XCode so I’m not going to repeat it).
  3. No MSDN – One day Apple will wake up and realize that what Microsoft has started that is called MSDN blows away ANYTHING they have (I thought Apple was user friendly?). The MSDN documentation, samples, downloads, tutorials and more make it extremely easy to find what you need. There is always communication from MSFT to the developers. Here is what is coming in version X.X. Apple you are so secretive you don’t even tell your employees what is coming next! How is a business suppose to plan? How is a developer suppose to ready his applications on the next release? The big factor of MSDN is subscribers can download almost all of the Microsoft platform and run it on up to 10 computers. All of the tools to develop with are there at your finger tips.
  4. Lack of community – While I may not be able to solve all my developing problems on the .Net platform by staring at intellisense, there are communities where I can derive help from ( newsgroups, msdn.microsoft.com, MS sponsored forums, etc.). Apple, where is yours?
  5. No Biztalk – Sorry but you don’t have anything anywhere close to a Biztalk for routing messages and having different systems talk to one another. Oh, sorry, I forgot you sell hardware, I’ll move on (then why are you having this developer thing then?)
  6. Web Services – Ever try to write a web service in Objective C or XCode? Good luck with that.
  7. Database – Where is your enterprise database? I can get SQL Server from Microsoft and you know what, it is pretty damn good. What cha got for me? How about: null.
  8. Exchange – While I am at work I have a question. How will I send and receive messages while scheduling meetings, tasks, and todos? Are you going to force me into using qmail as an MTA? Fair enough then. Next question, how do I schedule meetings with my co-workers, with iCal? Are you kidding me?
  9. Portal – I tried to install your non-existent portal so co-workers could find internal information but failed.

Honestly I could keep going but it is Monday Night during November and that means Monday Night Football so I am not going to bother. I think you get my tone. These are the reasons Apple hasn’t cracked the Enterprise and the reasons why it will not. I hear people say things like, “Well, why don’t you use Apple for everything?” or “I think we should use all Macs.”. The bottom line is WTF are they thinking? Beyond this person spilling their personal feelings for which “hardware” they think a company should buy, they feel that buy using Apple products in the Enterprise it will make everyone’s lives magically easier. To these people I say, thank God, you aren’t the decision maker(s) in corporate America. And, if you are, there is this place called http://www.dice.com and http://www.monster.com to look for jobs online. The bottom line is this. I wouldn’t mind developing for the Apple platform being a developer, the problem is A) only a hand full of people have them at work, B) I’m not keen on learning on unmanaged language like Objective-C and C) they are missing some important pieces surrounding their platform for the Enterprise. Until those things are resolved I’ll buy an occassional product from you Apple if it fits my “iLife” but that is about it.

New Digital Camera – Canon SD630

Posted by Keith Elder | Posted in Computer Hardware, Man Toys | Posted on 07-11-2006

0

Sometimes you are forced into buying technology products when you don’t want to but it makes sense at the time. Friday was one of those. It was Ellen’s mother 70th birthday and we of course needed to take pictures. My cell phone has a 1.3 mp camera but let’s face it, that just isn’t good enough. Our current Canon Powershot S230 camera’s battery is on the fritz. So much so that with a full charge it will only take one picture! Since you can’t readily pickup Canon batteries at a nearby store here, we were going to be left with no pictures from her mom’s 70th birthday party. I did some quick research on Friday and decided to head to the nearest store. When I got to the store I decided that all the models I was looking at had the same basic features. It came down to price and “feel”. I settled on the Canon SD630 camera.

I’m not going to bother writing a long review of the camera, there are plenty other places that have done that. Let me just say that I really like the 3.0inch LCD on the back along with the scroll wheel enabled selector. The function selector feels really natural. While it doesn’t do the pictures justest, having the large LCD is awesome. So far the pictures are turning out well.

Weekend Recap: Two birthday parties, Yard work, Pulled back

Posted by Keith Elder | Posted in Family | Posted on 07-11-2006

0

IMG_0013 This past weekend was pretty packed with stuff on the todo list. Friday was Ellen’s mother, Sue, birthday. Ellen had planned a surprise party for her since it was her 70th birthday. It started on Friday with us going to her house and opening gifts. Then we took her to the Walnut Creek Grill in downtown Hattiesburg. Leaving the resturant I had to kiss the chef, the food was really good.

 

 

 

Keith kissing the chef outside Walnut Circle Grill

After having a really good meal we left and drove Ellen’s mom back home. Right as we got to her house I said, “Well I hope you had a good birthday”. Meaning that this was it and final. We told her goodbye and had already made plans with her for her to join us for lunch on Saturday. On Saturday around noon we left the house and headed to Chesterfield’s in Hattiesburg where a lot of Sue’s friends, family and co-workers had gathered for the suprise. We decorated the area they had for us and about 12:45 Ellen went to go pickup her mother. Ellen was trying to come up with as many things as she could to trick her. It paid off. Needless to say she was shocked and had no idea we had planned it all. Especially since we did something for her on Friday night. Finally around 3:00 the party ended. You can view the pictures here from the party. After leaving the party we left Hattiesburg and drove to MacComb, MS to visit Ellen’s Aunt Sis who had fallen and broke her hip.

On Sunday I got up early so I could get to work in the yard. Most of my efforts for the day can be seen here in this photo where I finally got the large pine tree cut down:

Pine tree I cut down

 I also cut down a lot of brush in the woods and hauled it to the road. I would gave cut more but earlier I had pulled my back while in the kitchen of all places. But here is a pic of the brush I was hauling with the John Deere.  Later that evening the moon was out full and I took some pics of it. Hope you enjoy them.

John Deere getting ready to haul a load to the road

Tip: CheckedListBox and ComboBox Programmatic Binding

Posted by Keith Elder | Posted in .Net, Smart Clients | Posted on 03-11-2006

0

At some point in your career as a software engineer you are going to run across the need to build your forms dynamically.  Whether you read information from a database, dataset, or xml file.  Recently I was working on a new feature for our internal Smart Client application whereby we can add new fields into the database for our application and have the new field show up in the appropriate screen and auto validate itself.  The feature itself when complete is going to be very cool and allow us to add new form fields at will without having to get a database engineer or anyone involved. 

 

The Problem

I ran across a problem this week that stumped me for a bit while trying to generate CheckedListBox and ComboBox controls on my UserControl.  Here is a pseudo example of the code for educational purposes:

 

    1  public partial class Form1 : Form

    2     {

    3         SubtextDataDataSet _dsBlog = new SubtextDataDataSet();

    4 

    5         public Form1()

    6         {

    7             InitializeComponent();

    8             // get data

    9             SubtextDataDataSetTableAdapters.subtext_ContentTableAdapter ta = new WindowsApplication1.SubtextDataDataSetTableAdapters.subtext_ContentTableAdapter();

   10             _dsBlog.Merge(ta.GetData());

   11         }

   12 

   13         private void Form1_Load(object sender, EventArgs e)

   14         {

   15             CheckedListBox chkListBox = new CheckedListBox();

   16             chkListBox.Name = “BlogEntries”;

   17             chkListBox.Sorted = true;

   18             chkListBox.DataSource = _dsBlog.subtext_Content;

   19             chkListBox.DisplayMember = “Title”;

   20             chkListBox.ValueMember = “ID”;

   21             chkListBox.Location = new Point(12, 12);

   22             chkListBox.Size = new Size(289, 219);

   23             chkListBox.CheckOnClick = true;

   24 

   25             for (int i = 0; i < chkListBox.Items.Count; i++)

   26             {

   27                 if (i % 2 == 0)

   28                 {

   29                     chkListBox.SetItemCheckState(i, CheckState.Checked);

   30                 }

   31             }

   32             this.Controls.Add(chkListBox);

   33         }

   34     }

 In the above example we have a DataSet that we are reading in the posts to our blog.  I’ve been playing with SubText lately so I decided to use this.   Lines 15-23 are fairly simple whereby we create the control and then bind our DataSource to our control.  Lines 25-31 is where the problem is.  Even though we’ve bound our control to our DataSet, there is nothing in the chkListBox.Items collections.  If we run this code, here is what we’ll see:

Form1

What you notice right away is every other item is not checked (although you think they would be).  Even though our data is getting bound to our control the DataSource we’ve declared does not get moved into the Items collection of the control until it gets rendered. 

The Solution

After struggling with this for awhile the solution to this problem is a one liner.  Most solutions are 🙂  The answer is instantiate the BindingContext of the control.  After the data is bound to the control the following needs to be called:

 

chkListBox.BindingContext = new BindingContext();

After adding this line into our code and rebuilding the solution we can see we get the results we originally wanted.  

Form2

For those that run into this issue I hope this post helps you.  I know that I searched every known search engine known to man kind and didn’t find a clear example nor explanation how to fix the problem.   I also should note that even though the DataSource, DisplayMember and ValueMember properties do not show up in intellisense in Visual Studio, they are in fact there!  Happy Coding. – The Elder

Zapp’s Spicy Creole Tomato Chips Too Good For Words

Posted by Keith Elder | Posted in Food | Posted on 01-11-2006

6

Zapps Spicy Creole Tomato, spiked with TabascoAfter blogging for about 5-6 years this is my first food post and it just so happens it is one that I need everyone’s help with. Some back story first. Last night I went shopping at the grocery store to restock on basic food groups: Cokes, Meat, Cheese, Bread, Chips. While cruising down the chip aisle I stopped in the Zapp’s potato chip section as I normally do. For those of you that aren’t in the know, Zapp’s makes the best flavors of chips. Since they are made Louisiana and I live one hour from said state, you can find them pretty easily here. However, when I lived in Ann Arbor, MI, the only place you could find them there was in Zingermans Deli. Anyway, as I starred at the Zapp’s selections I noticed a new ‘Limited Edition” flavor called Spicy Creole Tomato, Spiked with Tabasco. For those that know me, you know they had me at Spicy. I picked up two bags to restock the Chips food group. After getting home and getting all the basic food groups unpacked I grabbed a bag to see what flavor was in store. As soon as the first chip hit my mouth I exerted, “Umm Zapp’s, why are you so good to me!!!!!!”. Upon first bite I knew that I couldn’t live without this limited edition chip in my life. I vowed to call Zapp’s and let them know. Spring forward to now, it is during lunch on Tuesday. I called Zapp’s and spoke to Richard, head of marketing, and expressed my deepest concern if they were going to remove my newly found favorite chip from their product line. I explained the basic five food groups to him and he agreed that having only four food groups would be a tradegy. As Richard explained, the chip is doing very well right now and selling like hot cakes. I’m not surprised. He did say that as long as they continue to sell, they will stick around. This is where you, my avid blog reader comes in. Help me fight the good fight and keep Spicy Creole Tomato spiked with tabasco on the shelves for all to enjoy. Together we can make a difference. Place your orders on http://www.zapps.com today or call their toll free number 1-800-HOT-CHIP to express your love for the chip as I did. Together we can build a better tomorrow.”