Modifying Expectations

Modifying Expectations

Hello Open Source Enthusiasts, 👩‍💻 👨‍💻

In this week’s blog post, I’ll talk about project expectations and planning. Let’s start by talking about what I’ve done on the project so far.

“The purpose of my project is to find the slow parts of the revision processing in Guix Data Service and make them faster.”⚡️

The first step in the planned timeline is the instrumentation. The purpose of this instrumentation is to visualize parts with low performance in Guix Data Service.

I was going to visualize the slowing parts with a flame graph that I would have made available to users on the Guix Data Service website. The slow parts of the processing job had to be identified easily with the newly generated graph. In the second stage, these slow parts would be accelerated.

At first, my mentor told me about some part which was already very slow, and we talked about how we could speed it up and made the necessary changes. But I have many slow parts like this and have to find these with the help of the graph.

At the planning stage, I thought that the instrumentation part would be finished in 1 month, but that was not the case. It turns out that the part that will take longer is the instrumentation part. After finding these slow parts, the acceleration part should take a shorter time.

I also mentioned in my previous posts that I needed to learn Guile for this project. Learning about Guile has been perhaps the most time-taken part of the job. I needed to spend more time on this in the timeline.

So far, I have made my first contribution to the acceleration of the slow part using the SQL Index. In addition, I can successfully keep information such as job information, start time, and how long it takes in a table in the database. My next step is to visualize this information on the flame graph on the website. In this process, I’ve been using SQL and Guile. In my next assignment, I will need to program with HTML and Guile. Luckily I know HTML but as I said, I’m just learning Guile and it can be challenging sometimes.

I’m going to reschedule my time planning like that the instrumentation part should take 2 months and the acceleration part may take 1 month. I don’t know if all the speedups will be done with SQL though.

I was aware that I did not choose an easy project and I’m the only trainee in the project. Sometimes I get tired and upset when I can’t do it, but I want to enjoy this 3-month internship anyway. 🤙🏻🤘🏼💪🏽💪🏾

I am living the firsts of my life in many subjects and I am in a unique experience. No matter how much I learn it will be so valuable for me.

Thanks for reading. 💫✨

Think About Your Audience – Guix Data Service

Think About Your Audience – Guix Data Service

Guix and Guix Data Service

Guix is a package manager on steroids. It has some critical features that differ it from others. Some of them listed below.

  • Transactional upgrades
  • Roll-backs
  • Per-user profiles – Unprivileged package management
  • Garbage collection

All those good features are not cheap. They may come with a few challenges for developers and package maintainers.

How the Guix Data Service was born and what it means for the Guix?

“Guix does the high-level preparation of a /derivation/.  A derivation is the promise of a build; it is stored as a text file under =/gnu/store/xxx.drv=.  The (guix derivations) module provides the `derivation’ primitive, as well as higher-level wrappers such as `build-expression->derivation’.”

Copied from https://git.savannah.gnu.org/cgit/guix.git/tree/README –  # How It Works

The key and unique concept is the derivation for Guix. And you need to understand it before dive into the data service.

Let me introduce the Derivations

From my perspective,(Please note that I’m a newbie for Guix and Guix Data Service, I’m grappling approximately for 2 months 🙂 ) the Derivation is the build info for the package.

