Category Archives: Technology

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.

Dear world, we’ve got something going on out here (CodeMash)

CodeMash 2012 has sold out. In 24 minutes. Last year, we sold 900 seats in 3.5 days. The year before, we sold 700 seats in 32 days. But this year …. 1200 seats in 24 minutes.

CodeMash is a volunteer, developer-organized conference held in Sandusky, Ohio, in January. Yes, I said January. We bring folks from all over to the snow belt in January to learn new programming languages, new software development techniques, and have a really good time. This year, we’ll have 108 unique technical sessions, as well as a day filled with tutorials. And because it’s not enough to fill the days with geekery, we have evening events, like a game room. And out of the ordinary talks at CodeMash After Dark. We even have things for geek children (KidzMash) and for spouses who come to manage the geek children (CodeMash Families). We have a water park party and a band and a jam session. If you don’t like the sessions (that the organizers chose from over 700 submissions), we have Open Spaces, where you can convene your own session on a topic of your choice, or join in on one that someone else created.

Did I mention it’s in Ohio? In January? And that we wear shorts and flip flops in the Kalahari Resort/Indoor Water Park where it’s balmy inside and we can watch the snow pile up outside?

Did I mention the amazing speakers? Internationally known speakers and authors like Andrew Glover and Scott Hanselman and Bruce Eckel. And Jon Skeet, coming over the pond from London. Carl Quinn (of the Java Posse and Netflix). Bill Pugh (father of FindBugs). Cool emerging topics like Clojure and ClojureScript. Node.js and Backbone.js. And so much more.

Continental breakfast? Pshaw. If you’re coming to Ohio in the middle of winter, we thought we should feed you. There are eggs. And fruit. And bacon. Yes, bacon. This year, we even have a bacon sponsor. Yes, really.

So if you wondered why eventbrite and twitter were abuzz this morning between 10:24* and 10:48, it was because 1200 software developers were registering for a conference in January. In Ohio. And we’ll be contemplating how the heck to handle registration in 2013.

*Why 10:24, you ask? Well, today IS October 24, of course. And if you want to know why we chose 10:24, you can read the President of CodeMash, Jim Holmes’ blog, where you will learn that “in 1901 Anna Edson Taylor was the first person to survive going over Niagara Falls in a barrel”. And we did want to commemorate her accomplishment. Didn’t I mention the geek part?

Ada Lovelace Day: Looking back, looking forward

Today, October 7, is Ada Lovelace Day. Ada Lovelace is credited with being the first computer programmer. Her work in 1842 describing Charles Babbage’s analytical engine was not code in the same way that we see it today, but her insight was amazing.

During World War II, the ENIAC served as the first digital computer and was programmed by a group of 6 women at the University of Pennsylvania, replacing some 80 women who had been hand-calculating ballistics trajectories via some complex differential equations. Their programming task was quite complex, without the benefit of programming manuals, computer languages, or Google.

Many other women have excelled in software since then. So why has this become a man’s game? When I graduated with a degree in Computer Science in 1986, 36% of degrees in CS were earned by women. The 2009-2010 Taulbee survey showed 13.4% women, an increase over the previous 2 years, but still surprisingly low.

As a women in Computer Science, I’m often asked why there is little interest in Computer Science for women. I have no idea. I enjoy the profession I have chosen, and so I have no insight into why other women have assessed things differently. So, instead of guessing, I’ll use Ada Lovelace Day to say what I love about the software industry.

  • Customers — I love learning about what other people do for a living. Writing software to solve someone else’s problem gives me insight into what they do for a living and this keeps things interesting
  • New languages — New computer languages (like Scala) take on an increasing amount of the boilerplate work. This helps me to focus on solving the customers’ problems elegantly rather than spending a lot of time doing stuff I’ve done a million times before.
  • Other programmers — the software community is one of the most generous communities I know. Some developers like to talk about what they do and like to share that knowledge with others at conferences and user group meetings. Some developers like to donate their time to building projects for charities at events such as the Ann Arbor Give Camp. Other developers like to build software that others can collaborate on and learn from, as well as use in the form of Open Source.
  • Conferences — the software community seems to have the best conferences. Conferences are often low cost (like CodeMash and Strange Loop) and offer great training on applicable technologies. We hold them in fun places like in ski areas and indoor water parks and cruise ships. Socializing while learning is the geek form of networking, and we do it well.
  • Flexibility. We can work anywhere, and often do. With a cell phone and a laptop with an internet connection, it’s easy to set up an office.
  • Low capital expense, The cost of starting a business is low and this leads to innovation, particularly by young people.
  • Fast-paced. The industry has moved significantly in the 25 years since I started working as a professional software developer. Continual learning keeps my interest.
  • Ubiquitous. Software is a large part of all of our lives. I’m thrilled to play a part in that.

