Books and Conferences and Blogging, oh my!

Long time, no blog. I’ve been putting all of my writing energy into the book that I’m writing with Bruce Eckel. We’re working on Atomic Scala, a book targeted at a gentle introduction to Scala, for programmers and not-yet-programmers alike. If you like the language, we expect that the book will prepare you for a more comprehensive book.

If you want to experience what we’re working on, Bruce and I will be holding a 4-day workshop, “A Gentle Introduction to Scala” in Crested Butte, CO from July 18-21. We’re limiting attendance to 8 people for now, and holding it in Bruce’s living room.  The goal is to gently introduce the workshop attendees to the language through a series of discussion-y type interactions based on the book and exercises that we’ve developed. We will gain valuable feedback about the book and we hope that the attendees will become comfortable enough with the language that they can decide if they want to pursue its study or not.

We decided to do a social experiment on pricing the Atomic Scala workshop. Inspired by the Humble Bundle folks, we’re letting the attendees decide how much they want to pay. We set a minimum ($75) and show how other open spaces conferences have been priced for comparison sake. Unlike the Humble Bundle folks, we didn’t write any cool code to show how much above or below the average people are paying, or separate it out by platform, and we didn’t throw in any bonuses for paying above average. Frankly, the numbers are just to small for that to be meaningful in this case. But we are looking forward to seeing how people respond to “pay-by-worth”.

Immediately before the Scala workshop, I will be presenting the Scala Koans with Daniel Hinojosa at OSCON, in Portland, OR. I’m really looking forward to the conference. I haven’t been to Portland in quite a while, and I’ve never been to OSCON. The koans will be presented on Monday afternoon. Daniel and I have presented them together several times now, and it’s been an interesting experience each time. The participants really make it fun!

I’m looking forward to my own little Geek Week this summer!

Changes in the Java world

Or at least … at the Java Posse. As of episode #383, changes abound for the Java Posse.

Most of the Java developers I know stay up to date on JVM languages and the latest in the industry by listening to the Java Posse. This week’s newscast highlights 2 significant changes: Dick Wall has moved on from his day job at Locus Development to take on Scala consulting fulltime. This continues the strong message about the adoption of Scala in our industry. Secondly, Joe Nuxoll has decided to leave the Java Posse. He was the latest addition to the Posse, and is now the first one out.

Habitual listeners of the Posse know that Joe has moved away from software development and is focused on User Experience. His contribution to the podcast has been significant, in my opinion. His sense of humor, his business-related contributions, and his insight have benefitted me greatly. I missed him at the Roundup this year, and I will miss him on the podcast. Joe sort of invoked the “Law of Two Feet” concept of open spaces conferences toward leaving the podcast. He didn’t feel engaged in Java news, and he’s decided that’s not where his passion is. While I’ve felt that his participation was valuable, I totally understand his departure.

In any case, I wish Dick well in his new job … and I hope that Joe does return for the holiday specials (as he has promised) and perhaps for the Roundup.  Or, at least for CodeMash!

Functional Programming and Scala Koans: upcoming talks

On Saturday, May 5, 2012, I will be presenting “Functional Programming for the Masses” at the Great Lakes Functional Programming Conference. This one-day event is developer organized and will be held at Washtenaw Community College. You can register at http://glfpc.eventbrite.com/. Tickets have been selling quickly for the event. Here’s an abstract for my talk:

Have you heard about functional programming but aren’t sure what should be your next step toward adoption? Are you looking for ways to introduce functional programming without scaring your coworkers and your boss? How can you convince others than the paradigm shift is worthwhile? That it will provide business value while making the programmers and customers happy?

You will come out of this talk with the techniques to bring functional programming to your organization with minimal stress. Whether you use Java, C#, or are gunning for Scala, this talk is for you. We’ll show examples of how to weave in functional, starting with how to talk about functional and ending with real code examples, showing that functional programming can be … well … functional.

