My favorite Ruby gems

This is the fifth installment of the blogging assignments (out of seven), that I am required to complete during the Fullstack Web Development online program, LearnVerified, at the Flatiron School. Not only do they ‘make us’ learn lots of code…they want us to blog about it as well. This installment will cover some of my new favorite Ruby gems that I have discovered so far during my learning to code journey.


As the saga continues…

Progress Update

I am still, ever so slowly, pushing my way through the curriculum. After my pretty impressive code streak early on in the race, I hit a few ‘bumps in the road of life’ that have significantly slowed my progress. Yet, despite those bumps, my love of learning and love of code continues. My progress through the course may have slowed down, but I am still coding every day and enjoying the learning process.

During the last few months, despite the crawling pace through the LearnCo curriculum, I have managed to work my way through a couple of in-depth, Rails coding courses, through Udemy that I had previously purchased but hadn’t gotten around to working on yet. As well, as making progress through other coding platforms like Treehouse and SoloLearn, which may not seem all that productive in the grand scheme of things, but for me, they are life savers for squeezing in free moments throughout the day to code.

Despite My Bumps in the Road of Life

Even with my ‘bumps in the road of life’ I have managed to achieve a pretty ‘green’ GitHub contribution graph, considering at the beginning of 2016, I didn’t even know what GitHub was, nevermind knowing the significance of the GitHub Contribution graph?!?!

My GitHub Contribution graph Learning To Code Favorite Ruby Gems

My GitHub Contribution graph

I am actually glad to have put these courses off till I had worked my way through a good portion of the curriculum at LearnCo, as it was a cool way to sort of solidify some of the stuff I have been learning and being able to see it in action as I went through these tutorials building various apps.

During my little ‘side trip of Udemy tutorials’, I have stumbled upon some useful little ‘gems’ (pun totally intended) at RubyGems.org that have been great additions to my growing list of helpful gems to use while working with Rails applications.

