Wednesday, September 24, 2008

Colin is risking it I say. How is he risking it you might ask? By asking me to speak to the Memphis .NET User Group!

I think he’s crazy, but whatever.

Randy Walker and I will be traveling to Memphis, TN tomorrow night where I’ll be presenting on PowerShell. Randy is coming out to meet with the founding members of the Northeast Arkansas .NET User Group, which is very cool. Regarding my presentation, it will likely be a similar presentation to what I gave to the FSDNUG group, but I’m hoping to have more script examples. I think I gave the Fort Smith group a good picture of PowerShell, but I don’t think I showed them nearly as many practical uses of PowerShell as I would have liked. I’ve got a folder of scripts now, some that I’ve written for myself and a few that we’re using at work, that I’ll be showing and walking through during the presentation.

If you’re in the area, come on out!

posted on Wednesday, September 24, 2008 12:42:45 PM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Monday, September 08, 2008

Tonight, I presented on PowerShell to the Fort Smith .NET User Group. It was my first presentation/speech since college! Fortunately, it seems to have gone over well and I think I helped drive some interest in PowerShell. Here are my slides and other relevant links for any of those who attended.

PowerShell Homepage and Download

PowerShell Blog

PowerShell Community Extensions

PowerTab

Start-Demo script that I used to automate some of the demos

Many thanks to Chris Green for allowing me to use some of the content from the presentation that he shared at Tech Ed 2007 Australia. Thanks also to Ben Pearce for his great PowerShell cheat sheet. Final thanks to Michael Paladino for helping me with a run-through of my presentation ahead of time.

I've zipped up my PowerPoint presentation along with my demo.txt (to go along with the Start-Demo script), the source for my PipelineDemo program, and my custom ps1xml file. You can get the zip with the presentation contents here. The PowerPoint presentation has a lot of relevant links that I didn't explicitly post here.

I hope everyone enjoyed the talk! I enjoyed giving it!

Let me know if you have any comments on ways that I could improve.

posted on Monday, September 08, 2008 9:27:38 PM (Central Standard Time, UTC-06:00)  #    Comments [3]
 Friday, September 05, 2008

I didn’t expect to add a Speaking category to my blog just yet, but… well, here it is, my premiere Speaking post.

I’ll be presenting on PowerShell to the Fort Smith .NET User Group next Monday. The talk will be an introduction level talk, but I plan on covering quite a bit if time allows. My primary focus (goal) will be on how PowerShell can make us as developers be more productive, whether that is from script automation or just learning to more efficient by using our keyboards more.

If you’re in the area, drop by! You can even heckle me if you want!

I’m planning on posting the slides and examples after the presentation.

posted on Friday, September 05, 2008 3:24:33 PM (Central Standard Time, UTC-06:00)  #    Comments [2]
 Wednesday, August 27, 2008

Eating at Aya Sushi

I told you we had sushi while at DevLink! We're happy in this picture because we all had just had a great dinner :-) (that, and they told us to be goofy for the picture)

Don't expect me to link to MySpace too many times... I think is a first.

Technorati Tags:

posted on Wednesday, August 27, 2008 8:21:18 PM (Central Standard Time, UTC-06:00)  #    Comments [2]

Last weekend, I was fortunate enough to be able to participate in devLink 2008. Randy Walker, Michael Johnson and myself drove down on Thursday morning. This was my second time to attend and John Kellar has done an excellent job once again in putting this conference together. An addition to the conference this year was an Open Spaces format that was held alongside the more traditional, “eyes-front” presentations. Before I get to that, I want to share my experiences regarding the rest of the conference first.

“Eyes-Front”

The opening keynote speaker was a very good speaker. That was the good. The bad was that he was speaking on outsourcing. Let’s just say his relevancy score on my speaker survey was quite low. We’ll move on :-)

Colin Neller did a great job talking about styling and theming Silverlight content. I really appreciated his talk because he primarily used Expression Blend and, being the developer that I am, I am completely inept when it comes to Designer-oriented tools. He told us to expect to see the UI skills of a 3 year old, but you know, his 3 year old skills were better than my skills. Charlie Calvert showed up his talk, so we all spoke with him for a few minutes afterwards.

I also attended a talk by Jim Wooley on LINQ to XML. I had already spent some time with LINQ to XML, so I didn’t see a lot of completely new content, but I’ve got to give Jim props for his demos. It is hard to explain how nice the XML Literals support in VB.NET is until you can actually see it in action.

