Nick BalestraNick Balestra Personal Blog

Comments

on team chat tools

Depending on how your team is structured and your way of working within the team chat tools can help increase productivity, keep the whole team aligned on different matters and discuss various topic without the need of proper meetings for this. The con side is that over-abusing them will just ruin the point just mentioned. At beyounic we did run our backchannel for about an year on hipchat (www.hipchat.com) and recently moved to campfire (www.campfirenow.com), why? here we go:

About Hipchat:

Hipchat is a pretty good tool, it has strong notification system that means that if you are @mentioned in the chat while you where offline you will get an email with the message and a link to the history of that discussion. Altough this is a powerful feature it is sometime a little stressy and is either on or off (btw not all the mention need such attention). The second problem we had with hipchat was that we couldn’t invite (even as guest) in our rooms someone that was already using hipchat in another organization (unless he register with another email of course). Is not something that will happen often but when you need it, it sucks. Client side Hipchat offer his own desktop client (together with iphone app and web app). The client is not bad. Hipchat also allow you to set your status like available, away, and do not disturb.

About Campfire

Until I discovered that campfire, form 37signals, has many 3rd part nice client applications to access it I never took it as an option, as using an only web access chat is not what i was looking for. Campfire has much less features but the more I use it the more it make sense to me why this features are not there. Mainly you don’t have notification on mentions like hipchat does, and you cannot set your status: you either inside a room or you are not, as simple as that. I think it all come down to the philosophy behind it having strong notification is like having your coworkers always taping on your shoulder to show or ask something resulting in you getting more distracted. I think urgent mention are important but this could be easily solved using hubot and writing some short scripts, maybe relying on the twilio apis to send urgent notification even via sms, but we will come back to this later. The lack of features forced us to restructure our rooms a bit more efficiently. We use a watercooler room for the easy going chat, and we have a room specific for single topic, like dev/code only for a single product. we won’t discuss features in those rooms, just code.

After a week running on campfire we are pretty happy, it’s overall a bit quieter then compared to when we runned on hipchat and a little less intrusive. Most of uf choosed flint as the preferred client (http://giantcomet.com/flint). Flint is a pretty slick thin client that also comes with nice personal keyword aler, meaning that you can set up special keyword to highlight message in the chat or trigger crawl notification. Flint leaves out history and shared files, but if you looking for such on your client you can check out propane (http://propaneapp.com/), for a whole list of extra clients and apps using the campfire apis check this out: http://campfirenow.com/extras.

In certain case email notication could be really useful, for us this was the case especially within our support room where referring tickets to someone not in the room was needed. This was pretty easy to achieve by creating an hubot script that recreate the hipchat notifications system via email with just with few lines of code. As I didn’t find any script to address this issue I just wrote one my self, you can get it here if you need it:

https://github.com/nickbalestra/hubot-email-notify 

For who doesn’t know what hubot is: Hubot is a bot originally created by github to run on their own internal campfire rooms (although you now find adapters for other system like hipchat as well). It’s built on node.js and scripts are written using coffeescript. Among a lot of useless scripts you find out there (https://github.com/github/hubot-scripts/tree/master/src/scripts), I’ll like to mention the twilio adapter (https://github.com/github/hubot/wiki/Adapter:-Twilio) that can be really awesome if you want to send instant sms to someone in the team (or all of them) for urgent issues, or even accept commands inward from sms you send in. Another awesome thing that you can use hubot is for “continuos integration” especially if you pair it with capistrano (a nice article can be found here on this matter: http://tomb.io/posts/hubot-ci-and-deploying/). Deploying via hubot directly via the team chat room, will allow designers and people who don’t manage server/infrastructure to deploy their commits on the fly… continuos integration ftw.

Comments

There is no Startup Generation yet in ticino

Even if this post may sound provocative, it come from the heart of an entrepreneur, that although the possibilities availables like courses, incubators, and so on, just keep feeling lonely. You can see this post as some sort of mantra or manifesto for the startupgeneration group we created in Ticino, Switzerland.

Here, everything seems to be top-down, and everybody seems to accommodate to this. Nobody seems happy, but nobody stand out and shout about it. Everybody wait for institutions to give them help, infrastructure, mentoring, money, and everybody is getting what they are asking for, more or less, but there is a subtle problem in this top-down way of dealing, the wrong culture get created and promoted, because entrepreneurs should be the ones who do, who try, who follow their visions, they should be the ones who build and fight for what they believe, they should be the ones who create value not the ones who consume value, they should be the ones seeking to share, to learn from others, and finally they should be the ones who leads, not who follows.

We should all invest in creating and nurturing a culture of sharing, more then anything else. Startups without this have really few chances of succeeding, and we will end up all losing. But if this need for sharing and nurturing such a culture doesn’t come from the ones who run & create startups first, it will be impossible.

We created this group exactly out of this need, the need to share our thoughts, our learning, our experience, our failures & mistakes, our insights, the need to validate our ideas by exposing them to others. But during this years we have fought against a pretty strong NDA kind of attitude. Sharing doesn’t mean revealing strategical informations, but if you are scared of talking about your idea because someone else could stole it, then ask your self if it’s an idea worth following, ideas can be stolen but their executions belongs only to you. We have seen incubators builded around closed doors cubicles, where no lightning talk, demo days, camps or any kind of cultural event exist. We have seen shirt&ties. We have seen tons of awards and contest where very few understand that awards are made for the ones who give them not for the ones who get them. Before caring for getting funding, let’s care about creating and nurturing our startup generation culture, there is no money that can do this, it’s only about us.

Startups aim big, they wanna change the word and disrupt it, but if we cannot even change our little local mentality, culture and town, how can we imagine to change something bigger. If you care, act.

Comments
The biggest risk you can take is taking no risks
— #sus2011
Comments

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.

Comments

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. 

Comments

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.)

Comments

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.

  1. img have to be max 64x64px in size
  2. 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
  3. 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.
  4. 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/

Comments

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 ;-)

Comments

Using Sass to write DRY css

Here my first experience using sass to manage css.

  1. first of all install sass (thats pretty simple, just:  $ sudo gem install sass (you can du without sudo too;-) 
  2. 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.
  3. 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.
  4. 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…
  5. 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)
  6. 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
  7. 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;-)

Comments

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