A guide to contributing to an open source project that uses GitHub.
Android & Web-based products and services
Based in Nairobi
Have a project?
I have more examples of front-end and back-end development.
If you’re looking for more examples in a particular category, just ask.
I am available for consulting, collaboration and contract work.
I design user interfaces for web-based products and services.
I strongly value clean, easy and pleasurable to use interfaces that are effective in meeting user needs and business goals.
Although I primarily focus on UI design, I also occasionally do basic branding and identity work, such as logo design and business card design.
I aim to create designs that are simple, distinctive and effective.
Three principles guide my approach to UI design.
1. Design, not decoration
A Good User Interface has high conversion rates and is easy to use. In other words, it's nice to both the business side as well as the people using it.
The design of an interface should not distract from the content or the task at hand, but rather enhance it. Plus, it should strike the right balance between user needs and business goals.
I do my best to follow solid design principles and patterns, while focusing on the most essential design elements (layout, typography, color…) and keeping decorations and ornaments to a minimum, with the aim of creating simple and effective designs that meet their goals.
2. Simplicity, not minimalism
Clear, clean and simple design isn’t minimalist. It’s just good, clear design.
Simplicity, not minimalism, should be the goal when designing interfaces.
Minimalism is an aesthetic choice, there’s nothing inherently “good” in it, and certainly not when it diminishes affordances or is disguised as false simplicity. True simplicity, on the other hand, serves as a guiding principle for the design of usable interfaces, those that strike a balance between affordable and honest design.
3. Timeless, not trendy
Simplicity isn’t a design trend, it’s an attribute of good design.
Good design is timeless, and simplicity is key to timeless design.
I take inspiration from those designers that pursue simplicity, timelessness, and stay on trend without becoming too trendy.
I’ve used Adobe Fireworks before settling on Adobe Photoshop for UI design and prototyping.
For graphic design I use Adobe Illustrator in conjunction with some additional plugins.
Just keep learning and doing my best with each new design project.
I develop custom CMS solutions and web applications with Python / PHP and MySQL & MSSQL or JAVA and Postgres, specializing in Frameworks like Laravel, Django, Codeigniter, Spark and Flask which I use for custom application development.
I strive to create user-friendly and flexible CMSs, as well as reliable and secure web applications.
I have extensive experience coding semantic HTML and modular CSS. I am particularly interested in modular front-end methodologies that form the basis for an efficient, maintainable and scalable front-end architecture.
I have extensive experience with Laravel and CodeIgniter for web application development, since I started as a PHP programmer. As far as other programming languages, I have had a lot of opportunity to experiment with Flask and Spark – creating in applications Python and Java, Scala and others. And recently also added Django to the archive.
I appreciate Laravel for its simplicity, performance and documentation. I’ve been using it for web application development in conjunction with other standalone libraries. I also use Codeigniter and Flask occassionally, however, these frameworks are struggling to adapt to modern PHP & Python best practices, that’s why I prefer Laravel or Django, frameworks that strikes a balance between modern practices and simplicity.
I have some experience with other technologies related to web application development:
When it comes to hosting I tend to favor good quality managed services over dedicated ones.
What I look for when choosing a hosting service is performance, reliability, security, flexibility and scalability, plus a good and fast support.
The server OS could be Unix-based with Nginx or Apache as the HTTP server or Windows-based with IIS as the HTTP server. Or, if the project requires it and the budget allows it, on a managed VPS, managed dedicated server.
I have experience on system administration when it comes to setting up the necessary infrastructure especially on IIS 8.5 server.
After trying and using different IDEs, I’ve settled on Brackets for front-end and back-end development. It has all the features required for modern web development, testing and debugging, plus it is constantly updated. For quick edits I tend to use Sublime Text. For Android Development I Use Android Studio SDK & Gradle.
I use Git for version control, with TortoiseGit a Windows Shell Interface to Git in Windows but generally use Terminal in Linux.
For my local development environment I use Apache, Nginx or Homestead which is a virtual development environment that has all settings configured out the box. For Virtualization I use VirtualBox with the help of Vagrant for creating and managing these development environments.
The technology and software business seems to obsess with what is in flux and changing. Always new stuff. New languages and frameworks. Focus on what doesn't change and think about the things that matter today and will matter 10 years from now. For now, let me focus on brushing up on my Python & Android Skills.
Web & Android development are a fast-paced and ever-evolving field. Keeping up is just part of the job. However, a balance must be struck between learning new technologies and getting better with the ones you are familiar with. Furthermore, while new technologies come and go, the fundamentals remain essentially the same.
That’s why I focus on learning the technologies that I need or find useful for my work, while keeping an eye on the popular and emerging ones, to have at least an informed opinion.