I have an 8 year old daughter. I don’t know what profession she will choose. I just hope she’s as happy with her choice as I continue to be.

Scala koans in Ann Arbor on October 5 (full day workshop)

SRT Solutions will be presenting the Scala Koans in a full-day workshop on Wednesday, October 5, from 9 am – 4:30 pm. The Scala Koans provide an interactive and fun way to learn the language.

Koans, as referenced in wikipedia, “may consist of a perplexing element or a concise but critical word or phrase (話頭 huàtóu) extracted from the story”. This is the case with the Scala koans as well. Students of the koans use a simple test-driven process to insert missing information from an exercise to make a test pass, before moving onto the next exercise. The cumulative knowledge from working on each koan builds to provide an in-depth understanding of a particular language feature that can later be applied in the context of solving a software problem.

The Scala Koans were conceived at CodeMash 2010 and have been growing ever since. The Scala Koans have previously been presented as half-day workshops at CodeMash, the Java Posse Roundup, and Strange Loop. Koans are available in many other languages, such as Ruby, Javascript, and Clojure.

Cost for the full day Scala Koans workshop is $100 (early bird, until 9/30) or $125 (10/1-10/4). Lunch and snacks will be provided.

The workshop will be held at SPARK Central, 330 E. Liberty, Lower Level, Ann Arbor, MI 48104. For more information or to register, go to http://srtscalakoans.eventbrite.com/. Please call Lisa Zuber at SRT Solutions (734-929-3211) if you have any problems or questions with respect to registration.

Greetings from the Strange Loop Conference in St. Louis

Strange Loop is a conference held in St. Louis, MO, started by Alex Miller. Much like CodeMash, Strange Loop is a developer-organized conference, and is offered at a price (around $250 for 2 days) that attracts those who self-pay and those who work for small companies. I’ve found that the self-motivated individuals are engaged attendees! I decided last winter that I wanted to branch out to attend other regional conferences beyond CodeMash and Strange Loop was top on my list. I was thrilled when Alex asked me to present the Scala Koans at Strange Loop as a 3-hour workshop on Sunday.

The koans approach to learning computer languages offers small exercises, in a test-driven manner, so that people can learn a language by through small steps and self-discovery. Offering a koans workshop is an effective way to encourage people to work on the exercises, since they can ask questions and stay engaged. Particularly while the koans are being developed, any gaps in our “lessons” can be addressed by the instructors, on site. Strange Loop targets 30-40 attendees for workshops, so I asked Joel Neely and Daniel Hinojosa, both who have experience with the koans, to co-present at Strange Loop. This offered a 10:1 student to instructor ratio, which ensured that people were able to make good progress in the 3 hours. (Having 3 presenters also allowed one of us to slip out and order some pizzas for our hungry students, since our session ran 11:30-2:30 and hungry brains don’t focus well! And no, we didn’t plan to order pizza ahead of time!). Our session was well-attended and we got some great feedback. Hallway rumblings and tweets seem to indicate it was well-received. For those who are interested in learning more about the koans, I’m in the process of bringing up a website to provide resources, code, and other hints at ScalaKoans.org. It’s not live yet, so I’ll let you know when it’s up (expecting in the next week or so, depending on how much time I can find to get the content there). In the meantime, you can access the student exercises at our bitbucket site.

Back to Strange Loop. The workshop day was an optional day. The first full day of the conference was on Monday. I attended some interesting sessions, including:

I also attended a purely fun session, “Learn to play Go” by Rich Hickey, creator of Clojure. Finally, I may be able to figure out what to do with the Go board that’s been sitting in my basement for a very long time! I was able to play a game with another newbie and we were very evenly matched!

The Scala talks were interesting. I tend to focus on the simplicity of Scala, as a better language than Java for the JVM. These talks were focused on getting the most out of the functional aspects of Scala. As the industry sees momentum toward using functional for what it does best, this will be very relevant. Strange Loop, in general, has a fairly functional bent to it, and that’s quite fun!