The Scala Koans in Detroit will be rescheduled for a later date, through Detroit Dev Days. On Thursday, May 31, I will be delivering the Scala Koans with Bruce Eckel in Detroit, at the Madison Building. Organized by Detroit Dev Days, this will be the first full day Scala koans event ever. Join us. More information and registration available at eventbrite. Lunch will be provided.

On Monday, July 16, I will again be delivering the Scala Koans with Daniel Hinojosa in Portland, OR, at OSCON. Monday is the Tutorials Day, and requires a separate registration. You can get more information about our session here and register for the conference here. Daniel and I have teamed up several times in the past (both at CodeMash and StrangeLoop) to deliver the koans, and we have given them individually as well. The koans continue to grow, and we think it’s a great way to learn!

Presenting the Scala Koans with Bruce Eckel in Detroit

I was thrilled when David McKinnon of the Detroit Java User Group invited me to present the Scala Koans in Detroit on May 31. The timing worked out perfectly for Bruce Eckel to be in town, so I asked him to join me. Bruce and I are working on an introductory Scala book together, and the Koans are a great way to learn Scala as well. The koans are self-paced exercises. You can do them from home, but in our experience in presenting them at StrangeLoop, CodeMash, and 1DevDay, the group atmosphere offers an additional facet for learning. Other participants ask questions and contribute ideas, providing a unique experience at each event.

Join us on the 5th floor of the newly renovated Madison Building, 1555 Broadway, in Detroit on May 31 from 9 am – 4 pm (lunch provided).

You can register at http://detroitscala.eventbrite.com/. Early bird pricing is in effect until April 30 and regular registration runs through May 25. Hope to see you there!

 

Day 4 at the Java Posse Roundup: Wrapping it up for 2012

On the final day of the Roundup for 2012, Gunnar Hillert, who organizes DevNexus in Atlanta, suggested that he and I convene a session on Organizing your own Conference. Since I had previously done such a session in March 2008 with Stephan Janssen (of DevOxx): Java Posse Podcast #197, I was initially reluctant. But open spaces is about seeing what will happen, and there were others to learn from. In addition, I’ve learned a lot since then with Codemash. We decided to go for it.

The two conferences couldn’t be more different, in spite of the fact that they are both developer-organized. CodeMash attracts a diverse group of developers, intent on learning other technologies in order to improve what they do with their own. DevNexus focuses mainly on Java developers. CodeMash is in the sleepy town of Sandusky, OH, meaning that pretty much everyone has to drive (or fly) to get there. DevNexus is in the heart of downtown Atlanta, which draws an audience from the metropolitan area.

We talked a lot about what it takes to organize a conference. I think that the real key is that there is someone who is willing to put his or her neck out without knowing whether or not it will be a success. Signing a catering or rental agreement with a venue is a scary thing and I’ll be forever grateful to Jim Holmes for taking on this risk for CodeMash.

Other user-organized conferences that people might be interested in checking out:

That Conference

Strange Loop

PyCon

Stir Trek

After the Organizing your own Conference session, I joined Andrew Harmel Law in a discussion on Variations in Pair Programming. He had originally intended it to be a lightning talk, but 5 minutes is really short! When he told me a little about the rules his company had come up with around Pair Programming, I immediately challenged one of his tenets: that pair programming should be 2 people, 1 keyboard, 1 mouse. We’ve been effectively programming with 2 people, 2 keyboards, 2 mice, 2 monitors, facing each other rather than sitting next to one another, for a few years now. He was intrigued by the variation, and we convened a session to see what others thought.

Like both of our companies, many of the participants said that they do not pair program 100% of the time.  The developers decide when and where to pair program. Our programmers have wide latitude around self-organization. Some teams have a dedicated “pairing computer” in addition to their own laptops. Andrew was thinking that he might take that back to his company as well. I’ll be intrigued to see if he does. And I can’t wait to expose our team to Andrew’s Tarot Cards of Pair Programming.

Others expressed concerns about teams of various skill levels in pair programming. Mainly these concerns seem to have come from people who were thinking about pairing, rather than those who were actively doing it. Those who actively pair program see it as a way to bring a new team member up to speed on a project quickly, and also as a way to take advantage of the individual strengths of team members to build a better overall solution. It was a fun session, and it should be interesting listening once it becomes available on the podcast.

