NFJS Day 3: Test Doubles With Mockito
Bright and early I got started with my own presentation today and i thought that I’d retrospect on it a bit and identify areas to improve upon.
For the most part I felt the introduction to Test Doubles and what they are flowed well, however I did speak very very quickly. In the future I’m going to try to slow down a bit (although I did get no complaints about this except from my “wife-to-be” Than).
I did some live code samples of practically every single Mockito feature and felt that this went real well (and was happy to see some “ah ha” faces in the audience over some features) but it also seemed like the live code samples were a minefield of danger waiting to happen (and there were a couple times I kind of forgot what I was going to demo next, although I kept this hidden by talking more about the previous feature).
I’ll be giving the presentation again in Des Moines on the first, so I’m going to make the following improvements going forward:
- include empty test methods from the start that I can just fill in
- Re-arrange the content a bit for better flow
- reduce slide content during the live coding session. I talked about what was on these slides while coding, so the slides just added noise that often times got skipped
- Slow the pace down a bit
Overall I was quite happy at how it turned out and glad that it ran for the full 90 minutes without any rehearsal. Thanks to all who turned in your feedback forms and if you attended the talk and didn’t, please leave me some feedback here!
NFJS Day 3: World Class Builds With Gradle
The second session of the day that I attended after completing my Mockito talk was World Class Builds with Gradle. I debated going as I already use gradle and even gave Michael a bit of advertisement by showing some of the early attendees to my session my gradle build file, however I decided to go… I might learn something new and I could give a fellow OCIer some feedback on his talk.
One aspect I liked of his presentation was he really started by breaking down how tasks work in gradle and the basic building blocks of how they work in the scope of the build file. for the most part, I felt this flowed pretty smoothly with the gradle user guide.
At first I didn’t think show the example of using ant style build in gradle was really a good idea… when I saw it, I thought that this is really just as verbose as ant but just written in groovy instead of xml. But what was good about showing a gradle build using almost nothing but ant tasks was how one could migrate from ant to gradle in the interim and just use the same ant tasks until they “gradlefy it”. And when he did show how easy it is to set a build up with gradle, it was a breath of fresh air.
Overall I felt like it gave a good overview of gradle and how to use it not just for building java apps, but he also gave a good real example of how you might migrate from something like ant to gradle.
How to Succeed With Agile or at Least Be Real Good At It
I put together a quick 5 minute presentation yesterday for the NFJS 300 sessions and thought I’d share it online. I was pretty impressed how it turned out giving that I only spent 10 minutes putting it together and only thought of it half an hour before the 300 sessions.
How To Succeed at Agile on Prezi
The main point I made was that if you want to succeed with agile (or at least do pretty good with it) I’d suggest using no tools as part of your adoption. Most companies scurry to some digital tool that only helps impede communication rather than aid communication. Even though some of the tools might be good and work well (I’ve used a few of them) I think they should be avoided in the early stages so that people can get used to the concept of “card as a placeholder for a conversation” and understand how to use a burn down and burn up chart versus having it generated for them.
I then just closed out the talk by stressing the importance of collaboration and team work. Pretty simple, but I hope effective. ![]()
NFJS Day 2: DSLs in Scala External and Internal
Looking to expand my scala skills, for the second sessions I decided to attend Michael Nygard’s session on Internal and External DSLs in scala. What I really liked was right off the bat how he illustrated a very simple example of internal DSLs in scala for those new to scala and DSLs:
def isComment(s : String) = s.startsWith("#")
which could also be done with no puncutation
def isComment(s : String) = s startsWith "#"
But that was just the simplistic starting point. The real world example that he spent a good chunk of the session tearing apart looked like this:
apache offers "HTTP" on 80 apache offers "HTTPS" on 443 apache contains "mod_cm" needing "CMLDRP"
The above is actually real scala code that can be compiled and ran by scala! The trick is a nifty combination of factory methods, implicit functions, and scala’s ability to have punctuation optional. Combining all of these plus more together yielded a nice, higher level DSL like the one above. He then showed the dsl being used within specs as an example.
Moving on, external DSLs were covered and how to create a grammar parser using the building blocks that scala provides and how to use trait parsers to aid in parsing a grammar. Combinators played a big part in tall of this and creating a tree of combinators. leading from this in depth explaination, he showed how to use Parsers.Parser for parsing the structure.
I really enjoyed the session… I even got some of the examples he showed using combinators working on my laptop. There’s definitely a lot of new scala knowledge for me to digest! ![]()
NFJS Day 2: iBeans
This morning I was very torn about what sessions to go to… Spring 3, Scala Programming, iBeans and Practical Agile Database Development were sessions I had to choose from (I had already seen the session Neal Ford was giving, or something like it). With my recent work and JNB article on Camel, thought I’d give iBeans an investigation.
For the most part, ibeans is pretty much similar with camel with the concepts of channels, destinations, messages, etc… it’s kind of a micro esb. What I liked most was the iBeans for commonly used social media services like twitter, flickr, etc. There were tons of good examples of how to use iBeans within your application to work with multiple services… however I wish there would have been some hands on examples.
Of course, this is to be expected unless the session is explicitly a hands-on workshop, so that wasn’t too big of a deal. The examples provided were quite enough to get me interested and download the core pieces to get started. You can also find lots of community contributions on github.
Like with camel, I think what interests me most is the possibility of connecting channels to a comet based endpoint to send and receive messages to the client side of a web app. Must investigate further. ![]()
NFJS Day 1: Decision Making in Software Teams
To end the day, I attended Decision Making in Software Teams by tlberglund for the sole reason that I’m alway seeking to improve descision making in self led teams. It just started, but with some quotes from Alister Cockburn and Mary Poppendieck (as well as a reference to “Implementing lean Software Development”) I know it’s going to be good.
Tim presented several patterns and anti-patterns that effect decision making as well as how decision making is affected by a wide array of psychological and social norms.For instance, at the individual level just the way you frame an issue to a decision maker has a HUGE impact on how they perceive and act on the information. There were a lot of forces that influence decision making at the individual level that add up when applied to the team level.
The biggest take way for me was that on any team you should encourage conflict. This is something I have always thought makes a healthy team. I’ve often found that teams I’ve been on that aren’t afraid of conflict and confronting conflict seem to best resolve issues and make the best decisions. Teams that do avoid them are often facing all kinds of dysfunctions.
Moving from this, Tim also mentioned that is really important that each member of team feels safe to disagree. If they feel they’ll be punished for disagreeing they’ll always cave in to group think and avoid any perceived conflict that might be cause by disagreeing.
A very interesting idea he proposed when you do have fault lines within a team is to have people on opposite sides of the fault line make the case for the other side’s cause. This is something I’d like to investigate further.
This was the first time I got to see Tim present and thought he did a great job and although a lot of the things he talked about I’ve read or heard at other conferences, there were a few new things I learned about as well.
I think tomorrow I’m going to satisfy my appetite for more technically oriented sessions. iBeans, Scala, and Google App Engine. And remember, if you see me around I’m more than up for pairing in on a code kata.
NFJS Day One: Software Architecture for the Cloud
The second session I noticed “Software Architecture for the Cloud” which I missed when I looked at the schedule, so I decided to drop java encryption for it instead.
The presentation began with an overview of cloud computing… what it is, what it means for you, etc. Nothing to fancy, just kind of fleshed out the concepts behind virtualization and cloud computing. But after that things got interesting as he delved into different patterns to achieve scalability in the cloud.
One pattern he described was the master worker pattern, which I instantly recognized through the work I had done in the past with Hadoop and CouchDB’s map/reduce system and discussed how to apply it with amazon ec2 to dynamically create new workers as needed.
Naturally, moving forward he brought up how to do Map / Reduce using Hadoop and the details of how to using it to computer and process data on many concurrent nodes as well as using horizontal replication across nodes to reduce the load on existing servers… if things start getting sluggish, just add a new server to the cluster.
Next up was a discussion on NoSQL databases and caching servers and he noted that these are an essential component to cloud computing. The four big products to consider are memcached, GigaSpaces, Oracle Coherence, and Terracotta.
This presentation made me realize just how much I missed working with Amazon EC2. I’m tempted to sign up an account tonight and just put some random app out there.
NFJS Day 1: Hands-on Agile Development
So today I decided to drop in on Neal Ford’s Hands-on Agile Development… not so much to learn something new but to be able to get a breath of fresh air of what it’s like on an agile project again. That and I was also interested in checking out the activity he was going to use to help people experience true agile development first hand.
The first part was a quick overview of pair programming and drilling out the fine detail of pair programming consisting of the driver and navigator who constantly swap roles. Also included the fancy slides that show the gains made from pair programming as well as a nice range of modes of pair programming (i.e. when you get into the “flow”, two people thinking and collaborating well, when one is a coach, one is a learner, or even the extremes of “being overwhelmed” and “wasting expert time”).
For the next 40 or so minutes, we paired up and worked on user stories for identifying perfect numbers and other types of numbers. We could pick anything, so I picked jspec and javascript, of course. The problem unfortunately was I wasn’t able to swap out by picking these tools.
The amazing thing though was that first two I paired with were completely inexperienced with javascript but were able to pick up. My first partner I told to just write some pseudo code of what they thought it took to pass the test and all I had to do was replace her usages of int with var. Then she was able to write the next test herself so it was pretty cool.
Unfortunately, the session ended before it could really complete with a retrospective and demos of the code produced, but it was a good exposure for people weren’t experienced with pair programming or TDD (and I am sure the three people who walked away from pairing with me felt that they learned quite a bit more about javascript and jspec).
Final thoughts? I’d like to see the session run with a much longer scale to give time for the other pieces needed for a team to succeed with agile as well as more time to conduct a retrospective for each iteration. I think it was a little ambitious for a 90 minute session that also introduces the practices.
But it was still pretty solid!
Gateway Software Symposium
So this weekend will mark my fifth year attending the Gateway Software Symposium which I’ll be able to mark by also speaking at a conference I’ve admired since the first time I attended it back in 2006. As with previous years, I’ll also try to do some live blogging about the conference to provide some coverage.
Below is a schedule of the sessions I plan on attending.
Friday May 21st- Hands-on Agile Development
- Encryption on the JVM: Boot Camp
- Decision Making in Software Teams
- iBeans: The Simplest Service Integrations You’ve Ever Implemented
- DSLs in Scala: Internal and External
- Migrating to Maven 3.0
- Cloud Computing Boot Camp on the Google App Engine
- Using Test Doubles With Mockito (duh!)
- Enterprise JPA & Spring 3.0 - Tips and Tricks for JEE Persistence
- Code Craft
- Hacking Your Brain for Fun and Profit
There’s lots of good sessions this year (as always) so it’s been hard to make decisions on which sessions I feel I’ll get the most out of. Three fellow OCIers (Michael Easter, Mark Volkmann, and Brian Gilstrap) will also be presenting at the conference, as well as fell St.Lousians Ken Sipe and Dave Klein. I definitely recommend checking their sessions out!
Also, if time allows I’d LOVE to get together with anyone at the conference interested in pair programming with me using jspec on any random code kata.
Upcoming Events
My goal this year was to have at least five public speaking engagements… and the upcoming weeks will see three of them!
- May 23rd Gateway Software Symposium - Test Doubles With Mockito
- June 1st CIJUG - Test Doubles With Mockito
- June 10th St. Louis Java User Group - Google Collections
Whew! After this I’ll only need one more to reach (and begin to exceed) my goal, so if you have a venue where I could hawk presentations on Behavior Driven Development, Apache Camel, Gradle, Google Collections, Mockito, CXF, Agile Retrospectives, or Functional Programming with Javascript please let me know!
- « first
- ‹ previous
- 1
- 2
- 3