Software Development

Recap of YorubaName.com Hackathon

On 8th April 2018, we had the very first YorubaName.com hackathon, which was kindly hosted by HotelsNG. For a background information about the reason we put the hackathon together, do read: Get Set for YorubaName’s First Hackathon.

The turn out of developers at the hackathon was lower than expected, but this did not prevent us from going ahead with the objective of the hackathon: which is to work on some of the issues: bugs and feature requests previously recorded against the YorubaName code cases on GitHub.

At the end of the day, we were able to work on 5 issues. They include:

Facebook commenting system
https://github.com/Yorubaname/yorubaname-website/issues/41


With this, users of the dictionary will be able to share comments or stories they know about names in the dictionary. We believe this would add to the interactivity of the dictionary.

Show date modified in the dashboard
https://github.com/Yorubaname/yorubaname-dashboard/issues/25

This is a feature that helps lexicographers see when last any property of a name was updated.

Automatically Populate the etymology with values entered in morphology
https://github.com/Yorubaname/yorubaname-dashboard/issues/10

This is another issue that benefits the lexicographers managing names in the dictionary. It allows for the automatic population of the etymology with values entered in morphology. This should end up being a handy time-saving feature.

Remove the display of “See also” attribute
https://github.com/Yorubaname/yorubaname-website/issues/50

Every name entry in the dictionary has a “see also” attribute which allows users of the dictionary to see other entries that are similar to the ones they’re currently reading. We are removing this for now until it is properly activated.

Make it seamless to start up the website in development mode

This is a nice improvement that will improve the experience for developers who wants to work on the codebase. This involves the creation of a new application configuration file with settings that ensure the database tables are automatically created on the first run in development mode.

I would be reviewing, merging and deploying to production these changes in the coming days.

All in all, the hackathon was an eventful one for me, not only did we get to work on the issues listed above, it was also an opportunity to hang out with other volunteers of the YorubaName dictionary project. From the look of things, I think we should be having more of these events! 🙂

Special thanks to all who attended, to Adewale Abate(@Ace_KYD) for coming through, and also to HotelsNG for playing host.

Till the next hackathon, Cheers!

Collaborating with Git Workflows: Guest Talk at YorubaName Hackathon

This is a guest post by Adewale Abati (@Ace_KYD). He will be speaking at the YorubaName Hackathon on 8th April 2018

The Yorùbá Names Project is an example of awesome projects built on the back of community and collaborative work. There are multiple ways to leverage on building amazing products through open source and the GitHub platform.

On April 8th, I’ll be speaking at the Yorùbá Names Hackathon with other open source enthusiasts and discuss how we can leverage and improve the process to deliver even more awesome projects for our communities.

I’d be breaking down Git workflows using GitHub. A lot of us already use Git to track our code changes, we are already familiar with commit and push especially because we use them all the time in our personal projects.

However, when it comes to teamwork, more consistency is required across commit messages, branching strategies and a bunch of other tools you’d need to stay on top of the game over multiple people working on the same project.

There are several publicized Git workflows that may be a good fit for any team, and I look forward to discussing some of these workflow options with everyone.

 


YorubaName Hackathon is happening on April 8th, 2018, at HotelsNG: No 3, Birrel Avenue, off Herbert Macaulay Way, Sabo, Yaba, Lagos. It starts at 12 noon. Find the registration link here: http://bit.ly/YN7Hackathon

Getting Ready for The YorubaName.com Hackathon

The YorubaName Hackathon is almost 2 weeks away. In this post, I quickly share some things you can do as a developer to prepare for the up-coming event.

Installation Guide

The YorubaName.com application consists of two separate applications. The YorubaName Website Application and the YorubaName Dashboard Application. The Website application powers the backend services for www.yorubaname.com, while the Dashboard is the application through which lexicographers manage the entries in the dictionary.

Each application runs separately, have their code base live in separate repositories and have different software requirements.

For running and working on the YorubaName website application, you need to have the following installed

JDK 1.6+ (See installation guide)
MySQL (See installation guide)
Maven (See installation guide)

