Tuesday, June 30, 2015

Lean advertising for startups

My friend (and STAQ advisor) Brent Halliburton is writing a book called Lean Advertising for Startups, and he's running a Kickstarter campaign to support it. I've known Brent for a long time and he is an expert on advertising, so this is going to be a really useful book. It fills a hole in startup literature opened by the promise of books like The Lean Startup, which encourages businesses to experiment and learn what works while avoiding waste. I don't think anyone since then has written extensively about what how to actually do this in practice when you don't have a huge budget, using currently-available technology. That's where Brent comes in! I backed his project and hope everyone else does too!

Friday, June 26, 2015

Today is refactoring day

Today is refactoring day at STAQ. From an email I just sent to our team:
My hope is that today we focus on maintenance of the most critical parts of the app, resolving the most painful hacks, paying down the most significant parts of our technical debt, while being careful to avoid yak-shaving or gold-plating, or various other programmer pitfalls. It also needs to be something that can be finished by close of business.
Definitely check in with team leaders to make sure your project meets that definition :-)
Personally, I think I am going to take a quick look at [some occasional weird exceptions in Airbrake] and pick 1 or 2 of those to put to bed. Then I am going to do some "organizational refactoring"
 I'm really looking forward to seeing what we come up with! I've been wanting to try this for a few years, since I heard a story about LivingSocial. According to the story, there was a period of time when they did this kind of thing every Friday - no new code was allowed to be committed on Fridays: the team work on only fixes, refactorings, deletions, etc.

Wednesday, June 10, 2015

Programmers Wanted

I've been thinking a lot about recruiting and hiring programmers for STAQ, and about how to use plain language in business to communicate more clearly and forcefully. I want us to sound smart, professional, easygoing yet intensely focused. While doing this thinking, a friend introduced me to the idea of employer branding, which is totally a buzzword but still a good concept to keep in mind: you have to use different language and even different URLs when reaching out to different kinds of people.

These thoughts informed my work on a recruiting microsite called Programmers Wanted. It's intentionally simple and plain and straightforward. I want to talk directly to programmers and communicate our values, without having to spell them out in some corporate way. The main thing I'm hoping to convey is: "there's interesting stuff to work on and people whom you will enjoy spending time with, no matter what background you come from". I think I can boil the language down even further but Programmers Wanted is my first attempt at claiming a tech employer brand for STAQ.

Friday, May 1, 2015

Smart, sensitive perspectives on Baltimore current events

These are the best articles I've read so far about recent events in my adopted hometown. I prepared it for my weekly newsletter but wanted to disseminate here as well. Even if you're not local, it's worthwhile reading: these are American patterns.

  • The Nature of Poverty (nytimes.com): "The world is waiting for a thinker who can describe poverty through the lens of social psychology."

Friday, February 6, 2015

Startup leadership hack: make an opportunities list

My partner James came up with a pretty good idea for opening up more opportunities for career growth at Staq. We call it the "opportunity list": a priority-sorted list of projects that we should be doing, but aren't, because everyone is busy with day-to-day responsibilities.

Opportunities are thing that could potentially be someone's entire job in the future, and would make the company a lot more successful/comfortable in the short-term. Each project is a chance to step up and exercise leadership outside of one's "day job".

Here's an excerpt of the list I just whipped up:

We have similar lists for other departments, so, wanting to set a good example, I picked "contract volley". I'm going to help figure out how to speed up the end of the sales process where specific details of our contracts are negotiated.

My first idea was "let's throw some tech at the problem". I found that there's a whole niche market for contract management software, but none of it looks geared towards a scrappy startup. (I understand why companies do this, but personally if your app has a "Request a Demo" button, I'm gone. I just don't have time to make appointments, and that also implies a much longer onboarding process. Please just let me give you my credit card and start a free trial!)

Wednesday, November 19, 2014

Baltimore Hackathon Thread.org After Action Report

Last weekend's Baltimore Hackathon project to help Thread was a lot of fun! Several people from Baltimore's PHP and mobile web communities reached out to help me, as did a good friend from New England who put us in touch with some Salesforce experts. Two people came to the hackathon to participate. Everyone else couldn't make the weekend but expressed interest in helping later.

We focused on documenting the app and making it ready for easy improvements. Here's what we accomplished:

  • Setup a private bitbucket git repository where we could share code changes
  • Created a setup README file explaining how to use MAMP to quickly create a development environment that mimics what runs on Thread's application server (this is what took up most of the time as we had to learn the intricacies of CodeIgniter)
  • Made minor changes to CodeIgniter settings so the app could be run locally in a development mode
  • Added a Neighborhood field to the application UI and underlying MySQL table so that volunteers can document the locations where they work.
The next steps include:
  • Connecting Thread's data analyst with the Salesforce experts (should happen later this week)
  • Adding a simple leaderboard that shows the number of interactions per volunteer.
  • Deploying our changes to Thread's staging server and rehearsing the database migration
  • Deploying to the production application server
  • Drafting suggestions for long-term upgrades and maintenance to avoid software rot

Monday, November 10, 2014

Help Thread Help Baltimore at the Baltimore Hackathon

Update 11/12/2014: Added an FAQ at the bottom and more problems and projects. You don't have to be present at this particular weekend to help!

This weekend I am planning to work on a service project at the Baltimore Hackathon and I would love to form a group to work together! I have been working with Thread, an excellent local nonprofit group that helps students in Baltimore. I'm interested in working with them because of their unusual, comprehensive approach, and because they are already fairly tech-savvy.

Details below. Please e-mail me if you'd like to team up!


