21 Oct

Getting the hang of hanging out (part 2)

A couple of days ago I experienced some some difficulties using YouTube Live Events. So today, I was all prepared:

  • Had my phone with me for 2-factor auth so I could log into my account on a second computer in order to paste links into the chat;
  • Prepared a document with all the links I wanted to paste;
  • Had the Hangout on my presenter computer running well ahead of time.

Indeed, I was done with my prep so much in advance that I had heaps of time and thus wanted to pause the broadcast as it looked like it was not actually broadcasting since I couldn’t see anything on the screen. So I thought I needed to adjust the broadcast’s start time.

Hence why I stopped the broadcast and as soon as I hit the button I knew I shouldn’t have. Stopping the broadcast doesn’t pause it, but stops it and kicks off the publishing process.

Yep, I panicked. I had about 10 minutes to go to my session and nobody could actually join it. Scrambling for a solution, I quickly set up another live event, tweeted the link and also sent it out to the Google+ group.

Then I changed the title of the just ended broadcast to something along the lines of “Go to description for new link”, put the link to the new stream into the description field and also in the chat as I had no other way of letting people know where I had gone and how they could join me.

I was so relieved when people showed up in the new event. That’s when the panic subsided, and I still had about 3 minutes to spare to the start of the session.

The good news? We released Mahara 16.10 and Mahara Mobile today (though actually, we soft-launched the app on the Google Play store already yesterday to ensure that it was live for today).

18 Feb

Scary document morning

When it comes down to working with text documents collaboratively, I’m a happy user of the track changes and comment functionalities because they allow people working together on a document to easily communicate about the text and see each other’s changes.

Over the last few days, a colleague and I have been working on a long document in LibreOffice. The document contains a number of tables and we’ve been making extensive use of comments as well as tracking our changes in this 40+ pages document. Last night, I was working on the document and accepted changes to a table as well as deleted some comments while the changes were still being recorded. I worked away at the document saving frequently. I left the document open over night since I wanted to work on it some more this morning. All went well until I closed the document.

Before sharing it with my colleagues, I wanted to double-check something in the document, but could not open it. Instead, I was presented with the following error message: Read-Error. Format error discovered in the file in sub-document content.xml at 2,4879(row,col).

LibreOffice error message

LibreOffice error message

Before going into panic mode, I tried the obvious: Closing the document and trying to open it again: No luck. I then sent it to a colleague to check if he could open it: Still no luck. Since I don’t know XML well, I went in search of someone who might be able to provide help.

That’s when my luck turned around since the first person I asked for help (actually rather if he knew who might have some more knowledge) was Grant McLean. He offered to take a look and if he could find the cause quickly, fix it for me. We conducted a quick search that revealed that it might be a problem due to an attribute being used twice in the style definition. The instructions didn’t prove too helpful, but Grant whipped up something very quickly which I’m going to share here for others to use if they are in need and for me to refer back to if I ever come across the problem again.

The instructions are for a Linux-based environment, in my case Ubuntu 14.04.

  1. Open the LibreOffice ODT file in the Archive Manager.
  2. Drag the content.xml file out onto the desktop to extract it.
    At this stage, the xml file displays everything in one long line which is not really helpful for debugging. So Grant used a little Perl script to make the file more readable. Since we were only interested in parts of the file, this script was sufficient and put in some line breaks.
  3. The script finds every instance of “/>” in the document and replaces it with a line break before “/>”. That preserves the syntax of the document itself, but allows us to get at least some line breaks in there making the document more readable. In the terminal at the prompt, type the following:
    perl -i -p -e ‘s{/>}{\n/>}g’ content.xml
  4. If you don’t have XMLLint installed, you can get it via:
    sudo apt-get install libxml2-utils
  5. Run the XML file through XMLLint to check where the error is. Note down the line number:
    xmllint –noout content.xml
  6. Open the file in your favorite text editor where line numbering is turned on:
    vim content.xml
  7. Navigate to the line with the problem. In my case, we saw the “office:name” attribute twice for one content item. Once it was removed, I could open the document again and continue editing.

