Tuesday, November 16, 2010

Video - Inversion of Control with StructureMap

This past Spring, I also attended the Iowa Code Camp. Unlike the Fall's which just past, I recorded 3 sessions (2 plus my own) while there. I've had some issues finding time, space, etc. to encode the files and get them hosted somewhere. Now that I have a Vimeo account, I will be posting any of the videos with the presenter's consent.

The first of the videos from this Spring is from Brad Tutterow who presented on Inversion of Control with StructureMap. This was an awesome session and thanks Brad for letting me record and post the video.

Inversion of Control with StructureMap from James Eggers on Vimeo.

For more information about what Brad's up to, check out his Twitter (@CodeBadger) and Blog (http://www.codebadger.com).

Friday, November 12, 2010

Iowa Code Camp - Fall '10 Review


Over the first weekend of November, I attended and spoke at the Iowa Code Camp in Des Moines, Iowa. Every time I attend, the event is great and everyone there are some of the top developers in the area. As with any conference I go to, I want to make sure and write a review on the experience overall. I was able to attend 4 sessions at this code camp after doing my presentation on the Low Hanging Fruit of Html5. Below is a rundown of each session I attended.

Getting Dirty with Android - by Brent Edwards

I've talked with Brent on a number of occasions via Twitter and was looking forward to attending his Android development presentation. I had looked at Android development briefly in the past; however, hope to get into it more now that I've traded in my iPhone 3G for an HTC Evo. Brent did a really good job on showing the basics of Android development using Eclipse on a Windows system. He wisely had all examples setup prior to the presentation in order to not bore the audience by manually typing the xml associated with Android's layout. He also made a point to educate the audience on some of the things that may cause a new Android developer to get hung up. His presentation was one of the few that I've been to that I couldn't find hardly anything to provide constructive feedback on. He was well practiced on the topic, he had the examples working well, and he was able to field any questions. Overall, it was a great presentation that I'd recommend to anyone looking to get into Android development.

Curriculum Development Workshop - by Dustin Thostenson

Every so often on Twitter, a conversation will come up on a number of academic topics. A few months ago, the topic of how to build a better college curriculum for software developers or engineers came up. After multiple hours on Twitter, many conceded that moving the conversation to a forum like Iowa Code Camp would be a good idea. This session was solely a discussion about that topic. Dustin is on the curriculum board at the Des Moines Area Community College which makes the topic more than just a theoretical discussion. In the session, we had a large mix of educators, students, and other people who varied in how they came about being a software practitioner. Dustin had a number of pseudo-exercises he asked us to do in order to limit group think early on. From these exercises, the discussion focused on the fact that some of the most common set of courses that the attendees deemed were most important were not technical at all. Courses like public speaking, group dynamics, research methods, and writing were all rated as some of the most important while language specific skills were some of the lowest. From everything discussed, I left the discussion thinking not what courses are the most important for a college student but more about how to inspire a student to have patience in learning true programming skills. Knowing how to cut code is the least important aspect of my day job and, after the discussion, I'm not alone in feeling that way.

Using and Extending Django - by Matt Morrison

By day, I'm a .Net guy. By night, I love programming in anything that isn't tied to Microsoft. I enjoy working in Python and have dabbled in Django a little bit; however, nothing enough to feel comfortable to really ensure that I was doing things right. This session was a slight treat for me since I could learn the Django way of doing things from a guy that actually uses Python daily. Matt's presentation was very open which was bittersweet. I was able to ask questions and help mold the presentation to the aspects that I'm interested in; however, it also lead to some uneasy pauses and breaks in the flow of the presentation while Matt was soliciting the audience on for what they may be interested in. Overall, there was a lot of information that I saw and gained from the presentation even though it was very rudimentary. I would have enjoyed seeing a bit more structure but overall, the content was good and it was obvious that Matt knew the subject matter. I also would have liked to see a few steps on how to start the application from nothing and how he located and setup the eggs.

Using Django and TDD to version Databases - by Matt Morrison

In a continuation of the previous conversation, Matt focused more on how to do TDD with Django as well as introduced how to work with South, a Django add on for doing database migrations and versioning through modifying your model. This talk was very beneficial for me in that I saw TDD in Python/Django, more specific Django stuff, and how Django does database migrations. I was very curious on the database migration elements because of my involvement in the Dot Net Migrations open source project in the .Net space. In comparison with the previous topic, this presentation was very structured and spot on. It answered a lot of my questions and provided me a ton of insight.

Overall Reflections