The last session of the conference was a wrap-up session where we all talked about what we got out of the conference and what improvements can be made. This is the 6th Java Posse Roundup and it became obvious to many of the old-timers that the newbies are becoming integrated into the group more quickly. Apparently, they just have more mentors. It was also interesting to learn that at least 2 of the attendees this year had never heard of the podcast but decided to come to the conference anyhow.

On Friday night, many people head home. Those of us who have attended in previous years tend to stay until Saturday, because flights on Friday often mean missing the last session. This has led to a variety of experiments around Friday night activities. For the past several years, a group has gone up to Mount Crested Butte to a very nice (star-rated) restaurant called (appropriately for this crowd) Djangos (Geek humor alert: There’s a python web framework called Django). They have small plates and wonderful wine. The groups have tended to order “One of Everything” which is a great way to try their wonderful food. But we also found out that we could rent a yurt, accessible only via nordic skis or snowshoes. We didn’t have time to organize it last year, but this year, a group expressed interest and we were able to organize catering at the yurt for a group of about 25 people (20 others went to Djangos). This was a fabulous experience, in spite of the bad trail conditions. We hiked out to the yurt, and had a wonderful meal catered out there, complete with tiramisu for dessert. It was so much fun that it seems likely to continue in subsequent years.

People filtered out of town throughout the day on Saturday. About 30-40 people showed up for a departing breakfast. Barry Hawkins organized it and cooked up endless amounts of eggs while many others chipped in to help, such as cooking bacon on the grill, and making biscuits and gravy. It was a great way to use up the food that people had bought for their week in town, and way more fun and interactive than the smaller group that a restaurant could accommodate.

So now the Java Posse Roundup 2012 has come to a close, but the git repository remains and the projects that were started will continue to be developed. Even more significantly, the knowledge and energy that everyone took away from the conference will spread throughout our companies over the next several months until it’s time for the Java Posse Roundup 2013. I’m planning to be there, of course.

Days 2 and 3 at the Java Posse Roundup

Some people ask me why I go back to the Java Posse Roundup each year. After 3 days of Open Spaces sessions at the Java Posse Roundup (and a day of hacking), I have to say it only gets better and better each year. A few years ago, we added an additional session at Rumors, a coffeeshop/bookstore (yes, those do still exist) in Crested Butte. The intent was to give people an additional place to go as the conference grew, and the first year, we tried to record those sessions too. The traffic and espresso machine at a coffeeshop, however, don’t make for a good recording so we changed the location to target “off the record” talks. This has been an amazing addition to the conference, giving people the opportunity to speak freely without concern that their coworkers, bosses, customers, or friends might later hear what they said.

I’ve attended several sessions there, including one on Mindfulness in Programming. This particular session was held at the off-the-record location not because it was private or wouldn’t have made a good podcast, but rather because all of the other rooms were in use.

Mindfulness is “a state of active, open attention on the present”, according to Psychology Today. I was first introduced to mindfulness when I took a meditation class, and I was interested to hear what people would think about mindfulness as it applies to programming. I interpret that to deep focus on the technical task, avoiding the temptation to be distracted by other things that compete for your attention, without a longing for a speedier conclusion to the activity or annoyance that you’re doing it at all. We talked a lot about how to achieve that, as well as many related topics, such as meditation, distraction, and techniques for becoming more aware of the present task.

After the mindfulness discussion was one that was a continuation of a work/life balance discussion that had been held the day before, but it didn’t really go in that direction at all, and instead was more of a continuation of the mindfulness topic.  This made me happy, and was fine with the convener of the session. Women business owners get embroiled in these discussions often, and I would have used the Law of Two Feet if it had been the same old tired discussion.

