Exploring StatusNet and introducing the neo-kafei theme

I have been a big fan of identi.ca for quite some time now. If I could describe it very succinctly, I would say it is a twitter clone microblogging service, but it actually does much more than that.

identi.ca is actually an implementation of OStatus by a Montréal company called StatusNet. Over the holidays this year I took some time to install my own StatusNet site.

What does it do? Well. Let me tell you... it does a lot of things.

The basics

You know how you can have your own account on twitter?

What if you could have your own twitter?
Like, the whole thing. Public or private, as many people as you want messaging each other.

At the core, this is what StatusNet does. It lets you spring up an instant community. It also doesn't strictly limit your number of characters as some other services do... .

The federation

Why should I run my own microblogging service if I only have one user? Because you can still follow other people and interact with them even if they are hosted on a different OStatus service. As they like to say over at OStatus: "people on different networks following each other." Exactly.

Remember the fail whale? You wouldn't have the fail whale if you run your own StatusNet site, because if one server goes down (assuming it's not your own!) the rest of the network keeps going. That in terms of uptime is super cool. When identi.ca goes down for maintenance I still get updates from my friends hosted on other sites.

How to install StatusNet

  • Unzip the files into your hosting space
  • Permission the root folder and three additional folders (see INSTALL file -duh)
  • Create the database in mysql (requires innodb!)
  • Run the installer script
  • Configure additional options in the aptly named config.php file (I had to do this for the theme I made below)

It is best to have the same domain name you intend to go live with. You can change it... but other sites you follow may remember your old name!

The add-ons

Out of the box StatusNet will get you and your team microblogging, either in public or in private. You can also subscribe to anyone using an OStatus feed and reply to them within your site.

Geo-location is also enabled by default, so you can get a global map of how far your correspondence is traveling. URL shortening is included too.

Special configuration steps are required for:

  • "Realtime" live updating (as seen on identi.ca: ability to play/pause your feed)
  • Queuing - if you have lots of users
  • Bots - yes you can create your own robot
  • XMPP - chat integration with your instant messaging
  • Archiving - seems like there are lots of possibilities for integrating
  • Login - you can enable Oauth and other modules (LDAP, Facebook, etc)

I have done none of these! The order above reflects how important I think they are in priority sequence.

Our "neo-kafei" StatusNet Theme

The one thing I would really change about StatusNet is the theme. In an older version of identi.ca you could change your background color, and I did change it... to an offensive green color that was so bright it burned the eyes. It had the effect of washing out the other UI elements so I could focus on reading.

The new/current identi.ca theme, well... I think it is too distracting. The interface commands a lot of attention, and I really don't need a lot of hand holding on a website I visit many times a day.

I decided complaining wasn't worth it - that I could fix this problem myself.

So I posted a "revised" version of one of the included themes with all the color taken away. The interface is zeroed out to just the basics.

Here it is: the neo-kafei theme announcement thread!

The downloads are available here if you don't want to read the whole thread:

How to install it:

  • Unzip the package in your theme folder
  • Edit your config.php file
  • Add a line like this:
  • $config['site']['theme'] = 'neo-kafei';
  • Comment out any other items which contain the theme setting, like this:
  • //$config['site']['theme'] = 'neo';

If anything looks broken double check the files are all there:

|-- base
|-- neo
|-- neo-kafei
|   |-- css
|   |   |-- display.css
|   |   `-- mp-screen.css
|   |-- default-avatar-mini.png
|   |-- default-avatar-profile.png
|   |-- default-avatar-stream.png
|   |-- logo.png
|   |-- mobilelogo.png
|   `-- theme.ini

