There’s a new conference in town (or at least near the town)! This was the inaugural year for DevSpace Conference, a two-day software developer conference in Huntsville, AL. Getting engaged, inspired, informed, and the having an opportunity to reconnect with others is what makes attending such conferences worth it for me.
Cameron and I both had our talks accepted, so we turned it into a road trip. The conference hotel was quite nice, and it’s attached to the venue by a sky bridge making it very convenient (although some complained about the long walk). After an early registration check in, we milled around the lobby and bumped into Matt Kremer, who was also hungry after a long trip from Wisconsin. We had a fantastic dinner at Below the Radar Brewery and got to know someone new.
There were five decent-sized rooms for the sessions in addition to a large room for open space talks. The speakers had a room to
work on their slides collect their thoughts, plus there was a game room with three arcade cabinets (Galaga, Joust, Street Fighter II) and a Star Trek pinball machine!
What Was Great
- Running into people multiple times during the two days, allowing me to build up relationships (and remember names)
- Open spaces; I really missed that CodeStock didn’t have these this year
- Organic conversations with new faces and some familiar ones I’ve seen at previous conferences
What Was Missing
- Attendees; I don’t know the exact count, but it wasn’t until just before the keynote started that I bumped into anyone that wasn’t a speaker
- HDMI connections on the projectors
- Minor information such as the expected number of attendees, size of the rooms, equipment available, etc.
Keynote: Software Is a Mess & I Feel Fine (by Alan Stevens)
- We never know the full story up-front — we’re dealing with code that can change in unexpected ways
- Successful = delights users + makes money (even if it’s a mess underneath)
- Two types of code: production, abandoned (no legacy code)
- Messy code is the rule, not the exception
- Messy code is a result of failure of designs: not knowing where the code should go and not following DRY and separation of concerns.
- If you see duplication once, that’s okay; if you see it twice, take note of it; if you see it three times, abstract it
- Optimalists (as opposed to perfectionists) consider any progress as rewarding
- Boy Scout Rule — you spent time to understand an area of code (i.e., sunk cost) so go ahead and pay down the cost now while you’re in the area
- Rabbit hunting — some things are not worth the effort, which comes from the concept that hunting rabbits expends more energy than you get in return via the meal
- Gartner Hype Cycle
- “Squeeze the code” to surface the mess so that it must be dealt with
- Shorten the release cycle; this helps you determine what’s painful when it’s time to ship
- Use continuous integration
- Pair program
- Unit test
The Renaissance of Functional Programming (by Joe Barnes)
- A good overview of what functional programming is and why it came to be
- An object-oriented developer when asked to generate a list of even numbers between 2 and n would likely create a list and put things in that list via a for-loop and an if statement. Functionally, you apply a map function to a range of numbers.
- Object-oriented design seems best fitted for the von Neumann architecture
- Functional programming requires less code, therefore produces fewer bugs
- The following Scala code uses an isPrime_ function to return a list of the first n primes: Stream.from(2).filter(isPrime_).take(n).
- Think about functional programming as composable software
Microsoft Azure Makes Machine Learning Accessible (and affordable!) (Douglas Starnes)
- Douglas gave us a demo of the Azure ML Studio, a web-based app where you can design your machine learning problem
- You create a workspace, define your datasets, set up your experiments, train models, and then use the models via a web service
- Datasets can be split in various ways — training, testing; once the training set is chosen, a model is built (depending on what kind of question you want to answer — e.g., classification, regression)
- An example of suggestion lists (e.g., customers like you also buy…) is done via collaborative filtering
- “Data is worthless. Analysis is worth pennies. Decisions are worth dollars.”
- You can’t download the parameters of the trained model; you have to use the web API or Azure ML Studio
Building a Visual Programming Tool for a Custom Rules Engine Using Elixir (Josh Adams)
- Think Scratch for building rules, such that you inherently can’t have syntax errors
- Turn rules into an abstract syntax tree (AST): JSON -> AST -> Elixir code -> functions
- Elixir can generate an AST for a particular Elixir script
- Admittedly most of the technical part of this talk was way over my head; the speaker went very quickly and was rather flippant about things which was a bit of a turn-off
Listening for Better Professional and Personal Lives (Kyle Newman)
- Hearing != listening (physical process vs. shared comprehension)
- There are several models of listening (Aristotle, Shannon information theory model, Hurrier listening process, continuous loop model, Berlo’s listening theory, sender message channel receiver)
- Be interested in the other person
- Conversation is not a tennis match
- Make the listener feel safe
- Listen without trying to solve the other person’s problems
- Ask good questions
- We did a 5-minute exercise where we talked with our neighbor to practice listening and speaking; this was admittedly easy because there were only 4 attendees (including me) and I knew two of the others
- There were lots of good tips in here; I felt the speaker was relying on the notes a bit much and I didn’t really know the road map for the talk
Leading as a Grunt: Finding Leadership Opportunities Wherever You Find Yourself (John Strobel)
- Leaders are defined by their followers
- Authority — carrot/stick, reward/punish
- Influence — the horse rider suggests a direction, the horse chooses to move; built on respect and trust
- You don’t control authority or influence
- Acting like a leader begets leadership behavior
- Ask and answer questions
- Be a multiplier in your network
- Focus on the problem instead of blaming people
I had a really good experience given that this is the first year, and I hope the trend continues. I have very little room to complain; given all of the moving pieces, things seemed to be operating very smoothly, and there were plenty of opportunities for things to fall apart (and they didn’t).
DevSpace Conference is already confirmed for 2016, and one of the co-organizers said there will likely be more local organizations making a presence, as Huntsville has a lot of brain power given some of the companies in the area doing government/tech/science contracting.
I’ll be honest and admit that I wish more people could have attended my talk so that I could get some feedback. For this second presentation, I felt more relaxed and focused more on connecting with the audience. Several good conversations came from it, even if there were only a handful of attendees.
Again, the best part was meeting lots of new people and having good interactions with them multiple times throughout the conference. I feel recharged and reconnected with the community, and am already looking forward to DevSpace Conference 2016!