For running and working on the dashboard application, you need to have the following installed

Nodejs (See installation guide)
NPM (See installation guide)
Bower (See installation guide)
Grunt (See installation guide)

Architecture Guide

There are a couple of things you can do prior to the hackathon to get some understanding of the code base and how things tack together.

This includes:

Read the Contribution Guidelines for YorubaName Codebase.

Also, make sure to check the ReadMe for the website codebase and the ReadMe for the Dashboard. These contain essential information on how to install and run the application.

Another important thing to do in preparation for the hackathon is to watch the recorded webinar on how to get started working with the YorubaName codebase. This webinar shows how to install the required software, how to clone the codebase, and how to run both the website and dashboard application and have them interact with each other. Watching this video is highly recommended.

Last but not the least, if you have any question, please feel free to come along to our Gitter dev chat room and ask. I try my best to answer whatever questions you might have.

In case you are yet to register for the Hackathon, you can do so by following the registration link. Remember, the Hackathon is happening on April 8th, 2018, at HotelsNG: No 3, Birrel Avenue, off Herbert Macaulay Way, Sabo, Yaba, Lagos. It starts at 12 noon.

Get Set for YorubaName’s First Hackathon

On April 8th, 2018, YorubaName.com would be hosting its first ever hackathon.

At its very onset, the Yorùbá Names Project has always been envisioned as a project to be driven by communal and collective effort. Which is not surprising since language and culture, are artifacts that are forged by the commons. Who owns a people’s culture? or a people’s language? Or a peoples volume of names, other than the people themselves?

If someone adds an entry to the site, a second person updated the etymology to correct an error, a third person updated the geolocation while a fifth person added links to famous people bearing that name: At the end of the day, who owns the content that was created by these 5 people? The simple answer is no one owns it, but at the same time, it belongs to all of them.

This is the reason why we have embraced an Open Source model for the development of the Yorùbá Names Project. So that it can belong to all. All codebase for the project is available on GitHub. All development is done in the open on GitHub. All issue tracking is also done on GitHub. Everybody and anybody are welcome to contribute code to the codebase.

If someone designs the look and feel of the YorubaName website, and another hacks together the CSS and HTML, while another puts together the backend code that powers the site, who owns this technical creation that powers the dictionary? Again, the simple answer is: it belongs to all.

That is the spirit of collaborative and communal development we have embraced with the project. The Hackathon, come April, is yet another expression of this communal approach.

It is going to be an event where we bring together developers/designers, and together, work on fixing issues and implementing some of the feature requests that have been noted down on GitHub.

It would be on April 8th, 2018, and would be hosted at HotelsNG. The address is No 3, Birrel Avenue, off Herbert Macaulay Way, Sabo, Yaba, Lagos. It will be from 12:00 noon to 5:30 pm, its going to be a time of coding, debugging, fixing issues, learning and interacting with other developers!

Registration is now opened, so if you plan to attend, please register by following the link http://bit.ly/YN7Hackathon.

I would be providing more details, in the coming days, regarding various aspect of the Hackathon. Like the agenda, things to do to get prepared etc. So do keep an eye on this space, or better still follow me (@dadepo) and the YorubaName project(@YorubaName) on Twitter.

Achieving Multilingual User Interface

On November 14, 2017, we turned on the Multilingual feature for www.yorubaname.com, making it possible to view the content of the website not only in English but also in the Yorùbá language.

If you visit the Dictionary now, at the top right corner, you will find the language switch button.

This language switcher allows a user to toggle the language in which the content of the website is displayed. Right now, English and Yorùbá are supported. Clicking on YOR would switch the website’s’ language to Yorùbá.

Multilingual capabilities have always been a feature we planned for the YorùbáName dictionary. It was not an afterthought; we knew at the very beginning when we started working on the codebase for the YorùbáName dictionary, that we would like to support multiple languages.

Even though it was not going to be possible to have multilingual at launch, we made sure, the technical infrastructure to easily support multiple languages was in place. So that when the time came, it was easy to add another language, since the technical foundation that was needed has already been laid.

