Sunday, September 24, 2017

Find your perfect IDE

I am the person who learned C and C++ using a good old plain vi...
Quite a few of my friends who helped me in my C++ journey we begging me to get some other IDE and even offered to install some. 

And finally I just gave up and got Visual Studio. I have used VS quite a lot from the moment I have actually wrote my first "Hello World" long long time ago. I have used VS 2005, 2008, 2010, 2013, 2015 and
now I am quite a fan of Visual Studio 2017.

It's hard to get started with Visual Studio, but as soon as you get familiar with all the features you can benefit from those a lot and increase your productivity! I guess, the only disadvantage of Visual Studio is that you need a license to use it and it's available only for Windows Users. 

The next IDE that I love is IntelliJ IDEA. This IDE was a dramatic upgrade for my Java course. I am thankful for my friend who have recommended it to me about a year ago. The first nice thing is that you can get a free version. 

One day I was writing a function for my assignment and next to it's title has appeared a yellow bulb. IntelliJ has suggested me to modify the function into lambda function. I thought: "Ok, I can rewrite it" and the button "generate lambda function has appeared". Being a heavy vi user I didn't think it would be that easy and I thought I would have to modify it. But the generated version was just perfect! It was the happiest day in my programming life and Java course was one of the easiest ones so far.
I have also used Visual Studio Code quite a lot recently. Good news! It's easy to use and it's free! VS Code includes all the features you need to have to write, compile and debug code! And it's available for all operating systems!
Here are some life-hacks for VS Code fans:

1. How to open VS Code from command line(Windows)?
Open command line => type "code ."

2. How to search for a phrase in all your project's files?

3. How to search for a phrase in on file?
Ctrl + F

4. How to split the screen into 2+ editing windows?

Wednesday, September 20, 2017

The MIT License: Layer vs Developer

In an open source class professor have suggested me to read the plain MIT License and then compare my thoughts to the article written by layer with line by line explanation of the license.
I feel like this is going to be an interesting experiment since I Am Not A Layer.

The first thing that I missed reading MIT by myself was a structure of the license. It is quite interesting, because quite a few other licences I saw follow the same structure. And luckily to me, Kyle E. Mitchell, the author of this blog-post did. I think it is important to highlight it here:
  • Header
    • Licence Title
    • Copyright notice
  • Licence grant: "Permission is hereby granted..."
    • Grant scope: "... to deal in the Software..."
    • Conditions: "... subject to ..."
      • Attribution and Notice: "The above ... shall be included ..."
      • Warranty Disclaimer: "The software is provided 'as is'..."
      • Limitation of the Liability: "In no event ..."
Along with the structure Kyle also covered a bit of history which I found extremely interesting, again here is a link for you to read the full article.

Another interesting part was an explanation of Grant scope phrase("to deal in the Software without restriction"), the layer has explained it as "intentionally broad and open-ended". Apparently it gives more freedom for licensee.

To sum it all up, the MIT License grants permission to use and even sell Software and at the same time protects licensors from liability. Still that's one of the most popular and widely used license nowadays.

Is it easy to compile source code?

Starting from the previous week I have worked on compiling Mozilla Firefox (v 55.0.3) source code.
The first thing I did was getting a hard drive. After my professor has scared me with 40 Gb of source code I had to order it. 

Later on I figured that 40 Gb is a whole history of all the versions, bug fixes and changed front-end.
The version I got from this website is less then 2 Gb, so don't get scared! 

I have been following the instruction on Mozilla Developer website. Fortunately, I have had Visual Studio 2017 on my laptop with almost all the required C++ packages. Next step was downloading and setting up Rust.

And then the fun begins with opening a terminal from start-shell.bat from mozilla-build. The few commands you type: "mach bootstrap" and "mach build".

It takes a bit of time, but as soon as the build is ready, you just hit "mach run" and voila... you got a home-build version of Firefox(that's what they say in the documentation).

In reality the fun part is only about to start... You will have to deal with quite a few errors.

One of the issues I have had was the Rust error: "error[E0463]: can't find crate for 'std', note: the 'i686-pc-windows-msvc' target may not be installed".

The solution for that was a command: "rustup target add i686-pc-mingw32".
Quite a few of my classmates got some issues with Rust version, environment variables and executable files. So keep in mind that it won't necessary be an easy journey, but definitely you will get a lot of valuable experience.

And at the very end it's all worth it, since you got an excellent feeling of accomplishment and confidence as a programmer!

Friday, September 8, 2017

Golang by Google

A while ago a friend has recommended me a website called LeetCode to practice my C++ programming skills. I have completed a few tasks. When I checked runtime statistics I saw that almost every solution written in Golang (aka Go) was a bit faster then C++. It immediately caught my eye. I read a few articles and books about it, saw a few tutorials; later I even used it at my job!

So a bit of background: Golang was created at Google in 2007 and was announced in November 2009. It is a free, open source, popular technology supported by a large community!

Nowadays quite a few big companies use it on a regular basis, including Google, Soundcloud, Dropbox, Docker and many others. 

Why is it so fashionable?

First of all, Golang supports concurrency, which is an incredibly widely used feature since computers have more and more cores. And Gorutines were designed to be an easy, pleasant experience.

Also Golang is comparatively fast to learn and start leveraging from it. The language has easy-to-read documentation, neat syntax and a great number of amazing tutorials out there. And if you want to try something out really fast or just test how some functions work you can use Playground.

The other good thing is a very strict compiler; every small possible warning/error would generate "panic" messages. It even complains about unused variables or packages! That's why the application would be safe and have as few bugs as possible. You don't have to think about memory leaks as well, because everything is cleaned up for you by Go! Isn't it just wonderful?

And that's just a few pros of this fairly new, hot language!

Thursday, September 7, 2017

Hello Web!

Hi, my name is Svitlana!

I am a third-year student of Computer Programming and Analysis in Seneca College.

Recently I have been using a lot of new(for me) and exciting technologies, including Golang, Node.js, React, Cloud Foundry and some others. 

Most of the time I work by myself, but if there is a chance to work in a team I would go for it. 
I think that team work is an excellent opportunity to share your ideas and get to know new interesting people.

I believe that you can achieve a lot if you work hard. And that's what I am trying to do!

It's only a beginning

What have I learned for the past 8 months of Open Source Programming? I was convinced from the very beginning that this course would be i...