Other discussions that I attended on Days 2 and 3 were decidedly less “fluffy”. I attended the discussion Modern Web Apps, which had us talking a lot about the amped up user experience requirements for modern web apps. People expect that these apps will seamlessly manage flaky internet connections and offline mode. They want consistent, client-agnostic capabilities across a variety of devices, yet also expect that the unique features of a particular device will offer richness unique to that device. We also discussed the movement of web apps toward Javascript and complexities involved with that. Ember got a lot of attention, and a hacking session was scheduled for the afternoon.

The Play2 asset compiler got some love, as it runs Javascript through a compiler for validation. GWT is still appreciated with its capabilities to develop in Java and generate javascript. Dart, which makes Javascript static, was discussed as an emerging solution to the problem, but drew groans from many in the group. IntelliJ tools were cited as hugely beneficial to Javascript developers, and enforcing “strict” mode was strongly encouraged. The book “JavaScript: the Good Parts” was recommended by several people.

Much different than the Day 1 session on Productivity Tools for Programmers was a discussion on Tools for Running a Business so that you can Write More Code. Yes, I convened that session. I’m always intrigued by what others do toward this. The key message that came out of the discussion was that, much like choosing a “stack” for software, when you choose business tools, you’re often choosing a stack for that as well. For example, QuickBooks Online integrates with Harvest (for time tracking) and Expensify (for expenses). Kashoo and Freshbooks were used by one attendee who wrote some software to integrate other tools, such as eFax. I didn’t realize that you could invoice through Zoho, but apparently you can, and it’s particularly good at invoicing in blocks of time and keeping track of when those blocks are exhausted. The Ruby Freelancers podcast was noted as a good resource for learning about business tools for small businesses. Streak, as an add-on to gmail and google apps, was noted as decent Customer Relationship Management (CRM) solution. Desk.com is a help desk solution that some folks use. It integrates with Salesforce, but it sounds like you can use it without Salesforce as well.

As always, I learned a lot from several of the longtime attendees of the Roundup. Many of them have run successful companies for a long time, and it’s great to hear their perspective. Some attendees noted that this year we had a lot of sessions around effectively starting or running a business. This marks an interesting change in the nature of the Java Posse Roundup. A variety of technical sessions were convened and nearly everyone participated in the hacking session, which tells me that the crowd was decidedly technical, yet the number of non-technical sessions indicates that many of the attendees have aspirations toward running their own businesses as well.

The third session of the 3rd day was on Building Effective Teams. We decided that effective teams:

  • set expectations of success
  • self-organize
  • encourage participation
  • interact and communicate

Many techniques were described. They varied from general, such as engaging the team members cross functionally and how to deal with asocial scientists, to very specific, such as how to integrate the Quality Assurance team with the Software Developers. Discussion also included how important it is to have quick success, for both customers and for developers. Some people might be surprised to learn this, but there was universal agreement that software developers are most happy when they deliver software to real customers and it makes its way into the field. Distributed teams face challenges; some of those can be overcome by effective communication, but nothing is better than an in-person get together a few times a year. One interesting discussion was around competition in teams. Some participants described how it can be used effectively in an organization, but only when it’s a non-threatening competition between teams rather than internally in one team.

On the afternoons, we continued to break into small groups who worked on projects. I was hoping to work on getting the Scala Koans online in the same way that the Ruby Koans are. This would remove some of the barriers to trying Scala, in that people wouldn’t have to install Scala, and build and test frameworks in order to get started. A small group formed at one of the houses, and we worked with Play and a library from Twitter to get things started. We still have a lot of work to do, but it was a great collaborative start!

On Wednesday evening, we got together for more lightning talks. They never disappoint. It’s amazing to see the wide variety of interests. The highlight of the evening was Eirik’s talk, projected onto a red washcloth, where he was able to do a presentation within a presentation, and change slides by flinging the washcloth. This is a do-not-miss lightning talk!

We started a tradition on Thursday nights a few years ago.  Before getting together for a live podcast, we hold a progressive dinner, traveling from one house to another for a “course”. This year, 9 groups of people in houses hosted a “stop” on the progressive dinner, and the final location was at the conference location, where we had dessert supplied by those who hadn’t hosted earlier … and then recorded a live version of the Java Posse podcast.