Joe Stagner presented the closing keynote. He basically talked about the direction that technology is taking, including an increased focus on parallelism (brought on by the advent of many-core over faster processors) as well as the direction that the web is taking. Regarding the web and startups, Joe brought up some points that I originally heard from Giles Bowkett’s presentation at GoRuCo (online, of course) about how the web is making the need for venture capital cease. On the way out the door, a group of us spoke with him a little and he told us that Scott Guthrie had just had his first kid, right in the middle of the release of .NET 3.5 SP1, which explains why he has been silent on his blog. :-) Good for him for taking some time off and congratulations!

I’ll spend the rest of my post talking about the more exciting part of the conference.

On Open Spaces

Being relatively sheltered under my .NET blanket, I hadn’t really been exposed to Open Spaces all that much, except for reading about the ALT.NET conferences in Austin and Seattle. I watched a few of the sessions that were posted online, but I didn’t really get a good feel for what was going on. Having experienced it now, I’m still not sure I can explain what happened, but it was a lot of fun.

The Open Spaces opened with an Opening Circle (open, open, open) where we were introduced to the format and the theme of “Good Enough.” We had a board with time slots and locations and those who were interested in a topic took a post-it note, wrote their topic down, announced their name and topic to the group, and then chose a timeslot. This process continued until the board was full and, after reorganizing or combining sessions, we broke off for lunch.

Open Spaces talks

The first session I attended was a conglomeration of three (or was it four?) topics into one that I’ll just entitle “Good Enough.” Yeah, like the theme. Steve Harman wanted to come at the topic from the idea of motivating people from being just “good enough” towards the goal of continual improvement. We talked about ways of motivating and building passion. I really liked the idea that Leon Gersing brought up where the only wrong answer to any question is “that’s the way we’ve always done it.”

Next, we spoke about Distributed Source Control (DVCS, DSCM, which one do choose?) like git, mercurial and bazaar. I was able to offer a little bit of insight because I’ve used git locally on my machine and offered a very tiny bit of information regarding msysgit, but I quickly got out of my league regarding DVCS knowledge. Unfortunately, most everyone at the talk was attending because they wanted more knowledge, so Michael Eaton pulled Jay Wren in on a conference call because he had been using bazaar successfully. I wouldn’t believe it if I were you, so here is a picture as proof :-)

Conference call with Jay

The next two talks all involved lots of D’s. The first was “What *DD is” and the second was “How ‘Should’ Changed my Life.” If you’ve been following development practices much, you’ll probably have an idea what the *DD is referring to. Basically, the one who posed the question wanted to know the difference between TDD (Test Driven Development), BDD (Behavior Driven Development), DDD (Domain Driven Design), and the rest of the DD’s out there. We spent a lot of time on pushing the benefits of using these practices as design tools, where testing was an additional benefit to simplified design. Regarding ‘Should,’ we spent time talking specifically about the naming side of BDD and how just changing the way you name things can make your development more in line with the business. After hearing Corey Haines talk about his experiences with BDD and Ruby, I think I need to write some Ruby code. I’m sold on the benefits that these practices provide, but it is hard trying to practice them when you’re the one guy on the team who is sold on the practice.

What is *DD?

All in all, the Open Spaces part of devLink was my favorite part of the conference. Alan Stevens organized the Open Spaces side of the conference and, to be completely honest, he did an amazing job. I’m sold on Open Spaces as a conference format now.

Steak and Sushi

Outside of the conference, I enjoyed getting to hang out with a bunch of new and old friends. A group of 7 of us went out on Friday night (after the Rock Band/Guitar Hero III contest) in an attempt to find good sushi. We found it and got our picture posted on MySpace! Saturday night was steak and ice cream, though not at the same time.

This devLink was even better than last year. I’m now following at least 10 to 15 more people on Twitter now. I’m going to have to make this a yearly thing :-)

NOTE - Thanks to Alan for sharing these photos! The rest of his photos are all at http://picasaweb.google.com/DotNetJesus/DevLink2008.

Technorati Tags:
posted on Wednesday, August 27, 2008 6:40:55 AM (Central Standard Time, UTC-06:00)  #    Comments [2]
 Wednesday, August 20, 2008

Last year, I attended DevLink. It was very well done and so, this year, I’m going again!

This time, though, I’m bringing a full contingent from the Northwest Arkansas region. Well, okay… maybe three people total isn’t a contingent. Certainly not enough to warrant getting a bus! However, I am still looking forward to heading to DevLink with Randy Walker and Michael Johnson.