Thread, formerly the Incentive Mentoring Program (IMP), has a volunteer base of 700+ volunteers who are providing continuous daily support to 150+ students, who live and go to school in neighborhoods all across Baltimore. These volunteers work in teams called Thread Families to provide each student with everything they need to succeed in school as well as increased access to community resources. Because of the diverse range and sometimes urgent nature of interactions, Thread has struggled to capture the full depth and breadth of their efforts and impact. Thread works in every part of the city, 365 days a year, and commit to working with students for 10 years.


According to Thread (emphasis mine):
"Up until 2013 we tracked most of our activities via volunteer logs using Google Spreadsheets and Forms, but at year-end the hours that were logged were always far short of what we know had actually happened in Thread Families. We think the barriers had to do with poor ease of use and lack of feedback from the system. It was difficult to log things from a smartphone, and you never received any feedback from your interactions, which essentially went into a black hole (a Google Spreadsheet that was inconvenient to access and check). In 2013, we applied for a grant with NextJump to help create a website optimized for mobile devices that would make logging significantly easier.
"A small team of developers at NextJump donated two weeks of time to create ThreadShare, which is both aesthetically pleasing and easy to use. However, ThreadShare is still missing two critical components, a more comprehensive feedback loop and increased engagement functionality. While interactions are now posted for Thread volunteers to see, the overall app is still relatively limited in its functionality. You can't post pictures, you can't location track and see a map of your impact in Baltimore, and you don't know how you fare as compared to your fellow volunteers.  Understanding the impact of their hard work and connectedness to a larger movement is critical in encouraging volunteers to continue and increase their commitment.  
"I truly believe that with a few small tweaks, like the ones mentioned above, ThreadShare v2.0 could be more than just an administrative tool, but a key engagement strategy as we fully transition from a small non-profit to a movement within Baltimore. I also hope that, since Thread is all about facilitating connection, the app would be something that we can then share with other nonprofits for their use in engaging volunteers." 
"A common criticism of Thread is that because we serve 150+ students, our impact is small. The Thread vision is not about just tutoring underperforming high school students facing significant challenges outside of the classroom, however; it is about creating “intentional families” with strong relationships and weaving a new social fabric. It is about ending the sense of social isolation that many students and volunteers within the community feel, and it is about facilitating relationships that transcend barriers of race and class. Our current metrics highlight student achievement and our ability to accomplish our mission, but fall short of telling the full story of the overwhelming comprehensive and extensive nature of what we do and the impact that it also has on the lives of our volunteers and the Baltimore community. Only the day-to-day actions of our volunteers paint a complete picture of what individualized support and relationship building really means.”


Thread is moving various business operations to a Salesforce application, and there is currently no automatic means of transferring IMPshare data to Salesforce.


There is no person or company currently responsible for the day-to-day upkeep or improvement of IMPshare and no easy way for volunteers to contribute source code to the project. There is however a staging environment where code changes can be tested. The plan should also include regular backups of ThreadShare's MySQL database.


The IMPshare app runs on a LAMP stack with the CodeIgniter framework and jQuery. The source code is currently hosted on the IMPshare server and does not appear to be version-controlled.

  • Partially address problem #3 by engaging Baltimore's PHP and mobile web communities: we can make IMPshare easy to work on.
    • Move the code to a private bitbucket or github repository. Consider making it an open source application.
    • Create a setup script that installs dependencies and allows code to be run locally
    • Write technical documentation & make diagrams, including a thorough README that explains how to run the app in a development environment
    • Create sample / test data
    • Create an app deployment procedure for the staging and production environments
    • Sign up to present the project at Baltimore PHP and Mobile and Techies For Good meet ups
    • Draft an RFP for PHP consultancies to estimate the cost for ongoing app maintenance (routine things that are harder to get volunteers to focus on, such as bug fixes, security patches, etc.)
  • Prototype a leaderboard tool. This could be a separate application that connects to IMPshare’s MySQL database, runs a SQL query, and emails a leaderboard to Thread leadership (who could then review it and forward to volunteers).
    • If Thread likes it, this report could be incorporated directly into the app’s user interface
  • Add a “Neighborhood” field to the user interface
    • Can leverage HTML5 APIs to auto-fill with the user’s current location
  • Prototype an impact map that uses various Google geocoding APIs to geocode locations using the new "neighborhood" field
  • Setup MySQL backups
  • Create a standalone reporting app that allows database gurus to create SQL reports that could be embedded in Google Docs
  • Prototype an IMPshare-to-Salesforce connector
    • Will need to gather more data about Thread’s salesforce installatio

Q: I want to help but this is pretty short notice so I'm not available this weekend? Can I still help?

A: Totally! We consider the hackathon to be a motivating/catalyzing/social occasion but I expect most of the work will occur over the next months and years. We want to help in a sustainable way, and want you to contribute in any way you can and would enjoy.

Q: I'm new / inexperienced / young / don't know PHP. Can I still help?

A: Yes! The main point of this exercise is to connect enthusiastic people to Thread to help them leverage technology as much as possible so they can get back to their core mission of helping kids.

Q: I'm a designer, can I help?

A: Yes! One of the things we can build is a nice standalone reporting tool that could be made more useful if it had a real designer behind it. Also there may be things about the current app that you think will increase engagement. Also, the "leaderboard" concept is pretty prototypical at this point. For it to be useful, it needs to look and feel right.

Q: I'm a tech writer, can I help?

A: Yes! One of our goals is to make the project easy to setup and administer for new volunteers and for Thread. The existing docs are awesome and we can build on that foundation.