In this post, I will quickly give a broad overview of the technical aspect that enabled us to easily support a multilingual user interface. I will also mention the things we still need to do.

The Building Blocks

The YorùbáName website is built using Spring boot, which makes it easy to quickly hit the ground running when developing applications with the Spring Framework.

One of the advantages of having a framework like Spring at your disposal is the fact that there are already implementations for a lot of the supporting features, outside the business logic that is needed by a non-trivial web application.

So when it came to building the multi-lingual support into the YorùbáName website, it was a matter of assembling the necessary components and configuring them to taste, rather than having to develop the necessary moving parts that would be required for such a feature from scratch.

Spring framework provides 3 main components that were used to achieve our aim. But before I touch on them, let us imagine we need to build multi-lingual support into an application, but without the support of Spring. What would this entail? What are the things I might have to develop?

I can imagine I would have to build something that allows the user to select the language they are interested in. Then provide the mechanism that communicates the selected language to the rendering part of the application. Maybe using sessions, the URL, HTTP headers, cookies etc.

I would then need to make sure the rendering part of my application is built in such a way it can resolve to different texts depending on the selected language.

And all these would need to be built with user isolation in mind, so as to prevent one user’s language selection from interfering with the selection made by any of the other users visiting the web application.

These can be roughly grouped into recognizing language selected, rendering the content of the site in the selected language, and provide a per-user mechanism for switching language.

These stated capabilities are already available with Spring, and I now briefly explain what they are and how they were configured.

LocaleResolver

When a request is made, the LocaleResolver is the component responsible for determining which language is to be used when responding to the request. There are various places the LocaleResolver can look for in other to accomplish its task. These include the accept-language header in an HTTP request, the session or in the cookie.

The implementation we went with, uses the cookie.

So depending on a specific value set within the request cookie, the right language is used when constructing the response to be sent back to the user

The configuration looks like:

@Bean
public LocaleResolver localeResolver() {
CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver();
cookieLocaleResolver.setDefaultLocale(Locale.ENGLISH);
cookieLocaleResolver.setCookieName(LANG);
return cookieLocaleResolver;
}
MessageSource

The messageSource is the component that helps in defining and grouping the translations for each language to be supported. As can be gleaned from the name, it provides the source for all of the text translation and makes it available depending on the language required.

So while the LocaleResolver component helps determine the language, the MessageSource helps in providing the translations for that language.

We are using property files as the mechanism for providing the language translations. You can see these files here

The MessageSource makes use of these property files to supply the required translations.

The configuration looks like:

@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource source = new ReloadableResourceBundleMessageSource();
source.setDefaultEncoding("UTF-8");
source.setBasename("classpath:/messages");
return source;
}
LocaleChangeInterceptor

Last but not the least is the LocalChangeInterceptor, which is the component that makes it possible to manually switch the current language as needed.

Since the LocalResolver mechanism uses cookies to convey the preferred language, the LocalChangeInterceptor updates the cookie value depending on the language selected.

This is the component that makes it possible to switch the language by clicking on the language selector.

The configuration looks like:

@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName(LANG);
return lci;
}
// and then registered as an interceptor

...
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}

For more on how things stack together on the code side of things, you can take a look at the Spring context configuration here

The Road Ahead

The work still needed to be done around internationalization and localization can be grouped into supporting more languages and providing a more exhaustive translation.

Support more languages. It is good to have the website in Yorùbá, but it would be better if we can add more Nigerian languages. This obviously needs the manpower needed to provide the translations. So if you are interested in helping make the YorùbáName dictionary available in another language, please do get in touch. :).

Please send an email to volunteer@yorubaname.com with “Translate” in the subject line.

Providing An Exhaustive Translation. As can be seen, not every single content on the website has been translated. Apart from this, the meaning of the names in the dictionary is still only in English.

