Last Friday, all of globaldev put away their regular project work and turned their hands to a challenge that was set before them. That challenge saw 14 teams given the task of spending one day to produce a prototype of something that either solved an existing problem faced by the business, or came with with a new idea for a feature that could be developed and delivered to our members.
After 7.5 hours of furious discussions, drawing and coding, here are the 14 fantastic prototypes that were demoed at the end of the day.
Bellboy: Scheduled HTTP Tasks
Team: Tim Blair
We run a lot of scheduled HTTP jobs within our platform, but at the moment they’re scheduled on individual boxes, without any aggregated view of what’s set to run and when. It can also be difficult to know with absolutely certainty that something did run, and what both the status and output were from that job.
I set out to build a system which would allow the operations team to centrally configure scheduled HTTP calls, while having them run in a distributed fashion to avoid single points of failure.
The resulting prototype was a combination of a Rails application for the configuration and reporting, a Clockwork scheduler process to work out and queue up what needed to be run next, and one or more Sidekiq processes to read off the queue and perform the HTTP requests.
Each job run is reported with the HTTP status code, the status of the
job (deemed to be successful if it returns a
2xx status code), the
time the job took to run, and the raw output of the call.
Messaging+ (or “Say it with an Interrobang”)
Team: Kevin Purcell
Adding simple formatting and emoticon options to the messaging system using a WYSIWYG editor. Includes the full complement of Emoji emoticons, with the most common images available from a drop-down menu.
Pageless Search Results
Team: Mat Sadler
It was just me working on my hack, which was to try and display at least 1,000 search results on a single page. The key part was to have it load quickly, but without the usual annoying user experience of ‘scroll to the end, wait, page magically becomes longer, scroll some more, wait some more, discover you really are at the end this time’ you get with most ‘endless scroll’ implementations.
I wanted the effect of a near endless wall of photos, and didn’t want to wait to get the member’s details before showing the photo, so I wrote a small proxy that very very quickly finds the member’s default photo and redirects to that, it also returns image URLs from multiple CDNs, tricking the browser in to loading more images at once than it normally would.
My original plan was to load each member’s details on mouse-over, with a little bit of animation to distract you while they load, but I discovered our member service returns the details so quickly I could just load them as the member came in to view.
I thought this would make browsing search results more fun, engaging, and give members who usually appear after a couple of pages more of a chance to catch someone’s eye. Also with an updated design and larger images it makes a great showcase for members’ photos.
### Winner: Founders’ Award
We wanted to drive member engagement by rewarding points and trophies for interacting with our sites. Our hack takes advantage of the Notification Bar to display small popup alerts for newly achieved goals and points, all of the other code was implemented directly into our CF site. If the project gets picked up in the future we would rework the whole thing to consume our existing events systems enabling us to to deal out member rewards in realtime.
Honourable mention: (very close) runner up for People’s Choice Award
We had three goals for our project: to demonstrate rapidly building a fully functional stand alone site driven by the mobile API, to produce a cutting edge responsive design using the latest features of modern browsers and finally to showcase a concept we had thought of as a way to help foster interaction and introductions in a fun, addictive manner.
Public Profiles for SEO
Team: Barry Frost
My hack was to try exposing member profile pages to visitors. Currently all member profiles are hidden behind a registration wall and are impossible to link to with social media sites or be spidered by search engines. I created a new public profile page with buttons for Facebook Likes, Tweets and Google +1s. Additionally I limited public profile views to five per day to ensure visitors were still encouraged to register.
We worked on gaining better insights into how members are using the platform. Working with member activity, we created an event-driven service in Node.js and created a simple visualisation for this live data using d3.js. In future, we believe this hack could go on to help gather metrics, inform user experience decisions and allow targeting based on usage patterns.
Team: Ian Vaughan
Getting two computers web cams to connect to each other and show the other cams feed was really easy, the hard part was implementing domain logic specific to our needs to create sessions when needed for two uses, and exchanging tokens to both so that only they would gain access to the web cam feed.
New IM System
Winner: People’s Choice Award
Paul, Pete, Keith and Kris created a faster, nicer to use and more compatible chat application to bolt on to our Desktop platform. It uses some of the infrastructure we put in place for our notification bar to deliver chat requests and notifications all in one place in a much quicker way. Chat messages are posted to a brand new Node.js service which pushes the messages out via Pusher. If and when this comes to the platform properly, messages will stick to the bottom of the user’s screen as you navigate the site and the same facility will be available on mobile browsers.
The member recommendations hack uses a variety of 1:many:many relationships to build a network of recommendations. The data, seeded in Redis via Perl included message, wink, favourite, view and member encounter relationships. Using this we could rank potential relationships using sorted sets via Redis, returning the most relevant members. The rank/score was then normalised to give a pseudo match of members.
Which Dating Site?
The idea was to build a website that people can consult to find a WLD site that would be suitable for their interests, make it interesting and easy to use.
We split the work with Harry finding suitable templates and imagery for the site, Tayo writing the search function to handle searching for sites by niche criteria, and Kevin investigating and implementing the interests selection form.
We found a suitable jQuery component that allowed you to select elements with drag and drop to provide a list of interests which was easy to use and more user interesting than a multiselect list or checkboxes. This could be improved with some nicer graphics perhaps with a shopping basket and icons for the interests.
At the end of the selection the user is provided with a list of niched sites that are appropriate to their selection.
Non-niched sites could also be included and it would be interesting to include a blog with reviews of new sites and links to smooch sites too.
Winner: Innovation Award
For our Hack Day project we decided to quickly prototype something Ops has desperately needed for quite a while now: a centralised logging service. Previous attempts to do this had either resulted in breaking the service on the receiving server (we generate an awful lot of logs) or turning down high-quality but costly third-party services. Having briefly researched log aggregation solutions recently we deployed what we thought would be a good all-round open-source solution: an ElasticSearch/Redis-backed logstash server/client architecture.
We added the excellent Kibana GUI for quickly searching the log data stored in ElasticSearch, and filtered some of the logstash data in to our existing StatsD/Graphite backend for a lightweight example of log graphing as well. Early results look excellent; it looks to require some tweaking with regards to scaling the various services to deal with our log load, but the setup we ended up with seems like a good fit for our volume.
Partner Portal Code Snippets
There are lots of steps that need to be followed for partners to create the perfect splash or landing page, and we decided to try and reduce any frustration partners may have with the technical aspects of the setup.
We created copy-and-paste code snippets to be made available on the Partner Portal, customised to individual site settings. These snippets included signup form, login form and latest member feed, and are supplied with basic layout CSS to format the generated markup, ready to be themed by WhiteLabelDating.com partners to suit their site design.
Personal Profile Grouping
Team: Michael Mazour
I decided to create an alternative way to view member search results, and to bring some of the fun and exploration of “Who’s Near Me” back to traditional search.
This was achieved by passing personal profiles of found members through a text-clustering algorithm (the sort of thing that lets you search for “salsa” and automagically divides the results into “Salsa Recipes,” “Salsa Dancing,” “Salsa Music,” and “Other”).
This resulted in a fun way to view search results with common themes in how people present themselves grouped together. Do you want to explore the “want to settle down” group, the “keep it casual” group, or the “up for anything” group? They’re all there, and more.
There was also an unexpected result in the clumping together of member profile text that might be useful in our fight against scammers.