Principal Consultant, CodeSherpas Inc.
David Bock is a Principal Consultant at CodeSherpas, a company he founded in 2007. Mr. Bock is also the President of the Northern Virginia Java Users Group, the Editor of O'Reilly's OnJava.com website, and a frequent speaker on technology in venues such as the No Fluff Just Stuff Software Symposiums.
In January 2006, Mr. Bock was honored by being awarded the title of Java Champion by a panel of esteemed leaders in the Java Community in a program sponsored by Sun. There are approximately 100 active Java Champions worldwide.
David has also served on several JCP panels, including the Specification of the Java 6 Platform and the upcoming Java Module System.
In addition to his public speaking and training activities, Mr. Bock actively consults as a software engineer, project manager, and team mentor for commercial and government clients.
Presentations by David Bock
Fun with Java: Playing with IBM's Robocode
Build the best. Destroy the rest. In Robocode, you'll program a robotic battletank in Java for a fight to the finish. The game is designed to help you learn Java, and have fun doing it... from a simple 10-line robot to a very sophisticated, intelligent robot that destroys the competition! While it is all fun and games, it can also everything from introductory Java through advanced principles of framework design, inter-process communication, and more.Maintaining Project Integrity with JDepend, Macker, PMD, Maven, and other open source tools
How many times have you started a new project only to find that several months into it, you have a big ball of code you have to plod through to try to get anything done? How many times have you been the ?new guy? on an established project where it seems like the code grew more like weeds and brambles than a well-tended garden? With a few good structural guidelines and several tools to help analyze the code, we can keep our project from turning into that big ball of mud, and we can salvage a project that is already headed down that path.Command Line Judo for GUI Addicts
Integrated Development Environments are great. My favorite IDE is a command line shell chock full of tools like grep, find, and wc, and a good editor. Seriously though, the ability to slice and dice on the command line can magnify the productivity of any developer, and opens the door on new skills. With power over the command line, your computer becomes a device you can drag race, rather than a device that spends most of its time waiting for keystrokes and mouse clicks.Intermediate Maven
Maven is a build tool that does a lot, demos well, and leaves the build maintainers managing what seems like unbridled complexity. It doesn't have to be that way - Maven is driven by some strong 'build process methodology', and that complexity can become manageable by wrapping your head around it. Furthermore, you can migrate to Maven 'piecemeal', by mapping your existing ant build to the Maven Lifecycle and calling your existing Ant tasks - you can decide to sip the Maven kool-aid.Ideally, a build tool should be so simple and approachable that it fades into the project background and allows anyone to maintain it. Unfortunately, Maven's power comes at the expense of this ideal - Maven's philosophy is more like "the build process is so important that the people maintaining it should be steeped in the ways of Maven". This talk will give you the exposure you need without elevating The Maven Way to a religion.
Software Metrics and the Great Pyramid of Giza
Most software engineers hate metrics... Why? Because we know the work we do is hard to quantify – any measurement of 'software engineering' is like trying to tell how tall someone is by how much they weigh... There may be some correlation, but there is so much deviation as to make the answer practically meaningless. As a result, we often see metrics used to justify improper conclusions. There are plenty of good metrics though, and plenty of ways to use them effectively.The Accidental System Administrator
If you work on a small team, you get the opportunity to take on a lot of different responsibilities. Eventually, you'll have the opportunity to actually deploy the software you wrote. Deploying into a production environment isn't as simple as just 'launching your app' the same way you do in development - you'll want additional things like security, process and performance monitoring, logging, error notification, and other tools that make a production environment, well... production-worthy.Surviving Middle Management
Most good developers eventually have the opportunity to be managers. Whether they call you the "project manager", "Technical Lead", "Lead Developer", or some other classic middle-management title, you become the 'goto' guy between management and developers. You're the guy who is expected to keep the project in-line, track a schedule, and occasionally answer the question "How's it going?", and perhaps still contribute at a technical level. So how do you do that?Internationalization and Localization in Java
Internationalization and Localization in Java is easy, right? Everyone knows you just store your strings in some resource bundles, set the locale, wave your hands a little bit, and your application is good-to-go. Right? Maybe not... Java provides some great utilities to get started, but leaves you needing more when it comes to things like screen layout, cultural sensitivities, semantic differences in translation, use of color and iconography, and other issues.Capistrano: Application Deployment and More
Capistrano (formerly Switchtower) is a tool originally written to help automate application deployment for Ruby on Rails. It does this well, but it has grown up into a tool capable of much, much more. It can be used for deploying Java applications, updating server configurations acrtoss an enterprise, administering netwoeks, backing up files, and all sorts of other activities. Any activity you might do from the command line, you can now do simultaneously across large numbers of machines, with all machines succeeding (or rolling back in case of failure) together.The Zen of Configuration Management
When you read the words "configuration management" in that title, the first thing you thought of was a version control tool like CVS or subversion, right? Version Control is a necessary, but not sufficient piece of a holistic approach to configuration management. Configuration management involves your build process, bug tracking, release planning, version control, continuous integration, and repeatable deployments as well as 'information radiators' that show you the status of all of these pieces.On large development efforts, several people might have this as their full-time job. Most teams don't have those kinds of resources, but that doesn't mean this stuff should be left undone. With a little bit of agility, a little bit of discipline, some open source tools, and a team of developers who care enough to do the Right Thing, good configuration management fades into the background as "just the way we work".
Anatomy of Real-World Rails Deployment
Rails has brought new meaning to speed and simplicity of web-based application development. But for all the talk about developing in rails, there is very little about the issues involved in actually deploying a rails-based website. In this talk we will take a look at various hosting options, server configurations, performance and scalability considerations, deployments with capistrano, and much more.David Bock's Weblog
David Bock's Weblog
Sunday, June 29, 2008
I just spent this weekend speaking at the Agile IT Exchange conference in Reston, VA. This was hosted by the same organization that hosts the No Fluff Just Stuff symposiums, but while those are geared more to developers, Agile IT was geared more towards managers.
I speak 12–15 times a year at NFJS events, and probably the number one comment I hear back from the audience is “I wish my manager could see this stuff”. Well, this weekend, they did. the audience was more than 50% ‘manager-types‘, which was perfect for the material. Everything from a gradual introduction to agile management techniques, through practices for hiring, to an introduction to the kinds of monitoring and maintenance needed after an application deployed as a service is ‘done‘.
The good news is that there will be more of these Agile IT conferences next year – 5 or 6 traveling around the country, much like the NFJS format. If you are a technical manager, whether you were promoted from the ranks of coder or find the inner workings of software a mystery, you will find something among the 5 tracks of management material.
Thi blog entry might sound like a commercial; I hope it doesn‘t… I spent 11 years as a coder and manager in a moderately-sized government contractor, and I have spent the last several years teaching good management practices to hundreds of people. The material at this conference is top shelf – exactly what this audience needs to hear more of.
Friday, May 23, 2008
I'll be speaking at the RubyNation Conference Aug. 1st and 2nd in Northern Virginia, the pleasant suburbs of our Nation's capitol. RubyNation is just one of the many small regional Ruby conferences that have been popping up.
I'll be talking about a number of cool Ruby tools (GServer, StaticMatic, and Sinartra) that are ideal for situations where Rails is too much.
Friday, May 23, 2008
Friday, May 23, 2008
Saw this on slashdot: iPhone line forms at Apple's flagship for absolutely no reason.
The store is open 24 hours a day, so they aren‘t waiting for it to open… There hasn‘t been a new product announced, and the article even says “most people seem confused about what they‘re waiting for, while some believe they‘re actually camping out for a 3G iPhone“.
Can you imagine walking by and seeing a line forming?
passer-by: “What are you guys waiting for?“
Line member 1: “I don‘t know… But I think there is going to be a new iPhone announced at WWDC in a few weeks“.
Line member 2: “I heard Apple was going to be the first to have the new mobile processor from intel and they are doing a speed bump on the Macbook pros…“
Passer-by: “Cool… I think I‘ll wait too!“
Line member 1: “Back of the line is that way, buddy…“
Line member 2: “We are going to be the first to touch Apple‘s new Shiny Thing!”
I‘d love to point and sneer at the nerds, but in a little corner of my soul I‘m jealous. I wish I had the time to do that. I think thats gotta be fun… a real sense of camaraderie in the line, the local news coming by and photographing them, and of course, being the first to touch an iShinyThing!
Funny, I don‘t see a spontaneous line forming anywhere for people to purchase Sprint's iPhone competitor.
