The biggest risk you can take is taking no risks— #sus2011
Recurring Events - A quick UX exploration
Working on the ohanah app v2 - one of the challenge was to implement recurring events in the most simple, easy and elegant way as possible while yet to keep it powerful.
Here a first draft of making recurring events during the event creation process (can be applied to non recurring events as well, making them recurrings).

When creating an event they system will differentiate between the parent event and its recurring children. Meaning that you can edit all the recurring events at once (whole recurring seres editing) by editing the parents or just override changes on a per per event base, by simple editing each single child.
Thoughts after 1 year of hybrid events

To really get what an Hybrid Events is all about i think the best way is to experience it under each angle first.
1) Remote Attendee
2) POD Attendee
3) F2F Main event attendee
Those are the audience of an hybrid event and those are the engagement and experience you need to learn in order to being able to address them. To do this i tried in the past year to take advantage of the eventcamp event. First by attending the BASEL POD during event camp twin cities 2010, then by remotely attend eventcamo twin cities 2011 and finally by attending f2f event camp europe this month. In this blog I will then try to outline what i think are pro & cons of each scenario and what i enjoyed in each of it.
1) Being a Remote attendee give extra value because of lower barrier of entrance (traveling,…). As a remote attendee i then found really valuable a professional and high quality live streaming of the event together with talk/slides and i have to say that SonicFoundry is a tremendous technology the just deliver it. Being able to engage is something good, for me this is especially good in the form of being able ti virtually rise my hand and make questions to the speakers. In my remote experience for #ECTC11 the twitter backchannel worked like a charm but that because on the other side of the line there was a dedicate person, aka the virtual emcee (gr8 job @EmilieBarta ), that was good enough to catch best questions and point them out at specific times to the speaker. Being a remote attendee means i don’t have the chance to know better the speaker face to face and therefore the interviews done for us between session were just what i needed. For the rest i found hard to engage in games, team work or other too collaborative session or task. I was also missing some kind of chat and list of all the remote attendee so i could engage and share with them as i felt being part of something together with them, a group. One important thing to keep in mind is not to overwhelm us remote attendees with too much tools, sites and systems to use as we already have to keep attention on the live stream and therefore we are already focused on something on our computer.
2) A POD is an event itself, so if remote attending is more like watching an interactive DVD alone at homes, pods is more like going to the cinema with friends, of course we all see the same movie, but we share popcorn and chats during it. I therefore envision two ways of making use of PODS, one where a group of people gather together to remote attend the main event with the added value to locally network with other people f2f, get to know each other before the streaming event kick off and finding moments to discuss about it during and afterward, i would call this “Passive PODS”. The other way instead have to deals with the POD being active in making the event itself. This to be possible have to be well planned in the root of the event for example by having e talk or session done at each PODS. Active Pods create more value but are harder to plan and manage. Pods need to know eachother and feel part of that group, sharing among them. This is the toughest part of the job. So Pods shouldn’t be just little clones of the main events or passive gathering to remotely watch together an event happing elsewhere, but should have closed door talks, session and whatever unique may be able to provide. As otherwise i’ll just remote attend. If this objective is clear then pods are able to create tremendous added value to people that would normally just attend from remote.
3) F2F attending the main event is something we all know what is. So i won’t talk much about this except from the fact that the event you are attending is connected to pods and remote. So how can I engage with pods? or even with remote attendees? During my presence at #ECEU in london there was a google+station displaying each pods. But it was located on the stage where speaker were having their talk making it impossible to get there put some headset on, chose with with pod to engage with and get to know theem, or answer their question. I Think such an open pod-station will be of benefit by allowing f2f attendee to being able to go there and get to know the people, the program, and what is happing around the world in those Pods more then just watching at them like fishes on a bowl, staring back at us. Again this is not an easy job, as pods have their own things going on and we cannot just jump in it and interrupt whatever is going on.
In conclusion i can say that each of the experience have given me benefit that i the others was not being able to get. Hybrid events are an example where the sum is greater then the parts.
My suggestion is that events who wanna have “active pods” should just be made out of pods (no main event) in other world some kind of distributed event. Otherwise just don’t try to force PODS to be active but have them as gathering of remotes enjoying their own journey.
Login / Signup - A quick UX exploration
Working on the login - signup workflow I’m try to reduce as much as possible the steps in the process in favour of a better UX. For example I always hate to submit email / password and being notified that the combination was wrong, maybe when i just misspelled the email. Second is important to allow the user to move easily between login to signup.

first check if the email is a valid email string, if not contextually alert the user:

