Sunday, August 31, 2008

Dare Obasanjo Makes Me Want To Work At Microsoft

I've been reading a lot of Dare Obasanjo's Blog (aka Carnage4Life) over at 25hoursaday.com. I came across the blog through some posts on the CodingHorror blog a while back and have been a subscriber since setting up my Google Reader about a month ago. I've read about the drama before and the previous hiatus on postings, I'm glad he is still around for me to find.

There are a couple of things I have to say about the blog. The first is that I like the content because it provides a good mix of technical information and programming/software commentary. Sometimes the technical details (especially when talking about different protocol RFC's) get a bit above my head, but that is probably a good thing because I end up learning more because of the helpful links that he supplies.

I like that someone like Dare is still getting excited about new language features even though he obviously has a lot of things on his plate. My earlier posts on functional programming (including my "Sexy" Aggregate function in Leveraging the DNN Event Logging API) came out about the time that his posts did, but I was just recently looking through the archives and came across them.

The other thing about the blog that I like, which may or may not be a good thing for Dare, is that it makes me want to work for Microsoft. If a person like Dare is having a good time there, at least most of the time, then it probably is an okay place. For Microsoft recruiters, it's kind of like what Shaq called Homeboy Marketing:

'Homeboy Marketing’

Marketers refer to it as guerrilla marketing, but O’Neal calls it “homeboy marketing… . Most people spend $2 million, $3 million for a commercial. With homeboy marketing, it’s all for free. When these TV stations want to interview me, I wear a FreeInternet hat. When consumers see me on TV, they also see all this stuff.”



Dare gets to do "Slam Dunk" technical posts about topics that interest him, and along the way readers (probably pretty technical readers) find out that Dare works for Microsoft. In this instance, it's me, a 26 year-old programmer on the come up. Maybe somewhere else it's the genius that gives Microsoft a winning search solution that takes out the feet of one of their competitors.

Anyway, this blog was originally started as a way to indirectly market the super-cool company I work at and I'm not currently looking for a job. But if I were...

P.S. I gotta make me some kind of blogspot widget that does that "Now Playing" thing at the bottom of Dare's Blog Posts. Maybe something that can pull information from Amazon and link there (I'm not a big fan of Apple right now, don't get me wrong I'm not one of those guys with a stick yelling "Get Off My Lawn" because all the cool kids are using Macs, I'll have to elaborate in another post). For now, I'm totally ripping it off, sorry:

Now Playing: Augustana - Boston

Tuesday, August 26, 2008

Your Website - The Key Players Involved

So you want/need/gotta have a new website? Maybe you're the young and feisty new marketing manager in a small/medium sized company, maybe you're the graphic designer in a small/medium sized company and you're manager wants you to put together a new website. The fact is, you're trying to figure out how to get a website up, or update your current one, without looking like an idiot to the other stake holders in the business.

The first place to start is to know who is going to be involved in the website development process. This is where we introduce the Three D's of the simplified web development life cycle.



(Sorry I couldn't make you a little WeePerson also, but you can at their website)

You may think that the first person you are going to need is a developer, but as important as we are :) you don't want us to pick what colors go on your website. This is where the uber-cool hippie designer chic... or dude... comes in. What you're looking for in a designer is someone who has done some websites before, they should ask you things like; how many pages are you going to have on your site? What do you want visitors to your site to be able to accomplish? How do you want visitors to feel? And all those softy questions that the development people aren't going to want to talk about.

In the design phase you want to get everything mapped out, drawn up, reviewed and approved. At the end of the design phase you want to come away with an approved design file. At my company, Adaptive InfoSystems, we like to have layered PhotoShop files to work with. Most of the time, the designers we work with don't like to write HTML. If you can find a designer that does HTML (Designers Should Know HTML), well I mean Good HTML, then they may be able to supply that to your developers.

At a minimum, your design file should contain all distinctive layouts you want to use on your websites pages. For example, if your home page has a different layout than your internal pages, you need to show at least 2 page designs. You can separate them into two different files, or layer one file in such a way that both designs can be viewed by hiding a group of elements related to one or the other layouts.

After you review the design and approve it, it's time to turn the design into code. Here we move from the Design Phase, to the Development Phase. Your designer delivers the design document (hopefully a layered PhotoShop file) to the developer. The developer starts by laying out the structure of your site. We like to use Div's and CSS instead of tables for layout, it makes it a little bit easier to change the site in the future because we separate the style from the layout. Once the structure is in place, we make a template of the design without content (In .Net this is called a Master Page, in DotNetNuke it's called a Skin).

After the template is made, the developers start entering content. To speed up things in this stage, it helps to have your content already approved and ready to put up on the web. To do this, we recommend you start creating copy for your pages with word documents. A one page Word Document for each page on your site is recommended, but if it has to be more the page usually will grow to accommodate the expanded content.

While the content is being entered onto the site, the other special programming tasks like "Contact Us" forms, your product search that ties into your database, and even that cool little Google Maps thing that helps your customers find out where their orders are coming from are all being created by the developers.

By the end of the development phase you should have had several reviews of the content and designs that are being created on your site. A sign that something might be going wrong with your development is when developers "Go Dark". Essentially, if you're developer doesn't do a couple different rounds of reviews to give you a little taste of what is going on and where they are at in the project, it's a bad sign. Regular updates keep you in the loop and allow you to catch small problems before they get too big and waste every one's time.

At the end of the project is the Deployment Phase. The Deployment Phase is done when your website goes live. This is usually handled by a combination of your developer and your hosting company. The hosting company is responsible for setting up the things that let people get to your site; things like servers, DNS, network connection, etc. The developer uploads your web files and maybe your database to the hosting company and verifies it still works the same as it did when it was in development.

Well, that is the Semi-Brief introduction to the Simple Web Development Life Cycle. I expect I'll elaborate a bit more on each of the roles in coming posts. What developers like to see from designers is usually a helpful topic.

Thursday, August 14, 2008

WPF Calendar Control

For our time entry here at the office we use the infamous NetTERD (.Net Time and Expense Reporting Database). I created the NetTERD as an extension of the existing Access Database that was distributed upon arrival at the company.


Anyway, to get to the point of this post, I've never been happy with the way we select dates in the NetTERD. We've decided to go with a WPF version of the NetTERD that will add alot of features that will be helpful for creating estimates and tracking revisions and changes. The WPF has a lot to offer when it comes to user interfaces, so I decided to take some time and make a stylish calendar control for selecting the date in the new WPFTerd (Codename Adept).


After reading some posts about WPF over at the Hanselminutes blog I did a quick google image search for a calendar. I found a pretty good set of them at some random Pocono vacation site; so I horked the image and opened up Photoshop for a little workout of my Photoshop-Fu.







Not too bad for a programmer with no design skills. So we have our background image, now we fire up our Visual Studio 2008 and do some XAML coding. I specifically wanted to not use Blend for this because I need to start getting more familiar with the XAML, I don't want to fall victim to the Law of Leaky Abstractions. All the coding here was done with the VS 2008 Source Editor, not the designer.



After getting the date to display on my background how I wanted, I needed a way to work in the traditional version of the DatePicker control. I found a nice WPF DatePicker control by Marlon Grech and decided I could bend it to my will. I changed the style of the DatePicker a little to make it work by clicking the bits of calendar on the upper right of the image. Just a couple Visibility="Collapsed" and changing the TriggerBox styles and Voila! we got something semi-respectable.

Check out the source if you are looking for something to hork as well. You'll need to download the AvalonControlLibrary and add a reference to it also. Fair warning, it is statically sized, I'm hoping to make it sizeable later. I'd also like to do some kind of sexy animation with the DatePicker popup. Suggestions welcome.

Jacob

Friday, August 8, 2008

Deck Construction - Final Result

Here is the final result of the deck project. Not so bad for a couple of programmers.