This is the thirteenth weekly progress report of my Outreachy internship with Mixxx DJ.
Following last week’s progress, I finished making the edits to the video, and now, I’m only waiting to get feedback before I add in any animations or effects. I hope to upload it this week (since I’m writing this blog in the next week). 🤞🏽
I have been working on issue #117 – updating the screenshots of the 2.3 manual from the Deere to Latenight skin. I hope to make a PR this week.
And….. this is the last week of the Outreachy internship program. This week’s blog is not as long as the previous ones because I have not documented what I will be doing next week. This is because I have not planned out all of the details yet, but of course, I will be making improvements to the manual – next week I will be updating the screenshots in the 2.3 manual from the Deere to the Latenight skin. I hope to check this item off the checklist in this issue. And then, of course, I will continue making tutorials for the Mixxx Youtube channel and working on the cookbook/ DJing techniques chapter.
This has been a great experience interacting and getting to know the Mixxx community virtually. Overall, I would say my internship has been a success because I was able to gain practical skills, work in a fantastic environment that is really inclusive, and make connections that will last a lifetime. I could not be more thankful.
This is NOT goodbye, because I am still going to continue contributing to Mixxx, and endeavor to finish the projects that I started. That is, I will still be making tutorials for the Mixxx YouTube channel, working on the DJing techniques/ cookbook project, and making other improvements to the manual. See you next week 😉
This is the twelfth weekly progress report of my Outreachy internship with Mixxx DJ.
I added the step by step tutorial on deck cloning for playing with a single turntable. I plan to do the same for beat juggling, but I want to get feedback on how that looks before I proceed to do the same for beat juggling.
I made the video tutorial introducing Mixxx to the first time user – a tutorial guided by chapter 4 of the manual. I’m still making edits to the video, but I’m hoping to finish with this by the end of the week.
I lost a couple of days to long distance travels – from my home to the city and back. I had also to do bit of adjusting migrating from Windows to MacOS, but I’m getting there 🙂
This week (since I’m writing this blog late), I will be making a pull request for issue #293. “Mention mp3 encoder in Recording chapter”. I had posed a question in the comments section, hopefully I will get an answer this week.
Will be making/ planning for another Youtube video tutorial and making other minor fixes to the Mixxx manual 🙂
My name is Aanyu Deborah Oduman. I am 23, and I work and live in Uganda. I just recently finished studying for my bachelor’s degree in Computer Engineering from Makerere University, Kampala, and I am slated to graduate in mid-March.
For the past three months, I have been contributing to Mixxx in improving their documentation. The goal is to make the Mixxx software easier to use especially to the new user by making the manual easy to understand and follow. I have also been making video tutorials for the Mixxx YouTube channel; videos that will act as a guide for Mixxx users to follow and make great mixes.
I have always taken a keen interest in tech, but I didn’t get to fully explore it until I joined the university and enrolled in a Computer Engineering course High school provided a couple of opportunities in robotics and innovation, but with the limited resources and the vast number of students, the time was never enough to learn and master a new skill. But even with the limited resources, I am grateful to have had the chance to learn how to build lego prototypes and write simple programs for them.
I started learning C+ and Python, as part of the engineering curriculum and this foundation propelled me into wanting to learn more about programming and seeing what else I could do with code. With these basics, I enrolled in a couple of coding bootcamps and attended a few seminars in aviation and software development. I applied to the Andela bootcamps, just when the company was still new and we were just getting to know about the awesome tech startup. It is here that I learned how to use HTML, and CSS – things that were not taught in my engineering course.
After a while, I applied to the Google-ALC training programs where we were given free access to some of the best coding courses on Pluralsight. I learned more about HTML5, CSS, Bootstrap and Python and created my first website using Flask.
I worked on a few other projects alongside school, though, with the tight schedule, I didn’t get to do it consistently until the lockdown of March 2020. COVID-19 came with a lot of downsides, but I was fortunate that it came as a blessing in disguise for me. I was stuck home with nothing else to do but bury my head in the heaps of programming languages and stacks. I was finally able to put my HTML, CSS, JS and Python knowledge to use and that’s when I learned Frontend Web development with ReactJS in a 3-month remote internship that taught me everything I know about Frontend web development. The program was continued in a second 4-month (or more) internship where they taught Backend with NodeJS, and finally, full-stack web development with MongoDB, ExpressJS, ReactJS, and NodeJS.
Around the same period, I had the honour of participating in the #BuildforSDGs challenge; Cohort 2. The #BuildforSDGs program is committed to helping empower people to build real-world, locally and relevant solutions focused on the Sustainable Development Goals (SDGs) while gaining skills needed to advance in one’s career. I got to collaborate with really talented developers from all over Africa and received priceless mentorship from the experts at Andela and Facebook.
Shortly after, towards the end of the program, I started applying for the Outreachy FOSS internship, and this where I am now.
The skills that I have learned through working with Mixxx
The Outreachy internship with Mixxx introduced me to Free and Open-Source Software. I had never contributed to FOSS before the program, let alone knowing what the term meant.
Through the internship working with Mixxx, I have gained experience in technical writing on a larger scale, and with a more recognized project. I had only used markdown before while working with git, but now, I get to use markdown and reStructuredText for much greater work.
I am getting to understand more about how to use Git, especially on an active project with many (experienced) contributors. I am more comfortable with git now than I used to be. I think it is safe to say that I can extricate myself from sticky git errors and I understand git tree structures much better.
I have gained more confidence in my skills as a video and content creator, especially for technical projects such as Mixxx. I understand better how to use video editing tools to make great YouTube tutorials. I know better how to plan the videos such that they are easily understandable by the new Mixxx user, and this came with learning script writing as well.
I have learned more about usability, in the context of how easy software should be to understand and to use by people new to them. With every new addition that I make to the Mixxx manual, I understand more about how the software works and the GUI aspects of it.
The list of skills that I have learned through the Mixxx internship is quite endless. I know now how to send files to another computer using OpenSSH and rsync in a command-line – something that might be easy for Linux users to do. I have a better understanding of how Open-source software communities operate and how to get started contributing to Open-Source software. Not forgetting the confidence that I have gained through the interactions that I have had with the various contributors in the community. I have come to appreciate teamwork more, and the importance of asking for help when I need it.
What next? What are my career goals?
I love contributing to software applications that people use in their everyday lives. I have loved receiving immediate feedback on my technical writing and video editing skills in this internship. I have loved having a mentor who I can turn to for guidance about most things open source related. Open source embodies some very positive aspects of the internet – and that is collaboration, knowledge and skill-sharing towards a common goal. The results are impressive and demonstrate what can be achieved from small contributions of time and effort by a large number of people.
I would love to continue being a part of the open-source contributors’ community and adding my input to various open-source projects. I look forward to exploring different open-source internship programs such as the Major League Hacking open-source internship program, Google Season of Docs, Google Summer of Code, among other open-source opportunities. I would love to grow my experience in working with various software and learn from highly experienced and long-standing members of the Open-source community.
I look forward to strengthening my skills in Frontend web development, and eventually Backend web development. During the lockdown period, I started off learning React JS and I was able to work on a couple of personal projects. I want to take it to the next level and learn more about things like Continuous Integration and Continuous Deployment (CI/CD), test-driven development (TDD), shipping apps using Docker among other things. I want to get more comfortable with using public APIs in the applications that I create (this has always been tricky for me). I also look forward to learning how to use Django for backend development and eventually get comfortable with it. I want to strengthen my skills in UI/UX design and incorporate this with the frontend dev stack and finally, if the opportunity presents itself, I will contribute to an Open source project using some of the technologies in the MERN stack or in UI/UX or even in Django or Flask.
What interpersonal skills make me a good collaborative member?
I am open to and accepting of new ideas. When people get together to discuss a project, different ideas come from different perspectives and areas of expertise, so there’s inevitably going to be a flurry of ideas on the table about how to proceed—ideas that’ll be unfamiliar, new, exciting, and possibly difficult to understand. As a naturally curious person, I thrive in this kind of environment.
I try to make sure to communicate openly and clearly with other contributors. I am mindful of different communication styles and I adapt the way I communicate accordingly.
Fostering a collaborative environment means making room for all types of communication and communicators. I love that the collaborative process in open source usually incorporates alternative ways of communicating, otherwise the most outspoken people would steal the show.
One of the things about contributing to open-source programs remotely is that no one will be physically around to push you to do anything or get work done. The process is, for the most part, self-paced and I believe it takes a certain level of organization to make valuable contributions to a project. Throughout the Outreachy internship working with Mixxx, I have kept myself organized, assigning myself tasks daily and managing my time effectively. I try to take my organization beyond just doing what I’m assigned but taking the initiative to find out what needs to be done and then doing it.
Long term thinker
I like to envision the end result of a goal before I get started and continue to do so while I carry out my duties. Collaboration is about working towards a common goal or a shared purpose and recognizing how my contributions fit into that goal. I endeavour to have a deeper understanding of the project’s scope and everyone’s role in it because the more I understand this, the better I will be equipped to make it happen. I believe that understanding my broader purpose helps me make more meaningful contributions to the team.
Sometimes collaborative projects don’t go as planned. Priorities shift, obstacles delay progress, and problems occur, catapulting the whole project into complete disarray.
To persevere, people need to be able to adapt at a moment’s notice. I adapt easily to sudden shifts in goals or priorities and prefer to brainstorm solutions to problems that may be encountered while working on the project, as opposed to freaking out and not working towards a solution.
What am I looking towards?
I want to keep working with Mixxx, so I can get better at technical writing and make video tutorials that explain specific technical concepts. I prefer to work with communities that openly make efforts to improve diversity and Mixxx does this. So I plan to continue contributing to my current community even when the internship is officially done. If I manage to find another paid internship or a remote paid full time or part-time job, that would be great.
I am aiming to secure opportunities that will provide me with the exposure and chance for progression in the world of web development and Open-Source software.
My three-month internship with Mixxx was a full-time remote internship which has made me come to appreciate the perks of working remotely. I would love to continue doing so (working remotely), but if required, I am also able to move to a different region or country for work.
I have a non-tech background in art, content creation for social media – I managed social media for an online platform called Celebu Online and a creative arts group called Kelele @ Makerere. I also have a background in writing – a skill that has greatly helped me with the technical writing bit of the Mixxx project. I believe that this background provides me with a unique perspective on certain things, especially in the areas of usability, marketability, creativity, team-work and what consumers like.
In five years’, time, I hope to be an exceptional software developer who has imparted the skills that she has learned to other younger people aiming to get into the field. I hope to have empowered other people who wish to join this industry by teaching them what I know and exposing them to opportunities that will help them progress in their career, like I’ve had. I hope to have scored a more permanent job doing the things that I love and effecting change in other people’s lives, one way or another, and I’m grateful to Mixxx and Outreachy for launching my career in the right direction.
This is the eleventh weekly progress report of my Outreachy internship with Mixxx DJ.
I successfully added rekordbox (and its icon) to the list of supported libraries in this pull request that I opened a long while ago – I was documenting the rekordbox library import.
I also started a LinkedIn company page for Mixxx, on the suggestion of my mentor. I think it will be a great way to get Mixxx to reach an even wider audience. Here is the link to the page.
I learned something new this week! I learned how to use rsync and OpenSSH inside the cygwin command-line to send files from one computer to another. The learning curve was slightly steep but I finally got the hang of it. I sent the YouTube Mixxx tutorials that I have made so far through the cygwin command-line.
I added more description to the section in the manual that talks about analyzing tracks/ the music library. The manual did not define what analysis does and why it is important, so I felt like it could easily be overlooked – especially by the new user. I added some information about why users should do it in advance and what happens if they don’t. I opened a pull request here.
I didn’t get to make the video introducing Mixxx to the first time user last week…a tutorial guided by chapter 4 of the manual. So will be doing that this week.
I will continue working on pull request #330. I am taking a step by step instruction approach with documenting deck cloning in the cookbook. I hope to have made some progress with this pull request this week.
I had a brief video call with community team leaders from the Tor Project to discuss more about the internet censorship situation that has been going on in Uganda. The purpose of the discussion was to understand more about how I am using Tor and other anti-censorship tools, and how it can be improved based on my feedback.
As part of the homework that I did for the cookbook chapter, I read through the first few chapters of the Mixxx manual, looking for sections that could use the step by step instruction approach that the cookbook will provide. I found an area in the “Analyze your tracks/ library” section that needed more explanation, and discussed it in the Zulip chat. I will be filing an issue and making a pull request for it soon.
I lost a day of work to no electricity and maybe half a day to the poor internet speeds (some of the downsides to using VPNs).
Next week, I will be working on a number of pull requests implementing suggested changes. One of them includes converting the deck cloning section into a step by step instruction guide as opposed to a whole article.
I will be adding new sections to the same chapter with the same step by step approach – this will be my main task this week. All the (new) sections that I will be adding are subject to discussion. It is a work in progress 🙂
Finally, I will be making another YouTube tutorial introducing Mixxx to the first time user… This tutorial will be guided by chapter 4 of the manual and will go something like;
- Start the Mixxx software
- Import music to the Mixxx library - import your audio files
- Analyze your library tracks (what it means to analyze a track)
- Configure Sound output - especially if youre not using any DJ Hardware
- Play your first track with Mixxx
- The Mixxx manual - incase you need to refer to a Mixxx resource for help
This is the ninth weekly progress report of my Outreachy internship with Mixxx DJ.
I made a pull request #203 for this issue that I had filed to correct the broken link to Paul Bloch of open Artist (creator of the Mixxx logo).
I recorded the video tutorial about the Mixxx communities, following the script that I wrote the week before last. I got feedback for it from my mentor, and I need to do some editing. I will be editing and uploading this video next week, after getting feedback from the community on Zulip.
Next week, I will be writing a script for the next video tutorial that I will be making (yet to decide which one but most likely it will be a 5-minute in-depth video about mixing (once the program is set up). I have homework to do with this one, considering the fact that I’m not a pro with mixing, but I look forward to the challenge.😅😅
Once I have done my homework and written the script, I will record the video, send the first cut to my mentor for feedback before I re-record or edit the final video. Just like I did for the Mixxx communities video.
I also realise that I need to do my homework on the cookbook. (See comment on cookbook chapter). I need to choose topics that will not conflict with the DJing with Mixxx chapter. Some of the topics that I had chosen earlier were similar…. with the content in this chapter. This will be my assignment this week.
This is the eighth weekly progress report of my Outreachy internship with Mixxx DJ.
Has been a little bit slow, to be honest. Internet speeds are much slower now because of all the Virtual Private connections that have now become the new normal.
I wrote a script for the In-depth video tutorial about the Mixxx communities; the forum on discourse, the Zulipchat, Mixxx’ social media platforms – Facebook and Twitter, filing a bug report in the Mixxx launchpad, and then finally how to contribute to any of the Mixxx projects on Github. Submitted it to my mentor, in case I needed to make any adjustments, which I did.
I was going through past articles on the Mixxx website when I came across this one about a minor website revamp and the creation of the current Mixxx website logo. I noticed that the link to Paul Bloch of Open Artist was broken so I opened an issue for this in the website repo here.
Next week, I will record the YouTube tutorial about the Mixxx communities, following the script that I wrote this week.
Following the article that I published this week about the current internet censorship situation in Uganda, I will be contributing to a section in the Outreachy internship guide that will help future interns who might find themselves in a similar situation, navigate internet censorship in their own countries. A draft pull request has been opened by Sage Sharp here.
So in addition to next week’s tasks, I will contributing to this pull request as well.
Before I write this article, one thing to note is that Ugandans have been in this internet battle with the government for quite some time now. The internet shut down came as a surprise when it did, but at the end of the day, I feel like we should have seen it coming. By the time it dawned on us that the internet really had been disconnected, we were already in darkness, with only the people physically close to us to express our shock too. The audacity of this government!
As the years go by, our President, H.E Yoweri Kaguta Museveni, has been feeling a lot of pressure about the presidential seat. If elections were conducted freely and fairly, you would notice a declining trend in the number of votes his political party (NRM) has been getting over the years. Ugandans are tired, and they want change. They have been more vocal about the injustices that have been happening in the country and it has cost them their lives, even their families’. This resistance from the public has been causing anxiety in State House, and it’s starting to show.
In the 2016 presidential elections , Ugandan authorities blocked access to Facebook, Twitter and WhatsApp saying the platforms would be used by the opposition to mobilize protests. (See this article from the BBC) President Yoweri Museveni was facing a tough challenge from veteran activist Kizza Besigye, and he believed shutting down social media would help to curb the “threat”. Authorities also suspended mobile transfers of money.
In 2019, the government introduced a tax on the use of the social media, which activists have called an attempt at controlling free speech. He said that the youth only use social media to gossip and spread wrong rumors (about him). (See this article from the BBC) . He imposed OTT – Over the Top Tax and since then, it’s never been enough to simply have a good internet connection. You have to pay a daily fee of UGX 200 to your Internet Service Provider, or if you’re being rebellious, a VPN application installed on your phone or computer. He insisted that the revenue collected from the tax would help the country cope with the consequences of olugambo [gossiping]. I don’t know.. but to me, these look like the actions of an increasingly anxious person in power.
On 12th January 2021, the Uganda Communications Commission (UCC) ordered internet service providers in the country to immediately suspend any access and use of all messaging apps and social media platforms until further notice. This was done so suddenly and without prior notice that it took most of us a couple of failed OTT subscriptions to realize that social media platforms had indeed been blocked. Before that, internet speeds had become excruciatingly slow, it was any wonder we were able to get anything done in those few days. A few days after the social media block, the government decided to shut down the entire internet! (The social media ban was simply not cutting it) So when Google stopped working and our parents were restarting their phones several times, is when we realized that truly, there was no end to the surprises.
During this [not so brief] period we were in total blackout. No internet services were available anywhere. I was not doing any work as far as the Outreachy internship with Mixxx goes. I was not making any contributions, and sadly, that whole week went just like that. We (devs) wondered if there was a backdoor to the whole situation, maybe some independent internet Service Provider that didn’t serve the government or something – lol. I was not sure what to do without the internet so I read books, watched movies on CD, took nature walks, anything to pass the time. How did our forefathers survive without the internet ?
So after NRM won the Presidential election, the internet was restored on Monday evening (18th January). There is speculation regarding this matter as to who exactly restored the internet. Word has it that it was The Anonymous that had hacked the government systems and restored the internet. On the other hand, neither the ISPs nor the Uganda Communications Commission openly came out to declare/ announce that internet had been restored. The internet had been restored alright, but we still could not access social media. Not with OTT, and definitely not with certain VPNs. But the election was over, was it not? Then why was social media still blocked? This time, not only had social media been blocked, but all app stores, YouTube, and most VPN clients. (See this article by techjaja)
At this point, I was ready for anything. I had about two VPN applications installed – Psiphon Pro, and Thunder VPN. Nothing was going to get in the way of work this time. The VPN connections were mostly flaky so I decided to add Orbot and Tor Browser to that list. Things were working for a while, but I should have known that the relief would be short-lived.
I was working one day when I encountered this error while trying to access GitHub.
I thought that was odd, considering I’ve always accessed GitHub with no difficulty. I didn’t think much of it. I thought that as long I could run commands in the git command line, I would be okay.
While I was wrapping my head around the whole situation, Gus from the Tor Project asked if I would volunteer to run a simple test ( See https://github.com/NullHypothesis/emma) for them to see if Tor Bridges were working. I said yeah! Sure! Anything to bypass the next internet shut down. So I had to access the repository for Emma (a lightweight censorship analyzer) on GitLab, but to my dismay, I could not access GitLab. I got returned the same error “this site can’t be reached”.
Well, that’s just ridiculous, I thought. I entered this URL in my browser https://www.torproject.org/ to see if it was a “tor issue”. The browser returned “This site can’t be reached”. So then, I realized all Tor sites had been blocked too, probably because the government suspected that we would try to use Tor to bypass the internet restrictions. Smart! I was pissed, but I thought it was smart. I went ahead and opened the Tor Browser on my computer, pasted the same link there, copied the link to the repository and ran ‘git clone’ in my command line. Error!
I reported this error to Gus, who suspected that the https://torproject.org domain had been blocked. He then gave me a link to a different GitHub repository with the same code to clone but I kept getting returned the same error “Failed to connect to github.com port 443: Timed out”.
My suspicions were right – the government had blocked GitHub too. GitHub! I did not understand the reason for this considering GitHub is not even a social media application. It’s not a VPN either, so what was going on?! I thought I had been blacklisted by the government and they had blocked my IP address from accessing these sites or something.
It was hard not to feel defeated. I wondered how I would get any work done if I couldn’t even use GitHub? How would I get inspiration for the “Create video tutorials” project if YouTube was blocked? I had the Tor Browser installed on my computer which I could use to access GitHub and GitLab, but that virtual connection only worked inside the browser. I needed to have my entire system tunneled so that I could push and clone from GitHub through the git command line. I turned my mobile VPN on and took my frustrations to Twitter.
A friend of mine then sent me a link, which I used to download the VPN for Windows. I got the .exe setup downloaded on my phone, transferred it to my computer through Bluetooth, and run the installation. It worked. GitHub was working, everything was working fine. I later learned that this git issue only affected people subscribed to Airtel. People using MTN and other Internet Service providers like Africell and Lycamobile were still able to push to GitHub with no errors. (Airtel has retained the second highest share of wireless subscriptions in Uganda from 2015 to 2020 with a steady 33% since 2016, after MTN with 51%) Why Airtel is singly pushing to block access to GitHub, is unclear.
So now, the new order of things is:
connect to the mobile hotspot
get to work.
I think it’s disappointing that our government sees the internet as a nuisance, and have very little regard for basic human rights. Internet costs in Uganda are already very high, considering the social media tax (OTT) on top of that. However, now that social media has been banned, OTT has been rendered ineffective. We do not know how long this social media ban is going to go on for, though word has it that it is indefinite. It could be permanent, they say. I asked a close friend who works with UCC why GitHub was being blocked, and he says that people would try to get updates and installations from GitHub (the same reason for blocking the app stores).
So the question that lingers on my mind is, if the government successfully blocks all VPNs, as well as YouTube and GitHub along with all the social media applications, what will happen to the jobs of all the Ugandan developers who work remotely, but most importantly, what will happen to my internship with Outreachy ??
This is the seventh weekly progress report of my Outreachy internship with Mixxx DJ.
I created a YouTube channel for Mixxx tutorials and posted the first video. Its an installation tutorial for Windows OS. Here is the link to the YouTube video. This was early in the week.
Sadly, I did not get a lot done in this week, because our government (Uganda) decided to shut down the internet. We had no access to the web or any internet-based services for at least four days. The internet just got restored today (as I write, it’s Monday of week 8) but social media is still blocked.
Since I did not finish accomplishing some of last week’s tasks, I will work on those first then record the second YouTube tutorial. It will most likely be an in-depth video about mixing once the program is set up (following the first video).
I will be working on issue #335 as well. Finding a reasonable arrangement for the Record/ Broadcast your mix chapter.
I wrote a script for the “How to download and Install Mixxx” video tutorial, as well as the sequence that I will be following. I haven’t gotten around to recording this yet (as I’m still planning), so this video will be done early next week once I’ve figured out exactly how to go about it.