Please find the details in this link. (https://guix.gnu.org/manual/en/html_node/Derivations.html)

Guix Data Service

There are lots of packages and every package has lots of derivations that need to be compared by maintainers and developers. Guix has Guile API for Guix and a command-line interface for accessing the information about packages but it can take some time if you want to compare two revisions of Guix.

Guix Data Service provides a solution for this specific problem. Those pieces of information can be gathered continuously and much quicker way to answer. (https://data.guix.gnu.org/)

Everybody Struggles

Everybody Struggles

Actually, I am struggling in every sense.

Git, GNU Guix, Guile… These are all new things to me. I’ve used Git before, but I didn’t dive into deep. Generally, I use Windows or Mac instead of Linux for my daily needs 🙂 Guile is another story (details explained below).

In my first week on the project, I worked on SQL. I am good at MSSQL but was not at PostgreSQL. Fortunately, this is a chance for me to learn quickly.

I learned some things about Sqitch and I was able to contribute to the project in the first week by quickly doing Sqitch-related documents and exercises.

But when I came to the second week of the internship…

It took time to understand the existing code base and how to adapt my solution to it. Researching and trying to solve the problem also takes time. I still haven’t solved the problem, but I’m trying. I’m trying to learn the Guile language (Which is very well defined but hard to find documents and tutorials except for the official ones). I’m okay with that because It’s not so popular but the core community is rock.

When I’m not at the computer, I took notes and read them so I can work on syntax. This week was spent learning a little about Guile.

For those reasons, I could not contribute to the project in the 2nd week. 😦 Although this bothered me a bit, I had a deadline for my master’s thesis that same week. I can say that it has been a tiring week because I had to spare time for it as well.

With the Guile knowledge I gained, in the 3rd week of my internship, I’m working on the code and I feel like I’m starting to make little progress, even though I’m getting errors. 🤘🚀

It’s like things will speed up after a while, but let’s see when…

I will be sharing with you what I experienced while learning about Guile and a few resources I found in the following topic.

Chronicles of the Guile and Guix Data Service

GNU Guile which is the extension language system for the GNU Project and features an implementation of the programming language Scheme.

When I saw the first version of the release date I was shocked. Because I didn’t hear the guile before the Outreachy program. I heard some most popular functional programming languages like Scheme/Lisp/Clojure but not the guile unluckily 🙂

At this stage of my internship, I’m still exploring the Guile power and capacity and getting used to parentheses. 🙂 The xkcd comic explains a lot of things in my head.

For current and future Guile lovers please find the resources that I’ve been read since the beginning of the internship. (I’ll update the list if I find more.)

My First Big Struggle with Guile

As a computer engineering student, I’ve been used C/C++ and C# as the primary languages. 

#guile and #guix community helped me a lot, especially via IRC. I’ve faced an issue understanding the Parameter concept on guile with official documents. It’s not bad but I couldn’t fully understand and make changes to my code. So I decided to ask for some help from the #guile community. They’ve provided very clear explanations and examples.

Later then I can give you a brief introduction to the Guix Data Service. Stay tuned!

Introduce myself

Introduce myself

Hi everyone! I’m Canan. Currently, I am a graduate student of computer engineering in Turkey. I have embarked on a great adventure for myself and I would like to share these stages with you.

I had to practice the basic knowledge I had acquired in university. So I started to research coding courses to get hands-on experience on coding and felt the sense of success, I wanted to code even more.

One day my spouse told me about the Outreachy Project. My first reaction was, “Can I be chosen?” But when I looked through the Outreachy page, I saw such sentences below:

“You should fill out an initial application, regardless of your experience level.”

“Outreachy Organizers strongly encourage you to write your personal stories.”

“Please do not put links to your resume in your essays. We do not read resumes.”

After this, I really wanted to apply to Outreachy and shared my story in the application. I highly encourage those who want to be part of the Outreachy to have fear of failure. No need to be concerned about it. Express yourself honestly and clearly, that is the key. What they expect from you in the initial application is not “I am so good, I write such beautiful code”.

I had no hope until the initial acceptance was announced. Then, I have analyzed and noted all the projects that I would like to apply for. In order not to waste time, I decided to analyze in detail. Also, I was constantly and excitedly checking my e-mail for the day the results were to be announced. Then I received an e-mail that I passed the first stage. I couldn’t believe it. There is no word to describe the excitement that has sprouted in me. I said to myself, “I really want to be a part of the Outreachy program.”

I reduced the number of projects that I want to contribute to two.

 * First one was a relatively easy project that didn’t require a lot of coding knowledge.

* The other had will challenge me, but it was a project within my area of interest.

I first got into the project community, which I thought would be easy, and introduced myself. But all the other applicants had already come before me! All the issues were taken. Some even said, “I found this.” I saw them saying, “Please go find another issue”. Kindness, peace, have always been my priorities. I thought I couldn’t handle such a challenge and the stress, and I switched to the project that was going to be more difficult. I introduced myself. Luckily, I think I was the first to come. I immediately completed my project environments and started working. I’ve learned a lot of new things and worked hard. For the first time in my life, I contributed to an open-source project and e-mailed it to people from foreign countries. Even though I was not selected as an intern, I used to say to myself, “I’ve learned a ton and I’ve accomplished is a big success for me.” I believe that experience is great training (learning). After that, other candidates came to this project. They worked hard and our mentor always treated us fairly. I was really lucky about it. I cannot describe the happiness of the “great” or “:)” expressions he wrote after I was understanding and solving the task.

After going through the final application phase, it came to wait again and I started to think that I would not be selected again. But I felt at ease because I’ve done what I can do.

My ritualized mail checks started again. I checked my regular e-mails for the results to be announced and finally received my acceptance e-mail. I guess I would say “I can’t” for very few things in my life after the shock feeling at that moment. Now I know that if I want and work hard, I can do it. It will not be easy in the next steps. Maybe it is just the beginning. But no matter what, Outreachy made me regain my confidence which I didn’t know where I’ve lost. I have gone through many difficulties in my personal life and education life, but my inner harmony at the moment has no description.