if the email entered is a valid email, check if it’s already registered in in the system if not contextually notify the user, with a quick link to register it (signup-up).

In the case the email is found on the system, show the user avatar inline so he knows with which identity is loggin in, and contextually show a remember me check box (otherwise in the other cases useless and therefore not needed to have it displayed.)

Using Custom Markers with Google Static Map APIs

Just few small tip and trick if you plan to use custom map marker to generate your google static map images.
- img have to be max 64x64px in size
- If you have gradient images or detailed png ones make sure to set format=png32 so that the returned images doesn’t loss too much quality
- if you want to create your own shadow, set shadow:false but then you need to be aware of a little detail: when u set shadow:false your marker will be centered in the center of the image so take care of this, while when shadow:true the center in the bottom of your image will be used by google.
- If you won’t to get a little bit more of quality set scale=2 and then resize the image with img { width & height } on your css.
for a detailed use of google static map api go: http://code.google.com/apis/maps/documentation/staticmaps/
Please disrupt the death market before I die

Ok here we go, the death market is such a boring one, so please rethink it before i’ll die as i will be very thankful (if this will matter). Let quickly think about the market first: how many people die per year on each country and what is the average cost of a funeral and related practices in those country…I bet you should have plenty of market to start with. Keep in mind that it’s a market hardly affected by crisis…yes…we will keep dying…yes..all of us. So why not have a nice funeral ahead? And what about my identies spread over the internet, my emails, my websites, my ..blog? There is so much to do in this area but as i don’t have time to do it myself as i’m trying to solve another problem yet, please someone take this challenge and make this better, especially for us millenniums… BUT please do it before i die (don’t loose upon a potential customer ;-)
Using Sass to write DRY css
Here my first experience using sass to manage css.
- first of all install sass (thats pretty simple, just: $ sudo gem install sass (you can du without sudo too;-)
- then you can copy your actual css into scss: $ mv style.css style.scss or you can convert it by doing : $ sass-convert styleOK.css styleOK.scss !copying means you’ll start of with an scss file that is exactly the same as your css, in other world you are just renaming it, as valid css syntax also apply to scss.
- enable your text editor to allow syntax highlightening. In espresso this is pretty easy (works on espresso2 too). Locate your application, right click & “show package content”, navigate to SharedSupport/Sugars/css.sugar. RIght click on it and again “show package content”, and open Languages.xml with a text editor. You’ll find <extension>css</extension> just copy this line and paste it afterward and replace css with scss or sass (<extension>scss</extension>). I personally prefer the .scss syntax as the .sass syntax rely exclusive on tabbing and to me this mean you’ll get some errors easily. Restart espresso and you should be ok.
- apply mixins, use variables and everything you like, key word here is: DON’T REPEAT YOURSELF (DRY). and we all know how you have to repeat your self on css…
- Sass have a nice option that can allow you to watch a specific file or directory so that whenever you apply changes to the scss it automatically compile them on a new css for you. Just command-line: $ sass —watch style.scss:style.css and let sass do the homework for you (for the directory watching: $ sass —watch stylesheets/sass:stylesheets/compiled)
- When you ready to go compile a compressed css for production this will save you quite a lot of kb (on my 1800lines css i went from 42kb to 30kb - that about 30% reduction ;-). to compile a compressed css just use: $ sass —style compressed style.scss style.css
- don’t remember to use @include so that you bring all your difference css into a single on-liner css, you’ll see that browsers will love you more, oh yeah even i.e. :-P
you can find all the sass references here: http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html ah don’t forget to follow@TheSassWay they are really an helpful bunch;-)
Input Date - A quick UX exploration
During the past days we tried to understand how to put together the best UX for inputing date and time online. While this may sounds easy few thing are to be taken into account:
1) People is used to the calendar methapor for inputing dates
2) Time format differ from Europe vs States
3) In our scenario the starting and finishing date/time just tell you about When of an event and as you can tell it in a single phrase, you should be able to input it on a single line too.

