Some things are what they are.
Geez, I reread that sentence and at first I wasn't sure it had anything useful to say at all. Nonetheless, it doesn't change it's correctness. Apparently it is what it is. Darn it, I did it again. Some things you can just count on, like the sun coming up in the morning, Brittney making the front page, and a cheesy line in my post. Here it is: You can change your friends and you can change your pants, but you can't change your friends' pants. (Ummm... yep, that's definitely how it goes.)
The reason this topic is on my mind, as philosophical as it is, is that I think recognizing this fact can be useful. The number one, for instance, can't be the number two. It isn't green or blue or happy or sad or anything else besides the number one. You can add five to the number one, but you'll end up with the number six - and one, surprisingly enough, will still always, eternally, infinitely be the number one.
Because it is unchangeable, the number one is said to be immutable. I don't think this makes the number one bad, in fact it's quite a useful number (after you embrace it's permanence). So I guess we can all accept this fact or decide to be very unhappy about it, but either way Brittney will still be on the front page, and the number one will still be itself. What it seems we can change then, based on the previous recognition, is what we decide to do about it being unchangeable. We can change ourselves, our attitude, and what we choose to do with the information we're presented with.... something to think about.
To tie this back to a little bit of programming - I've read several blogs lately that talk about immutable objects. Regardless of whether you're looking for the good or the bad in things, you will usually find it. That's true with immutable objects too. Immutable objects have several properties that make them useful to work with, but if you view them with a negative attitude and choose to ignore them, you've dismissed them before you understood them. If you're interested, read some of the sites out there to discover what kind of cool things can be done with unchangeable objects and what kinds of benefits they bring. I've even seen it labeled a few times as the "future of programming."
Wednesday, January 23, 2008
Friday, January 4, 2008
It can't be dead, it's still twitching
Nope not gone yet. Just took a really long break.
Hopefully I'll come back with a fresh perspective.
Hopefully I'll come back with a fresh perspective.
Sunday, November 4, 2007
An "Excellent" Sign
As I was driving to our family's weekly Sunday dinner, I passed a sign on the side of the road. The kind of sign with the changeable letters that always has a clever message on it. We drove by too fast for me to get a picture, but on it was the message:
I liked wikipedia's definition of "Excellence" the best, so I'll use it.
Now, I'm not saying that it's bad to do something in an uncommon way - that's how we get better. To solve a complex problem sometimes takes some creativity and doing something that no one else has done before - it's called innovation. What I am saying is that that this does not equal excellence. I believe that you can have excellence without innovation (since I already used that word), but it's a lot harder to achieve innovation without excellence - that's the challenge.
Although it's usually involved, Sunday dinner was excellent, done the same old way as always.
Excellence - Doing something common in an uncommon wayAt first, I looked at it and thought, "All right, inspiring". But then after thinking about it - I'm not sure I agree with it. Do you think they put the "Excellent" message up in an uncommon way just to prove their point? I don't think standing on milk crates stacked on a hammock while placing the letters on the sign with a pair of tweezers would have any bearing on the effectiveness of the message. In fact, the most common way of putting the message on the sign is probably the best.
I liked wikipedia's definition of "Excellence" the best, so I'll use it.
Excellence is the state or quality of excelling. It is superiority, or the state of being good to a high degree. Excellence is considered to be a value by many organizations, in particular by schools and other institutions of education, and a goal to be pursued.So, "Excellence" is the state of being superior. It doesn't say anything about the way in which this superiority is achieved. This is where I have a problem with the first message. I think you can be excellent, do excellent work, and have an excellent product in a common(usual) way.
Now, I'm not saying that it's bad to do something in an uncommon way - that's how we get better. To solve a complex problem sometimes takes some creativity and doing something that no one else has done before - it's called innovation. What I am saying is that that this does not equal excellence. I believe that you can have excellence without innovation (since I already used that word), but it's a lot harder to achieve innovation without excellence - that's the challenge.
Although it's usually involved, Sunday dinner was excellent, done the same old way as always.
Thursday, November 1, 2007
Computer Hero
Now with wireless controller!
I'm pretty sure most of you have played Guitar Hero at some point. If not, I'll try to describe it the best I can. Basically, you hold a plastic guitar which has five differently colored buttons on the fret board where the strings would normally be, a plastic lever where you would normally strum the guitar, and a whammy bar. While you're holding the guitar colored circles come toward you on the screen like a multi-colored version of the beginning of Star Wars, only faster. The object is to press the colored buttons in the correct order and hit the lever as if you were actually playing guitar. It's a lot of fun.
On the way home, I was excited to get home and play, but I was thinking that this game is a pretty good analogy for a lot of things going on in my life and career.
It's all I can do to keep up with everything that's coming at me. It takes the coordination of all of my abilities sometimes: mentally, physically, financially, and otherwise. As soon as I finish one set, it's on to the next one where there are more notes coming faster - and as soon as I finish that gig, someone wants a "software battle." If all goes right, my band and I will hit enough notes in a row and leverage our "star power" just when the timing is right.
We just finished a pretty major sub-project, and it strikes me that good software teams are a "band". Everyone has a part and even a bad stage hand can keep you from becoming a star. Which is why the title is a bit of a misnomer. There can't be any heros in this business - there's too much to do. How are you going to be the front man, the lead guitarist, the bass player, and the drummer all at once? Find your part, practice it, and play it well.
We all know it isn't about being a hero anyway. In the end, all we really want is acceptance and respect from our peers.
Tuesday, October 2, 2007
One Man's Trash | Another Company's Customer
7 amThat's how the lyrics to one of my favorite Incubus songs begins. And while they're melodically tackling a more philosophical topic, I never really considered how much stuff I've thrown away (and I guess in a philosophical sense too...)
The garbage truck
Beeps as it backs up
And I start my day thinking about
What I've thrown away
- 11AM, Incubus, Morning View (Sony Music, 2001)
It seems our society has an attitude of convenience rather than an attitude of quality. We always want what we haven't got - we're never happy with what we have. We'd rather spend three times as much to get a new one than to take the time and energy to fix anything that's broken. Even though our family couldn't afford a lot when I was growing up, one thing my father told me was that he always bought the best he could afford - even if it hurt a little financially at the time - because he wanted it to last.
Now it's easier to buy a new one. Everything is throw-away and disposable. People buy high dollar items expecting that they'll only last for 3-5 years at best (see my previous post). It doesn't stop with objects either. Even relationships are disposable in our society. Divorce is more commonplace than couples who've been married for 10 or more years. People aren't as loyal to brands (or employers) as they used to be.
As a technology related side - it's interesting that even software products are realistically written for a lifetime of 2-3 years now. The age of legacy software is over. If you're not reinventing your software periodically it is replaced with something else better.
I've noticed this attitude has carried to business too. Customers now seem to be disposable. Everywhere I look it's not about keeping customers anymore, now it's about getting new customers. It's as if businesses get new customers expecting they'll only be around for the next 3-5 years at best before they move on. Companies will seemingly give the house away to get new customers locked into a contract but expect that loyal customers pay full prices for everything when they're the ones who've been keeping the lights on all along!
Let me bring the topics together in a more real sense.
One Man's Trash
My co-worker and I recently came into a set of 30" flat panel LCD TVs that were involved in a lightening strike and no longer worked correctly. They were being disposed of. These TVs were originally over $3000, and used models still retail for over $1500. We took the TVs apart and diagnosed the problem - a circuit board that wasn't operating correctly. We called the manufacturer to get replacement parts. They didn't have replacement parts. Let me repeat: The manufacturer didn't have replacement parts!! (Nothing says disposable like no replacement parts.) Finally, we found a company on the WWW who had replacement parts for $150. Fantastic! New TVs for $150 and some elbow grease.
Another Company's Customer
Now that my co-worker had a new LCD flat panel, he decided to put it up in his bedroom. The only problem was that he didn't have a satellite receiver in the bedroom. So he called his satellite provider to get setup with some equipment. They didn't sell equipment anymore - they only leased it. Equipment upgrade: $100, RF Remote Control: $25, Shipping and Handling: $20, Programming Upgrade: $10/Mnth, Extra Receiver: $5/Mnth, Installation Extra (if required). Total 1 time charges: $145, new monthly charges: $15, making your existing customers bend over and take one for the team: priceless. He has been a loyal customer for 7 years, currently has no promotions, and has never made a late payment. They would waive NONE of the charges (we even called back and tried a different operator). They wouldn't even throw in the remote for goodness sakes!! Can you imagine how many times that $100 receiver (that cost $10 to make) has been paid for over 7 years? But guess what? If you're a new customer you can get a four room HD-DVR system installed completely free of charge. (Read current customers are disposable. We don't care if you leave because we know you'll be back in the next 3-5 years.) What a kick in the pants!
It's amazing to me that in a society where most people hate change that we promote it in everything we do. I wonder what kinds of things I've been throwing away...
Monday, September 10, 2007
Goes around, comes around, but it won't turn on
karma |ˈkärmə|
noun
Nothing lasts forever - except the stop light next to my house, in the morning, when I'm late. Anyways, that's what I told my buddy when his first generation iPod shuffle took a dive.
He'd been having problems with it off and on, so when he brought it in to work and told me that neither iTunes nor Windows could recognize it I wasn't too shocked. We tried it on my Mac to see if "it just needed some Apple lovin'", as he put it. Turns out it worked on my Mac - that really set him off. He'd just transfered some music on to it the previous night after upgrading to the latest version of iTunes. After reading some sites he got it in his head that it was an Apple conspiracy to get rid of this version of the shuffle - although after our experience he may be on to something.
After about an hour of messing with this thing I was thinking, "why can't someone who works with technology for a living, who has used the heck out of this device, and deals with change constantly in his professional life understand that things wear out and technology changes to newer and better things. Surely he's considered that it might just be time to buy a new one." But, as if it were a life long pet who'd become part of the family, he just couldn't let it go. So being the friend I am, we took it to the vet - the genius bar at the Apple store.
We made our appointment online. We showed up 15 minutes early as they asked. Right on time they asked to see the iPod and wanted to know what the problem was. We told them. We had brought the original packaging and receipt. They scanned the SKU and informed us that it was out of warranty and that there wasn't much they could do. Odd... the guy didn't even plug it into a computer to try it out until my friend finally asked him - even then he just said, "yep, you're right. It doesn't work." They haggled a little more and they were finally willing to give him 10% off on a new shuffle.
And then, as we were getting up to leave, they guy behind the bar said, "I guess it's just time to get a new one." The very words I had uttered earlier. But, somehow it didn't sound the same coming from him. It really rubbed my friend the wrong way - especially the next day, since he was able to take it home that night and get it working again (even though it broke again later that day).
[Fade to black]
[End Scene]
[Curtains Rise]
[Jeff is walking into his living room from the garage]
Hmm... I wonder what's on television. [kicks off shoes, plops onto couch]
[grabs remote and turns entertainment center on]
[picture comes on but the sound from the receiver won't get any louder]
Well, I guess it's just time to buy a new one, Karma... you cruel cruel mistress.
noun
- informal destiny or fate, following as effect from cause.
Nothing lasts forever - except the stop light next to my house, in the morning, when I'm late. Anyways, that's what I told my buddy when his first generation iPod shuffle took a dive.
He'd been having problems with it off and on, so when he brought it in to work and told me that neither iTunes nor Windows could recognize it I wasn't too shocked. We tried it on my Mac to see if "it just needed some Apple lovin'", as he put it. Turns out it worked on my Mac - that really set him off. He'd just transfered some music on to it the previous night after upgrading to the latest version of iTunes. After reading some sites he got it in his head that it was an Apple conspiracy to get rid of this version of the shuffle - although after our experience he may be on to something.
After about an hour of messing with this thing I was thinking, "why can't someone who works with technology for a living, who has used the heck out of this device, and deals with change constantly in his professional life understand that things wear out and technology changes to newer and better things. Surely he's considered that it might just be time to buy a new one." But, as if it were a life long pet who'd become part of the family, he just couldn't let it go. So being the friend I am, we took it to the vet - the genius bar at the Apple store.
We made our appointment online. We showed up 15 minutes early as they asked. Right on time they asked to see the iPod and wanted to know what the problem was. We told them. We had brought the original packaging and receipt. They scanned the SKU and informed us that it was out of warranty and that there wasn't much they could do. Odd... the guy didn't even plug it into a computer to try it out until my friend finally asked him - even then he just said, "yep, you're right. It doesn't work." They haggled a little more and they were finally willing to give him 10% off on a new shuffle.
And then, as we were getting up to leave, they guy behind the bar said, "I guess it's just time to get a new one." The very words I had uttered earlier. But, somehow it didn't sound the same coming from him. It really rubbed my friend the wrong way - especially the next day, since he was able to take it home that night and get it working again (even though it broke again later that day).
[Fade to black]
[End Scene]
[Curtains Rise]
[Jeff is walking into his living room from the garage]
Hmm... I wonder what's on television. [kicks off shoes, plops onto couch]
[grabs remote and turns entertainment center on]
[picture comes on but the sound from the receiver won't get any louder]
Well, I guess it's just time to buy a new one, Karma... you cruel cruel mistress.
Tuesday, August 28, 2007
Light up the web? Maybe.
I loved "The Karate Kid" when I was young. It was a classic movie that had everything - martial arts, a good story line, a main character everyone can relate to, and a wise mentor who was pushy at the right times, but not overbearing.
I attended a Microsoft DevCares event today on SilverLight (Microsoft's answer to Adobe's Flash player for "Rich Internet Applications"). User experiences on the web are becoming more and more important for software vendors to distinguish themselves and Microsoft is trying hard to "Light up the web", as they put it. And, as I put it, it seems they want to take Abobe out of every market they own (for example Microsoft's release of the XPS document format [XML paper specification] in response to Adobe's Mars project for XML PDF documents). NOTE: SilverLight runtime ≠ .NET Framework!!! It's a different runtime. They must have said this at least a dozen times.
Being at the presentation reminded me a lot of watching "The Karate Kid", only, I'm not sure who's Daniel and who's Johnny - and the guy with all the answers, Miyagi, is no where to be found. I think this is how the dialog might have gone in the movie that was playing in my head (I'm not sure if it was a flash movie player or a silverlight runtime though).
Daniel: Hey - you ever have to write user interfaces when you were a developer?
Miyagi: Huh - plenty.
Daniel: Yeah, but it wasn't like the problem I have, right?
Miyagi: Why? Coding coding. Same same.
Daniel: Yeah, but you knew about web development.
Miyagi: Someone always know more.
Daniel: You mean there were times when you were scared to code?
Miyagi: Always scare. Miyagi hate coding.
Daniel: Yeah, but you like developing user interfaces.
Miyagi: So?
Daniel: So, web development's coding. You train to write code.
Miyagi: That what you think?
Daniel: [pondering] No.
Miyagi: Then why train?
Daniel: [thinks] So I won't have to write code.
Miyagi: [laughs] Miyagi have hope for you.
How does SilverLight compare to Flex?
To the end user - there's just about no difference. To the developer - they have only a little in common. SilverLight, like the Flash player is cross-browser and cross-platform and both are great at media delivery (like movies on youTube). Both are based on a declarative XML language (MXML Vs. XAML) and have design tools to help build the mark-up. The reason I say they have only a small portion in common has more to do with each company's approach to the solution.
SilverLight was born from .NET's WPF (Windows Presentation Foundation). WPF was meant for easy development of Windows desktop applications, but as part of the .NET 3.0 runtime and IE7 releases, WPF applications could be downloaded and used as a web application in IE. There were problems with that approach. End users needed to have the .NET 3.0 framework installed and are forced to use Windows and even further IE7! Enter SilverLight. The XML that is used in WPF applications is nearly 100% forward compatible with SilverLight and all that is needed is the SilverLight runtime which runs in any of several popular browsers on Windows or Mac. Flash started out as a web development platform and Adobe is now going the other direction with products like AIR (the Adobe Integrated Runtime). Adobe = Web -> Desktop, Microsoft = Desktop -> Web.
Data and Security
Microsoft is great at hitting it's competitors where it hurts - and they did it again. Kudos Microsoft. Flex struggles with a few things - foremost in my mind are cost, data accessibility, and security. To do anything really really cool with Flex or databases, you pretty much need some type of back end server application (e.g. Live Cycle Data Services, or WebORB [if you do .NET development]) which have costs associated with them. SilverLight 1.1 (Alpha at time of writing) will have LINQ and WCF (Windows Communication Foundation) built into it. And since SilverLight binaries are dll's downloaded over the web (dll's can be securely obfuscated - it's only a matter of time before Flash 9 SWF's can be decompiled) I already feel more secure. Like Flash, SilverLight is also agnostic about how it's content is served - it could be served by an Apache web server, a java web server, or your hacked Nintendo with a web server running on it.
Conclusion
SilverLight isn't ready for business applications yet due to the fact the SilverLight doesn't have any user controls like TextBox or ComboBox yet (included in 1.1 final release). But, keep an eye on this!! If the data connectivity is as good as promised - you'll start to see numerous seriously data enabled SilverLight web apps.
Links
I can't talk about all this without giving some examples.
Resources
Miyagi: Now, ready?
Daniel: Yeah, I guess so.
Miyagi: [sighs] Daniel-san, must talk.
[they both kneel]
Miyagi: Walk on road, hm? Walk left side, safe. Walk right side, safe. Walk middle, sooner or later
[makes squish gesture]
Miyagi: get squish just like grape. Here, writing code, same thing. Either you develop UI "yes" or develop UI "no." You develop UI "guess so,"
[makes squish gesture]
Miyagi: just like grape. Understand?
Daniel: Yeah, I understand.
Miyagi: Now, ready?
Daniel: Yeah, I'm ready.
I attended a Microsoft DevCares event today on SilverLight (Microsoft's answer to Adobe's Flash player for "Rich Internet Applications"). User experiences on the web are becoming more and more important for software vendors to distinguish themselves and Microsoft is trying hard to "Light up the web", as they put it. And, as I put it, it seems they want to take Abobe out of every market they own (for example Microsoft's release of the XPS document format [XML paper specification] in response to Adobe's Mars project for XML PDF documents). NOTE: SilverLight runtime ≠ .NET Framework!!! It's a different runtime. They must have said this at least a dozen times.
Being at the presentation reminded me a lot of watching "The Karate Kid", only, I'm not sure who's Daniel and who's Johnny - and the guy with all the answers, Miyagi, is no where to be found. I think this is how the dialog might have gone in the movie that was playing in my head (I'm not sure if it was a flash movie player or a silverlight runtime though).
Daniel: Hey - you ever have to write user interfaces when you were a developer?
Miyagi: Huh - plenty.
Daniel: Yeah, but it wasn't like the problem I have, right?
Miyagi: Why? Coding coding. Same same.
Daniel: Yeah, but you knew about web development.
Miyagi: Someone always know more.
Daniel: You mean there were times when you were scared to code?
Miyagi: Always scare. Miyagi hate coding.
Daniel: Yeah, but you like developing user interfaces.
Miyagi: So?
Daniel: So, web development's coding. You train to write code.
Miyagi: That what you think?
Daniel: [pondering] No.
Miyagi: Then why train?
Daniel: [thinks] So I won't have to write code.
Miyagi: [laughs] Miyagi have hope for you.
How does SilverLight compare to Flex?
To the end user - there's just about no difference. To the developer - they have only a little in common. SilverLight, like the Flash player is cross-browser and cross-platform and both are great at media delivery (like movies on youTube). Both are based on a declarative XML language (MXML Vs. XAML) and have design tools to help build the mark-up. The reason I say they have only a small portion in common has more to do with each company's approach to the solution.
SilverLight was born from .NET's WPF (Windows Presentation Foundation). WPF was meant for easy development of Windows desktop applications, but as part of the .NET 3.0 runtime and IE7 releases, WPF applications could be downloaded and used as a web application in IE. There were problems with that approach. End users needed to have the .NET 3.0 framework installed and are forced to use Windows and even further IE7! Enter SilverLight. The XML that is used in WPF applications is nearly 100% forward compatible with SilverLight and all that is needed is the SilverLight runtime which runs in any of several popular browsers on Windows or Mac. Flash started out as a web development platform and Adobe is now going the other direction with products like AIR (the Adobe Integrated Runtime). Adobe = Web -> Desktop, Microsoft = Desktop -> Web.
Data and Security
Microsoft is great at hitting it's competitors where it hurts - and they did it again. Kudos Microsoft. Flex struggles with a few things - foremost in my mind are cost, data accessibility, and security. To do anything really really cool with Flex or databases, you pretty much need some type of back end server application (e.g. Live Cycle Data Services, or WebORB [if you do .NET development]) which have costs associated with them. SilverLight 1.1 (Alpha at time of writing) will have LINQ and WCF (Windows Communication Foundation) built into it. And since SilverLight binaries are dll's downloaded over the web (dll's can be securely obfuscated - it's only a matter of time before Flash 9 SWF's can be decompiled) I already feel more secure. Like Flash, SilverLight is also agnostic about how it's content is served - it could be served by an Apache web server, a java web server, or your hacked Nintendo with a web server running on it.
Conclusion
SilverLight isn't ready for business applications yet due to the fact the SilverLight doesn't have any user controls like TextBox or ComboBox yet (included in 1.1 final release). But, keep an eye on this!! If the data connectivity is as good as promised - you'll start to see numerous seriously data enabled SilverLight web apps.
Links
I can't talk about all this without giving some examples.
- Tafiti is pretty neat. It's a "visual" search engine.
- PopFly is a SilverLight tool that lets you make dynamic Mash-Up's with a graphical tool. You can connect to services like Flickr to get GeoTagged images and place them on a map by wiring "Blocks" together. This is by invitation only - it's worth to getting an invitation to.
- This is an emulation of Windows Vista done in SilverLight. Pretty Neat.
- DLR-Console is a application that demonstrates the use of the Dynamic Language Runtime. Developers can now write SilverLight in Ruby, Python, or managed JScript.
Resources
- http://www.microsoft.com/silverlight - SilverLight download
- http://www.silverlight.net/community - Official SilverLight site
- http://www.componentone.com - WPF/SilverLight user controls
- http://blogs.msdn.com/mharsh - Mike Harsh's Blog
- http://blogs.msdn.com/tims - Tim Sneath's Blog
Miyagi: Now, ready?
Daniel: Yeah, I guess so.
Miyagi: [sighs] Daniel-san, must talk.
[they both kneel]
Miyagi: Walk on road, hm? Walk left side, safe. Walk right side, safe. Walk middle, sooner or later
[makes squish gesture]
Miyagi: get squish just like grape. Here, writing code, same thing. Either you develop UI "yes" or develop UI "no." You develop UI "guess so,"
[makes squish gesture]
Miyagi: just like grape. Understand?
Daniel: Yeah, I understand.
Miyagi: Now, ready?
Daniel: Yeah, I'm ready.
Subscribe to:
Posts (Atom)
