One Big Roller Coaster

What My Brief Journey in the STEM World Has Taught Me So Far

A computer is a crucial daily tool for the majority of the youth. however, this technology is yet alien to a good part of our community. Growing up in a country with one of the least digitally literate people in the world, pursuing technology has always been a daunting dream for most students in Ethiopia. This dream of ours, however, is a necessity. An ambition that we could never give up on, knowing what transformative impact it can put forward.

So much potential and ability, yet so little technology to bring it all out.  So many enthusiastic learners to change this bitter truth of our country, yet so few resources and opportunities to help them make it happen. So much fresh energy and motive, yet so little access. The need to invest in the forthcoming generation’s potential, especially in the STEM sector, is prominent. Being fortunate enough to find myself in this fascinating world of endless innovations has drastically improved my outlook on the sector and my community. I now believe that STEM has the power to change and empower communities like mine. Technology has the potential to illuminate the darkness of illiteracy residing in our country. Ethiopia has 60% of people under the age of 25 that could benefit from the ample education opportunities of STEM whilst contributing to the development of our nation, and beyond, continent. Observing how eager the youth community is to transform the country’s unfortunate reality into prosperity, I understand that I should also be responsible for the overhaul of Ethiopia’s technological sector and not just the government I continually blame. Besides, to have my contribution in this area of advancement brings pleasure like no other. My country’s promising future that I caught a glimpse through the vast window of STEM is worth struggling for.

A Brief Dive into Programming

To New Beginnings

Admittedly, computer skill is indeed the new norm of literacy. Needless to mention, almost every profession nowadays needs a basic grasp of computers. Automation, social media marketing, e-commerce, GIS and remote sensing, big data, and many more are IT-based that are administered by professionals with intermediate to advanced IT skills. Among these, programming or coding is the element that allows users to communicate with machines and computers. It blends logical thinking with creativity to develop something that makes life easier and much more pleasurable. 

Programming can be easy to get the basics while being quite challenging to master it.  Coding might be puzzling at the beginning due to the different learning styles and techniques taken by others. The best way to tackle this problem is by crafting one’s own curriculum based on the type of learner one is. Following that, they may begin fishing in the enormous sea of resources. Not to add, remaining focused on developing one skill before moving on to the next is critical in learning how to code. Having far too many ideas simultaneously can be distracting and demotivating. 

There is a common perception that somewhere out there exists an ideal language for beginners in programming; this is in fact not true. A programming language is basically a tool that IT people use to code instructions for computers to operate. A web developer believes that JavaScript is the best-suited language for a newbie to learn. A data scientist favors Python over any other language. A game developer can be a big fan of C++. But, at the end of the day, what matters is what you’re attempting to do with your instrument. Loops, conditionals, functions, and other fundamental programming principles are all the same. The distinction is primarily syntactical. 

Although there are a lot of perks to becoming a qualified programmer, one must always update his or her competencies to keep up with the fast-changing competing world. In fact, there is a huge demand for programmers worldwide, which has resulted in an exponentially expanding number of people entering the industry. Because the competition is fierce, one must develop a cheerful attitude, task management skills, rapid learning capacity, and the ability to work well in a team to succeed.  

One Big Roller Coaster

An Introduction

Writing, to me, is simply thinking through my fingers.
-Issac Asimov

I am Amrot, a passionate learner and tech enthusiast. I am the co-founder of a youth tech platform, Technoelpis. Currently, in the process of assisting technophile youth get one step closer to their ultimate careers, I am also molding myself into an incredibly industrious computer operator. I believe that my small journey in the STEM world as a high schooler who is incredibly enthralled by the overall functioning of the digital world is worth sharing. My unanticipated transformation from not being familiar with a single concept about computers to discovering the joy of exploring the vast digital world in just a year. It was like unfolding a whole new chapter of adventures to thrive through. And, indeed, One big roller coaster.

In my bi-weekly blogs, I will be discussing affairs regarding the tech world, mainly focusing on the digital industries of Africa and Ethiopia. In addition to that, I will be sharing some of my personal experiences and reflecting on my perspectives on different issues concerning STEM. My ultimate goal is to inspire my audience whilst proposing positive ideas and solutions to our current quandaries in regard to scientific Africa. I profoundly believe that this will be a space where I can bring my candid outlooks on various areas in relation to STEM and interact with my audience well to come up with tangible conclusions and better content every time.