So without further ado…

 12+ new (well, new to me) favorite Ruby gems

  1. hirb – provides a mini view framework for console applications and uses it to improve rails console (or irb) default inspect output. This was probably my first cool gem find (at least until I further investigated and found #2 on this list), other than the more commonly used gems like Devise, Bootstrap and even Rails (which are all pretty cool in their own right!), cause it just makes the output in the console so much easier to read and search through.
  2. table_print – similar to the Hirb gem…but even cooler! TablePrint turns objects into nicely formatted columns for easy reading. I find this much easier to customize the information you would like to see by using symbols or strings to reference the columns.

    Default console output vs. TablePrint output Learning To Code Favorite Ruby Gems

    Default console output vs. TablePrint output

  3. simple_form – as the description says ‘Forms made easy!’ For basic forms, the gem simplifies the code for a Rails form. I have read some cautionary tales about using it as a newbie, as you should concentrate on learning how to first use the Rails regular form helpers before ‘simplifying’ things…but I added it as a new gem I encountered on my ‘Udemy tutorial side trip.’
  4. bootstrap-twitter-rails – this gem makes it incredibly simple to create/generate a nice-looking website. It provides a few generators to create a Bootstrap layout and resource CRUD views.
  5. rubocop – is a Ruby static code analyzer. Out of the box, it will enforce many of the guidelines outlined in the community Ruby Style Guide. In my relative newbie status as a Ruby on Rails developer, I have quickly become aware of ‘DRY principles’ and ‘code smell’…Rubocop has opened my eyes to a whole ‘nother level of coding OCD!
  6. cancancan – is an authorization library that restricts what resources a given user is allowed to access. Use it to define which role can read/update/delete which resource. All permissions defined in a single location and not duplicated across all controllers, views and database queries.
  7. kaminari – for easily adding pagination to your application. Similar to will_paginate which I have also used on my ‘Udemy tutorial side trip’ with ease as well.
  8. devise – I have learned quickly that this is the go-to gem for user authentication. Basically, authentication determines who the user is, via email/username + password. Devise handles sign in, sign up, reset password, etc.
  9. carrierwave – allows you to upload files to your application. Restricting file types or defining styles when working with images such as thumbnails and profile sizes is made simple. Similar to Paperclip which I have also used with a couple of different applications including the very first Rails tutorial I ever completed, in which we created a Pinterest-clone, you can check my finished app out here.
  10. gritter – this gem allows you to easily add Growl-like notifications to your application using a jQuery plugin called ‘gritter’. When I was first introduced to this gem I didn’t exactly know what Growl notifications were (I have since Googled it), I thought learning how to implement this gem was cool cause I could have snazzy new flash messages.
  11. coderay – is a Ruby library for syntax highlighting. As someone learning to code, being able to reference a line of code and have syntax highlighting applied when writing a blog post or commenting on a coding blog post, is something you get used quickly and then feel ‘naked’ without it when you don’t have it. You put your code in, and you get it back colored; Keywords, strings, floats, comments – all in different colors. And with line numbers.
  12. redcarpet – a gem that easily adds extensible Markdown to (X)HTML parser. This gem I find particularly useful considering one of the first basic apps you might create when learning to code is a blogging app. And although creating the app is pretty cool, if you wanted to use it for your blog you would quickly find that there is no styling to your text…it just ends up as one big wall of text. Being able to markup your blog post with Markdown (so that you can having the ability to add headings, paragraph breaks, images or links etc) makes the app feel more real.

Lessons Learned Might Justify the Snail Paced Progress

Although I am disappointed with myself for letting the pace of my LearnCo lessons slide, I can at least be happy that I am still learning. And in fact, I think my little ‘side trip of Udemy tutorials’ has been beneficial to my progress through the curriculum. It has shown me a lot of the concepts I have already been learning in another light which has helped to solidify further that knowledge.

So it takes me a little bit longer to get through the curriculum…that is ok. Just this week, I was able to explain to another newbie Rails developer what a line of code in the Devise documentation, about Configuring Routes was doing. To me (and to the guy I was helping), that was a big deal.

 

 

 

The Code Streak Lives

This is the third installment of the blogging assignments (out of seven), that I am required to complete for the Fullstack Web Development online program, LearnVerified, at the Flatiron School. Not only do they ‘make us’ learn lots of code…they want us to blog about it as well.


Just a day or so after managing to break my 109-day-code-streak at the LearnVerified program of Flatiron School, I have been spending a lot of time pondering the value of the code streak.

What Is A Code Streak?

For those of you who may have never heard of the term ‘codestreak’, a general definition of a codestreak is the number of consecutive days on which you’ve spent time coding or learning to code. In my case, it was the consecutive number of days that I spent time learning to code in the LearnVerified platform.

So Many Coding Platforms, So Little Time

I have spent all of 2016 (and much of 2015) devoting my freetime to learning to code. Actively learning to code was a 2016 New Year’s resolution I made to myself this year. And for all practical purposes, I can essentially guarantee that I have spent some time each and every day in the pursuit of learning to code.

Whether it has been reading actual books on various coding languages; spending time going through lessons on different online platforms such as Treehouse, Codecademy or FreeCodeCamp; enrolling in several Blueprints at Skillcrush.com; completing courses and tutorials on Udemy, Skillshare and Udacity; using the SoloLearn apps on my phone while waiting for a table at a restaurant or in between pet sits each day when I am away from my computer and just NEED some coding time; and eventually enrolling in the online program at Flatiron School. I can honestly say I am addicted to learning to code!!

Code Challenges

About a month into being enrolled at LearnVerified, I came across the #codestreak hashtag on Twitter, at which time I was already 35 days into working on lessons on the Learn platform. And then shortly there after, I ran across the #100daysofcode hashtag (41 days into my #codestreak) and coding challenge. How could I not start participating?!?! I was almost halfway there!!

a quote about it takes 31 days to make a habit

At first I wasn’t sure I could keep it up because I am not very good at keeping track of things…thankfully, Flatiron actually made that pretty darn easy with their built in current learning streak feature of the student dashboard! All I had to do was just keep on, keeping on!

Keep on learning to code, which I was doing anyway…except now I was striving to make sure I did it for 100 days. Which actually should not have been such a big deal since from January 1st til the first day I tweeted the hashtag of #100daysofcode on June 27th, according to an online date calculator:

The total number of days between Friday, January 1st, 2016 and Monday, June 27th, 2016 is 178 days.

This is equal to 5 months and 26 days.

A hundred days should be a piece of cake!! Yet the closer I got to the hundred day mark, the more worried I got. Would I blow it days or even a day before the 100 days??

100 Day Accomplishments

I feel like these last 109 days (not to mention the 178 days before that) I have learned so much!! Not only have I managed to get through roughly 100 lessons of the LearnVerified program (82 lessons in the Fullstack Web Development track and 25 lessons in the new Intro to Javascript track).

I have also managed to:

  • build a number of Ruby on Rails app (the first of which was a Pinterest-clone which I am kinda fond of!) from various Udemy classes and Youtube tutorials
  • worked my way through and earned my certificates for the HTML Fundamentals, CSS Fundamentals and SQL Fundementals of the SoloLearn apps
  • finished the Tribute Page challenge at FreeCodeCamp
  • have found so many more (more than one can possibly get through in a life time!!) tutorials, lessons and coding resources that I just need to find enough time in the day to work my way through!!

And yes, I have learned a lot about coding…but I have also made learning to code a habit. A part of my everyday life now. I look forward to getting time to code each day…it is actually a bit of a problem. It is a total addiction!

Now, after a long day of work or errands or just everyday chores, I find myself jonesing for just a little coding time!!  Just one little lesson on Learn or a quick fix of Treehouse if time is short or even having to wait for a table at a restaurant so I can work through a few questions on a SoloLearn app! I need it!!

Although I ‘technically’ broke my codestreak, as in it is back to 2-days at the moment, I spent that particular day making my Sinatra Fwitter project look pretty (working on the CSS) as a break from my frustration at trying to get all the specs to pass.

So although my codestreak has reset itself at LearnVerified…my Year of Learning to Code is still safe…and continues….  🙂

 

 

 

Explain HTML and CSS to your Mom

This is the second blog assignment (out of seven), that I am required to complete for the Fullstack Web Development program, Learn Verified, at the Flatiron School. Not only do they ‘make us’ learn lots of code…they want us to blog about it as well.

For those of you that have been following my blog (thank you!!)…you might remember that my mom passed away right before the holidays in 2015. So naturally this blog assignment, with it’s prompt of “Explain HTML and CSS to your mom”,  caught me a little by surprise, since I would give anything to be able to really tell my mom all about my ‘learning to code’ journey.

htmlvscss

I’m not sure she would even know or really care about HTML or CSS normally, as she wasn’t necessarily all that interested in computers, other than to do basic things like send an email, type up a letter or check Facebook…but she would happily listen to me explain how HTML and CSS work together to make websites.  She would enjoy hearing me tell her about something that obviously excited me enough to want to share it with her…cause that is just how my mom was.

Mom was actually aware of my interest in computers and had tried to encourage me to study computers back in college…mostly cause she thought it would be more profitable than me studying to work with animals (unless of course I was going to be a veterinarian), but I of course had to do things my way. So I would like to think she would be happy that I have decided to follow through with my desire to learn to code.

I am not sure this description would work well for all parents…but I think for my mom, who was a creative person, as well as being quite good at organization, I would be able start with the broad strokes of telling her that ‘HTML is mainly for creating the structure, organization and content for a website’, while CSS is for ‘making the site look pretty’.

Both HTML and CSS (along with Javascript) are the parts or coding languages that are considered to be Front-end Web Development. Front-end development is also known as the client-side of programming in that it creates what the users sees when they visit a website on the internet and allows them to interact with the site.

HTML, which stands for (Hyper-Text Mark-Up Language) is the language that is used to structure a website and display all of the content on the World Wide Web. It is called a markup language because it uses ‘tags’ that wrap around different types of content to structure the layout of the page…for example, there are heading tags, <h1> through <h6>, that give you various sized headings that you can use on your page or <p> tags to identify the beginning and the end of a paragraph. There are also tags to create various kinds of lists, such as ordered <ol> or unordered <ul> lists. Most tags require an opening and a closing tag…so for a paragraph you would surround the text of your paragraph with an opening <p> tag and a closing </p> tag.

HTML also allows you to do things such as create hyperlinks, which are key in navigating the World Wide Web. As well as tags that allow us to add images, videos and audio clips to what would otherwise just be webpages full of lots and lots of text!

Screenshot (59)

Basic HTML for the beginning of a simple project

CSS, which stands for Cascading Style Sheets, is also a type of markup language, but instead of displaying content, CSS styles the content. Things like text color and background images and positioning various elements.

CSS is sort of like interior decorating, with painting the walls and adding furniture and deciding where to put it all, where as HTML is like building the house.

CSS works with HTML by identifying the various tags and using the tags as a way of selecting which element should be styled which way. So if I wanted to center my ‘Welcome to My Pinteresed App!’ heading (h1), the CSS code would look something like this:

h1 {
    text-align: center;
}

Where the h1 is the selector that points to the HTML element you want to style. The part within the curly brackets is called the declaration block  and it contains one or more declarations separated by semicolons. Each declaration includes a CSS property name and a value, separated by a colon. And CSS declaration always ends with a semicolon.

With enough CSS you can go from the site in the above image with very basic content on it…to something that looks more like a ‘real’ website.

Screenshot of my site with some CSS

I would like to think that at this point, Mom might actually be pretty impressed with my skills, as she would appreciate the difference from going from basically a sketch or rough draft of what I want on my site, to something that looks like more of a complete site…despite it actually being a work in progress 🙂

For me, I actually still get excited going from a blank page to having the HTML render the most basic of sites. CSS is just the ‘icing on the cake’ as I love being able to pick colors and choose layouts and decide on fonts to transform the site into something beautiful. And this dorky enthusiasm for witnessing a site being created is why I learn to code!

 

Fun, new app Mesh…taking it for a test drive!

Today, I mostly just wanted to check out a cool new app/website that caught my ‘techie-wanna-be’ attention that I happened to stumble over on The Daily Post. This cool little app (or website for us Android/desktop users), Mesh, for a new way to share galleries, with anyone, anywhere. It’s free, and pretty easy to use…even if you are not a tech-wanna-be.

In case you haven’t noticed, I’m a little bit infatuated about taking pictures of random things throughout my travels each day. Although I don’t seem to get very far away from the place that I live, being a pet sitter is all about travelling!! There are days that I easily put 100-150 miles on my car driving from one customer’s house to another Continue reading

Tuesday Tech Tidbits

Dead-iPad-BatteryAs a techie introvert, I enjoy my electronic toys…and I like to make sure that they will always be charged in case of an unavoidable social situation.

I have friends that will say things like ‘my iPhone is about to die’ or ‘my iPad is dead’…and it always baffles me?!?!  Did you not charge it?? Don’t you have a charger in your car?? Why would you let you phone or tablet get that close to be being dead?? I just don’t get it!?!?

Of course, there is that little problem of iPhone/iPad vs. Android…but that is a whole other ball of wax…

I plug my ‘stuff ‘in when I’m not using it…and sometimes even when I am using it. I do not want to be caught in a situation where my ‘source of amusement’ is dead and now I actually have to talk to someone.

Continue reading