In a future post, I’d like to look more at my reflections on Startup Weekend Paris (Sept 2012) in general and less about some of the technical things I learned and accomplished. One of the things I’ll surely mention there that’s worth repeating in this context is that this particular Startup Weekend was relatively light in developers. While it was announced as having quite a few developers, this wasn’t exactly the case as there were very few folks who could effectively build a web or mobile basic product.
As such, I ended up on a team with two mostly biz-devs (though they were effective additions in other ways!), an Android programmer debutant and me (the benevolent leader, a general technologist and drupal/php guru). So, while in past events I’ve hovered around the ruby on rails geniuses and let them do their “agile” magic, I ended up being the main (cough, cough!) developer this time around.
Fortunately, the idea I pitched: a website / app for memory improvement and goal completion was something I could visualize building in Drupal. So here’s what I built: http://demo.goal4it.me/user. Now let me tell you what and how I did it.
For reasons that only make sense to a programmer/hacker/builder, I ended up spend a good percentage of the first real day of work tweaking and coding for a custom signup, LaunchRock clone with Drupal. You can see the fruit of that labor here: http://goal4it.me.
As far as I see it, this is some useful code and I hope to finish up the main module, various tweaks, a flexible background-image-based theme and finally a simple install profile/theme in the coming week or so.
Basic “Site Building” Stuff
Obviously the basic site building stuff is not particularly interesting but for a quick startup thing, certain things I had in place helped me stay on task and get things done quickly. As usual views turned out to be particularly useful along with flag and rules modules and later field_collection module.
On the theme front, I normally use Omega but I decided to test out AdaptiveTheme and ended up using Sky along with some basic tweaks to create clean and mobile friendly site. Woah!
Beyond that I used mostly core Drupal stuff along with a couple php things here and there to smooth stuff out and get around some small issues.
One particularly useful situation was the fact I host via Omega8.cc which made is easy to take my initial git code and push to the server and then let my team start doing some “content building” on the site while I did other work on an alternative cloned version or as time pressed, direct changes to the site itself.
Pitch, Plan, Prototype
So my pitch was for a “goal competition” application with a focus on reminders and community (instead of just static todo lists) for optimizing how we approach goals.
Once my project/pitch was selected, it was time to come up with a building plan. (I suppose I should have been going after the “business plan” part since all the teams that “won” at this Startup Weekend were basically “codeless” and presented without any working code or prototype at all but I suppose that rant is for another day). For me, you need to have a plan for what you can successfully build in the weekend, so I was happy to get as much done as we did.
So while I got stuck some on my strategy the first day, after going home I figured a few things out and started to focus on using flags to build out my goals site. The next day, I cleaned up the display some and used field collections to allow me to have something like additional fielded entities. This allowed me to have a separate step or part for the actual steps to completion an actual goal (While I didn’t add it, ideally I could create specific reminders and dates on the tasks themselves).
From there I took flags 3.x which takes flags usability and usefulness to a whole new level by allowing you to not only flag fields, including field collections, but also to add actual FIELDS on flags. Meaning you can flag something and include additional data at the time its flagged. Woah!
Like AdaptiveTheme, which I used for simple speed and general cleanliness of the result, I ended up using panels/pages a lot of this prototype. I tend to use context module a bit more but over the weekend, I found myself increasingly convinced that panels seems to offer as strong of an option for multiple block page layouts over context module. It’s integration with AT also added to the easy have a mobile friendly site up at the same time as the regular one.
In any case, as the Sunday afternoon hours rolled on, we managed to get everything together, including a working site, presentation and various discussions. Woah! What a weekend.
What will we do next?
It’s always one of those funny situations after finishing a Startup Weekend where you worked so hard but you weren’t the winner. For me, I always partially feel like I managed to finish only part of something and even if it won’t win me any crazy money, I’d like to finish something. At the same time, you have to admit the fact that you did win for various reasons. Anyways, post-weekend, we don’t always have the time or energy or ideas (or money, to be frank) to finish or develop or projects. So it goes.
But what if…
I don’t want to commit myself to anything but I think we were able to create a convincing prototype, such that we proved the potential of the Drupal model.
If I did have time (which I might make!) here are a few things I’d want to work:
- various fixes to the goal completion / task interaction process including % completed on a goal.
- fix for adding an already exists goal, including a reference to the goal as reference and potentially all similarly named goals
- improvements to show how you are tracking your finished goals.
- finish up the reminders setup so that new users provide this basic data for reminders and an option to stop all reminders
- build out API integration with twitter, facebook and linkedin for the social aspect as well as messaging
- build out real interaction for SMS and reminder calls
- gamification, including ways to build community engagement and badges for helping others achieve their goals.
- integrate apache solr for search and showing related content
Several of these could be easily worked out and improved in little or no time, in my opinion, though challenges and bugs and problems can and do occur.
It also seems my Android guy and I should get together on developing some integration there via services.
Final Note: Drupal for Prototyping and Agile Development
For agile and quick dev stuff, Ruby on Rails tends to get all the attention. Startup Weekends, in my experience, are often won by teams with some ruby on rails developer ninjas. The power and speed of ruby on rails make sense for many projects overall, including early stage prototypes.
In my opinion, though Drupal doesn’t quite get enough attention at these events, it’s a powerful framework and code base for building tons of different custom sites and even a backend basis for a mobile app. The advantage over other setups is that you can get a ton of basic site stuff up almost immediately and then quickly start focusing on basic functionality of the site. Ideally the combination of Drupal’s architecture can allow you to get a huge part of the basic project working and then start focus on the parts that need custom code.
One thing that I missed initially was really pushing Drupal to its limits before attempting to code or hack the functionality. In the end, I didn’t use my custom stuff and simply used a combination of modules to get to my solution.
That said, for non-technical folks jumping into an event like Startup Weekend, Drupal is probably not something you want to try without having gotten some experience with it before. But for someone with a good background in technology and Drupal (like me), Drupal can be a great too for prototype and early stage dev.