But that’s not where the story ends. That would have been too easy. 😉 Since we saw that the problem was close by to / in a table, we assumed that the problem might lie there. So I located the table and removed all formatting, saved the file and could not open it again. Next I deleted the table from the file that Grant had sent me, re-created it manually, but still no luck. After some more tries with Chris Cormack who could open the file and edit and save it, we updated my LibreOffice to the latest version hoping that the bug might have been fixed. No such luck. So I went back to Grant to get the above instructions from him on how to fix this issue as it seemed that I would not be able to erase the problem quickly, but would need work on the document and after each closing run through the procedure to open it again. For the sake of being able to continue working, I was willing to use that workaround and leave the document open as much as possible.

Grant explained the steps and we jotted them down. While we looked at the document, he also showed me a neat trick:

If you open the document in vim, navigate to an attribute and press Shift+*, you are taken to the next place in the document where the same attribute is used. That’s how we found that the issue was actually with the annotations / comments and not the tables. Somehow working with annotations (possibly in a table) and deleting them while the track changes functionality was turned on, caused a problem.

Now I could get rid of the issue entirely: I deleted all comments in the document, and I could open it correctly again without dabbling in XML.

We assume that this is a LibreOffice bug, and I am happy to report it. Unfortunately, I have not yet been able to reproduce it in a small test document. It works fine there. I’ll probably need to create a longer document similar to the one that I’m working on and see if I can re-create the problem.

I’m thankful to Grant and Chris for their help, and also to LibreOffice whose files are actually archives and include an XML file that you can open in a simple editor and manipulate when you can’t open it in LibreOffice itself.

17 Aug

Amazing CodeCamp

Last Friday, 8 August 2014, I had the fortune to be able to attend the demo night of CodeCamp in East Palo Alto (EPA).

CodeCamp welcomes its visitors

CodeCamp welcomes you

The power of coding

CodeCamp is an initiative by enthusiastic coders, primarily university students, to help high school students in East Palo Alto to see what they can achieve with coding during the summer and opening their eyes to possibilities for their futures.

At the end of the 4-week summer programme, a demo night was organized where this year’s students (the website doesn’t have video or their photos up yet) pitched their ideas and showed off what they had created.

But before the students had their say, there was a short keynote address by 2 co-founders of a start-up (of which I forgot the name 🙁 ). They said that besides the obvious coding skills, coding can teach the following:

  1. Power of focus
  2. Think for yourself
  3. How to build great relationships because coding is a team sport

All these three qualities were demonstrated by the students during their project pitches. We listened to pitches from 6 student groups that all had different project ideas for which they had created a website.

The projects

AfroGan is a group of 3 young women who created a site to showcase their cultural heritage and provide information about African American and Tongan culture, food, traditions etc. They created the site because they didn’t know much about their own cultures and wanted to explore them further. They invite others to participate and provide information, photos etc. to enrich the site.

The Pointeers are a group of 4 young women who wanted to give non-profits in EPA a voice and encourage young people to go to events. They would not only provide a platform where non-profits can announce their events, but also where they create activities / missions / challenges for young people to complete when they go to these events thus making it more fun for students to participate.

Vicious and delicious are a group of 3 young men who created a site where you can scan your shopping receipts so that you can look them up easily when you misplaced them or thrown them away. The site would also allow you to geotag them to be reminded more easily where you bought stuff.

Positive Vibes was created for teenagers to come to for help when they experienced abuse, bullying etc. The 3 teenagers who created the site have seen their fair share of abuse and sadness in their community, and they want to make a difference. Their site does not only offer written advice, but would also have counsellors available that could talk to the kids who seek support and help them as best as possible.

Nemesis Gaimz is a collaboration of 3 young men who created a game that you can easily play on any computer and for which you wouldn’t need fancy equipment. They created all the graphics themselves. The best thing about their game was the language used for when you you got hit by an obstacle and you lost that level. They didn’t like the “You are dead” language as it’s negative. So they came up with “You are deaded”.

And last not least, SuaveFX, a collaboration of 3 young men who set up a site to showcase local talent.  They want to get the word out about their local stars and give them a platform to present themselves.