Every conference I go to I enjoy. Iowa Code Camp is no different. This time around, I saw a large amount of Macs and a bit more diversity in the sessions than in past conferences, which were very .Net heavy. While I'm a .Net guy, I have shifted my presentation topics away from .Net in order to provide different viewpoints to the audience. I like seeing how conferences like this are providing a forum for such as well. I don't regret going to any of the presentation that I went to though wish I was able to clone myself and attend others as well. I only recorded my own presentation this time around due to logistical issues that I encountered in the Spring. Next Spring's code camp I may have a different camcorder in order to make things a bit easier to off load and recharge the camera easier. Beyond that, I'm looking forward to playing around with the knowledge I picked up last weekend. I also am working on some additional presentations as well. Next year is going to be a busy year for me as a presenter and I can't wait to see how things go.

Speaker Contact Info

Brent Edwards - @brentledwards
Dustin Thostenson - @dustinson
Matt Morrison - @mattjmorrison

Tuesday, November 9, 2010

Presentation: Low Hanging Fruit of Html5

This past weekend, I participated at the Iowa Code Camp in Des Moines, Iowa, USA. While at the event, I spoke on some of the elements of HTML5 that can be used in today's web design and development world. Below is a copy of the materials, the presentation, and a video of my session. I plan on doing additional sessions on or relating to HTML5 in the near future so stay tuned.



LINK: Files used in the presentation.

Video Recoding

Low Hanging Fruit of HTML5 from James Eggers on Vimeo.

Wednesday, October 20, 2010

A Tale of Two Interviews

Disclaimer: This story is completely true, sort of. The names and faces of those depicted in this blog post have been changed in order to protect the innocent and incompetent alike. Any similarity to people or places you know is completely coincidental. Furthermore, no animals were hurt in the publishing of this blog post.

Over my career, I have had the opportunity to be on both sides of an interview table. I have searched and applied for jobs as well as sought the assistance of recruiters. I've also been the one looking for employees to add to my team to replace ones that left or to expand the team. With every experience on either side of the table, I've walked away feeling that something wasn't quite right with the process as a whole. These notions bubbled up this past week when a good friend of mine, we'll call him Bob, was telling me about his tales while searching for a job. I figured I'd retell the story here.

Bob is a fairly seasoned programmer with a number of years and languages under his belt. It takes a lot for him to change jobs because he enjoys trying to help companies become better and work close with the friends on his team. He's active in the community and has a thirst for learning anything development related. For a variety of reasons, Bob is at a point where he wants to change jobs and decides to do the interview dance. With in a short time of looking, two interview opportunities presented themselves to him.

The first was with a smaller company that sounded like a breath of fresh air compared to the corporate cubicle land that Bob is attempting to leave. The interview was held at a local coffee shop and with two very knowledgeable members of the company's development team. Having known his work from the community and online, the interviewers focused a lot on Bob as a person and what he's looking for in a company, a team, and a career. There were some discussion on technical topics; however, many stemmed from Bob's questions about the company's processes and infrastructure. Shortly into the interview, Bob found himself to be very comfortable, candid, and casual with the two people he was sharing the conversation with.

Later that same day, Bob had another interview in a different part of town. The interview was with a little bit bigger company that was comparable in size to his current employer. The interview was in a very similar office building as well. The receptionist paged the interviewer for him and then he was escorted into a small, closet of a meeting room where 2 chairs and a table barely fit. Walking through, Bob noticed the high cube walls, the silence in amongst the desks, and the lack of expressions on the faces of the few people he saw. Over the course of the interview, a lot of questions were asked that discussed fundamentals and text book definitions. There were some questions about Bob's past that were not really acknowledged by the interviewer when an answer was given. When everything was said and done, Bob was escorted back to the entrance and ways were parted.

This story provides an interesting look at how 2 different approaches are taken to a common problem; how does a company attract and hire good developers and how do developers identify good companies to work for. Hopefully, I don't have to say which of the two experiences portrayed above attracted Bob more. The interesting thing that came to my mind while Bob told me this story was not only the differences between the companies but how important the interview process is to both the candidate and the companies. Based on the story, which company appeals to you and why? How was your perception created on each company, which you had no prior knowledge of?

Wednesday, October 13, 2010

My Development Toolbox

Over the years I've carried around my own personal toolbox for development. The contents has changed throughout the years; however, the purpose has remained the same; to provide me with tool, templates, and snippets to allow me to build my web pages quicker, faster, and cheaper.

In this week's post, I'll walk you through what I currently keep in my toolbox from a high level so that you may be able to build your own or add some new tools into one you already have.

General Guidelines

Before we dive too much into the contents, I want to comment on a few guidelines that I try to keep when updating my toolbox. One of the largest guidelines that I attempt to follow is that everything must be free to be reused and redistributed. The reason for this is simple, I hope to applies these items into a variety of my projects and thus am redistributing them. I don't want to worry about paying a licensing fee every time that I want to add this module or use that font. Keeping this open, free, and available to be redistributed makes everything a lot easier.

The second guideline that I follow is to try and keep a copy of the license and author information of everything in your toolbox. This includes deciding on a license that fits your views and opinions for your own works that you add. Keeping a license around will help if someone asks you when you attempt to integrate it into a project. In addition to the licenses is the author's or the source's information. This could be nothing more than a url in my opinion but knowing where you got something and who did it can help you build a network of people and sites to keep an eye on for new stuff they may develop or post.

