Monday, May 30, 2011

New look of CSC Lounge

The major feedback we got was on our UI so we decided to do something about it.

Throughout the month of May, we have been trying either to recruit UI/UX experts into the team or buy a UI. A fortnight ago, we decided that we would hack our UI ourselves if we don't get a UI/UX expert with our requirements. We knew the technologies involved, we are trained computer scientists, we know the issues and the things to look out for but we were just not UI people. I did the last interview for a UI expert on Monday, 23rd May and I thought we had gotten our man, I even blogged about it. But it appears our new recruit was not ready for the fast-pace which we require to move at when he didn't show up for out (proposed) UI hack for the first two days.

When you want a UI which loads in the quickest time possible and you want to control every code that runs the UI, it's hard to get someone. Around here, what is mostly obtainable is people who create image slice in Photoshop for their webpages. We didn't want that. This is more reason why CSC Lounge is needed!

Buying the UI was also an issue because most theme shops require buyers to pay via PayPal -- and in Nigeria, PayPal services is not available (I really wonder why I didn't get my foreign friends to help me buy and e-mail it to me, maybe because I'm not a fan of buying UIs).

Hacking the UI was the (only) option available to us. Jide designs HTML at his current full-time job, but not in the way we were going to do it. Hacking web UI would be a new experience to me -- a (mainly) back-end and application logic coder. I was excited!

We hacked from Thursday 26th and Saturday 28th May, 12:00 am to 6:00 am each day, eating only fresh fruits in the process. We logged our sessions on twitter from time to time with the hash-tag #CSCLoungeUIHacking. We hacked with just notepad++ and our browsers -- no IDEs involved/allowed.

Our first draft UI has been hosted on our domain and it's accessible via http://csclounge.com/new/. Jide did the HTML, I did the CSS and we had colour advice from my younger brother Anthony. We are currently finishing-up the CSS and yet to do the images, but that is the final theme and outlook.

Please check it up and give feedback. Thanks.

Special thanks to those who were with us on twitter during the process and also those who thought that it was a bad idea tweeting our coding sessions: @DavidAdamoJr, @OOTheNigerian, @Mukoshy @LatoyeCFC.

On the 14th of June, I'll be 23 (I'm feeling old already) and we would be releasing the fully functional version 2 beta by then.

P.S.: Anthony is a final year architecture student at The University of Nigeria and currently holds the award of the most creative student in his school. Awarded by the Students' Union. He heads a team of digital and print graphics designers. Connect with him on Facebook here

Connect with CSC Lounge
Twitter: @csclounge

Sunday, May 22, 2011

Building Nigeria's Tech industry -- You are responsible

Last Tuesday, I was a guest at the first meeting of 200 and 300 Level, University of Lagos' computer science students who are beginning now to plan their participation at the 2012 Microsoft Imagine Cup. In attendance at the meeting was no fewer than 10 student tech enthusiasts, including 2 ladies. Upon quizzing one of the [pretty-looking] ladies, I discovered that she was still in the foundation program with a lot of interest in DBA -- particularly Oracle. My presence there was some sort of inspiration to the students as they plan their onslaught.


So who am I?

"Once you are lucky, twice you are good" -- Sarah Lacy

I had been a member of teams which won two editions of the Microsoft Imagine Cup competitions (Nigeria challenge), back-to-back. I was the Leader of the team the second time. In 2008, my team represented Nigeria in Paris and in 2009 my team represented Nigeria in Cairo (with me as the team leader).

I'm currently serving an extra session. I should have graduated last session -- also, I should have dropped-out of school. Due to the advice of my course adviser, I took few units both semesters of last session, deferred my final-year project and spread my final year over two sessions. This enabled me put more into my technical and entrepreneurial development.

Among the students present, I personally mentor 3 of them directly. Currently, my presence with the students means a lot to them, it's like a morale booster. It makes them believe that being technically sound pays -- even if it's just a free trip abroad!


On being technically sound...

A lot has been said about Nigerian graduates not being technically sound. Lately, there was a heated discussion when someone put-up a really short note on how many Nigerian techies are just a reminiscence of Milli Vanilli.

