Tuesday, April 23, 2013

A Day in NYC: #AWSSummit and FB Mobile DevCon


I spent last Thursday (April 18th) attending the morning keynote at AWS Summit and then the afternoon hands on session at Facebook Mobile DevCon.   Posted about the experience on the Stuzo blog. 

Not in the Stuzo Blog. 
The night before I was at the Philly Java Users Conference with Sacha Labourey from CloudBees hearing him talk about Platform As A Service.  From my view the PaaS really extends AWS, getting to the point of continuous delivery and further removing obstacles for building software. 



Monday, April 8, 2013

Thirty Days Ago



I want to talk about my first thirty days at Stuzo, but first I think it is a good idea to do a retrospective on my time at MeetMe formerly QuePasa through the MyYearbook acquisition. I am very appreciative for the opportunity to have worked with a talented group of individuals and a management team that was able to grow from 10m to 46M in sales.

After learning more about the organization, and beginning my work there, I was able to focus on three attributes of building out an engineering team.

1. Passion - surround yourself with really passionate people. Find passionate, smart people who are willing to challenge each other. Love being around those folks! When my team looked back over time they would say, “ I would probably not have been hired if I interviewed today.”  My goal was to continually add smarter people. This works because the new folks constantly push others and that continued passion becomes viral. When I left, we regularly had an annual developer retreatinternal hackathons and folks that contributed back to the local community.

2. Commitment - to getting things done. In my first thirty days, I remember launching a solid social application for music / playlists using iMeem API (Matt K always did a great job building user interfaces). The MySpace /iMeem mess aside, I was blown away that we could launch this app, watch it take off with great visibility into the core metrics, and then instantly get mass user feedback.   After my first year, I looked back and realized that even though I worked at some great companies, I have never delivered that many services and applications so quickly and at scale. Fast forward four years, and year over year I was continually impressed. In just over the past year we merged (and stayed operationally focused), rebranded (and grew), launched in twelve languages (web and mobile), delivered many new features and releases for the iPhone and Android platforms. The team always had and still has the commitment to get things done.

3. Respect - for each other. When working in the same location and spending hours together, if you don't get along or respect each other there is not much room to hide. You will go through your day pretty disgusted. This is not a place where folks are going to stay. When you see that level of frustration, you must bring your team together to keep the organization working productively.  Respect helps people to have intelligent disagreements and continue make progress.   We had that respect as a group and coming in everyday was something I enjoyed. 

What could have I been better at?

1. Push changes to our process earlier. We moved recently into using KanBan but I did not experiment enough. We had a well defined process from day one and it worked but could have pushed harder.

2. Contributed earlier into the local technology community and make it more part of the way we were. It's not core to the business and not top priority but it does help with recruiting and retention, the key part to scaling an organization.

3. Removed myself from day to day management and at times focus strategically. I really did (and think the team often appreciated it) give a lot of myself.  This meant I spent less time being able to contribute to thinking strategically. I enjoy the creative and learning experiences you get from thinking deeper about the business model.

Retrospective over, looking forward while having enjoyed a great ride.

Sunday, April 7, 2013

Gerrit Replication to Bitbucket or Bitbucket and Pull Requests

In the past I opted for larger development teams to use Gerrit as the code review tool.  Gerrit being a solid tool with low frills can be setup to manage reviews and define your process.   Gerrit replication while meant to provide scale through read only repositories, can also be used to sit in between review repository and deployment repository.   We are evaluating for use where Gerrit is for review and BitBucket is for deployment and browsing.  Modifying the diagram at Gerrit Quick Intro to illustrate a model we are considering describes the split between review and deployment.




I know there is Stash for better management and it looks good but Jira + Confluence + BitBucket + ...  keeps adding up.    Also we could stay the route with pull requests though in a previous life with even a small team pushing lots of code with branches the pull request interfaces were cumbersome.

I am still leaning towards the usage of Gerrit and taking advantage of the other great features in bitbucket likes its long list of services and direct support Jira and Jenkins.   However my friend  Brian suggests I take another dip back into pull request land.

What to do?





Thursday, April 4, 2013

Yehuda Katz presents EmeberJS in Philadelphia

Thanks to Yehuda Katz for his talk on ember+ES6 for us non PhillyETE attending folks.

Here are my quick notes but definitely suggest catching him live or searching youtube to see him present.

Ember
- provides organization for your application
- fundamentally uses HTML, does not define its own way
- allows you to extend HTML
- focus on URL because it provides context, if your web app does not keep the URL as context it's not a web app.

Then he did a walk through of sample application, rapid paced intro but covered the highlights.

A good question from the crowd about what happens to all these server side frameworks (specific question targeted at Ruby). Yehuda's response for me was dead on, the front end is where things are going but not everyone is seeing it yet.  Leaving server side frameworks scratching their heads to define how they will better support this growing architecture.