The above image is our solution to the problem and is about a mix of what @brianteeman, @rpijpers and @HilsCheyne also suggested via twitter chat about the topic. Also thanks @epic_bagel for linking me to the 37 signals article about the exploration due-dates in the to-do list in base camp.
A) Date: as in our scenario when people start an event they already know the date for it - thats why we kept the date picker calendar as minal as possible to quicken the process of input your desired date (for example no week, days labels)
B) Time: instead of going trough multiple drop downs, as you see mostly out there, we thought that a masked form (hh:mm) will be the fastest way to input the time, no clicks just type it! This allow to quick input time up to the minute ( if this have to be done through drop downs means a 60 element list just for the minutes ).
C) As not everywhere people use the same time format, we will show to the people in the countries that use the 12h format a drop down to select Am / Pm. All the other visitors won’t see it and are then just free to input the time in the 24h format without having to care about the am-pm.
This solution works really nice in our usecase-scenario and we are pretty happy with the outcome. Thanks to our awesome UI/UX designer @jonnotie to have putted together such an awesome solution and to everyone of you who discussed this on twitter. This quick post is a feedback in that direction.
If you have any thought just get in the loop: @nickbalestra
Why Nooku?
Nooku is a RAD PHP framework to build web application as many other out there, It still is at an alpha level and therefore it may not be as complete as others more mature fw are, so the question is: why nooku?
Because Nooku even being at this early stage offer something that no other fw out there offer you: a platform (namely joomla 1.5, joomla 1.6, joomla 1.7 and nooku server) that all together cover more then 3 % of the whole internet. Those means it offer a patform with an already well established market.
So if you are building a RESTful web-app or service you can start experimenting, debug and improve part of the code you are writing with an actual real customer base, allowing you to not only improve code as you go but also better understanding the problem you are trying to solve and fine-and-refine you market-fit.
But things don’t stop here, as this process allow you to reuse the code you are writing at this early stage to build the bigger project on top of it, and again from this bigger project you can reuse part of the code to nurture you joomla product, get feedbacks, improve it, iterating on this over and over…that’s just pure start-up nirvana!
What’s more being fully HMVC and RESTFul and supporting json & jsonP out of the box, your way to build pure html5 or native mobile app to leverage your code, app and service is just behind the corner.
Bootstrapping is the hardcore way in the start-up world, and nooku allows you to just do that. Its like the perfect soundtrack for everyone who want to direct and produce an innovative indy film that can ends up in the box-office, of course getting there is your job;-). But being innovative while keeping bootstrapped is not an easy task, especially if we consider that true innovation is commonly accepted in its broader meaning but take a while to get accepted and adopted by users in practice as it imply new metaphors, new mindsets, workflows and approaches. In this way nooku is also innovative and not many people get it, hope that with this blog you can understand at least why the new nooku methapor can absolutely make sense.
Using Google Docs Spreadsheet to enjoy my weekend ;-)
Doing my work at beyounic I always strive for ways to make things work easier, saving time and avoiding stupid repetitive tasks. So when I heard that i had to track daily stuff on the web I just went mad. Before even starting to take this new tasks on my shoulder i was already up with a plan, a challenging one: how can I spend few hours on this and just forget about it?
My initial idea was to build a script using Xpath and after playing around and googleing for few references on the xpath syntax i just found out that google docs spreadsheet can take advantage of xpath query by using =importXml - awesome!
If you then think that google apps also offers google apps script to build quickly scripts for it, i just was set. (you can check this out here: http://code.google.com/googleapps/appsscript/guide.html)
So I did some work to import on the fly some google analytics on a spreadsheet mixed together with some other data through the use of xpath & ImportXml - refreshing and storing them on a separate sheet for reference. For the GA integration i based my work on this nice script: https://docs.google.com/View?id=dg6mf6rd_33fz36k3gj
Now i’ll just have to wait few days (or a notification from google app script that my script isn’t working…) to see if everything work as it should, if it does as i hope, I will never have to start doing that stupid daily tracking job;-). It’s so rewarding when you solve a problem even before having to face it ;-)
not sure if any of you is interested but here is my code for the script:
function dailystupidjob() {
var activess = SpreadsheetApp.getActiveSpreadsheet();
var target = SpreadsheetApp.openById(“ttrV45cR54EPqJPr3pggfyBA”);
//this id is not from mine ss;-)
var source_sheet = ss.getSheetByName(“Once a day”);
var target_sheet = target.getSheetByName(“Every Days”);
var source_range = source_sheet.getRange(“A1:J1”);
var last_row = target_sheet.getLastRow();
target_sheet.insertRowAfter(last_row);
var target_range = target_sheet.getRange(“A”+(last_row+1)+”:J”+(last_row+1));
source_range.copyTo(target_range, {contentsOnly:true});
//by doing {contentsOnly:true} I avoid to have all the rows that i generate on the “Every Days” sheet the same as they contain formulas and not just values ;-)
}
because i do some daily tracking i just run this script and the others i did with a time trigger…!
A big thanks for the hints on the script goes to Keith Twombley