The third primary guideline that I try to keep is to store your toolbox in the cloud and on a flash drive. Some people argue that with the device syncing powers of tools like Dropbox or Evernote that you don't really need to keep a copy with in arm's reach on a thumb drive; however, I still like the speed of reaching into my bad and tossing someone my thumb drive to get the file(s) in the event I can't interact with the cloud easily or quickly. This is often the case at conferences.

CSS Examples

The first item I currently have in my toolbox is a group of files that provide various CSS examples. These are anything from templates to style a vcard, a CSS reset file, or examples of things that I took more than 2 seconds of effort to truly learn how to do.


This is an area where I'm still getting my feet wet; however, with the ability to embed fonts into your web pages through CSS3, having open and freely-redistributable fonts comes in handy. One good resource for learning some of the legal nuances of embedding fonts, I highly encourage you to check out www.FontEmbedding.com.


Having the right icon for a given scenario or page can cause huge improvements to a page's design. Having the wrong icons can destroy just the same as well. I found myself searching for just the right icons on the web and in various libraries way too much. Now, I keep track of the icons that I have frequently used and will constantly add to them as needed. One item that I've began to track in here too are example favicon.ico files and icons for iPhone shortcuts.


The reason why I have Icons and Images in separates folders in my toolbox is because of their intent. I keep images for background images and stock photos. The stock photos I'll probably branch out as my collection grows. As for the backgrounds, this ranges from simple gradients to watermarks to signify drafts or beta releases.


I use this folder in a similar way to that which I use the CSS section. Here I keep a list of utility scripts (like an Html5 Feature Detection script) as well as snippets on how to use certain jQuery plug ins or do something else through JavaScript


This section of my toolbox is used for a variety of different scenarios. Since my day job is working in the Microsoft .Net space, I have a number of Project and File templates in this directory (since the ones that come out of the box in Visual Studio hurt my head). This is also the place where I keep track of other design and layout templates that I've either made or have found online


My utilities folder is for any reusable, compiled component. This include stuff like a tool for handling database version migrations, database documentation, a random password generator, and abstraction classes that I can quickly plug into my .Net projects without worrying about rewriting the same abstraction layers over and over again.

Web File Examples

This folder I use for references and as a launching pad for creating some files. This folder contains a files that lists the DocTypes that I use the most, an example robots.txt, a sitemap.xml, opensearch.xml, and dublin.rdf. These are files that are missed in a number of templates and having them available makes it easy to add them in.

Personal Information

This isn't so much a folder as just a category of other items you should toss into your toolbox. Some of these items would be check lists that you use to keep yourself on track or to define a process that you have with your workflow, a copy of a personal biography that you may use for a presentation, a vcard of your contact information, a copy of the license(s) you place your own work under, and a copy of your CV or Resume.

That's my current toolbox. Obviously it's web heavy; however, that's where I find myself the most these days and what I enjoy doing. There's so much out there to learn and do and apply to your day jobs, it's nice to be able to have the resources you need and are familiar with at your finger tips.


Wednesday, October 6, 2010

Code Shot - hCard Template

In this Code Shot post, I'll provide a sample template that I've used in the past for marking up and styling address information in the hCard microformat.

Html Template

<div class="vcard">
<a class="fn org url" href="http://randomactsofcoding.blogspot.com">Random Acts of Coding</a>
<div class="adr">
<div class="street-address">123 Any Street</div>
<span class="locality">Some Town</span>
<abbr class="region" title="Missouri">MO</abbr>
<span class="postal-code">12345</span>
<div class="country-name">USA</div>
<div class="tel">
<span class="type">Work</span> <a rel="nofollow" href="tel:1234567890">123-456-7890</a>
<div class="tel">
<span class="type">Mobile</span> <a rel="nofollow" href="tel:0987654321">098-765-4321</a>
<span class="email">name@domain.com</span>

CSS Template for the Html


div.vcard .url


div.vcard .org


div.vcard .fn


div.vcard .adr


div.vcard .adr .street-address


div.vcard .adr .locality


div.vcard .adr .region


div.vcard .adr .postal-code


div.vcard .adr .country-name


div.vcard .tel


div.vcard .tel a

div.vcard .email


Random Acts of Coding
123 Any Street
Some Town MO 12345 USA
Mobile: 098-765-4321

Additional Resources

Thursday, September 30, 2010

Code Shot – Doctypes

First Quick Code Shot…less talk; more code.

Xhtml 1.0 Strict
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Xhtml 1.0 Transitional
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Html 4.01 Strict
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Html 4.01 Transitional
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Html 5
<!DOCTYPE html >
There are others; however, these are the primary ones that I either use or have seen a decent amount in the wild.