Really, I remember how it used to be when I just got admission into the depertment. For one, I was the only one in my class who would (arrogantly) focus on the technical importance of what is being taught as opposed to the grades. This is probably partly because I was writing code before I got into the university and partly due to my undying interest in computer science. It took like my second Imagine Cup victory for a lot of my classmate to begin to see beyond the school grades but this didn't go deep because the set following suffered the same fate.

A lot has changed now. With the ascent of Dr Fasina as the new HOD, a lot of focus has shifted from just producing a set of nice grade, ply-card carrying graduates to producing technically sound graduates. This is quite evident with the introduction of a modern functional programming language (python) into the school's curriculum for year 2 students. But with the fascination with the Imagine Cup, I'm sure it would take more than that to get students to see the real importance of having the skills.


A change in direction...

While speaking to them, I was quick to remind them that having technical skills was more important than taking part in the Imagine Cup. I told them that the Imagine cup was just an opportunity I took advantage of -- because of my skills. I made them see the importance of building a community that would be of mutual benefit to everyone in it. They could discuss on the new cool thing they are learning and the project they are undertaking. They listened and they noted it.

They listened because they see me as an influential figure that has a few feathers of achievements on my crown. They would listen to anyone else whom they view in such light.


You are responsible!

We can write notes and blog posts, and move around in an [air-conditioned] saloon car, and complain about how bad it is to get people to employ and/or work with us on projects and how the school system is so messed-up in Nigeria.

That is easy, very easy.

Much easier still is talking [and blogging] about successful Western tech start-ups. Their stories are just so magical, like they were taken from a nursery school fairy-tale.

The hard part is doing something about it. When it comes to this, there is always an excuse -- "I'm too busy", "they didn't even design the page well", "No I cannot write or talk about them, they are wannabe's, and they probably won't go far". While we give these excuses, Nigerian universities continue to produce graduates who are not technically sound and who would have been better if they had a little mentoring. A little more motivation from people who should actually set standards in the local IT scene would make a lot of difference.

Lately, one of my [graduated] classmates argued that most successful tech entrepreneurs were just business people who hired technically-sound people (citing Bill Gates as examples) and that being technically sound would not take you far. I wonder how many (Computer Science) undergraduates operate with these principles. But in the midst of all these, a lot of them still want to know and would do better if you spared a little time, out of your comfort, to tell them what they could do -- from your experience.