All 6 projects were well thought out and showed a lot of maturity amongst the students for finding their topics. They were predominantly community-focused, and you could tell that they thought about their projects a lot to come up with something that was worthwhile pursuing. Part of their project presentations was also to pitch their projects to the audience as they would need funding to continue their efforts and put their sites and services up online. We did not get to vote for our favorite project (maybe something to do at next year’s CodeCamp), but could ask the students questions about their project progress, what they learned and where they wanted to go from here.

Outcomes of CodeCamp

The aims of CodeCamp were not only to teach them coding skills, but also soft skills and empower them in finding who they are. Yes, the students learned HTML, CSS and Javascript, and they worked with Foundation and Bootstrap once they had gained knowledge of how to set up a website from scratch. But they learned so much more.

I had the opportunity to speak with Shadi Barhoumi, one of the main organizers of CodeCamp, and it became clear to me that community empowerment and community building was important to him for the CodeCamp and teaching the kids. They did not only code, but they also played games and music together, went on excursions and came together as a group.

A number of the kids said during their final remarks that they have a new family in all the participants of CodeCamp. They grew very close to each other and appreciate each other much for who they are. The road was not always easy, but with the help of their mentors, they pulled through, finished the program, and now have something to show off. Some also said they got skills that will take them far, and they now have the confidence to apply for an internship or even look into studying programming at college / university. They now have a better outlook on things and see themselves a part of the tech industry that surrounds them, and will take further steps in them.

One student said: We are seeing how we want to be: loving, amazing and skillful.

I was interested in attending the demo night because we run an annual Open Source Academy in Wellington for high school students. Thus, I wanted to see what other programs do, and what we can learn from them. I learned a lot from CodeCamp just by having been at the demo night.

Shadi and the other mentors accomplished a lot with the students giving them a new outlook on their future by opening up a career path for a number of them who had not considered computer science as a career. They also helped the kids by coming together in a very tight knit community and making them see that it’s not just about the work you do, but also with whom you do it and that you need others on your team. Demo night was attended by parents and friends of the students as well as other community members who are involved in community activities in EPA, and then a few others like me who have more or less loose connections with the program.

I enjoyed watching the kids interact and move effortlessly between their work – presenting their pitches – and play and talking with members of the community about CodeCamp. Not just making it about the coding, but also having a good deal of time available for the students to just play is great. Having been located at a school where they can go outside and play ball or run around has its advantages. We’d be very limited in our multi-story building in the city center for such activities.

One thing Shadi mentioned that helped the students get into the mood for the summer of coding and for sticking with it, was the hackathon that was organized at the beginning of the program. The hackathon was so very intense and energizing that it was the perfect start to capture the students’ attention and make them want to continue. And by judging the enthusiasm that the students exhibited at the end of the program, it worked out very well.

The things that I took away from the demo night were that immense sense of community amongst the people there from EPA, the enthusiasm that the students showed throughout the event and also their insight into what their community needs, and the great opportunity for the students to demo their project results not only to their fellow campers, but to the wider community.

So, if you are looking for a talented student with knowledge in HTML, CSS and JS, watch out for the CodeCamp students.

Motto at CodeCamp: Show, don't tell

Motto at CodeCamp: Show, don’t tell


12 Jun

Geany on the computer

Having great tools to work with makes any activity more enjoyable. Recently, I discovered Geany, a text editor “with basic features of an integrated development environment” in my search for an editor that does syntax highlighting for reStructuredText documents.

On Ubuntu Maverick, I had syntax highlighting for gedit, but that doesn’t work anymore under Ubuntu Precise, and I haven’t found a way to make it work yet. As I don’t want to use Vim (its great for basic stuff, but I don’t want to write entire documents in it), which would be another alternative, I hunted the web further until I came around to Geany.

Granted, Geany can’t do syntax highlighting either, but it does understand rST besides a whole host of other markup and programming languages. That’s why I am sticking to this software for the time being because it is one step up from other editors I’ve seen.

Here’s what a typical Geany window looks like.

Geany editor window

Geany editor window

Selecting the correct language is easy: Go to Document → Set filetype → Choose your filetype.