We would like to improve on this, but it would require some extra work: from rethinking the data model used to store the names to providing the necessary tools that would support the lexicographers in managing the meaning of names in multiple languages. These are technical challenges, and tackling them won’t be trivial, but it sure promises to be fun. For example, instead of depending on static language translation files, what stops us from writing a custom implementation of the MessageSource interface to use the google translation API?

All of these are on our radar, and in due time, they would be worked on. So, if you are a developer and you are interested in helping out with the technical side of things, feel free to get in touch also 🙂

But in the meantime, as at now, do enjoy YorubaName.com in Yorùbá!

YorubaName is Seeking A Developer Intern

Hi People,

The Yorùbá Names Project is looking for an intern to support the development work at YorubaName.com.

If you’re interested, please send an email to volunteer@yorubaname.com with “Software Intern” in the subject line. In the body, let us know your skills, what draws you to our work, and how many hours per week you will have to volunteer.

We look forward to hearing from you.

YorubaName Now Has Audio!

I am excited to announce to you today that we have launched a crucial part of the YorubaName vision: audio.

One of the crucial elements planned for this dictionary since its inception has been a voice element. The project itself was conceived in part because of the problem of pronouncing Yorùbá names illustrated in this video of David Oyèlọ́wọ̀ on Jimmy Fallon’s show, a problem believed to be caused only by the absence of a place online where Yorùbá speakers, learners, and foreigners interested in the culture, can go to hear how names are pronounced.

The problem has finally been solved. We have incorporated an audio element into the dictionary. You can now click on the audio icon beside a name and hear how it is pronounced.

Try it out by searching for a name entry you’d like to hear pronounced!

 

A little word on the voice element

As I wrote in a blog post in April 2015, the biggest obstacle to achieving appropriate auto-pronounce was technology. There was no available computer voice in Yorùbá (and as far as we were concerned it had not been created before). So we had a choice of employing one person to pronounce all the names in the dictionary (a very tedious and expensive choice indeed), or creating – through speech synthesis – the technology that can do it automatically for every new addition. The latter option required only the knowledge of the tools necessary, and far less funding than having to bring someone to pronounce each entry in the dictionary.

We didn’t like that limitation and we committed to breaking it. We wanted to create an automatic Yorùbá voice for the dictionary. We also wanted to work towards interesting speech synthesis applications that can enhance African languages in technology.

Read: “What We Are Building Next” on Medium

We achieved the technical breakthrough as far back as 2015, as you would read in the blog post, but never had the funds to get complete the cycle. Hence, earlier this year, we proposed a crowdfunding on indiegogo effort to raise appropriate funds to complete the work.

We raised $1,672.

Through these funds and the generous time of volunteers, the work has now been completed. We no longer need to get one person to record all the names. The software will pronounce as many new names as are added to the dictionary from now on, whether they be 10,000 names or more.

I wrote the phonological rules for the application and provided the voice you now hear. Turning the language rules into software was done by Adédayọ̀ Olúòkun. Getting the work incorporated into the dictionary in a final deployment was done by Dadépọ̀ Adérẹ̀mí. We intend to add a female voice and improve on the output as time goes on.

Through this technology, we have solved one problem and enhanced this dictionary experience. But there are many more ways in which ideas of this nature can (and will) change the world by enhancing the African language experience in technology and on the internet. We hope to be a part of that future.

Hear the names

We hope you enjoy using the dictionary to hear the names pronounced, learning the names of your friends, and becoming more fluent in Yorùbá. Please let us know what you think, especially if some of the names do not render the way you expect them to. We assume that there will be a few glitches here and there and we look forward to fixing them.

Contribution Guidelines for YorubaName Codebase

This post provides bite-sized information that should help with the onboarding process for anyone who wants to contribute to the YorubaName dictionary project.

The skills needed to work on the YorubaName codebase are quite varied. This makes it possible for a diverse set of people with a wide range of technical skills to be able to join in the project: from developers/designers, UI/UX experts, to enthusiastic users and language lovers. This post provides the basic steps for all these types of people to get started.

Want to Contribute? Where to start?

Getting involved in the project is super easy.