Re-introducing CSC Lounge (http://csclounge.com)

It is on the backdrop of this that I and a friend came together to create a web platform which allows you to indirectly mentor undergrads. We call it CSC Lounge. CSC Lounge lets you post technical 'dumps' -- tweaks, how-to's, slides or a fully fledged article -- in order to instil interest on undergrads. The follow-up on this would be a series of discussion which would provide an opportunity to mentor students who are interested. We are also building algorithms to recommend users to employers based on the users' activities on the platform.

I had earlier started-up a direct mentoring project (see http://ezeokoyecelestine.blogspot.com/2010/09/raising-successors-celestine.html) and it has been successful with the only student I recruited onto it. In a period of 6-months (or less), I've helped him chart a course in Java programming with impressive personal projects (GUI based single user and networked multi-user tic-tac-toe game, multi-tab text and HTML editor with different colour themes, etc) to show for it. Currently he's grabbing database development. He did these while still maintaining a good grade. I didn't do this by sitting with him and instructing him all day. I did it by first igniting interest in him, then occasionally checking on him from time to time and answering his questions. I know a lot of impacts would be made if we can reach out to undergrads in this way.

Based on the feedback we got with what we currently have, we are re-implementing to include a number of use-cases and a redesign. We would re-launch soon with a more appealing UI/UX and more interesting use-cases and we would call on you to help mould Nigeria's future.

Get Involved!

Tuesday, May 17, 2011

Kowaa -- Explain your database to Apache Solr.

CSC Lounge (http://csclounge.com) is currently being reimplemened.

Major feedback we have gotten revolves around the need for the UI and UX to be more modern, colourful and intuitive and we are working to meet those needs. But it's not only the UI that we are working on, we are re-implemening the whole system with the Scala-based Lift web framework. The major reason we chose Scala is that it is more cost effective and flexible, besides it's what the cool chaps use for their systems now-a-days (ask Twitter and Foursquare). One of the module which we worked on (and is currently ready) is the search module.

The search was built on Apache Solr (http://lucene.apache.org/solr), an open-source search server created with Java on top of Apache Lucene (http://lucene.apache.org/java/docs/index.html). Solr is an amazing product and recommended to anyone building a web system from scratch (or already has a running web system) and want to add search functionalities. It works by allowing developers import indexes, which would be persisted to disk as documents containing fields that are accessible to search. Beside just searching, the results can be returned highlighted or transformed in whatever way the developer wants. Results could also be returned in several formats including XML (the default), JSON, PHP, Ruby, Python. Most of these features are actually base features of Lucene (which currently powers twitter's backend and a number of NoSQL DBs, like CouchDB). Solr allows users to import indexes from different sources -- XML, RSS, Wikipedia or an already existing database. Ours was the case of an already existing database. The problem with the process is that you have to manually create an XML file which tells Solr how your database is defined. This is a stressful process as you have to switch between the XML editor and your database and, in between, decide what you want to index. God help you if you have a complex database system which requires nested Solr fields.

This is where Kowaa comes in.

I created Kowaa to automate the process. It's a simple Java-based GUI tool that connects to your database and provides interfaces for you to set the properties of the Solr document and fields. It presents you with interfaces to select which database fields you want to index. It also allows you create nested fields. It then spits out the XML you need in a directory you specify. You can now customise by setting transformers (like HTML stippers) and other processors. I searched the internet for a tool to do this and I didn't find any, so I created one.

I used it with Microsoft SQL Server but I included options and JDBC driver libraries for indexing MySQL, PostgreSQL and JavaDB (network and embedded). To download, just follow the URL http://csclounge.com/kowaa.rar. The file contains both the source codes and the build so you can customise the code as you want to. It was built for internal use but we figure it would be needed so we are giving it all free! So if you are looking to set-up Solr on your site on an already exsting database you might want to take advantage of this.

After downloading, extract to any directory of your choice and run by invoking the following command on the command line:

$ java -jar path_to_extract/dist/Kowaa.jar

What does Kowaa mean?

Kowaa is Igbo word for "explain". Ifetayo also reminded me that when you break it into two, it means "teach us" in Yoruba (Ko waa). So it's more like explaining (or teaching) Apache Solr what your database is.

Friday, May 6, 2011

Don't trust the ecosystem

I was supposed to have a 'date' yesterday afternoon but my date had a couple of reasons to cancel it. I was a little disappointed but thankfully, I had invited a co-techie over so we had a handful of gists. I, being a newbie in the community, had a lot of listening to do. He summed up with one piece of advice "don't put much trust in the 'ecosystem'"

This was affirmed when I got a digest mail from the Lagos GTUG which I am a member of. The mail introduced a Google site created by one of it's members to connect local developers. No, the concept is not bad in itself, in fact it is wonderful. But if this invention was not a part of what I and the creator discussed in my bid to get him to join the CSC Lounge team, I wouldn't be posting this blog.

A couple of weeks back, Jide and I decided that the job at CSC Lounge was getting too much. We had more on our TODO list than we have on our DONE list, so we decided to hire the service of a creative personnel to ease off the stress. After a couple of considerations, we shortlisted a few people whom we should approach. We decided that we each talk to our acquaintance. Mine was a guy I met at a tech event I attended earlier whom I thought would make a good teammate.

After discussing a handful of the idea, the prospects and the benefits with him, we did a little brainstorming and pruning. I would say the discussion went well and he promised to get back to me with his final decision. I was expecting his call or e-mail -- well quite! The call or e-mail never came. Then I got the mail about his invention.

The worst part of his lack of personal creativity is that he used the same name as CSC Lounge but with a little twist! (CSC stands for Computer Science)

Google, our host on the tech user group which we both are members of, run with the policy "don't be evil". Hmmm... I smell some evil playing out.

Meanwhile, I'm having a second look at developer ecosystems, I think my techie friend (who visited yesterday) is right in a lot of ways.