You see the text document on the right-hand side and the structure of the document according to the headings on the left-hand side if Geany knows your markup or programming language. That makes jumping between sections in a large document very handy. All you have to do to get this “Symbol list” is to go to Edit → Preferences → Interface → Select “Show symbol list”.

Then Geany also highlights the line of text that you are currently editing / where the cursor is located. This is quite nice when you switch between documents and might have a longer one open where you want to find your position quickly.

Since I write text that can consist of longish paragraphs, line wrapping is quite important. I can’t have hard line breaks because they would show up in the user manual I am writing and compiling with Sphinx. However, always having to scroll horizontally would be a nightmare. In the beginning I just went to the menu item and set the line wrapping manually all the time, but got annoyed by this rather quickly because I had to do it every time I opened a document.

Thus, I went in search of a system preference because I thought that this should exist. And lucky me, there it was: Edit → Preferences → Editor → Select “Line wrapping”. While there, I also enabled the settings to get rid of trailing whitespace and will see how that turns out.

So altogether, it’s been a good experience with Geany so far, and I have only scratched the surface of functionalities included in the software. I hope that syntax highlighting for rST files will be added at some point. It is already on the wishlist to add support for Vim language files which should also solve the problem.

I like my Geany on the computer.

Genie from the bottle; CC BY-ND licensed by Loren Javier

Genie from the bottle; CC BY-ND licensed by Loren Javier

21 Aug

EYC unConference (Part 3)

After a wonderful lunch and small talk at the lunch buffet, we had two more sessions at the EYC unConference today. You can read part 1 and part 2 before continuing if you haven’t already done so.

Low budget user testing

Courtney Johnston offered to facilitate a session on user testing and how to do that on a shoe-string budget.

A lot of user testing can be done by using paper and web site mockups. You also do not need hundreds of users, but can often already get an idea when you ask about 6 people to participate in a card-sorting activity or give them a task to complete on a web site. Some professional usability testers may bury their head in the sand when they read these lines, but here were are talking about testing web site for communities that operate on a very low till non-existent budget who cannot afford to have sessions in a usability lab and use awesome, but expensive software and setups to conduct their testing.

Often, even only with a few number of people, you can get an idea of whether a certain navigation works, whether menu items are named logically etc. However, when you only have access to a small number of people, you should be acutely aware of their ICT background to interpret their answers correctly and not make false assumptions and objectifying these.

Getting started with user testing

Courtney Johnston provides tips of how to do low-budget user testing; CC shared by Kristina D.C. Hoeppner

Feeding back to software developers

Tim McNamara offered the last session that I went to for this day of learning more about community involvement online. It was on how to give useful feedback to software developers. That was a dear topic to me as I get frustrated sometimes when people write forum entries or send me emails from which I cannot really make out the problem and try to solve it. It always takes a lot of effort to figure out what the issue might be and how to solve it.

The Google Project Hosting issue tracker is a good example of how to guide users in providing constructive and useful bug reports. When you open a new issue, you don’t just get an empty text box, but depending on your bug report, you can choose a template which then gives a few suggestions of what to include in your bug report. The template for a “user defect report” has the following items:

What steps will reproduce the problem?
Step 1.
Step 2.
Step 3.

What is the expected output? What do you see instead?

What browser (or hg/svn client) are you using? On what operating system?

As these questions are written directly in the text box, people can’t overlook them. 😉

I will have to check if we could also add such pre-populated text in Launchpad for people filing Mahara bugs. That would be very useful.

Now what?

Currently, I am still in the processing phase because there was a lot of information today, a number of web sites to check out, things to try out for myself and wrapping my head around. It was great to meet people who create web sites for non-profits and a lot of times use open source. Joomla was talked about quite a bit as a person ran two sessions on it whereas other CMS were hardly mentioned (we should remedy that next time). However, as was pointed out when the Wordle was shown: Drupal sits on top of Joomla and has “brain” right next to it. 😉

Words shouted out during the closing session of EYC unConference to say what was important

EYC unConference in a Wordle; created by Wellington ICT

A big Thank You to the organizers and volunteers as well as the participants of the unConference who made that day a great learning experience.