It’s raining Rust at Red Hat

I know it’s been a while since I’ve put out a post and mostly because I’m trying to learn amazing things and get my hands dirty, trying to build solutions that actually make sense.

One such pet-project has been Rust, probably the fastest growing systems level programming language today. Hitherto, I’ve always looked at Rust from the outside, never got my hands dirty, mostly because I was under the assumption that it had nothing to do with web development. Turns out, I was completely wrong!

This year’s Rain of Rust campaign gave me an opportunity to revisit the programming language and the reason why it’s been garnering interests at astronomical pace. For a nascent programming language which is in the 1.19th version of its release, it’s challenging the big guns – C and C++. Yes, you heard it right.

On to the campaign

The campaign, although initiated and led by volunteers from the Mozilla India community at first was later adopted by the larger Mozilla community with contributions from all over the world like these events in Mexico and Brazil. The main goal of the event was to increase outreach about the language and train developers to contribute in the rust ecosystem.

At Bangalore

As one of the crucial aspects of the campaign was to organize on-the-ground events and so, with the gracious support of our host Sumantro at Red Hat, we managed to pull of a small event consisting of rust enthusiasts and Mozilla Tech Speakers.

We had our very own Vigneshwer leading the introduction to rust and hands-on session. This was well taken by the participants who had just installed rust and exploring what they could do with the language.

With witty remarks, use cases and insights of the language, Vigneshwer kept the participants interested. During the hands-on he introduced the kits built by the Rust India community and explained how participants could use them to learn the language. On the whole, it was a well-rounded session and helped the participants understand why rust is important and how they could contribute.

We then had a talk by Ravi from Ather energy which has used rust components to send  location data packets from its two-wheeler vehicles to the cloud in a secure and reliable fashion. His talk was inspirational as the participants were able to visualize how rust could be used in a production scenario.

For the last talk of the day, we had our own ReMo and host Sumantro show a demo on Rocket, a simple web framework for rust developers. This was in particular interest to me as a web developer, hitherto I was under the impression that rust could only be used for parallel computing and system level programming scenarios. ¬†Now that I know rust has a fast and safe web framework, watch out JavaScript! Here’s Sumantro’s¬†post on how to set it up on Fedora.

 

Last word

On the whole it was personally fulfilling that we pulled off a workshop in ~1 week of planning and what was comforting was that the feedback we received through the new ReMo feedback form was a 6+ on a scale of 0-7. Yay!

Finishing off with a mighty group photo. A round of shout-outs to Bhumika and Ra Fey for helping us out with the posters and social media calls to action! You guys are wonderful. ^_^

 

Rust Workshop | June 2017 | Bangalore

Rust Workshop | June 2017 | Bangalore

 

Fin.

What it means to us, the TRAI mandate

Recently, the Indian telecom regulator TRAI (Telecom Regulatory Authority of India) announced its decision on the issue of differential pricing for data services, after a month long consultation process which can be found in the PDF here. The regulation point blankly rules out differential pricing on Internet services, meaning every packet of data received by a mobile device or a computer from his/her service provider should be priced equally.

For example, if you download 10 MB file from your Goolge Drive or you download a 10 MB file using an FTP Client from your shared hosting, they need to take the same time to get downloaded onto your machine.

As a common man, what it means to you:

  • The entire internet is at your service for the amount you pay
  • You’ll no longer be deceived by dubious claims of free Facebook or free WhatsApp
  • Nobody can take advantage of your data to make money claiming free¬†services (although there are other ways in which your data can be monetized with/without your permission)

As a budding developer, what it means to you:

  • You can still come up with the next Facebook – and if your app is kick-ass people are going to love it
  • You needn’t partner with any third party agency to setup your website or put your app in the market
  • The data you collect from your customers is your own – you needn’t give up user data for some cheesy benefits

As a start-up guy/girl, what it means to you:

  • Your apps have the same playing field as that of Facebook, Uber, etc
  • There is no bias in how users perceive your app unless you want them to
  • Principle of net neutrality is upheld, which ensures that no other app can have more preference over yours and your app may well go on to be one of the world’s best

Good times ahead, thanks for each one of you who contributed to this victory!

PS: The taste of success sure is sweet, caramel sweet! ūüėČ

Together, we SavedTheInternet !

Together, we SavedTheInternet !

 

Git Workflow

Just a draft version – for quick review purpose.

Step 1: Fork your version of the repo online using this guideline.

Step 2: On your terminal, cd into your directory delegated for projects.

$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git

Step 3: Clone repository. This can be found on the cloned GitHub repo under the section called HTTPS Clone URL on your right pane.