The progressive dinner is an interesting addition to the Java Posse Roundup. The first year was super fun, but only included a handful of houses. The second year, we feared that we had too many people, and tried to over-engineer it in an attempt to reduce traffic all at the same time (see progressive dinner on Wikipedia for overplanning). We quickly realized that the progression from one house to the next was part of the experience. Last year, we went back to the mass movement from one house to another. We publish a schedule, including a start time, and this year, we had about 20 minutes at each house. Those hosting often skip a house or two before theirs to make sure that their house was ready for 50-60 people to show up. It’s fun and crazy and the walk between houses is a walking geek-fest with non-stop talking. It’s become one of my favorite social events at the Roundup.

Stay tuned for Day 4 … and the wrapup of Java Posse Roundup 2012.

Day 1 at the Java Posse Roundup 2012

I’m in Crested Butte, Colorado, for the Java Posse Roundup 2012. This is my 6th Java Posse Roundup, which means both that I have perfect attendance and that my husband is extremely tolerant of my travel.

The Roundup is a 4-day open spaces experience, dedicated to exploring technologies and open discussion. The mornings are set aside for discussion. Broken into 3 1-hour sessions, with 30 minute breaks in between, these are highly interactive sessions around a variety of topics that the attendees themselves identify and propose.

On Day 1, we held an intro session followed by 3 discussions.

For the first discussion of the day, I chose Tools that Make you Productive. Some tools that I thought were interesting included:

CamScanner – turns your Android or iPhone into a portable scanning device. Most notably, people are using it for high contrast whiteboard images.

Evernote – I already use this for notetaking on the web and mobile devices, but I learned  about its browser extension (click to copy) and that you can take notes by voice on the mobile version.

Livescribe smartpens – allow you to record what you write and hear for later playback. Uses special pens and paper.

There were many suggestions for todo list management, including Asana, Workflowy, AnyDo, and Do It (Tomorrow).

Desk.com was described as effective for help desk management (integrates with Salesforce!), and Trello and AgileZen were both discussed for agile software project management boards.

Boomerang, a gmail/google apps plugin, was highly regarded for email management and scheduling.

The Pomodoro technique was described (and has high participation in this group), and there was a strong emphasis on providing a distraction free environment with a comfortably large monitor and good keyboard/mouse/trackpad.  Communication between team members (and customers) is essential and tools such as IRC, Yammer, HipChat, and Campfire promote communication with off-site staff. Google Talk (particularly with the “go to voice” option) is also highly regarded.

For the last session of the day, I attended a discussion on Continuous Deployment. We contrasted the term with continuous delivery, where you build artifacts and deliver to point where it could be deployed. It is critical that there are no special (different) steps for production. We discussed the challenges around achieving that, both technology and people, and delved into metrics that can be monitored to determine success.

Unlike the first discussion, only a few tools were mentioned (Splunk and AppDynamics) while much of the emphasis was on the process of getting to the point where tools would be meaningful.

Core to the discussion was a mindshift of a release as a big (and scary) event, but rather a regular occurrence of a small bit of functionality rolled out to customers. Spreading out features over time reduces risk and provides value to customers.

Following these sessions, I went to an “off-the-record” session around team dynamics. The off-the-record sessions are held offsite, and are not recorded. This enables attendees to be frank in their discussions without concern about who might hear the podcast. I have personally benefitted from these sessions every year, and their inclusion  is one of the many advantages that in-person attendees have over those who stay at home and listen to the podcasts.

Another advantage, of course, is the hallway conversation. While open spaces conferences are organized to make hallway conversations accessible to all, I find that we’re all in non-stop communication mode, and the ample minute breaks between sessions encourage this. Various discussions from work-life balance to pair programming to languages all happened in these “breaks”.  We also talked while at lunch, while out snowshoeing, and while at dinner. Others did some more hacking.

In the evening, we all got together for lightning talks (recorded and will be released on YouTube). For some reason (maybe we didn’t post the list fast enough), the list for lightning talks was only half-full when we arrived. Several of us kicked it into high gear and developed lightning talks on the spot, and soon the schedule was full.

