I ended up only being able to go to 2 days of this, but it was worth it. DevTeach seems to be like a halfway point between a code camp and a big conference, in that there was a lot more "user generated content" than you would see at a big conference, but they still had there shit together...except for the hotel - that place was falling apart. Nice hotel, but they messed up so many things...late lunches...a fire alarm in the middle of one of my favorite sessions...etc.
Anyway, here are some notes/overview of a few of the sessions I went to:
I missed the first 40 minutes of this because I was stuck in traffic (I drove up from Seattle that morning.) I am not using monorail on any of my production apps (yet) but do steal code and ideas from monorail, igloo, and Oren's other stuff.
Next week, I am going to spend more time learning how [ARDataBind], [ARFetch], and the JSON Binder work, so I can either steal it or just finally give up and convert one of my applications to monorail (mmm...after this release maybe.) I am so close now as it is, since the application is basically javascript views with [ScriptService] proxies to communicate with presenters.
This was pretty good and prompted a lot of internal questions for me / really got my brain juices flowing. One choice quote I heard from a developer in the back, talking about why it was tough to get (outsourced) operations people to play, "CGI is everywhere in Canada." I hear you brother. CGI isn't bad. It's the whole concept of remoting something that should be in-process that's broken.
Something we can do: for legacy projects, at _least_ get them to build. So far, I have been focusing on trying to convince people to cover their "maintenance" with unit tests, with ho hum success. Maybe getting stuff building is a better approach, especially now that I have CI Factory in the tool belt.
The main problem: installers. Not relishing the idea of helping people make a bunch of Wix scripts to build their installers (for 39 projects my business unit owns.)
Maybe: screw it, just use devenv on the build server to build the install packages?
Maybe: just automated build, smoke test, then manual installer build when you want to move to QA (far less frequently than you check in and cause a build (yeah...actually that's another thing to work on...getting people not to sit on dirty code for weeks at a time!))
Also, one conflict I heard: Check in frequently vs. Don't check in when the build's broke. For my money, having the flight recorder running (code checked in) is more valuable than having code that builds. If the plane can't leave the runway because a tire's blown, let's not ground all the other planes...wait...bad analogy. We're not all in separate planes. If the build is broke, _we_ should just fix that shit. I am not into the blame thing. I was really happy to hear other people voice this opinion as well - who needs the whole dunce cap / buy donuts thing in this day and age. I would much rather see people check in broke code than sit on changes for a week because they don't want to fund a group starbuck's run. But that's just my world. We had a guy sit on changes for 7 months without checking them in. I am being reactionary.
Other important gems:
- Spread the knowledge: For me, this means, make sure everybody knows how to use CI Factory and other tools to make our software, or at least enough to maintain their own stuff. Don't let there be "the build guy" whose vacations cause chaos.
- Maybe we can just use Rails Migrations: Why not? It's easier than change scripts. We're not ruby programmers, you say? Migrations isn't about ruby programming, it's a DSL. Something to chew on. Someone said Ruby people were moving away from migrations, but it wasn't back to change scripts, so migrations would still be an improvement to what we're doing now.
- "Practice Like You Play": Boy is that ever good advice. I think I'm going to be saying that a lot now.
- Use no touch deployment when you can: For me, this is a slight conflict with "Practice Like You Play." As it stands, we need to deliver MSIs for deployment to production. But that doesn't mean we can't do builds+smoke with no touch. The idea that the build/test machines are polluted with a bunch of MSI stuff really sounds good anyway. Most people don't realize all the side effects of installing / uninstalling MSIs and components inside of them. (remember the time someone "accidentally" uninstalled msxml4?)
- Environment Tests: This is a really cool idea...and spawned some interesting on the fly development.
- Fast Build, Slow Build: Need to push this idea before people start writing mad unit tests for legacy code that call stored procs, where I work. Those can go in the slow build, thank you very much. Need to look at modifying CI Factory build scripts for this before CI Factorying more of our projects.
- Build Queues: In latest cc.net. Kind of good to know.
This was kind of preaching to the choir a little bit for me. One thing I learned: MockRepository.Stub<>. Didn't even know that existed. Have to check out later.
I went to this session more to see how other people react, what questions they had, or to hear stories of people using RM. For this the session was very useful to me.
Lunch, Day 1
Lunch was served wayyy late. Rod Paddock, whose blog I read, and whom I've seen around at code camps and stuff (and who lives nearby, too!), was kind enough to let me hang out at his table for lunch. Later, Cathi Gero, Markus Egger, Julie Lerman, Ken Levy, and several other people came. It was cool to listen to these guys talk about what they were doing etc. Lunch was served like 1/2 hour late or something. There were lots of choices: Salmon...and abstract, virtual, throw new NotImplementedException(), vegetarian food, as Ken found out when he tried to opt out of the salmon.
This was a very Open Space style session, with the 5 chairs at the front and all. I wanted to share about "Intern Day" and "Pimp My Code", but by the time I thought of it, there was a lot of other talk. We had trouble staying on course. We only got through a couple of the things we set out to, but it was still pretty neato.
One takeaway: tools that generate reports and stuff are for managers. Manager's jobs are to insulate us from that kind of stuff. And, "everything wrong with a company is management's fault"...coming from a manager! (are they hiring? Yes! Too bad they're in Texas)
Another great session. Somehow, the only note I managed to jot down was that I need to check out the microcontroller stuff in Jeremy's final roll your own cab series (oh, heck, here's the link.) There is a metric crapload of really cool stuff on Jeremy's blog and I have just lost the ability to digest it all with the amount of work I have right now. I am going to have to go back and read a lot of stuff when I have time. Maybe I will take a vacation just to read Jeremy's blog (we have use it or lose it style vacation time, it's December, and I've got about 2 weeks worth of vacation time I lose on Dec 31.)
Left Early
My brain was full and I had gotten up at 2am so I could be late to Oren's first presentation. I did manage to make it back for the taping of .NET Rocks, after checking into the hotel, ditching my bags, and taking a shower.
Somehow, I always imagined those .NET Rocks live shows in kind of a darker, rock show with lighting kind of environment, instead of the bright full lighting in the place we were. Not relevant, but kind of an interesting imagination meets reality lesson (for me anyway.)
Richard told the funniest geek story of all time. It reminded me of the time my buddy Sam and I actually heard our local phone office switch over to a 5ESS switch (we were on the phone at the time) and went down to the phone office the next night to dumpster dive the old 4ESS switch and haul it back to his barn. Richard's story was funnier.
The show was pretty good.