If you’re going, look me up. See you there!

image

posted on Wednesday, August 20, 2008 8:13:32 PM (Central Standard Time, UTC-06:00)  #    Comments [0]
 Tuesday, July 15, 2008

Brian Sullivan tagged me with the latest ongoing meme. I’m really sort of excited because I’ve missed out on all the other memes going around. Jeff Atwood probably wouldn’t even consider me a real geek because of that. (I haven’t updated a Wikipedia page either! Gasp!)

How old were you when you started programming?

I didn’t write my first “Hello World” until I was 18 in COMP 170. I created my first personal website when I was 15 I think, but my primary tools were Netscape Composer and Paint Shop Pro. :-) I think I had figured out by that point some very basic Javascript, but I really had no idea what I was doing.

How did you get started in programming?

I remember when my dad got a new PC with Windows 3.1 on it. Prior to that, I knew how to ‘cd’ between directories and how to run ‘dir’. All of these commands were, of course, to get to the directory where my games were installed. :-) I never really stayed in Windows at the time, because all the games were still DOS-based. I didn’t really have much to do with Windows (except for the Hot Dog theme), until Windows 95 came out. That’s when I started becoming more of a computer enthusiast. I remember troubleshooting Dial Up Networking so that our 14.4 modem would connect up. I also remember buying my first piece of hardware, the 3dfx Voodoo card.

As I mentioned, I started doing some basic web pages when I was in high school. This was the time of animated GIFs and tiled backgrounds, if you’re interested. This was also back when 56K modems first came out and there wasn’t yet a clear standard on how 56K modems would talk (you could either go with US Robotics or the cheap brands) and I worked as tech support at a local ISP. It wasn’t hard to do tech support because I had been troubleshooting my own Dial Up Networking problems for a few years already.

Coming from a tech support role, I didn’t really have any programming knowledge. I knew how to build a computer and I even knew about msconfig, but programming??? Nah… not really. Just WYSIWYG HTML.

When I graduated high school, I either wanted to be a musician or work with computers. Seeing as how I didn’t really want to teach high school band, I decided to go to school to learn about computers. I didn’t really know what Computer Science meant, but hey, my grades were pretty good so why not? So, I chose a major of Computer Science and the rest is history.

What was your first language?

Unlike the rest of the programming populace, my first language was actually not BASIC, but C++. I didn’t actually write a line of BASIC until my junior year of college! I would say that I currently prefer C# over VB.NET, but it has more to do with terseness than it does with braces. For the same reason, I’m a fan of Ruby as well.

What was the first real program that you wrote?

Are you saying Hello World doesn’t count? C’mon!

I’m going to define “real program” in this case as something that I could show my parents. I couldn’t show them “Hello World” or a command line application to create a binary search tree because they couldn’t relate to it. However, I could show them a GUI maze application that I wrote in Java. It had four players (one of which could be human controllable) and then each player raced to get to the exit. I also wrote a Solitaire program in C++, a networking Tic Tac Toe game in C++, and a Paint program in C++ (using the Windows API).

My first team application, like Brian’s, was created in the capstone course at Harding. We wrote a version of Othello that had to be networked with an AI. I wrote the networking code in C#. It even had threading code, which of course was written completely wrong. I’m still not entirely convinced that I can write threading code correctly today. :-)

What languages have you used since you started programming?

In college, I primarily used C++ and C#, but I also had some exposure to some Assembler, Java, VB.NET, Perl, and even LISP! My work experience includes a (thankfully short) period of COBOL and JCL on an IBM mainframe, but primarily has been in VBScript (both classic ASP as well as scripts), Javascript, PowerShell, C++, C#, and VB.NET.

In my personal projects, I’ve used C#, VB.NET, JavaScript, PowerShell, PHP, Python, and Ruby. I’m sure I’ve missed something in there.

What was your first professional programming gig?

I got hired out of college to work at Data-Tronics, Corp. where I still am to this day. My role has changed significantly now, where I’m trying hard to push out 40 years of IT practices with more modern methodologies (down Waterfall, down!) and technologies (down Mainframe, down!).

If you knew what you know now, would you have started programming?

You bet. I’m a geek to the core.

If there was one thing you learned along the way that you would tell new developers, what would it be?

I’d have to agree completely with Brian – get involved in the community. Do not let programming become just the job you perform. Like JP, get passionate about developing. If you don’t enjoy what you do, there isn’t any point in doing it. Start reading blogs and going to user groups. You’ll be overwhelmed at how much you didn’t know, but remember that no one else knows it all either. We’re all learning together.

