I worked through the excellent introductory course to Ruby by Boris Paskhaver on Udemy.com (https://www.udemy.com/learn-to-code-with-ruby-lang). The following is a list of things the course has either taught me or refreshed in my mind, which I hope will be of use to others.
Showing posts with label ruby. Show all posts
Showing posts with label ruby. Show all posts
Wednesday, May 16, 2018
Friday, January 12, 2018
A Word of Thanks to Gleam.io
I wish to thank Gleam.io for the invaluable experience of working as a junior software development intern from August 2017 until January 2018.
When I started my internship, I had about seven months' self-study of Ruby and Rails, with a smattering of HTML, CSS, Github, etc. During my time at Gleam.io, I got to learn the ins-and-outs of a large commercial codebase, and saw first hand how an excellent product is built, maintained, and supported with intelligence and empathy.
I navigated the choppy waters of dependencies and got a complex commercial application running on my local Linux machine. (I also updated the README to make life a lot easier for the next person)
I got a bunch of pull requests approved.
I made mistakes, and learned from them, in using Github.
I kept on using Rubymine until it made sense to me.
I spent countless hours reading the code, hunting for clues; Google and Stack Overflow were my constant companions.
I wrote tests that failed, then passed, then failed again, then passed.
I went mountaineering on a learning curve of Ruby and Rails, especially Rails; now I understand essentially how it fits together and is used to build websites that serve the needs of customers.
![]() |
| A fair representation of the ardour and the rigour of studying Rails. |
I got to pair program a bit and work remotely a lot — I enjoy them both very much.
In short, I was given every opportunity to learn from seasoned veterans, the value of which is beyond measure, and was treated with tolerance and respect by everyone on the team.
Chief amongst the myriad things I am grateful for is the self-confidence I am imbued with. When I started my journey into software development, self-belief was one part reason, two parts faith. But now I can say that someone saw the potential in me, even though I didn't have the requisite skills and knowledge for the role, and gave me a chance to fail and succeed, fall down and pick myself up.
The guys at Gleam.io didn't have to take me on, but they did; they didn't have to invest in me, but they did. They allowed me to see how I measure up against people who have been working with software for half my lifetime, and what I saw (although daunting at times) gives me great hope for my own prospects as developer.
Now that I have been part of a commercial development environment, I know for a fact that I can become a genuinely good developer with a reasonable amount of study, regular practice, and some guidance. I will apply for junior development positions confident that the requirements of the role are well within my zone of proximal development.
Every time I turn on my System76 laptop (currently running Ubuntu 16.04.1 with Gnome Shell, but I might switch to Arch), I am reminded of the countless kindnesses shown to me, and take heart that the Next Big Thing in my journey is just around the corner.
Saturday, July 8, 2017
Weaning Myself Off Nested Conditionals
Thursday, July 6, 2017
Wednesday, July 5, 2017
800 Pomodoros (400 work hours)
I have officially spent 400 hours in my pursuit of a career in software development.

I summarised my achievements at the completion of 700 pomodoros, and I don't have an awful lot to add, except that I understand HTML and CSS a bit better and am in the process of refining my knowledge of programming fundamentals in Ruby.
There are days when I feel a little disheartened by not having a job yet, but I knew it would be a long process when I started it and there's plenty to take heart from. Let's see how I'm situated by the end of this cycle.
I summarised my achievements at the completion of 700 pomodoros, and I don't have an awful lot to add, except that I understand HTML and CSS a bit better and am in the process of refining my knowledge of programming fundamentals in Ruby.
There are days when I feel a little disheartened by not having a job yet, but I knew it would be a long process when I started it and there's plenty to take heart from. Let's see how I'm situated by the end of this cycle.
Monday, June 12, 2017
A Snippet of Code for Converting HTML Classes to CSS
I'm practising my Flexbox skills and I didn't want to type out the names of the classes ad nauseam.
Tuesday, June 6, 2017
Coming Back from Disappointment: A New Chapter
Review: Putting it all in context
After 700 pomodoros of studying, coding, blogging, and job-seeking spanning five months, I am still without my first job as a junior developer. The hardest part of it all is maintaining an optimistic outlook after repeatedly being turned down, especially after the excitement of performing so well in numerous interviews.But that won't stop me. There are identifiable reasons for my failure, and the good news is that all the things cited are eminently improvable and correctable:
- Quite simply, the quality of my code, into which I have poured so much effort, is still not good enough in the estimation of the interviewers. This is good news, for I can learn from their feedback and code to a higher standard.
- After one poor performance in a pair programming interview, I handled myself well in very similar conditions three days later. I know where I went wrong in the first one; I know what I did right in the second. I can build on this.
- I need to familiarise myself with the core competencies, frameworks, and tools of front-end development. My plan was always to give myself a solid foundation of programming in Ruby and a basic sense of DevOps with Vagrant and Docker, and although there is room for improvement in that regard, the task of getting really good at HTML, CSS, Rails, Heroku, etc is now a lot easier.
Add to that, I have gained a lot of contacts, spent plenty of time at meetups, made good impressions on many people, and have a highly sophisticated approach to learning and time-management.
So all things considered, I am many miles further down the road than when I set out on this journey at the beginning of the year.
Where to from here?
Rails
I think I'll muscle through Michael Hartl's Rails tutorials. Although there are many good ones, this one is updated to Rails 5 and seems to do a fair job of sticking to the core knowledge. The Odin Project looks good as well, but there's no point in jumping around from course to course.
HTML/CSS
Many experienced developers tell me that most juniors today are pretty weak on HTML and CSS, having jumped straight to boilerplates, JavaScript, and plugins.
As with other endeavours, I believe wholeheartedly in mastering the fundamentals. It is hard to make such a commitment to something seemingly outdated, but I believe it will benefit me greatly in the long run.
JavaScript
The debate between Ruby and JavaScript rages on, and I have heard it said from those in the front-end world that the only language you really need is JavaScript these days. I am glad I chose to learn through Ruby, and having gained a grasp of the fundamentals, learning JavaScript will be less daunting from here on out.
Summary
As much as I'd love to have been picked up by a company already, I am not really behind schedule at all, all things considered, and having taken some time to relax, recharge, and review, I am now keenly looking forward to the next couple of months.
Wednesday, May 31, 2017
Wednesday, May 3, 2017
State of the Mission, 2017-05-03: Lots of Coding
I know I've been very quiet lately, but there's a good reason for it.
Here's what I've been doing on Verbalyser:
And this is what I've been focused on for the last few days. I'm not at liberty to share my code, but I think it's pretty clear how I've gone about it.
Here's what I've been doing on Verbalyser:
Friday, April 28, 2017
Refactoring and Unicode
Ruby's implementation of Unicode for Lithuanian, an admittedly complicated language, is not perfect but I have modified a useful script on Gist for identifying the unicode value of a given character.
Now that I can identify the unicode value of tricky diacritics and accents, I can refine my code.
Details of the script here.
Now that I can identify the unicode value of tricky diacritics and accents, I can refine my code.
Details of the script here.
Friday, April 7, 2017
Lithuanian gives you good practice with regex
I'm parsing Lithuanian verbs, and in tidying up the raw HTML, I'm compelled to come up with little beauties like this:
<a href="\/[a-z]*\/[a-z]*\W*[a-z]*\W*[a-z]*">
...in order to to clear away the HTML formatting.
The problem lies in the fact that Lithuanian diacritics (ÄŤ, Ĺľ, Ä—, Ä™ and so on) are not recognised as letters [a-z] but rather as non-word characters \W.
<a href="\/[a-z]*\/[a-z]*\W*[a-z]*\W*[a-z]*">
...in order to to clear away the HTML formatting.
The problem lies in the fact that Lithuanian diacritics (ÄŤ, Ĺľ, Ä—, Ä™ and so on) are not recognised as letters [a-z] but rather as non-word characters \W.
Wednesday, April 5, 2017
Starting To Understand Static Pages in Rails
Just finished Chapter 3 of the Ruby on Rails Tutorial (Rails 5) by Michael Hartl, and after the umpteenth time going through "rails new app" and "rails scaffold this-that-or-the-other", I got on to static pages. It's a bit to take in, but it's starting to make sense.
Tuesday, April 4, 2017
Rails Web Console
I am running Rails from within an Ubuntu Vagrant box:
Vagrantfile specifies ports to open during "vagrant up".
The HTTP address (localhost) is accessible.
However, I ran into this problem.
This solution worked for me.
Thursday, March 30, 2017
Rails Day 5: VirtualBox It Is, Then
After a lot of fiddling with Docker, I have decided to stick with a simple development environment in a customised Ubuntu box in Vagrant. I will get back to Docker, but for now I'll stick to what I know and get on with the business of learning Rails properly.
I find sometimes when I'm learning something new and difficult that I have to bash away at it, fail, and then come back a week later. The concepts haven't quite come together in my head and my work blocks get chewed up without my having much to show for it.
In the meantime, I have a functional Rails development environment with Postgresql running in Vagrant/VirtualBox:
I find sometimes when I'm learning something new and difficult that I have to bash away at it, fail, and then come back a week later. The concepts haven't quite come together in my head and my work blocks get chewed up without my having much to show for it.
In the meantime, I have a functional Rails development environment with Postgresql running in Vagrant/VirtualBox:
Wednesday, March 29, 2017
Rails Study, Day 4: Still Working on the Dev Environment
So far I have spent time on the following:
- Vagrant
- Docker
- Digital Ocean Droplet
- Heroku
However, I'm going to take a step back and reconsider what I'm trying to accomplish.
What is my deliverable?
I want to build a Rails site, hosted on Heroku, that showcases my solutions to puzzles from Advent of Code.
How is my work supposed to flow?
![]() |
| Images, containers, Atom, etc. |
- Development environment (DE) is separate from the host operating system. (Docker container or VM)
- Text editor (Atom) has read/write access to the code in the DE.
- The DE can be easily duplicated for a sandbox server.
- Code from the DE can be pushed to Github; from Github, the latest code cloned.
- Changes from the DE can be pushed to Docker Hub; from DH the latest version of the DE.
- Production code from the DE can be pushed to Heroku; from Heroku, the latest production code, although that should be available in Github.
What are the specifications of my development environment?
- Version control of all relevant packages.
- Read/Write access to development environment from host.
- Access to online platform (Github,
- Available locally, without a constant internet connection.
- Totally accessible by Atom text editor on my host machine.
- Can upload code to Heroku, pull the latest code from Heroku, and push updated code to Heroku.
- Can push updates to the environment to a repository.
What shall be my development environment?
- Docker container for the DE, with all the necessary packages installed.
- Atom text editor installed on host.
- FTP access between DE and host.
- Github access from DE.
- Docker Hub access from DE.
- Heroku access from DE.
Rails Study, Day 4: Docker and Vagrant
I came for Rails, I'm working on DevOps.
The purpose of this post is to give an account of setting up my development environment in order to study Ruby on Rails.
I am already familiar with Vagrant, and initially thought I would spin an Ubuntu 16.04 box and work in that. However, the obvious and numerous disadvantages of working in a virtual machine on a local hard drive demanded that I find something better.
So I decided to finally invest some time on Docker, and I have to say, once I wrapped my head around the concept of containers, getting started seems fairly straightforward.
Initial Steps:
- Install Vagrant on my host
- Install Docker on my host
- Spin up an Ubuntu box in Vagrant
- Install Docker on my VM
- Create an account on Docker Hub
- Download the Heroku Cedar 16 image
- Create a private docker repository on my host
- Run the Heroku Docker image
- Push a modified Docker image to my own repository
- Pull the modified Docker image to my VM
And so forth.
As I want my development environment to mirror Heroku's settings as closely as possible, I decided to see what the Heroku website itself has to say on the matter.
My inclination was to keep it simple by using Vagrant, but Heroku's Cedar stack is available as a Docker image, so I will go with Docker instead. I've been meaning to familiarise myself with Docker for a while, so this works for me.
Official Notes for Docker are available from Gist.
This videos helps to demystify Docker.
I'm now looking into simplifying it further and using a Droplet from Digital Ocean.
Monday, March 27, 2017
Rails Study, Day 2: Rails Install Fest
I have started a demonstration blog on Rails according to the instructions on the Ruby on Rails Install Fest, my first proper attempt at building something substantial on Rails. My goal is to build a website that showcases my solutions to Advent of Code, but the first step is to have a site running on Rails, and in my case, hosted on Heroku.
Wish me luck!
Update:
Update:
Had to solve problems with installing the following gems:
Wish me luck!
Update:
Update:
Had to solve problems with installing the following gems:
- json
- pg
The json gem was set to 1.8.3, but I solved it by forcing the version to 1.8.5.
The pg gem was able to install after I properly re-installed Postgres on my machine.
Update:
Now running into problems with Postgresql.
Update:
Now running into problems with Postgresql.
Friday, March 24, 2017
Thursday, March 23, 2017
Ruby Achievement Unlocked, Time for Rails
Having reviewed my solutions to the first three Days of puzzles of Advent of Code, I am now comfortably proficient in the fundamentals of programming in pure Ruby.
When presented with a problem, I am confident that I can do the following:
Thereafter, I am now confident that, given enough time, I can solve the problem. There is room for vast improvement, but that will come with time.
I really enjoy the daily solution of programming puzzles, and would love to solve all fifty; however, my duty is to prioritise my studies according to optimal employment criteria, and there aren't a lot of jobs going for junior developers who specialise in solving fun puzzles in pure Ruby.
Having passed this milestone in my learning, I am now ready to hit the books again. My study plan encompasses the following:
To gain experience in upgrading older Rails versions, I could probably clone the source code of an existing Rails to a virtual machine, on which an old version of Rails is installed. However, this is a lower priority.
As all who know me can attest to, I can learn and work quickly and efficiently, and am adaptable and resilient. I also take pride in managing expectations between multiple clients and communicating with both clients and colleagues.
For the next couple of weeks I will focus primarily on the Rails framework by working through Ryan Bigg's promisingly large tome: Rails 4 in Action. In this way I expect to establish a thorough grounding in Rails and also a gain a perspective on the changes from Rails 4 to Rails 5, which could come in handy if I ever work on a legacy codebase.
When presented with a problem, I am confident that I can do the following:
- Define the problem
- Describe the solution broadly in programming terms
- Denote the likely classes and methods to be used therein
Thereafter, I am now confident that, given enough time, I can solve the problem. There is room for vast improvement, but that will come with time.
I really enjoy the daily solution of programming puzzles, and would love to solve all fifty; however, my duty is to prioritise my studies according to optimal employment criteria, and there aren't a lot of jobs going for junior developers who specialise in solving fun puzzles in pure Ruby.
Having passed this milestone in my learning, I am now ready to hit the books again. My study plan encompasses the following:
- Build a website in Ruby on Rails to showcase my Advent of Code puzzle solutions. This includes the following:
- Deep knowledge of Rails
- Proficiency in Javascript
- Proficiency in JQuery
- Proficiency in HTML/CSS
- Proficiency in PostgreSQL and/or mySQL
- Writing automated tests in RSpec (my preference) or Factory Girl
- Host the website on Heroku
- Additionally, I will further my knowledge of the following:
- Coffeescript
- Haml
- Amazon Web Services: it would be good to know which services are of the highest priority, as one could spend a lifetime on there.
To gain experience in upgrading older Rails versions, I could probably clone the source code of an existing Rails to a virtual machine, on which an old version of Rails is installed. However, this is a lower priority.
As all who know me can attest to, I can learn and work quickly and efficiently, and am adaptable and resilient. I also take pride in managing expectations between multiple clients and communicating with both clients and colleagues.
For the next couple of weeks I will focus primarily on the Rails framework by working through Ryan Bigg's promisingly large tome: Rails 4 in Action. In this way I expect to establish a thorough grounding in Rails and also a gain a perspective on the changes from Rails 4 to Rails 5, which could come in handy if I ever work on a legacy codebase.
Subscribe to:
Posts (Atom)
1,050 hours
It took me 13 working days to complete my first 100 "work" pomodoros as a Junior Software Tester at Profectus Group. Much of ...
-
I have finished re-writing my text adventure game, Tree House Prince, available here: ( https://github.com/clockworkpc/tree-house-prince...
-
NOTE: My fiancée wishes to stay out of the online limelight, and neither her real name nor her image shall appear in this or future posts. ...
-
It's 03:08 and I am finally starting to make sense of object-oriented programming. It's not that I didn't understand it concep...



