Should you have any questions, suggestions, or specific topics you would like me to write about, do not hesitate to let me know in the comments.

Would you like to know more about me?

https://gmt.tzg.mybluehost.me/.website_4544bb84/women-in-stem-spotlight-amrot-abiyu/

Women in STEM Spotlight: Ruth Asmamaw

As a kid, I’ve always found myself specifically drawn to studying natural science. For someone who loves solving problems, and being surrounded by stories of humanity, being a doctor seemed to be the only career path I could take. I never thought of studying software engineering because I have always imagined it as a man’s job and never thought I would fit in.  That was a couple of years ago but I am very positive that there are many girls out there who still have this stereotypical image of a software engineer.   It is not until I got introduced to Women in Tech, that I completely changed my perception. Although it’s clearly visible that there is a strong gender bias in the tech industry, I saw that there is space for people like me with values of solving problems and impacting humanity aligns.

 

In my first few weeks of school, things weren’t going my way. Being a girl with no prior programming knowledge surrounded by computer whizzes was tough. Frustration was taking me all in. But on the bright side, it was an eye-opening moment. Anxious to cope with my peers, I started devouring every piece of information that comes my way. I spent hours googling and asking the internet about programming and software tutorials. Since there isn’t a wrong way of learning things, I kept on exploring new methods that suit my learning style best. I was attending online courses and taking lessons via videos.  Thanks to the internet almost everything I needed was only a fingertip away.

Throughout my exploration, I have come across various subfields of software engineering. Digging into this diverse area has made me realize the ample opportunities it comes with and how one can choose a field to specialize in based on his/her interests, skills, and strengths.  I personally found myself leaning towards the web development area. The process of creating something tangible out of an abstract idea was so fascinating to learn. Web development gave me the ability to see the world from another perspective and has helped me solve problems that I face in my day-to-day life. Learning this new skill was constantly giving me the feeling of accomplishment, which in my case happened to be my number one motivator. Throughout the process, I also worked on bettering my communication and other soft skills.

 

I aspire to become a very significant figure in the tech industry. Living in a country that is still new to the technology era, I believe that there is a lot to be done. I also wish to give back to what the world has given to me. I am among the privileged ones, living in a city and having access to quality education, but I know that most of the girls out there have a handful of these opportunities. My dream is to help these bright girls free themselves from the meshed society had put them in and conquer their dreams.

Digital Hardware Implementation: Let’s Make an Ethiopian Drone

By: Eyosias Yoseph Imana, PhD.

I was a middle-schooler when mobile phones were first introduced to Ethiopia, my home country. Besides feeling excited from seeing a mobile phone for the first time, I remember wondering if I will ever be able to understand how the thing works. I also wondered if I would be able to make one “when I grow up.”

If you are reading this blog, I bet you have had such kinds of thoughts at some point. You are not satisfied in being a mere consumer of technology, you want to join the makers club. Well, I hope this blog series will inspire and equip you to convert your ideas into prototypes – and possibly into a viable commercial product. My vision is to see many makers come out of sub-Saharan Africa – and hence, the target audience of this blog series are all the aspiring and current makers/entrepreneurs from the region.

A little about myself; my name is Eyosias Yoseph. I have been with the semiconductor industry in USA for almost 7 years. Before joining the industry, I was first a PhD student, and later a postdoc at Virginia Tech. I completed my MSc from Florida Tech, and BSc from Bahir Dar University. All my degrees are in electrical engineering, and my focus areas include wireless communications, signal processing, and digital system implementation.

In this blog series, I plan to chronicle the journey I am now starting to make a quadruple drone from scratch and teach what I know about digital implementation along the way. I note that making a drone from scratch is not new – folks have successfully built drones from scratch using Arduino (see here and here). The uniqueness of my effort will be in part because instead of Arduino I will be using a custom RISC-V processor implemented on a custom FPGA board. In fact, my goal (at least for now) is to learn and teach how to make things, not to contribute anything novel.

I am not sure if my drone will successfully fly, but I am sure that I will be learning quite a bit along the way and will be sharing those learnings in the upcoming blogs. Besides sharing my updates, I will include a video along with each blog where I cover important concepts/techniques/tools I use to do this project. Stay tuned!!

Block Diagram

