Over the last weeks I’ve been focusing on C++ in order to broaden my job options and apply for a specific job offer.

After learning Java beforehand it is an interesting experience that allowed me to learn both about similarities and differences between the languages. I understood firsthand that many programming languages are closely related and that knowledge of one of them can be very beneficial when trying to learn the another. Even if I don’t end up getting a job related to C++, time spent on it was definitely worth it.

Clearly just acquiring knowledge by reading something over internet isn’t enough when it comes to gaining new insights. While I read many times about similarities between the programming languages, only now after seriously learning Java and then C++ I really felt how closely related they are. On the other hand, JavaScript seemed quite different to me and was confusing at times.

This marks my first efforts to find an actual programming job, since I sent my CV today applying for a job. Before that I only asked at my current job whether they are looking for a new developer/intern.

My goal stays the same: to find a job as a developer by the middle of February 2020.

After taking 50 area screenshots from some document I found the save dialog that shows up every time quite annoying.
I wanted a functionality where:

  • By pressing a keyboard shortcut my mouse pointer turns into an area selection tool
  • The selection of an area begins by mouse press, ends when I release the mouse buttons
  • Screenshot is automatically saved to a file
  • No confirmation windows, no need to press any additional buttons

This led me to spending some time with gnome-screenshot and some other tools.

I’ve looked in keyboard shortcuts and still couldn’t find a solution. I’ve tried to use Shutter: which every time required me to confirm the screenshot and was slow. Then I’ve looked into gnome-screenshot -h and found that it allows to specify a filename within the command. This allowed me to later find the two solutions below:

Solution one

  1. Install and run CompizConfig Settings Manager (sudo apt-get install compizconfig-settings-manager)
    1. In commands window add as one of the command lines: gnome-screenshot –area –file=/home/tom/Pictures/$(date +%y-%m-%d-%H%M%S).jpg
      1. where „user” is your username. You can use any folder that you have a permission to save files. It will save each area screenshot and give it a filename that is the current date and time.
    2. Change to the Key Bindings tab, click on the button with the Disabled label that corresponds to your previously edited Command Line. Press the Grab key combination button and create a keyboard shortcut of your choice
    3. You should be able to take screenshots of an area by pressing the previously chosen keyboard shortcut, where screenshots are automatically saved (in the case of this example, in your Pictures folder).
    4. If the keyboard shortcut you choose doesn’t work, go to System Settings -> Keyboard -> Shortcuts and make sure that the keyboard shortcut isn’t already assigned to anything.