My public response was that we agree and have already started the switch. As we continue to see this increased switch from web to mobile, building APIs and separating out the UI work has made life easier.  Everything as an endpoint has been a promise for a very long time and with the [Internet of things] happening all around us it is becoming a reality.

For myself transitioning between MeetMe where we got ahead of the mobile curve (2011 TC MyYearbook mobile growth) and at Stuzo where we are helping customers through the transition using frameworks like backbone, ember or angular seems to make sense for building responsive UI and mobile applications. We are building expertise on Angular as a team but I expect quite a bit of jockeying between these frameworks as they build their rockstar communities.

Thanks again to Yehuda Katz for sharing knowledge and talking passionately about his thoughts.





Monday, September 5, 2011

Geeks in the woods.

We recently held our second annual internal developer conference, Node 2.0 -- subtitled "Geeks in the Woods" in honor of the idyllic setting deep in the Poconos. While the first day and a half was more like "Geeks in the Dark," with only backup generators, glow sticks and flashlights to help us find our way through Irene’s aftermath, ultimately the event went off with only slight modifications to the agenda and provided a lot of value to the team. I have to admit that in our darkest hours, I was ready to call it and get back to civilization, but Gavin kept pulling us to continue – and right then, dramatically, the lights came back on!

Why do we hold this event?
Mostly to escape the one-hour time limit we generally maintain for office meetings. With so much going through our development pipeline at all times, it can be extremely difficult to find an extended period in which to work with the team as a whole, get everyone sharing ideas, and explore what we need to focus on to keep the team growing. So last year, Gavin spun up the idea for a developer retreat, and we jumped at the opportunity. Year One was Atlantic City -- when AC lost power! Year Two: Woodloch in the Poconos, barely post-hurricane but still mid-outages.

What do we do?
As this is only our second year, we’re still experimenting and trying to optimize the schedule. This year, the consensus was that we packed a bit too much into the three days, as we tackled four distinct areas:

1. Learn a new language.
On the first day, we brought in an instructor to teach the whole team a new language we don't use day to day. We believe that more focus on polyglot is valuable to the team and pushes folks to learn new ways of doing things, and more importantly, new ways of thinking about problems.

2. Hack-a-thon.
Can't talk about what we did, other than wow! I don't think this is something you can do very often, but it’s amazing how productive our team can be on such a short time frame. The pace was intense, but the way this event brought different folks together to solve problems encouraged a ton of knowledge-sharing, in many cases between people that rarely if ever collaborate in the course of normal work. This is definitely on the table for next year’s Node, and we have some new ideas for pre-planning that will make us even more productive in 2012.

3. Group Sessions.
One of the returning favorites from Node 1.0. Last year, we split into groups to come up with problems to solve and propose how to solve them. This year, we went a different route: each group built a pitch for a new product, planned their technical approach, estimated a project timeline, and presented their proposal to the whole team (including our CEO). Some good stuff I won’t reveal here!

4. Developer Talks.
Several developers prepared talks on a variety of subjects, from deep dives into recently completed APIs to more philosophical discussions of engineering approach. Even one of our partners found their way out to the mountains to talk about their company over lunch. The highlight for me was a session on test-driven development led by one of our DBAs, an accomplished speaker, which provided some great ideas we’ll be implementing moving forward. Overall, though, we learned that the hands-on sessions brought more value than just talking.

Do you talk about the business or just tech?
I gave a talk about leadership or management. Gavin explained how a focus on performance would lead to tangible benefits for the company. Jeremy reviewed product history and how it impacts our development process today. And Geoff gave insight into the business: where we’re headed and how. These are usually bookends to the day, and they serve to give context to the rest of the agenda.

How do we bring this to the office?
While we can’t always spare the time to hold similar events in the office, we do encourage the team to talk at local events, hold internal lunches to learn new things, and occasionally bring in external speakers to keep the knowledge flowing. More and more, we’re working as a team and not just a collection of individuals, and it’s been a beautiful evolution to watch.

So now I’m looking forward to Node 3.0: The Apocalypse Comes. Any feedback internally and externally on ideas for the event would be welcome!

Sunday, January 30, 2011

CloudBees in the sky

I was recently asked to be part of a technical advisory board for CloudBees. The group included some great folks Eduardo Pelegri-Llopart, JJ Allaire, and James Gosling. Thank you Sacha and Bob for allowing me to participate with such a group. Besides meeting with the team and getting an overview of the plans I also had some time to play with both Dev@ and Run@.