What's the most fun you've ever had... programming?

I can’t think of any one specific instance, but I think one of the best feelings is, after having spent literally hours trying to debug some problem and then giving up and going home, waking up the next day and having the light bulb come on with the solution to this problem. I love solving problems with software.

Tag, you’re it!

Colin Neller, come on down!
Randy Walker, you too!

I’ve got other tags if anyone else is interested. I might even give some out!

posted on Tuesday, July 15, 2008 11:36:10 AM (Central Standard Time, UTC-06:00)  #    Comments [3]
 Monday, July 14, 2008

Here it is, final day wrap up.

The first session of the day was with Glenn Block and Brian Noyes on Composite WPF (the framework formerly known as Prism). You can think of the Composite WPF1 library as the WPF version of the Composite UI Application Block (CAB), but it really is a lot more than that. Something to note regarding Composite WPF is that they didn’t start with the CAB codebase, but instead began writing their StockTrader reference application and pulled the framework out of their implementation instead of the other way around. The entire framework was written in a TDD manner. Honestly, it really shows, too. I’ve been using the framework on one of my projects at work and it is one of the first examples from Microsoft of a well decoupled (and useful) piece of software that I’ve seen. I’m a huge fan.

The next session was by Dustin Campbell on “Hardcore Reflection.” Of all the sessions I attended, I think this was the one that started at exactly where my knowledge ended and built entirely on what I already knew. In other words, I learned a lot in this session! Dustin covered topics like RuntimeMethodHandlers, reflection-only assembly loading, and DynamicMethods (via IL generation). I had never really looked at anything under System.Reflection.Emit (frankly because it was scary), but it really isn’t all that bad. An interesting note is that DynamicMethods are what the DLR is using for its high performance in languages like IronPython and IronRuby.

After lunch, I stopped and watched a little “Speaker Idol” from the DotNetRocks guys.

 Speaker Idol at Tech Ed

Next, I attended a session with Roy Osherove on Design and Testability. I would sum this talk was on how good code design and architecture allow for unit testing, which assists in maintenance because products spend far more time in maintenance than they do in the initial coding phase. (this is where a lot of the RAD ideas fall down - “Look, I’ve got an application written in a day! Look, I’m spending a week debugging this thing because I can’t find anything!”) If you’re unfamiliar with ideas like Dependency Injection, I would encourage you to check them out. If you have code that relies on external dependencies (shared components, services, other classes, whatever), don’t have your code be in charge of creating it. Instead, pass that dependency (the interface, not the actual implementation) in via the constructor. In doing so, your constructor declares everything that it needs in order to run. It also allows you to override dependencies for testing or plug in fake services so that you can verify UI functionality without hitting databases or whatever. I’m glossing over details, but thinking in terms of breaking dependencies apart will change the way you think about code and, particularly, what abstraction really means.

The final session of the day was by John Lam on IronRuby. I am very excited about the IronRuby project. Ruby as a language intrigues me and being able to use it in the .NET Framework (and thus with projects I’ve already got) is very appealing. Something that was very exciting was getting to see the “world premiere” of IronRuby running on ASP.NET MVC. Note that I didn’t say Rails, but ASP.NET MVC (Rails being the MVC framework on Ruby, while ASP.NET MVC is the… MVC framework on ASP.NET :-)).

All in all, I really enjoyed the conference. Something I didn’t quite expect (having never been to Tech Ed), was that there was very little that I saw that was completely new to me. This is likely a sign that my feed list is far too long, but you can stay relatively current if you will just spend an hour or so a day reading blogs! More and more, I’m beginning to feel that the actual face to face communication is where the real value in conferences comes from. Being able to talk to people who face the same problems you do every day or getting to speak with the people who work on the .NET Framework every day carries a lot more value. Blogs provide plenty of very current and relevant information, but text can communicate only so much. If you’re a developer, there are plenty of other resources outside of expensive conferences like Tech Ed that are available like user groups (hi FSDNUG!) and local conferences (hi DevLink!) that can give you a lot of the value. If you’re not already participating, why not? Get involved2!

1 Composite Application Guidance for WPF? Composite Application Library (CAL)? Why couldn’t we have stuck with Prism, guys?2 I didn’t realize this post would turn into a call to action to get involved, but that’s what stream on consciousness writing does I suppose.

posted on Monday, July 14, 2008 7:20:58 AM (Central Standard Time, UTC-06:00)  #    Comments [0]