I’ll fill in about day 2 of Strange Loop later. But there are more talks to attend!

Lotsa mobile this week in Ann Arbor

The Ann Arbor Computer Society holds its September meeting on Wednesday, September 7. Ann Marie Manzitti will be presenting, “2D Gaming on Android – An introduction to libgdx”. The meeting will be held at SRT Solutions, 206 S. Fifth Avenue, Suite 200 in downtown Ann Arbor (at the corner of Fifth Ave and Washington). It starts at 6 pm, and is free and open to the public.

If iPad development is more your thing, go to the Thursday September 8 meeting of the Ann Arbor CocoaHeads, where Chris Adamson will speak on CoreMIDI. CoreMIDI implements the MIDI signaling protocol for virtual and physical musical instruments, and integrates with Core Audio. See what happens when we connect a Rock Band 3 keyboard, a MIDI cable, and an iPad with the Camera Connection Kit. The meeting will be held at SRT Solutions (see address above). Free pizza (compliments of Arbor Moon Software) at 6:30, with the main meeting starting at 7.

SRT Solutions named to Inc 5000 List of Fastest Growing Companies

SRT Solutions, is thrilled to be named to the Inc. 5000 list of America’s fastest growing companies in 2011. To top it off, we were the top ranked software company in Michigan (at position 1901 of the 5000). Bill Wagner and I started this company in 1999, and I feel fortunate to have such a great business partner and a thriving company.

Bill and I didn’t grow this company without help. The patience of our staff, as we transitioned from independent consultants to employers, has been critical, and part of the growth experience. But through steady growth, we’ve been careful to preserve the company culture, believing that if we have a company that we want to work for, then employees and customers will agree. That’s served us well. Much of our business is word of mouth and repeat business, and so our growth is due in large part to our customer as well. We’re glad that they enjoy working with us. Exposure to a variety of industries as we work closely with customers, is one of the joys of custom software development, and also brings fresh perspective to applications across disciplines.

Our employees continue to amaze me. They truly participate in the growth of the company, not only by developing great software but also through fresh ideas and valuable insight into managing the company. Their contribution of applications for the CodeMash conference (PaintWars, MobiMash) and the Hands on Museum Tech Twilight (Android Music Player) provide a fun way to showcase software. Their open source projects (Elevate, ActionLinq, and Jasmine-Flex) have provided value to the greater software community, as well as to our customers. Their articles, appearing in national publications such as MSDN Magazine and Visual Studio Magazine, benefit software developers around the world. Their participation in charity development weekends, such as GiveCamp (Ann Arbor, Lansing) have provided working applications to deserving charities. They have grown their own knowledge, participated, and presented at many local, regional, and national software developer groups. I am grateful for their generosity and benefit directly from their knowledge. The Inc. 5000 ranking is a reflection of their hard work.

The Inc. 5000 list of 2011 represents companies who have grown through the recession. As a Michigan company, we are even more sensitive to that, given the hardships that our state has experienced. We’ve written and spoken about the vibrant software ecosystem in Michigan, and the Inc. 5000 list supports this. The other Michigan software companies on the list include WorkForce Software (2426), Plex Systems (2573), Atomic Object (3043), TechSmith (3486), Campfire Interactive (3660), DaySmart Software (4945), DSS Corporation (4949(, and Paramount Technologies (4964). Of course, the list isn’t only made up of software companies; 125 Michigan companies are represented across a variety of industries. Huge congrats to all! Michigan is a great place to be, and we’re glad that the Inc. 5000 list represents so many of our friends and neighbors!

Scala Koans Workshop at Strange Loop Conference in St. Louis in September

Wow, that’s a lot of S’s.

Join Daniel Hinojosa, Joel Neely, and I for Scala Koans at the Strange Loop conference in St. Louis on September 18. The Scala Koans, inspired by the Ruby Koans, were previously presented at CodeMash 2011 and the Java Posse Roundup 2011. We solicited feedback at both of these events, and we’re adding to them, incorporating some of your suggestions as well.

I’m excited to be attending Strange Loop.  Alex Miller has done a great job, starting it in 2009 and growing it every year since. My friend and co-presenter for the Scala Koans, Joel Neely, attended last year and had high praise for the conference. I’ve already signed for another workshop in the afternoon of September 18, and I’m looking forward to seeing the full schedule!