free geoip Jayson's Blog -
A conduit to the voices inside my head.

Jayson's Blog

  • Starting A New Job On Monday (7/16)

    It has been a very interesting 2 months since my last job related post; in a nutshell I am not in Seattle and I was not able to take the position with Microsoft that I've been talking about. I have an entirely separate post that I'm working on which goes into more detail as to exactly what happened as it's a story that needs to be told, however I'd like to get settled into my new role before I post it.

    Did he say new role? I think he did! what's this new role? After Microsoft and I decided to go our separate ways about a month ago, I was contacted about a position here in Charlotte for a company that (to be honest) I'd never heard of: Skanska USA, which is the American arm of Skanska AB which is based out of Sweden. They are the 3rd largest building company in the world, and are #433 on the Fortune World 500 this year. Their IT group also made the 2007 CIO 100 list, and they've been named to the Information Week 500 on a regular basis over the past few years. The point is that they are a solid IT group...I did my homework this go round since a previous engagement turned out to be a huge disappointment in terms of overall technological prowess (or lack thereof). Needless to say, I am extremely impressed with Skanska.

    The interview process I went through with Skanska was one of the more unique experiences I've ever done. I won't give away their entire recipe to the secret sauce, but a huge part of their company philosophy is being able to have conversations with workers of any level, from the guy sweeping the floors all the way up to CxO level management, and as such I had to give a how-to presentation in front of the entire Charlotte office as part of the screen, with one stipulation: It couldn't be about anything technical (tell a geek they can't be technical for x amount of time, and interesting things are bound to happen). I did mine on how to fold origami cranes. Readers may not know this, but I have a pretty healthy fear of public speaking; it went off smashingly though as over the years it's something I've gotten used to, and channeling the fear is no longer a problem. From a technical standpoint it was also one of the more involved processes I've been through (dare I say even harder than the Microsoft interviews?)...lots of practical tests. When all was said and done, they spent around 20 man-hours total getting to know me...very impressive.

    I think one of the more captivating aspects of their development group is that when I arrived, I expected there to be a pretty large team of guys writing code what with all the case studies and public notoriety they have gained over the past few years. Sufficed to say, the development team is in the single digits. I even asked during the screening process something to the effect of "man, you guys must write a lot of [efficient] code"...their response was "you better believe it." Sounds like my kind of group of guys.

    I start on Monday (7/16), and that should also mark the end of my blogging hiatus as I've been doing minimal postings over the past few weeks while I've focused on landing a position which fits my career goals for both now, and the future. I'm happy to be aboard, and I have no doubt this new role will broaden my technical horizons as they are doing some amazingly innovative stuff within their technology stack and are a very advanced group.

    Sidenote: One thing that really impressed me with the overall market this go round (besides the fact that it's a job hunters market right now) is that all of the groups I spoke with were familiar with Community Server. Since I'm a CS MVP, I think that definitely worked out in my favor, so congrats to the Telligent team...your product is making inroads into the corporate IT realm which of course is a huge market to tap into. Maybe I'll get to use CS in some of my daily work in my new role!

  • Pownce: Quite A Disappointment (And Other Thoughts)

    Pownce was recently launched (I'm here for anyone wanting to 'friend' me, though I don't see myself being too active in the near future, plus good luck getting the site to actually come up) as a so-called 'Twitter killer'...I'll sum the Pownce experience up in a nutshell:

    "If you thought Twitter was unreliable, you'll be pining for Twitter's level of uptime after just a couple of hours using Pownce™."

    For any readers who don't know what Twitter is, I'll give you a few minutes to Google it. Go ahead, take your time...


    My biggest beefs with Pownce at this point are:

    • A complete lack of any type of public API (it may exist, but there is zero documentation on it). We might not even need that if...
    • Pownce's native client was worth a damn. It is written on top of Adobe's new AIR platform, which is based almost entirely on web technologies (HTML, Javascript, Flash, etc) which DO NOT lend themselves well to the desktop experience. It looks very out of place as it has its own custom 'theme' (if you can even call it that). And if you think the Pownce website has awful uptime, the client app is even worse. I already have a great web application on my desktop, it's called Firefox and it renders HTML just fine.
    • No centralized community discussion portal. As far as I can tell, Pownce's only avenue for support requests is by adding a comment to this thread (which as of the time of this post has around 400 posts...try searching that to see if your issue has already been mentioned). There is an email address as well, but I'm pretty sure messages sent to it end up in the same places as socks in a dryer. I've submitted several issues in the past few days and have heard nada back. It's very frustrating when it seems like no one is listening (or even wants to feign listening), especially in a community which is bound to have a bit of web development talent floating around in it.
    • No SMS support. Are you kidding me? That's a deal breaker for most folks right there.

    Of course all the pro-Powncers might come here and say "well, it is still in beta." I'm sorry, but that excuse no longer cuts it on the web, especially when you're in a particular space of sites where competition is high, and users will leave and never look back after just a couple of disappointing experiences. If you're launching it to the general public, it better scale and have almost no downtime at the very least. Other stuff can be forgiven, but in the case of Pownce (as I stated above) who knows if anyone is even listening or gives a damn what their users think. For me, that's the ultimate slap in the face...go and build what could be a really nice service, and then take a let's-launch-it-and-hope-for-the-best type attitude. Their blog has 2 entries, and I've yet to see any mention of bugs that are either A) fixed or B) in the process of being fixed anywhere else on the Pownce site. Is anyone driving this thing???

    The most unfortunate part of all this is that I wouldn't even get this wrapped up in a post like this if I didn't actually like the site itself. When Pownce is up, it blows Twitter away in terms of features, and overall experience. Pownce supports more than just sending out plain text can:

    • Upload media files, which will be displayed inline and can be viewed/played/etc via an inline viewer/player. Nice touch.
    • Group messages to be sent to specific 'sets' of friends, which you can create. Or send them out to the entire Pownce community. Or just reply to a specific message. Or forward a message on to a different group of folks (with a nifty 'only send to friends who haven't seen this message yet' option). With Twitter it's either for the whole world to see, or for just one person.
    • Other little timesaving things which I'll leave as an exercise to the reader to discover.

    The bigger question is pretty obvious at this point though: Why do all of the sites in this space seem doomed to repeat each other's mistakes? I mean seriously, how hard can it really be to get apps like these to scale well, and also provide a nice end user experience? Is it the LAMP approach (I doubt it, but they do have that in common)? Is it lack of money to throw some hardware at the problem? Is it teams that aren't experienced in delivering highly available/scalable web applications (my money is on this one)? It's a big mystery to me at this point, because it really does seem like a drop dead simple concept, something that could be coded up in a weekend, stress tested for a few days, and deployed on a small web farm the following weekend.

    I do wish Pownce all the best, but I am pleading with them to open up some better lines of communication. We're not all going to stand around waiting for the site to just magically be fixed for very long...we'll either go back to our preferred site, or wait a couple of weeks until another team releases their own Twitter killer.

  • For All The Massive Attack Fans Out There

    I'm sure there has to be a couple of Massive Attack fans who visit this site, and if you're not (or have never heard of them) it's never too late to give them a shot. They helped pioneer the trip hop movement which set the stage for many later bands to follow (Portishead comes to mind, among many others). It's nice and dark, soothing, dubby, and just an all around bad ass style of music.

    A 5 hour mixed set of nonstop Massive Attack tunes has been making the playlist rounds over on the Lounge channel for several months now; recently the author of the compilation has finally made it available for download: "This Is Massive Attack (mp3)" compiled by DJ Finny. Snag the download, queue it up in your media player of choice, and enjoy the nonstop sounds of Massive Attack.

  • Three Things About Software I Didn't Learn In College

    Scott Hanselman recently put out an interesting request for folks to post about three things they've learned about software either in college, out of college, or both. Seeing as I only took one programming class in college (C++ 101), this post will cater to his request of "I'm especially interesting in those who didn't go to college at all, to add yours" (I do have some college, but only 3 semesters worth).

    Reading Karthik's response is what inspired me to hammer out my own version.

    1. Learn how to say "no" early on in your software development career. I don't mean just all out "no we can't do that" but something more along the lines of knowing how to avoid scope/feature creep. Give clients an inch, and they'll take a mile if you start succumbing to a "we can do anything" attitude. Potentially this can snowball into ever slipping ship dates, and the client will blame you.
    2. Release early and release often when it comes to milestones/alphas/betas. The sooner you can get bits into real world usability scenarios, the more polished the end product will be. Doing this also instills a greater sense of ownership from the client's perspective which will appease even the most 'hands on' type of clients.
    3. Your job does not end at 5 o'clock each day. Many days it will not end until well into the wee hours of the morning. I don't mean that you'll always be doing billable work during these hours...this is a career that requires more self training than most others, and as such if you're not willing to devote a substantial amount of your own time and money making yourself more marketable, then this isn't the right career path for you.
    4. *bonus* Try not to get caught up in what I like to refer to as the "everything looks like a nail" syndrome. It's very easy to want to start applying all of our newly discovered knowledge to projects we are currently working on. My rule is "if the project has an invoice attached to it, use practices that have worked for me/my team in the past, and that I am familiar the bleeding edge stuff for personal projects, or get guidance from someone in the know (teammates, leads, etc)." Redoing architecture after the fact is expensive, and will usually cost you a client.

    Software development is still very much an art more than a science, so what works for one team very well may not work for another. In the end, it comes down to learning from past mistakes (of which there will be plenty early on in a career), and doing more of what has worked in the past. Well, for me at least.

  • This Could Only Happen In North Carolina

    A while back, the story about inhaleable alcohol broke over the internet (I can't find the specific link, but this was announced several years ago in 2004). Fast forward to today, and there's an article floating around stating the machines have been banned in my home state of North Carolina (in addition to 21 other states). My home state is at the very center of the bible belt, and is also a haven for commercial televangelism so it's not a huge surprise until you factor in the following:

    • The company that distributes the Alcohol without Liquid machines is headquartered in North Carolina
    • The reasoning behind the ban has nothing to do with the actual imbibing process, it's the fact that hangovers are averted and thus the user isn't "punished" for committing what most Christians consider to be a sin: Over consumption of alcohol.

    From the article:

    Indeed, the main knock against AWOL in the U.S. is the absence of a hazard (hangover) usually associated with alcohol consumption, an apparent advantage that, to the horror of moralists like the Rev. Creech, divorces sin from punishment.

    According to the Christian Action League, the North Carolina bill, which was unanimously approved by the state Senate in April and unanimously approved by the state House yesterday, "makes it unlawful to inhale fumes for the purpose of intoxication, or to manufacture, sell, give, deliver, possess or use an alcohol vaporizing device. It also makes it illegal to possess or sell ethyl alcohol for the purpose of inhaling." So if you pick up a bottle of vodka in North Carolina and announce, "I think I'd like to inhale some of this," you have transformed an otherwise legal beverage into contraband.

    What happened to separation of church and state? Down here in the South, that phrase is largely an oxymoron...the church wields huge influential power over local government and politics. The reasoning behind this ban is ridiculous.

    Sidenote: This story has zero impact on me; I don't drink (or in this case, inhale) alcohol. I'm also not a bible thumping southerner.

  • Syntax For Generic Type Declarations In Type Elements

    I was recently working on implementing a provider based design for a project I'm working on which also happens to make heavy use of generics throughout the provider architecture. The signature of the type to be used in the <providers> section of the config file is MyType<T, V>, however I kept getting the dreaded "Unable to load type 'MyType' from assembly 'MyAssembly'" error when attempting to run the application. After about 30 minutes of wringing my hands wondering what the heck was going on, I remembered that generic types have a different signature when declared in text form. The fix was simple, instead of declaring it as

    type="MyAssembly.MyType, MyAssembly"

    This needs to be changed to

    type="MyAssembly.MyType`2, MyAssembly"

    Where the number after the '`' is the number of generic type parameters in the type's signature. It would have been nice if the runtime could have offered a hint like it does in other situations. This may be generics 101 for some, but I'm posting this in hopes it'll save someone else some time if Google picks up the keywords in this post.

  • Congratulations To Eric And Leigh

    This past Thursday, one of my best friends (a local artist, check out the cuffs he makes by hand) tied the knot to his beautiful bride Leigh in one of the most memorable weddings I've been to lately. He's one of the 'core' crew, and even though we've lost touch a little over the past couple of years, I love him like a brother and wish him and new wife the absolute best of luck in their life together.

    The reception was held at Blue, a local restaurant, and I've posted a couple of pics over in my gallery. It was awesome having most of the core crew under one roof hanging out together; it's tough to get everyone together at the same time.

    Congratulations Eric!

  • What If You Built A Browser, But No One Used It?

    Through my daily reading of tech news, I came across this dandy: Netscape Navigator 9 Beta released.

    Wait a second, you mean to tell me that Netscape A) even still exists and B) is still releasing new versions of Navigator? Until reading that headline today, Netscape had ceased to exist in my mind. The last version of NN I played around with (out of curiosity) was something in the 7.0 timeframe (5 years ago) which left my machine as quickly as it got there, namely due to huge memory consumption.

    The point is this: I'm a web developer, and I forgot about the company who once used to dominate the browser market...that's how much of a non-commodity they've become.

    Curiosity got the better of me and I did a little poking around to see what kind of market share (if any) Netscape still has after all these years. The results were not surprising in the least:

    And from own site's last 10,000 hits (first column is hits):

    • 7 0.07% Netscape 7.2
    • 3 0.03% Netscape 7.1
    • 1 0.01% Netscape 8.0.4

    I haven't been on a team that tested site compatibility in Netscape since the first year or 2 of my career. All of this screams the question, "who over at AOL is still signing these guy's paychecks?" And "why are stockholders still allowing development to continue on what is effectively a dead platform?" AOL is still locked into 3 more years of a 7 year contract with Microsoft to use IE code in the AOL browser, so they can't even use NN/Gecko in one of their flagship products...very strange bedfellows indeed.

    The irony of all this is of course that the Gecko engine released by Netscape way back in 2000 managed to survive the carnage, and is now the foundation for numerous popular browsers, notably Firefox which commands much higher market share, but it doesn't do AOL any good until 2010. Any other company would have cut the codebase loose by now. Chop it up, salvage what you can, and move on.

    It's still an interesting story though...a Classic Silicon valley tale. Here's to hoping I forget about Netscape in the not so distant future yet again.

    Sidenote: I think if I was an engineer at AOL on the Navigator team, I'd lie to all my programmer friends and just say I worked on Real Player. It's that bad. Which is crazy seeing as they used to have some of the most amazing talent in the browser biz. Poor management will do that to a team.

  • And Then There Were 29

    Today marks the beginning of my 30th trip around the sun (I'm 29 for any math challenged folks). Just so everyone knows, I plan on staying 29 for a few years, so we won't be celebrating next year this time.

    This birthday will be low key...eating at a local Greek restaurant with friends and family, followed by some dancing: My favorite DJ (James Zabiela) is in town tonight, and he's always absolutely incredible. So, happy birthday to me!

  • A General Generics Question -- Don't Fight The Compiler

    I've got a pretty firm grasp on generics such as when to use them, why they are useful, etc. I'm with the rest of the .Net camp when I echo how extremely useful they are. I've also learned that if you're fighting the compiler on generics for more than a few minutes, there is a reason as to why what you are doing is wrong.

    The above held true until earlier today when I was left scratching my head over some code that IMO should have compiled just fine. Nothing explains coding problems better than code, so here goes an attempt at an explanation.

    I have the following class declaration: 

    public class ChannelViewChangedEventArgs<T> : ViewChangedEventArgs<T> where T: ChannelCollection<IChannel>

    And this class declaration:

    public class ChannelView<T> : ContentView<T>, IChannelView<T> where T : class, IChannel, new()

    Later on in the ChannelView class I try to new up the ChannelViewChangedEventArgs like so:

    new ChannelViewChangedEventArgs<ChannelCollection<T>>(new ChannelCollection<T>())

    The compiler then complains that ChannelCollection<T> must be convertible to ChannelCollection<IChannel>. This isn't an option as it removes the benefits of generic type parameters, and seeing as T is of type IChannel I'm a bit confused as to why it won't compile. Then again it's also late at night so if the reason as to why is something obvious I won't be surprised at all. As stated above, if I'm fighting the compiler on something, I'm usually doing something wrong from a design standpoint.


« First ... < Previous 3 4 5 6 7 Next > ... Last »

Copyright © ::
External Content © :: Respective Authors

Terms of Service/Privacy Policy