The block diagram of the envisioned system is as follows. I plan to custom design and implement much of the yellow block in the middle of the diagram – that is, I will be making a PCB board for the FPGA, a RISC-V processor inside the FPGA, and a flight controller software to run on the processor.

This project involves hardware, software, and mechanical developments. A high-level roadmap of this project is as follows:

1. Hardware development
  • Processor design and implementation: I first plan to paper-design a RISC-V based processor and then implement its RTL using Vivado webpack from Xilinx (it is free). The RTL will be written using System Verilog.
  • RTL verification: I then plan to write unit and integrated testbenches (again using System Verilog) and test the processor design extensively using simulations. I will be using the simulator built in Vivado. To create randomized testing, and automation, I plan to use python scripts which call Vivado’s internal commands (called TCL).
  • Validation using real C program: Once the processor RTL is ready (passes most verification tests), I will make a simple C program and compile it with GNU RISC-V cross-compiler (download here). I will then load the executable binary generated by the compiler into the RTL simulator and run to see if the processor produces the expected results.
  • PCB design and fabrication: I will then make a PCB board containing an FPGA where the processor can be implemented. The PCB board is likely to contain a Xilinx’s Spartan-6 FPGA and will be designed using KiCad (download here).
  • PCB bring-up: Once the board is fabricated it needs to be brought up (may need two or three iterations to get a usable board)
2. Software development
  • Hardware model development: bare-metal programming is bug-prone because the programmer must deal with the hardware details which can be slipped up easily. To facilitate debug during flight controller software development, we will be first developing a C based model for the hardware. This model will be verified against RTL. Once verified, it will be used to bring up the final software.
  • Flight controller software development: The flight controller program will be developed in C on top of the hardware model first, and then on the actual hardware. As mentioned earlier I will be using GNU RISC-V cross-compiler.
  • Bring-up
  • Fly the drone!!!

It can be noted all the tools I plan to use in this project are open-source and/or free. Anyone can follow along and contribute to this project. I will be hosting the project in GitLab with public access. The only monetary expense in this project will be coming from PCB board fabrication, and the purchase of mechanical and electrical parts for the drone.

GitLab Repository

I named this project DESTINY, it is hosted at this GitLab.

Why RISC-V?

Say an Ethiopian company plans to make and sell a portable electronic device that can translate between the local languages in real-time (example, from Afan Oromo to Amharic and vice versa). Such device inevitably has a built-in processor – almost all electronic devices (ranging from a simple digital watch to a space shuttle are build with at least one processor).

The said company can choose one of the following routes to obtain a processor technology to put into its new device:

  1. Using another company’s processor chip: The company can choose to use a third-party processor chip (for example, from Intel, or Texas Instruments, or etc) which may be a good starting place but obviously expensive.
  2. Using another company’s processor IP: The company may license a processor design from a third party (for example, from ARM as every major companies including Apple and Qualcomm are doing) and customize and fabricate the processor chip. But this also comes with a hefty licensing fee.
  3. Making its own processor from scratch: Besides the riskiness of this route, it is not guaranteed to be cheaper than the first two. Making a new processor from scratch would also mean making a new build/compile toolbox which cannot be achieved without a significant Non-Recurring Expense (NRE).

Hence, all the above three options are expensive. The first two routes also indicate a perpetual technological dependence on western companies which may not be a wise choice in the current geopolitical environment. For example, what if a trade war makes it impossible for western companies to supply chip or IP to Ethiopia? Well, that is not an impossibility anymore.

RISC-V is a 4th alternative – and the most optimal choice in my opinion. RISC-V is an open processor instruction set standard. It is an open standard, which means, anyone can make a processor based on this instruction set without paying licensing fees to a third party. Furthermore, there exists GNU compiler toolbox for RISC-V already. It is also new and has the potential to grow and dethrone ARM from its prevalence in the embedded processor world in the coming years. If we are early players in RISC-V, not only we can use it to make our own products, but we may also become key RISC-V chip and IP suppliers for the global market (why not?). For these reasons, I think the nascent Ethiopian computer/software engineering community should take the RISC-V opportunity seriously.

Getting Started with RISC-V

Are you interested to know more about RISC-V? Below are important links to learn further about RISC-V.

Today’s Lesson: Building a Bare-metal C Program

Before I close today’s blog, I invite you to watch the following this video where I teach about bare-metal programming using GNU’s RISC-V toolbox.