Dev@ = Jenkins/Hudson/Nectar
Jenkins, recently renamed from Hudson, is the de facto CI system in the market. CloudBees provides a supported version called Nectar offered for on premise or as a service. I have been using it for years to help implement development process. Currently we use it on a daily basis to build for more platforms than I can mention - java being only a very small part of it. Today I wanted to start a build of one of my open source projects, one I have not touched in a 'VERY' long time. This project is currently hosted on sourceforge - https://sourceforge.net/projects/blue/.
After setting up my CloudBees account I added a Job and figured I would use it to generate my docs. Well it took me three times to get it right. The first time I did not set my ANT version properly, the second time I named my target wrong but then wala a working Jenkins Job in the cloud generating my documentation for Blue. I just wish I had this running when I was building Blue a few years back instead of constantly developing on my box and having to build ant tasks to push files to different places. Using Jenkins in the cloud (Nectar) could not be any easier and it would be great to see lots of open source projects participate. (CloudBees Todo: Allow making docs and distribution files publicly available).




Run@
While Run@ will be usable from dev through production I can quickly see how it simplifies life by reducing management of the development and testing environments. One of the challenges in building out a development process is physically connecting the systems together to create the outputs you are looking for.


A development organization can have 10's or 100's of developers implementing an equal amount of services with concurrent projects all needing to get out the door. This can be overwhelming to think about. I see Run@ and the concept of PAAS (platform as a service) as a building block for managing large development organizations and process.


Thanks again to the team.
Ryan - Great seeing you again, it has been a long time.
KK, Vivek, Harpeet - Amazing what you guys are doing both technically and fighting the fight to keep the community moving forward.
Spike - Glad to see you as part of the team bringing together the vision for PAAS.

Saturday, October 9, 2010

Application Over TV


My venture into Application TV started a few months back when I was in search for a new TV. My goal was to buy a nice size flat screen and write some applications for it. Well I was quite a disappointed when not one provider had opened up their platform.

I defaulted to purchasing a Samsung 46" and while happy with the TV and the Netflix application everything else was lame. This all changed a few months back when this article on Programmable Web popped up on Samsung Free the TV. Since then I spent some time trying to understand TV development and have built out some initial prototypes for myself (and my kids).

In that time I have learned quite a bit about the platform. Shaping my own design considerations and development patterns. While finding my way to these ideas, I realized they seem to be at odds with how many of the existing applications are built. In my view, the current applications being built are not going to change our TV experience but here are a few thoughts that might have an impact.

1. It's only exciting if we integrate TV and Applications.

Why would you write something which takes up the whole screen and removes the TV experience? Why would facebook be a whole screen application?

These type of applications are as exciting as watching grass grow. Why can't I watch my show and update my status?

Another view type I have seen possible is the wrapped view. Perhaps some information context to the side and the TV show on the right. I can see this for integrating your stream view of the world into your current program. However, why wouldn't I just cozy up with my laptop and just let my eyes keep flipping back and forth. With the miracle of DVR I really do not miss anything.

My belief is that TV and Application are merged together. As you can see from the video, I wrote a simple Pong application which overlays the TV. The kids are watching a ball game while playing pong. This integrated view has been very popular with my boys and they have been very active in giving me feedback, finding bugs and generating a list of new games to develop - I need to get them writing code.

2. The remote must change.

I have not investigated the future of remotes but the life of the remote for the past 40 years must come to an end. I think folks like OpenRemote are trying some interesting stuff on the latest hardware but those platforms are not remotes. If you want to innovate with the remote you must start at the hardware level. Most recently I have switched from traditional mouse to magic mouse and now magic pad. Not being a hardware experience expert I am not sure what will work but it feels like the magic pad is on to something. With the flick of fingers I should be able to wave channels up and down or swipe four fingers and get a selection of channels I should be able to tap.

The other change for the interaction is support for multiple inputs simultaneously. Not to create a high end gaming environment but to allow some form of multiple user interaction.

3. I need access to the stream. Sorry Apple TV, Google TV and everyone else not owning Fiber to my house!

When building my little prototype applications I have came across numerous times where I want to interact with the signal. What is the closed caption text? What is the current channel? Where is there a face on the screen? Is there metadata I could tap into?

The reason I can not is because I am at the TV and not the cable box. The cable box has the best chance of winning this game. Perhaps they integrate Google TV or perhaps they expose the technology they already have. But folks like Samsung or Sony will have a tough time when the set top box not only gives me the overlay but access to the meta data.

Comcast, Verizon, Cablevision - what are you folks thinking? Verizon please learn from your mistakes with BREW. I believe there is a lot more to the relationships with the content providers and data providers limiting these folks from innovating. Until that key is unlocked, we will live in an Application in TV environment instead of Application over TV world.

I will be posting some hello world applications on the Samsung Platform for folks interested in development or wanting to share some notes.