I spoke about Raising Geeks, with the key message that we should all buy “cool toys”. My favorites are Snap Circuits Jr (and I saw a bunch of parents in the audience nodding in agreement) and LEGO WeDo. I had been talking about the WeDo to a few other parents at the conference, and they suggested I do a lighting talk, because its availability is not widely known. Kids can build things (like an alligator) with LEGOs and sensors, and then “program them” with a LabView-like visual interface. It’s sold through the LEGO Education division, and it’s been a huge hit at my house.

There were many other lightning talks on a variety of topics, some software related and some not. They’re always enjoyable to watch!

Many of the Java Posse attendees share houses in town and discussion doesn’t really stop when the sessions end. Every year, I go home from this week both energized from the ideas that arise and exhausted from the interaction.

Stay tuned for a summary of Day 2 …

Hacking Day at the Java Posse Roundup 2012

When people first ask about the Java Posse Roundup, they see that we often ski during the afternoon break and sometimes ask if it’s a “real” conference. It absolutely is; this is one of the most engaging conferences that I have intended, with non-stop attendee togetherness from about 8 am til 11 pm most days.  When we do ski, we often ski in groups and the geek culture means that the discussions continue. If you follow along with this series of blogs (and later listen to the podcasts of recorded sessions), I think that you will agree that this is indeed a “serious” conference.

Day 0 is set aside for hacking. It’s a full day and has a different flavor from the Open Spaces discussions that we have on the other 4 days. During the hacking day, we concentrate on learning something new, most often in a group. I wasn’t really sure what I wanted to do this year, until I heard that James Ward was going to do a session on Play 2, the emerging web framework on the Java platform. We spent the morning with Play + Java + eBean, and finished by deploying to Heroku. We spent the afternoon with Play + Scala + Coffeescript, then meandered into Anorm and eventually Squeryl. The end result of our efforts is accessible here:

Java: https://github.com/JavaPosseRoundup/foobar

Scala: https://github.com/JavaPosseRoundup/day0playscala

Other teams worked on other projects and we finished off the day with 9 pm lightning talks to “show and tell”. A lot of work was accomplished, including:

  • a graph database solution to scheduling carpools
  • a quantum state machine in Groovy
  • a video player for conference talks, allowing the viewer to move the presenter video around on the screen.
  • a distraction-free Android editor
  • a DSL for describing Jenkins jobs

The source code for the Roundup is publicly available at https://github.com/JavaPosseRoundup.

Ann Arbor .NET group: Kinect with your Computer

Ben Barefield will present “Be the input — Kinect with your Computer” on Wednesday, March 14 at the Ann Arbor .NET Developer Group meeting. The meeting is free and open to the public. Pizza will be provided (please donate to help cover the cost for the food). The meeting starts at 6 pm, and is held at SRT Solutions, 206 S. Fifth Ave., Suite 200, Ann Arbor, MI 48104. The building is at the corner of Fifth Ave and Washington, entrance is from Fifth. Take the elevator (or the stairs) to the 2nd floor.

Agile Groupies at SRT (next week)

Once upon a time (last week), the Agile Groupies thought that they were going to be able to do 2 meetings in 2 weeks, both at SRT’s offices. One meeting would be held on Tuesday, March 13 and the second would be held on Tuesday, March 20.

Unfortunately, the speaker for this week had to postpone his talk (I’m sure it will be re-scheduled) but you can still meet with the Agile Groupies this month. Next Tuesday, Lyudmila Mishra and Anil Varre will be talking about Continuous Delivery. Join the Agile Groupies at 6 pm for dinner (pitch in for food). The meeting will be held at SRT Solutions, 206 S. Fifth Ave., Suite 200, Ann Arbor, MI 48104.

SRT Solutions is located at the corner of Fifth Avenue and Washington in downtown Ann Arbor, and access is from Fifth. Take the elevator (or the stairs) to the 2nd floor.  The closest parking structure is at Fourth and William garage, convenient if you can’t find street parking.