Your first action point is to read the General Information README. It contains project-wide information that should be known to anyone working with the YorubaName codebase. Reading this would help provide clarity regarding the lay of the land and how different aspects of the codebase fit together.

The rest of the post explores the more specific guidelines.

Contributing as a developer to the Dashboard Application

The Dashboard application is a stand alone JavaScript application built with AngularJS. So if you are a JavaScript developer with some AngularJs chops, then this is where you may want to start:

  1. Clone and/or Fork the Dashboard application at https://github.com/Yorubaname/yorubaname-dashboard
  2. To understand how to run the application, go through the README at https://github.com/Yorubaname/yorubaname-dashboard/blob/master/README.md
  3. Ready to start coding? Then check the issue tracker at https://github.com/Yorubaname/yorubaname-dashboard/issues for a list of things you can start working on right away. Feel free to ask questions regarding the issues you are interested in working on in the issue tracker.
  4. If you have any questions regarding the project or the code base, feel free to drop by our gitter room at https://gitter.im/yorubaname-dictionary/dev, we would be eager answer your questions.

Contributing as a developer to the Core Website Application

The core of the dictionary and the website are written in Java using Spring boot. ElasticSearch is also used to power the search. So if you are comfortable with programming in Java and its ecosystem (or maybe you want to learn some more), this is where to start:

  1. Clone and/or Fork the Website application at https://github.com/Yorubaname/yorubaname-website
  2. To understand how to run the application, go through the README at https://github.com/Yorubaname/yorubaname-website/blob/master/README.md
  3. Ready to start coding? Then check the issue tracker at https://github.com/Yorubaname/yorubaname-website/issues for list of things you can start working on. Feel free to ask questions regarding the issues you are interested in working on in the issue tracker.
  4. If you have any questions regarding the project or the code base, feel free to drop by our gitter room at https://gitter.im/yorubaname-dictionary/dev, we would be eager answer your questions.

Contributing as a UX/UI designer

With the codebase of applications now on GitHub, someone with UX/UI experience can also easily see how the site is built and contribute in improving the user experience of the application. As a UX/UI expert the following steps should help in getting started:

  1. Read the general Information README here https://github.com/Yorubaname/general-information
  2. Explore the dictionary at http://www.yorubaname.com, and if you have any UI/UX suggestions then create an issue at https://github.com/Yorubaname/yorubaname-website/issues explaining the UX/UI improvements you have to suggest. Make sure to tag the issue with the UI/UX label.
  3. …OR: Peruse open issues with the UI/UX label in the Website Issue Tracker and Dashboard Issue Tracker and join in the conversation.

Contributing as a SEO expert

If you have expertise around SEO optimisation, then your ideas are also welcome. You are free to take a peek into the code base, and contribute your ideas on how to improve the SEO. You can either:

  1. Go to the GitHub issue tracker for the respective repository, and add issues explaining the changes you would suggest that would improve the SEO
    or
  2. If you know your way around code, clone and/or fork the codebase and create pull requests around SEO improvements.

Even if you are not a developer/designer/UI/UX expert, you can still contribute! The beauty of moving the development of the dictionary to GitHub is that it allows users to easily help shape the features that are built into the dictionary.

Contributing as a User

The codebase is not the only thing that is now on GitHub: our issue trackers, available in the form of the GitHub issues, can be found in the repositories. This is where we collect all bugs and feature requests that will be built into the dictionary. So if you encounter any bug or have any idea on how to improve the dictionary at www.yorubaname.com, then:

  1. Go to the GitHub issue tracker for the Website and the Dashboard, and add issues explaining the feature you want to see added to the dictionary. The developers will do their very best in building it.

So there you have it! Hopefully the information outlined should help make the process of getting started a lot easier.

Webinar for developers

If you’re still not quite sure, do not despair… To further aid people who would like to contribute to the project we are putting together a webinar on the 23rd of July targeted specifically towards developers where I will be:

  1. explaining how the different parts of the application fit together,
  2. how to setup the application on a local machine,
  3. how to get started writing code and contributing.

More details regarding the webinar can be found here. Register for free using this Google Form.