Solution two

  1. Go to your /usr/bin/ folder and make sure you have the permissions to save files there (https://websiteforstudents.com/enable-open-as-administrator-on-ubuntu-16-04-17-10-18-04/)
  2. Create a new text file, copy the code below into it and save it at /usr/bin/ (the path to it should be /usr/bin/filename)

  1. Right click on the created file, choose properties->permissions and check „Allow executing file as program”
  2. Now go to System Settings -> Keyboard -> Shortcuts -> Custom Shortcuts, press the „+” button to add a new shortcut
  3. Name the new screenshot however you like. Make sure the command name is the same as the filename you’ve created in the previous step
  4. Click on the Disabled label to the right of your newly created shortcut and assign a keyboard shortcut to it
  5. Try it out 🙂

3 weeks passed since my last update post. Here is a small update

  • I finished the Java for Complete Beginners. It was a nice introduction to Java.
  • Udemy course: I went through the parts about control flow statements, Classes, Constructors, Inheritance and I am in the middle of the part about Compositions.
  • There are some challenges to do after each section and the course is quite robust. I’ve checked more closely the next sections and so far there is no need to go to other resources. The challenges require me to test my knowledge and are well done.

Hello World!

it’s only 10 days since the last post, you might think. I find the idea of updating my progress through the blog posts encouraging and a it might help me to self-reflect on what I’m doing. I’m my only coach right now. Let this blog be my second one 🙂 Oh, right! There are some friends who I talk with about becoming a developer and who work in the field. There is more than just the two of us!

  • I have 1 video left on the Java for Complete Beginners course! This took some time, because I had to go through all the new concepts, especially the ones about the Data Structures. I can’t say that I’ve mastered everything. I can say that I know so much more compared to the time before the course.
  • I didn’t make much progress to my surprise on the Udemy course. I have to work harder on it!
  • I watched some videos about the Spring framework
  • I checked job offers for what is required of me when I will be applying for jobs, I now have much better of an idea
  • I watched a video outlining specifically what is required for getting that Java developer job. Basically knowledge of one programming language (Java) and and how to use it + all the bonuses that make me a better candidate like knowledge of Git, design patterns, relative databases, TDD, knowledge of HTTP protocols, REST services, clean code, solid, HTML, CSS
  • I decided what my leading project will be to finish till the end of October, which will allow me to practice all the concepts required of me when I apply for jobs: songs database stored on the server with a website client. Like a smaller version of Spotify, where I will start with setting up a server, database and making it possible for a client to manipulate that database. Then I can try to add functionality like storing music files and playing them.

 

Hello!

Here is a quick update on my progress with learning Java.

  1. I have 5 videos left out of about 70 (88% complete) on Java for complete beginners course on the caveofprogramming. I’m going through it thoroughly, typing code myself, testing things out myself too. Right now I’m about to finish the part about data structures which I have to say I enjoy a lot. I get to learn a lot of relevant, new things every day.
  2. I’m also doing Java Programming Masterclass for Software Developers (56/402). While tutorials on caveofprogramming are already quite old, this course is newly made. What I absolutely love about it, is that like 80 – 90% of time I spent so far on all the different coding challenges instead of watching the videos.
  • my plan is to try to finish above mentioned courses by the end of July and then go on onto making my own projects.
  • to further better my skills I will get some experiences programmer/coach to look into my code and give me some tips, correct my ways of doing things each week.
  • I would like to have some projects done by the end of October and then start applying for my first programming jobs.
  • I want to find a job by the middle of February 2020.

I’m literally counting days everyday by the time I have to get done some projects to show on my resume and till the time I have to find a job. This is serious 🙂 You can find updates on what I’ve done on my github page.

Hello World!

100 days of code

I’ve been doing #100DaysOfCode and managed to reach day 50. Noting down progress every day and sharing it on social media is very helpful while learning a new skill. I reached only the day 50, since I didn’t write the days that I literally did nothing. You can find my #100DaysOfCode notes here.

HTML, CSS, JavaScript, React and… Java

I managed to finish about 200 out of 307 lesson on Udemy course: The Complete Web Developer in 2019: Zero to Mastery by following the lectures and doing the challenges. When I reached the lessons about React, it finally came to me that I don’t like Front End Development enough to make it a center of my future career. Having to deal with arranging graphics on the website and some other more design related things were just making me feel miserable. That was one of the reasons I didn’t spend as much time on learning as I would’ve liked to.

Coffee time

After some consideration, consulting the internet, few of my friends, doing research on the job market and bringing up my past experiences during the university, I came to the decision. I will learn something that my data and excel spreadsheets loving brain can grasp easier. I was considering C# and Java, in the end making a decision to go for Java. C# is still bound to Windows OS, which I rarely use.

New Goal

My new goal is to get a job as a Java Developer by the end of this year. I will use all the means I have to reach that goal, with simple self-learning at the base of it. I’m even more determined than before. Since the time I first wrote on this blog I came to love to travel and I need to find a new job to be able to do more of it!

A great way to feel more inclined to learn programming is sharing your progress within a community.
 projects are meant exactly for that.
Every day for 100/301 days tweet your progress publicly. Just seeing how people like, share, comment your posts every day will help to get you moving forward.

Check their respective websites: https://www.100daysofcode.com/ and https://301daysofcode.com/

The short and sweet answer is: whenever, wherever, however you can.

SoloLearn

What I mean is that you can use the commute time to your work by coding on your phone or learning with applications like Enki or SoloLearn. It’s a very good learning experience!

When you are at home and have 10 minutes of free time – use it! Do that next exercise on FreeCodeCamp or change one line in your current project. Reread and better understand the code of some project one more time.

What you will find is that your attitude matters a lot when trying to attain a new skill. Don’t hesitate, don’t think too much. Just use every opportunity possible to move forward. Once you don’t hesitate to use a small window while riding a bus to learn more, you won’t hesitate to spend 3 hours on the weekend too! Stop doing some progress. Start doing as much progress as your current life situation allows you to. Not only you will learn, but you will be energized, positive and look forward to doing more each day.

Thoughts -> Words -> Actions -> Habits -> Character -> Purpose

Thoughts turn into words, words turn into actions, actions turn into habits…

When you decide to sit idly when you could be learning, you lose much more than some time spent on learning. You consciously decide that it’s not that important and you are fine as you are. You resign, when you don’t need to and tell yourself that your goals aren’t that important. When you decide to use that moment instead and put more effort, it builds up. You become serious about it and the results are sure to come.

Happy results in the new, 2019 year!

I had some trouble with understanding how the cubic-bezier function works while going through the tutorials on https://freecodecamp.org. My answer is based on the previous answer by eirenaois on StackOverflow.

1. Bezier curve is based on four points: P0, P1, P2, and P3. P0 is set by default to (0, 0) and P3 is set by default to (1, 1). These are the beginning and the ending of the curve and you can’t change them.
2. The curve will stretch differently depending on what coordinates you give for points P1 and P2.

In the example above P1 is set to (0.1, 0.1) and P2 is set to (1, 0). The speed of the animation depends on how much does the state change per given amount of time. In this example, the animation gets faster with time. For the first half of the time used for the animation, it will cover about 15% of the distance (when Time = 0.5, State ~ 0.15). It will cover the remaining 85% of the distance in the second half.

Please check the example in jsfiddle to see how the animation works in practice: cubic-bezier ball animation

HTML:

<div class=”ball”></div>

CSS:

  .ball{
background: red;
border-radius: 50%;
position: fixed;
width: 50px;
height: 50px;
top: 50%;
animation-name: bounce;
animation-duration: 4s;
animation-iteration-count: infinite;
animation-timing-function: cubic-bezier(.10, .10, 1, 0);
}

@keyframes bounce {
0% {
left: 0%;
}
100% {
left: 100%;
}
}

In the example, the ball moves from the left edge of the screen to the right edge over the course of 4 seconds. Keyframes are there to set where the animation should begin and end, animation-timing-function: cubic-bezier() to set the speed of the animation at different points in time.

You can find the CSS cubic-bezier Builder here.