Note that you need to have the base theme, the neo theme, and the neo-kafei theme all in the theme folder or it will not work. Be sure you have all of the files displayed under the neo-kafei folder as I have outlined above (I'm assuming you left base and neo as-is).

*some people in the thread mentioned an issue with the tar file. If you can solve it, I would be very grateful if you could explain it. I use Unicode, fr_ca-UTF8 usually, and I often do not have old style ISO-88* encodings on my systems (很好) so maybe that causes issues if you don't have Unicode?.

Finding friends

Now that you're up and running, you'll want to find some friends whose updates you can follow. If you know some people on identi.ca you can go to their page there and click the "subscribe" button. When you paste in your profile address you will be prompted (at your own site) to confirm you want to follow this person.

The same thing can be said for groups. Go find the group... probably on identi.ca and then click "subscribe" and paste in your profile URL.

There is a really great group for people running their own StatusNet site over at http://parlementum.net/group/feds

And be sure to add me, too! http://status.kafei.ca/ryanweal

An amazing year as part of Montréal's software community

As 2011 wraps up I look back in awe at all that has changed. A year ago I moved my business from Vancouver to Montréal and things have been steadily changing since I arrived. Really good things. When I arrived last year I knew only a few people in Montréal. One thing Montréal is great for is meetups. There are tons of software meetups, every night of the week! So I put my hiking shoes on and started going to a lot of events.

I took to the streets

For awhile I got involved with DevLab and for a few weeks I did Blitzweekend events. The former was great French practice for me, I learned all about git, and then I took that knowledge to Blitzweekend where I coded my first code release Drupal projects. Then I became an approved maintainer on Drupal.org. Progress!

I also connected with Montréal's Drupal association. The association has grown over the years and 2011 marks the start of the group as a registered society under Québec's non-profit system. We also planned out a Drupal Camp (and I learned a lot - not having done this sort of thing before). Some of us are discussing running an "actual camping" event in the summer. Would you like to help? Let me know.

A new company was born

This was also the year that I channeled all of this good energy into rebranding my company. From 2008-2010 I had run under the name "Granola Systems" which was registered in British Columbia. It is a suitably apt name for a company out west, but doesn't carry the same meaning in eastern North America. For much of 2011 I reverted back to billing as Ryan Weal until our incorporation documents were complete.

In the fourth quarter of 2011 I officially relaunched as Kafei Interactive Inc. / Kafei Interactif Inc. We're registered nationally, so as long as we're based in Canada we will always have the same name. In case you're wondering, kāfēi is how you say the word "coffee" ( 咖啡 ) in Chinese. We drink a lot of coffee at our studio.

We scaled up a bit

As I launched Kafei Interactive, the new business opened up to include many more people in our production process. It was really a huge step up that has been needing to happen for awhile.

This year we brought in many more people to our nimble shop. We had one person loading content on a couple projects, a translator, at least three types of designers, a database guru, a support guy. The list goes on. In total, there are probably about ten different people we work with now.

New invoicing system

To handle the increased capacity this year we opted for a new banking and invoicing arrangement. We now invoice with our time tracking system and clients can pay online. For clients who pay by credit card, you can now collect travel points with your card. We also started accepting Interac e-Transfers.

These changes reduced the number of trips to the bank and also has the advantage of taking the post man out of the equation for collecting payments. Canada Post was on strike for a few months this year. It was a frustrating experience.

We also began a new effort to quote more accurately on our projects. This one is tough, and it has certainly taken a bite from our paycheques in the past. Estimating software is hard to do is a pretty accurate statement. In the new year we will be linking our work orders with our invoices so clients will have a complete overview of all account activities.

Lastly on the infrastructure front, we maintained a brick and mortar office for most of the year. Though looking back it seems counter to all of the "virtualization" of our business practices. At the end of the year we decided to consolidate our shared apartment situation and our office into one private studio in the heart of Montréal. We're now located in central Villeray!

Our business has changed

This one was planned but it is always interesting to see how it plays out in real life. We took on a lot more coding this year. In fact, most of what we do now is strictly programming.

We also do brochure websites, theming, and internationalization of websites.

That is a pretty wide variety of stuff, which is why we use a narrow set of tools to get things done. The coding stuff is really enjoyable and we hope to be doing more and more of it in the future.

The great give

While taking on additional coding projects we started to release our work on drupal.org. This week I finally published a variety of modules which have been in development at different points in the year.

Unfortunately our module work has been focused on Drupal 6 because that is the API we were really "steeped" in and it had the body of supporting modules we needed for our clients. We plan on releasing D7 versions of anything we post on drupal.org, but much of it will come in the new year.

What's next for Kafei Interactive

The new year is all about Drupal 7 for us. We're full time coders, so if there is anything lacking in D7 we're equipped to take on those little bits and pieces. While we're at it we're going to push ourselves closer to the current development of Drupal... that is to say, we're also going to be chasing Drupal 8 but we will be using Drupal 7 for all projects until it is declared stable and meets our needs.

Canadian Payment Gateways, Merchant Accounts and other ways to get paid in Canadian dollars (CAD)

When choosing how to accept payments online in Canadian dollars you have many options to choose from. Most of these solutions can integrate with Drupal and Übercart.

We at Kafei Interactive have supported Canadian dollar gateways including PayPal, Moneris, TD Merchant Services (Beanstream) and US-dollar gateways that connect to Authorize.net and Skipjack. We have also assisted organizations fine-tune their servers to meet their PCI obligations.

Canadian Payment Gateways

These solutions are all ones where your website must be configured to securely accept payments online. You accept the credit card on one of your site pages so the client never leaves. A payment gateway is most useful when you are doing more than $5000 in monthly sales.

If you already have a merchant account with any of these providers you're already half way there.

  • Moneris (Royal Bank & Bank of Montreal)
  • Paymentech (Scotiabank & National Bank)
  • Global Payments (CIBC and CITI Corp.)
  • TD Merchant Services (combination of TD and First Data)
  • Desjardins


Some of these accept low risk and others accept high-risk accounts. High risk stuff includes web hosting and anything related to adult services. InternetSecure resells for Paymentech if that is what you are looking for.

Interac Online

This is a new "pay page" service that is offered with some payment gateways listed above. Basically the bank has to allow their web banking interface to be used as a pay-page. So you get redirected to your own bank or credit union to pay then kicked back to the site at the end of the payment process. No confidential data is revealed to the merchant using this system.

It takes a week or more to get your money if you use Interac Online according to one provider. They initiate a transfer from the source bank, wait two days, then hold the money a week(?! not sure why this is necessary), then two more days for the transfer. I'm sure what they probably meant to say was that it takes about a week in total.

Using Canadian Dollar Payment Services

Here is where things get interesting.

For processing less than $5000 in monthly sales. Not advisable for non-profits and some others because sometimes PayPal withholds your money, for up to 6 months! Usually it takes about two days (as with most services listed on this page).

There are no Drupal modules for Interac Email Money Transfers because people need to add you as a payee in their web banking using your email address as the "target account". Configuration varies by bank or credit union. If a client were to ask for this in Übercart I would recommend making it like a Cash/Cheque option where you acknowledge payment after.

  • PayPal - can be used as a gateway and/or pay page in Canadian dollars
  • Interac Email Money Transfer - payee must add your email address as a recipient transfers complete in about 4h!
  • Hyperwallet - allows you to transfer between any Canadian accounts

Cheques and Cash On Delivery

Sounds absurd but it is more common than you think. Many small businesses make deliveries and bring the product direct to the consumer. In these cases we often provide a cheque or a pay by cash option just in case the client needs a "live" option to pay. On our websites we produce when you choose the cheque option customers are then presented with a billing address to "complete" the sale. The transaction is marked as a pending order until you as the store owner update the sales record.

Lentil soup for when a geek needs to eat...

This week I had one of those really intense programming experiences: not one but two all-night coding marathons. When I find myself in these situations my body clock goes into it's own time zone and my diet often falls apart.

Sometimes I find myself eating at really dodgy all-night restaurant in these situations. Sometimes I don't eat all. Other times I almost die of pizza and/or coffee overdose.

What usually follows after the coding marathon where this happens? Usually getting sick from all that terrible food (or lack of food). So here is some wisdom for the masses:

Make Soup

Here is a recipe my Wordpress dev roommate and I developed over the winter. It has two tracks for most ingredients so there are usually enough foods around the house to make it happen (provided you have 1 cup of lentils). We usually just cook it in one big pot and add things until it is done.

This soup is vegan. It is a life saver if you cannot digest anything else. If you really must add meat, I highly recommend bacon: the programmers' choice in meats.

Our recipe follows. Everything in the "eat" section is optional. We have never had a bad experience with this recipe! Even better if you include all the options and use broth rather than water... but we never have all that stuff in stock.



1 cup brown lentils OR 1 cup large green lentils


2 tbsp olive oil
1 onion OR garlic, chopped/minced
1 medium red bell pepper OR tomato, chopped


1 tbsp fennel
½ tsp ground cumin OR coriander
¼ tsp. ground red pepper OR cayenne pepper


4 cups water
1 cup lentils
½ tsp salt


1 tbsp lemon!
1 tbsp balsamic vinegar
2 tbsp chopped parsley

Now get back to work, hippy!