You should also connect with us on our social media channels: on Facebook here and on Twitter here.

Codebase now on GitHub!

One of the things we highlighted after the beta launch of Yorubaname.com was our desire to move the development of the YorubaName dictionary more into the public domain. In the post ‘What is in a Beta‘, I mentioned that moving forward, we would like to have both the project’s backlog and codebase accessible to the general public. This would empower whosoever is interested to be able to contribute to the building of what is fast growing to be the largest dictionary of Yorùbá names on the internet.

Today, I am happy to announce that we have done exactly that. The codebase that powers both the YorubaName.com website and YorubaName dashboard application can now be found on GitHub (https://github.com/Yorubaname) where you’ll have access to 3 repositories:

  1. The General-information: this contains basic general information needed to get started contributing to the project.
  2. The Yorubaname-dashboard: this contains the codebase for the dashboard application.
  3. The Yorubaname-website: this contains the codebase for the core dictionary and the website

With the codebase now on GitHub, we hope that the development effort behind the YorubaName dictionary, which started off in February 2015, and has been carried by four volunteer developers, will now grow to attract even more people willing to contribute expertise around software development to the project.

The development story: how it all started.

The development story of the YorubaName dictionary started off last year. It was kickstarted by an email I sent Kola Tubosun on a Friday, the 9th of January 2015.

The Yorùbá Name project had bobbed into my consciousness, though I can’t remember exactly how. If I were to guess, I would say it was via Twitter. I remember digging a little deeper into what the project was about and what it aimed to achieve and saying to myself: this would be something I would like to help bring to life.

So I got in touch with Kọ́lá, letting him know I would be interested in joining forces towards the building of the YorubaName dictionary. We exchanged a couple of emails, and by Monday, 12th of January 2015, while the fund raising drive was beginning to garner full speed on Indiegogo, we got working on our first task: setting up a prelaunch page for the project on www.yorubaname.com

Screenshot of the first landing page

Screenshot of the first landing page

Kọ́lá already knew Koko Godswill, a web/graphics designer who was also willing to volunteer and contribute to the project. He is largely responsible for the current look and feel of the dictionary. Not only did he help with the website, he has also worked a great deal towards meeting our various graphic design needs, most notably during the countdown to launch in February 2016 (See #YNLaunch).

But Koko was not to be the only person contributing. By February 2015, we got another contributor in the person of Esther Olatunde. She has helped tremendously in various ways, especially the setting up and the running of our blog at blog.yorubaname.com. We also had Luis from Brazil/UK who prepared a few mock-up wireframes on which we based earlier deliberations.

Then in April, Tola Odumosu got on board. He wrote about his motivation for volunteering here. Tola contributed substantial code to what later became the dashboard application which our lexicographers use to manage the name entries in the dictionary.

And thus from January 2015, Koko, Esther, Tola and myself were the developers who volunteered alongside Kola and the lexicography team to build the beta version of YorubaName.com released in February 2016. We were 4 technical people, located in different parts of the world: I was based in the Netherlands, Esther was contributing from Ghana, and Koko and Tola in Nigeria. We worked in our spare time towards the same goal and in a little over 12 months we were able to build a beta version of the dictionary, which at the time of writing has grown to contain over three thousand Yorùbá names.

The road ahead for the dev team

The current version of the YorubaName dictionary was made possible by the contribution of a handful of people. But now that we have opened up the codebase for more people to potentially get involved, the question is: what could be achieved next?

There is still a lot to be built. We have lots of interesting ideas and features yet to be implemented: from a ‘name finder’ feature – a tool to assist expecting parents in finding the perfect Yorùbá name for their children – to text-to-speech, to making the website more Wiki-like. We also plan on adding offline capabilities (especially for the dashboard application), improving the search experience, mobile optimisation etc.

So if you have a strong skill set in software development and you also happen to be passionate about culture and language, then the YorubaName project is something you would want to get involved with. Do not hesitate to get in touch on project@yorubaname.com. You can also, right away, fork the project on GitHub and let us start building this dictionary together!