$ cd YOUR_FORK

$ git remote add upstream https://github.com/OWNER/ORIGINAL_REPOSITORY.git

Step 4:¬†Setup the upstream (central-repository from where you have forked), the original repository’s clone URL needs to be known. Now, you’re synced.

$ git pull upstream

Step 5: Fetch updated changes from your central-repository.

$ git checkout -b new-branch

Step 6:¬†Create a new branch, for a specific feature you’re going to work on. This ensures no conflict during merge process when someone else tries to work on the master branch.

//Make changes to files using your favorite editor – vim, emacs, sublime-text

$ git add –all

$ git commit -m “Appropriate commit message”

$ git push origin new-branch

Step 7: Work on the changes. Add, commit and push the changes to the origin (YOUR_FORK) repository from the new-branch. Note that the new-branch exists only on your local machine and only after the push is successful, the changes are reflected.

Step 8: Now go to https://github.com/YOUR_USERNAME/YOUR_FORK¬†from your browser and then click on “Compare and Review” to create a PR (Pull Request) from your fork to the upstream (central-repository).

If all goes well your PR gets merged else, come back to this post and start from Step 6.

 

References:

Bugzilla Session at FSMK

Exploring Bugzilla – FSMK #ContributionDrive

This Saturday was all about how to find bugs, rather than how to fix bugs (for a change). Often we developers just log on to Bugs Ahoy¬†to find out our favorite bugs and get to solving them. I really hadn’t given a thought as to what the process is, behind how a bug gets filed until recently when I heard about Mozilla’s bug bounty program. According to the program, critical bugs if reported can fetch you up to $3000, which is a considerable amount of money especially for students like me. Apart from that, it’s like playing god with some poor chap’s well written code. It makes you feel all powerful when you get to point the mistakes, right?

The one thing I understood while I was searching for bugs is that they are like witnesses in a court case.¬†“Bugs don’t appear out of thin air, you got to look for them.”¬† And to be specific I’d like to borrow the words of caitp,

“Usually you’re just going about your day,¬†and then something doesn’t work the way it should¬†or if you’re really lucky it just flat out crashes the browser.”

That’s exactly how you stumble upon bugs. It’s really not rocket-science. Well you need to get a Firefox Nightly or Beta setup ready since this is where the bugs are in abundance, waiting to be exterminated. From Nightly, the version takes shape into Beta and then to the Firefox release version that we are so fond of as you can see here.

Bugzilla Main Page

Bugzilla Main Page

At the FSMK office we first setup a working version of Nightly on our Linux based operating systems. Then, we made accounts on BMO, which was followed by “exploring” the newly installed Nightly version of the browser.

Abhiram, talking about Bugzilla

Here’s me – talking about Bugzilla

I did talk about what known bugs are, and how we differentiate from the unknown ones. When you hit Ctrl + P on your Nightly browser on a Linux machine, you are bound to get the following message,

e10s printing is not implemented yet. Bug 927188.

which confirms the fact that it is a known bug and that, the Print function has still not been implemented properly. When you see the bug info for #927188¬† on the Bugzilla page, you can see that it’s been assigned to someone equally awesome, who’s probably working right now to fix it. As you can see, there’s other vital info about the bug as well. The comment section which follows keeps track of all the communication about the particular bug. And basically gives you an idea as to how the bug’s going to be fixed – sooner or later!

Coming back to what we were talking about, how do you report an unknown bug? Nightly often crashes while multiple tabs are open and you’re trying to load simultaneously, multiple websites. At times, this causes a crash. The page at which the crash occurs might be different at different points of time. Logging the erroneous page could also be helpful for developers to authenticate the site. And when such a thing does occur, all you have to do is this,


  • Click on File a Bug
  • Choose a platform on which your bug is (Firefox)
  • In Step 2 you need to describe a few keywords about the bug
  • If a similar bug shows up, please avoid filing the bug and look for new ones
  • If it’s a new issue, Click on “My Issue is not listed” to go this page
  • Once you’re there, fill in all the steps and answer the questions
  • Click on Submit Bug once you’re done

If you were a part of the #ContributionDrive, do log in your bug number for the BugSprint (tinyurl.com/bugsprint) . And on verification, we do have some goodies for you.

That’s all for today folks. I hope it would’ve been a lot more better if the power god had shown some mercy. Do put in your feedback, suggestions or any questions you might have in the comment section below. I’ll be happy to get back to you.

Mozillian in the crowd

Mozillian in the crowd

Selfie time

Selfie time-1

Selfie time

Selfie time-2

Peace out.