<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Gabi Jack&#039;s Blog</title>
	<atom:link href="http://gabijack.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gabijack.com</link>
	<description></description>
	<lastBuildDate>Sat, 24 Dec 2016 05:18:42 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>TIL: Working with a D3-based chart library</title>
		<link>http://gabijack.com/til-working-with-a-d3-based-chart-library/</link>
		<pubDate>Sat, 24 Dec 2016 05:18:42 +0000</pubDate>
		<dc:creator><![CDATA[]]></dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Quick Tip]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://gabijack.com/?p=345</guid>
		<description><![CDATA[One of the things I love about my job is that I get to explore different aspects of web development, including all sorts of interesting libraries that otherwise I may have never had the need to use. This time, I was working with a chart that is generated using C3.js, a D3-based chart library that [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>One of the things I love about my job is that I get to explore different aspects of web development, including all sorts of interesting libraries that otherwise I may have never had the need to use.</p>
<p>This time, I was working with a chart that is generated using <a href="http://c3js.org/">C3.js</a>, a D3-based chart library that is super cool, very well documented and really easy to use.</p>
<p>Using this library, you can quickly generate a beautiful chart such as this:</p>
<p>&nbsp;</p>
<p><img class="size-medium wp-image-353 aligncenter" src="http://gabijack.com/wp-content/uploads/2016/12/Screen-Shot-2016-12-23-at-11.17.10-PM-300x221.png" alt="" width="300" height="221" srcset="http://gabijack.com/wp-content/uploads/2016/12/Screen-Shot-2016-12-23-at-11.17.10-PM-300x221.png 300w, http://gabijack.com/wp-content/uploads/2016/12/Screen-Shot-2016-12-23-at-11.17.10-PM-768x567.png 768w, http://gabijack.com/wp-content/uploads/2016/12/Screen-Shot-2016-12-23-at-11.17.10-PM-1024x755.png 1024w, http://gabijack.com/wp-content/uploads/2016/12/Screen-Shot-2016-12-23-at-11.17.10-PM.png 1342w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>Using simple code that would look something like this:</p>
<pre class="brush: javascript; gutter: false">var chart = c3.generate({
    data: {
        columns: [
            [&#039;data1&#039;, 30, 200, 100, 400, 150, 250],
            [&#039;data2&#039;, 130, 100, 140, 200, 150, 50],
            [&#039;data3&#039;, 150, 80, 120, 250, 50, 10]
        ],
        type: &#039;bar&#039;
    },
    bar: {
        width: {
            ratio: 0.5
        }
    }
});</pre>
<p>Notice how each one of the columns corresponds to a legend for a group in the bar chart above.  The default behavior for these charts is really cool too; if you click on one of the legends, the corresponding group disappears from view.</p>
<p><img class="size-medium wp-image-355 aligncenter" src="http://gabijack.com/wp-content/uploads/2016/12/Screen-Shot-2016-12-23-at-11.25.54-PM-300x253.png" alt="" width="300" height="253" srcset="http://gabijack.com/wp-content/uploads/2016/12/Screen-Shot-2016-12-23-at-11.25.54-PM-300x253.png 300w, http://gabijack.com/wp-content/uploads/2016/12/Screen-Shot-2016-12-23-at-11.25.54-PM-768x648.png 768w, http://gabijack.com/wp-content/uploads/2016/12/Screen-Shot-2016-12-23-at-11.25.54-PM-1024x864.png 1024w, http://gabijack.com/wp-content/uploads/2016/12/Screen-Shot-2016-12-23-at-11.25.54-PM.png 1166w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>My assignment was to extract information about what groups remained visible on the chart and then use that information to calculate an average.</p>
<p>As I mentioned before, this library is very well documented, yet it wasn&#8217;t really clear what I needed to do in order to obtain the information I needed. After some digging and a bit of trial and error, I realized it was possible to attach a handler to the click event of a legend, provided we make sure to toggle the visibility of the group in the handler. We can add something like this:</p>
<pre class="brush: javascript; gutter: false"> legend: {
      item: {
        onclick: function(id) {
            chart.toggle(id)
            console.log(chart.data.shown())
        }  
      }    
    }</pre>
<p>In the code above, chart.data.shown() returns an array of objects representing the elements/groups currently visible in the chart. The id passed to the function corresponds to the first element in each of the columns we passed to the chart as data. Here, I&#8217;m simply logging the array of visible elements to the console, but we can do just about anything else we need with this data. We can save it to a variable or, as I did, in the state of the React component that renders this chart. And that&#8217;s it! Really simple!</p>
<p><img class="size-medium wp-image-359 aligncenter" src="http://gabijack.com/wp-content/uploads/2016/12/Screen-Shot-2016-12-24-at-12.01.24-AM-262x300.png" alt="" width="262" height="300" srcset="http://gabijack.com/wp-content/uploads/2016/12/Screen-Shot-2016-12-24-at-12.01.24-AM-262x300.png 262w, http://gabijack.com/wp-content/uploads/2016/12/Screen-Shot-2016-12-24-at-12.01.24-AM.png 382w" sizes="(max-width: 262px) 100vw, 262px" /></p>
<p>&nbsp;</p>
]]></content:encoded>
			</item>
		<item>
		<title>Diary of a Junior Dev: The Joys of Building</title>
		<link>http://gabijack.com/diary-of-a-junior-dev-the-joys-of-building-2/</link>
		<pubDate>Sun, 01 Nov 2015 19:56:00 +0000</pubDate>
		<dc:creator><![CDATA[]]></dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://gabijack.com/?p=302</guid>
		<description><![CDATA[If someone offers you an amazing opportunity and you&#8217;re not sure you can do it, say yes &#8211; then learn how to do it later.   &#8211; Richard Branson Recently,  I  was lucky to be trusted with a great amount of the back end work needed for a brand new site. As a junior developer, [&#8230;]]]></description>
				<content:encoded><![CDATA[<blockquote><p>If someone offers you an amazing opportunity and you&#8217;re not sure you can do it, say yes &#8211; then learn how to do it later.   &#8211; Richard Branson</p></blockquote>
<p>Recently,  I  was lucky to be trusted with a great amount of the back end work needed for a brand new site. As a junior developer, I&#8217;m used to being tasked with fixing what someone else built, developing small to medium features, or enhancing existing ones,  so I was very excited at the prospect of actually building something <strong>new</strong>.  Oh, but did I mention this needed to be done in record time? I&#8217;m not sure the specifics of why, but we had a very tight deadline.</p>
<p>Having such a short amount of time to get all the work done was tough. As the customer&#8217;s original requirements kept changing, more information was given in small increments, and even new requirements were added to the list, it became pretty hard to implement and make sure that nothing was left to chance. I don&#8217;t know if my previous experience in QA helped any, but I do know that as I wrote my code, I kept thinking and testing all the possible ways it could break. At times it felt that was all I could do. I didn&#8217;t have much time to write a complete test suite, and that made me feel very uncomfortable, but, sadly, days only have 24 hours and even excited coders need to sleep.</p>
<p>However, what  I did enjoy thoroughly from this experience was the act of creating. Even on those days when I was exhausted after putting 12+ hours of coding and testing and coding some more, I found myself feeling exhilarated, proud of the work I was doing.</p>
<p>When the site was finally released on schedule and the customer expressed their happiness,  I was beaming with pleasure. There&#8217;s no way to describe the feeling of satisfaction that comes from knowing that what you helped build is out there now, working exactly the way it was expected. That you were able to <em>make it work</em>, like iconic Tim Gunn would say. I may be on a stretch here, but perhaps it is the same way an artist feels when they see their piece hanging on a gallery. It&#8217;s awesome!</p>
<p>Now, I know for many devs out there this may not seem like a big deal, but it is when you&#8217;re a junior developer and you struggle with impostor syndrome from time to time. It is when you&#8217;re trying to claw your way out of that junior developer category, and you&#8217;re not exactly sure how to bridge the gap. There doesn&#8217;t seem to be a clear path between being junior and intermediate, or even a clear definition of who is a junior developer. It seems to me the category often includes recent grads, those that just taught themselves to code, those that just came out of coders bootcamp,  and even those that have been developing code professionally for a few years. How many years? Are skills vs. time even considered? If so, what sort of skills make you intermediate? Not sure&#8230;</p>
<p>I hope to get more assignments like this one in the future. I&#8217;m beginning to think that they are the best cure for that pesky impostor syndrome. Even when nothing else has changed about who you are in the eyes of your peers, that feeling of &#8220;I can&#8221; simply stays with you for a long time. More building, please!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			</item>
		<item>
		<title>In search of a faster query</title>
		<link>http://gabijack.com/in-search-of-a-faster-query/</link>
		<pubDate>Sun, 14 Jun 2015 21:13:20 +0000</pubDate>
		<dc:creator><![CDATA[]]></dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://gabijack.com/?p=281</guid>
		<description><![CDATA[Recently, as I was fixing a minor bug in one of our applications at work, I had the opportunity to witness what a great difference a simple query can make. The bug involved a very slow query, that was doing a join between a couple of tables that had grown too large in size. The [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Recently, as I was fixing a minor bug in one of our applications at work, I had the opportunity to witness what a great difference a simple query can make.</p>
<p>The bug involved a very slow query, that was doing a join between a couple of tables that had grown too large in size. The query, in Rails, was as follows:</p>
<p>&nbsp;</p>
<pre class="brush: rails; gutter: false">Model1.joins(:model2).order(:attribute1)


</pre>
<p>That query alone was taking nearly 2200 ms to complete,  kind of showing that it really is the devil to make a join between two large tables. The table for Model1, for instance, had nearly 90,000 rows and 10+ columns, while the table for Model2 was slightly smaller, with nearly 30,000 rows.</p>
<p>After examining the code, I realized we really only needed the id and attribute1 of Model1 records, so I modified the query slightly to retrieve only that:</p>
<p>&nbsp;</p>
<pre class="brush: rails; gutter: false">Model1.select(&#039;attribute1, model1.id&#039;).joins(:model2).order(:attribute1)</pre>
<p>&nbsp;</p>
<p>Wow! This simple change brought the time down to around 520 ms, which was still sluggish, but a great improvement from the 2200 ms we began with.</p>
<p>It was a third iteration of the query, however, that  made the most impact. We had a third table, for Model3,  with an association to Model1  that we could use to our advantage. Although with no association between them, Model2 and Model3 both had a model1_id column, allowing us to do something like this:</p>
<p>&nbsp;</p>
<pre class="brush: rails; gutter: false">model1_ids = Model3.joins(&#039;INNER JOIN model2 on model2.model1_id = model3.model1_id&#039;)
                   .uniq.pluck(&#039;model3.model1_id&#039;)
Model1.where(id: model1_ids).order(:attribute1)</pre>
<p>&nbsp;</p>
<p>That last query brought the time down to around 40 ms. Not bad at all!</p>
<p>I felt very pleased by this results, mostly because I learned  it pays to play around with different ways to do the same, and to keep an eye on the query times reported in the console. It&#8217;s also worth thinking about how large the tables are likely to grow, although I know it&#8217;s hard to predict the future. It is possible when this part of the application was written, some time ago, that first query used to be fast enough, most likely because the table was small too.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			</item>
		<item>
		<title>Living la vida Ruby</title>
		<link>http://gabijack.com/living-la-vida-ruby/</link>
		<pubDate>Fri, 22 May 2015 22:40:07 +0000</pubDate>
		<dc:creator><![CDATA[]]></dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://gabijack.com/?p=263</guid>
		<description><![CDATA[Last Monday I attended a hangout meeting with the CodeNewbie community. Something they call Ruby Monday. It was my first time trying this sort of virtual community interaction, but I had such a great time that I think I&#8217;ll be joining them again real soon. I think what I enjoyed the most was the atmosphere of [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Last Monday I attended a hangout meeting with the CodeNewbie community. Something they call <a href="http://www.codenewbie.org/blogs/ruby-monday">Ruby Monday</a>. It was my first time trying this sort of virtual community interaction, but I had such a great time that I think I&#8217;ll be joining them again real soon.</p>
<p>I think what I enjoyed the most was the atmosphere of respect for all members in the group.  It is something nice and incredibly encouraging when your contributions are considered important and your voice is heard, regardless of what your level of experience may be.  Thank you, guys! You rock!</p>
<p>As a Junior Engineer, I find that I often feel unsure about the value of my own contributions, be it to a coding community or even to the company I work for. Sure, I&#8217;ve gradually gained more confidence, as I&#8217;ve developed new skills and acquired experience over the years, but there&#8217;s still that part of me that will always wonder how much experience is enough experience for my peers to even consider that I have something interesting to say.</p>
<p>As I meet more people in the coding community, coders of all backgrounds and  skills levels, I learn that most often than not we are our own worst judges. Yes, it is true there are a few jerks out there, and people that enjoy putting newbies down to make themselves look good, but most people are not that like that. I do believe, however, that many of us may still suffer from certain bias, even if we don&#8217;t know it.</p>
<p>I remember reading some time ago about a study that attempted to determine the bias against women in leadership roles. It was shocking to read how exactly the same actions or circumstances made a man appear as a great leader, hardworking and dedicated, while a woman was perceived as bossy or selfish.  Sometimes, I wish someone came up with a similar experiment involving coders.  I wonder what would happen if the same solution to a bug or issue, or even a feature, was presented as authored by a newbie programmer, an experienced programmer, a younger person, someone over fifty, a programmer who is new to the community, a programmer who is very well known,  a man or a woman. Would it make any difference?</p>
<p>We can&#8217;t control any bias that anyone may have against us, but we can certainly do our best to avoid being biased against others and even against ourselves.  We are biased against ourselves when we avoid opportunities to contribute because we think we have nothing to give, when we feel like the impostor that crashed the party,  or when we allow negative feedback and rejection from others to keep us from doing what we love, simply because we interpret it as a confirmation of that fear of not being good enough.</p>
<p>That&#8217;s why I find communities such as CodeNewbie so amazing. Like a safe haven! Before attending that meeting I had considered revamping this blog many times, and many times I had abandoned the effort, second guessing myself, wondering if I really had anything good or useful to blog about.</p>
<p>Well, I am just someone who enjoys coding, who likes the Ruby language, who is working hard to build herself a career as a web application developer (of the Rails persuasion),  and who also enjoys writing. While my experiences may not seem relevant to some, I believe someone out there may find them useful enough to keep coming back for more. If you&#8217;re one of those, thank you! I promise to update frequently.</p>
<p>Oh, just to end in the purest community style of sharing, here&#8217;s a tiny something I learned recently. Until recently, I didn&#8217;t know you could evaluate multiple values in a case statement (in Ruby) simply by separating them with a coma,  like this</p>
<pre class="brush: ruby; gutter: true">case word
  when &quot;first&quot;, &quot;last&quot;
    # do something
  when &quot;second&quot;
    # do something else
end</pre>
<p>That&#8217;s cool, but even better is that you can do something similar with regular expressions, and you&#8217;re even able to make use of whatever value is matched by the regexp, for instance, as the argument for a method call. Like this</p>
<pre class="brush: ruby; gutter: true">case url
  when /products\/(\d+)/, /products\/special\/(\d+)/
    call_to_method($1)
  when /events\/(\d+)/
    call_to_other_method($1)
end</pre>
<p>This last statement will match an url such as  /products/56 and then use the value 56 to call the method. It would also match the url /products/special/78 and call the same method with the value 78. Pretty simple, I know, but useful.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			</item>
		<item>
		<title>I love peer reviews&#8230; I hate peer reviews</title>
		<link>http://gabijack.com/i-love-peer-reviews-i-hate-peer-reviews/</link>
		<pubDate>Thu, 21 Aug 2014 04:14:43 +0000</pubDate>
		<dc:creator><![CDATA[]]></dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://gabijack.com/?p=228</guid>
		<description><![CDATA[Mostly, I love them. Peer reviews are one of the best ways I know of learning valuable lessons  from other programmers, usually programmers that are a lot more skilled than me. The only thing  I can think of that would be better than that is pair programming.  Peer reviews allow you to get input on [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Mostly, I love them. Peer reviews are one of the best ways I know of learning valuable lessons  from other programmers, usually programmers that are a lot more skilled than me. The only thing  I can think of that would be better than that is pair programming.  Peer reviews allow you to get input on the code you wrote, fresh ideas, a different point of view, not necessarily better, but always different. They may inspire you to refactor the whole thing or  to take a whole new approach that could very well be easier than what you were trying to do in the first place. You may even find out that what you were trying to do is not really needed or is being already accomplished in a different way. Other coders can certainly see things you can&#8217;t.</p>
<p><a href="http://gabijack.com/wp-content/uploads/2014/08/code-review-2.png"><img class="alignleft size-medium wp-image-230" src="http://gabijack.com/wp-content/uploads/2014/08/code-review-2-300x231.png" alt="code-review-2" width="300" height="231" srcset="http://gabijack.com/wp-content/uploads/2014/08/code-review-2-300x231.png 300w, http://gabijack.com/wp-content/uploads/2014/08/code-review-2-150x115.png 150w, http://gabijack.com/wp-content/uploads/2014/08/code-review-2-400x309.png 400w, http://gabijack.com/wp-content/uploads/2014/08/code-review-2.png 647w" sizes="(max-width: 300px) 100vw, 300px" /></a>And yet, there are those days when I kind of hate them. Those days when I&#8217;ve been working on the same issue for what feels like an eternity, yet instead of giving me their seal of approval,  my reviewers keep requesting more changes with every commit.  Those days when I wish my reviewers were not always trying to DRY everything or refactor everything and would just agree with my code&#8230; if it works&#8230; sort of. Ugh. Yeah, those are the days when I have to remind myself that it is a <strong>really good</strong> thing they don&#8217;t just agree with my code. Even if it&#8217;s frustrating. This too shall pass&#8230; and I&#8217;ll come out of it all a better programmer&#8230; after I&#8217;ve suffered a while. It&#8217;s the only way to learn.</p>
<p>&nbsp;</p>
]]></content:encoded>
			</item>
		<item>
		<title>When you loan your son your computer&#8230;</title>
		<link>http://gabijack.com/when-you-loan-your-son-your-computer/</link>
		<pubDate>Mon, 04 Aug 2014 05:43:06 +0000</pubDate>
		<dc:creator><![CDATA[]]></dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[virtual box]]></category>

		<guid isPermaLink="false">http://gabijack.com/?p=220</guid>
		<description><![CDATA[When you work as a web application developer, one thing you&#8217;re sure to find pretty much everywhere is Linux. There&#8217;s no way around it. Even if you happened to work off a Windows computer, you will at the very least have to use Linux at the command line while interacting with a remote server.  Up [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>When you work as a web application developer, one thing you&#8217;re sure to find pretty much everywhere is Linux. There&#8217;s no way around it. Even if you happened to work off a Windows computer, you will at the very least have to use Linux at the command line while interacting with a remote server.  Up until now, I&#8217;ve learned just enough Linux to get the job done, picking up a few things from here and there. That&#8217;s why when I saw a free class on Linux being offered by edX.org  I just had to enroll myself in it. There was only one little problem: I no longer had Linux.</p>
<p>Some time ago, I installed Ubuntu in an old computer I had that was pretty much  on its last leg. I used that machine for learning and experimenting, and I just loved how easy it was to install everything I needed using rvm.  But as luck had it, my older son&#8217;s computer broke a couple months ago and I loaned him that machine until his was repaired. Terrible mistake!  He immediately proceeded to install all sorts of junk in it, from Windows emulators to gaming clients, among a whole lot of other things, and when the time came to give it back he simply refused.  And why would he want to give it back?! That computer, although old, has a very nice nVidia graphics card that makes gaming a real pleasure for him. Sigh&#8230;</p>
<p>So, rather than contin<img class="alignleft  wp-image-221" src="http://gabijack.com/wp-content/uploads/2014/08/virtualubuntu-300x188.jpg" alt="virtualubuntu" width="370" height="232" srcset="http://gabijack.com/wp-content/uploads/2014/08/virtualubuntu-300x188.jpg 300w, http://gabijack.com/wp-content/uploads/2014/08/virtualubuntu-150x94.jpg 150w, http://gabijack.com/wp-content/uploads/2014/08/virtualubuntu-400x251.jpg 400w, http://gabijack.com/wp-content/uploads/2014/08/virtualubuntu.jpg 960w" sizes="(max-width: 370px) 100vw, 370px" />ue fighting for the box, I decided to try other venues. I didn&#8217;t really want to do a dual boot of my Windows 7 computer or mess with the macbook pro that I use for work, specially after all the effort it took to setup my development environment in it, so I went with the virtual box option.</p>
<p>First, I tried to create a virtual machine using VMWare, which was very highly rather, but couldn&#8217;t make my installation of Ubuntu 14.04 work, so next I tried Oracle VM Virtual Box. I followed the instructions I had found in a few blogs that advised creating the virtual box without support for usb, network or python, simply to make your life easier. That seemed to do the trick.  The window is a bit smallish, but it&#8217;s better than no Ubuntu at all. And, I&#8217;m once again able to use rvm to easily  install, among other things, multiple versions or Ruby and Rails. <img src="https://s.w.org/images/core/emoji/2.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>&nbsp;</p>
]]></content:encoded>
			</item>
		<item>
		<title>Diary of a Junior Ruby Developer</title>
		<link>http://gabijack.com/diary-of-a-junior-ruby-developer/</link>
		<pubDate>Wed, 23 Jul 2014 05:22:53 +0000</pubDate>
		<dc:creator><![CDATA[]]></dc:creator>
				<category><![CDATA[personal]]></category>
		<category><![CDATA[junior]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://gabijack.com/?p=207</guid>
		<description><![CDATA[I was introduced to Ruby and Rails during the time I spent working for Manilla.com. Those were four really great months in my life that I  will never forget. Back then, working as a robot developer,  my goal was to slowly acquire  the skills that would allow me to eventually move into the Rails team. [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I was introduced to Ruby and Rails during the time I spent working for Manilla.com. Those were four really great months in my life that I  will never forget. Back then, working as a robot developer,  my goal was to slowly acquire  the skills that would allow me to eventually move into the Rails team.  Sadly, Manilla closed its doors before I could get a chance to achieve that goal.</p>
<p>Shortly after Manilla closed, I found another job working remotely for a company that provides enterprise publishing solutions. I was hired as a Junior Ruby on Rails Developer and now I work  mostly troubleshooting, fixing bugs and occasionally implementing customers requests. The job is challenging because tickets are hardly ever about the same issue and there&#8217;s so much to learn about their codebase and, in the process, about Rails and Ruby, as well.  I am very fortunate that there&#8217;s plenty of knowledge to go around and the other members of the team are always happy to help you or at least point you in the right direction. I love peer reviews! It&#8217;s a great way to learn from others that have been writing code longer than you and have tons of tricks under their sleeve. Still, learning takes time.<img class="alignleft wp-image-212 size-medium" src="http://gabijack.com/wp-content/uploads/2014/07/ah728-300x258.jpg" alt="ah728" width="300" height="258" srcset="http://gabijack.com/wp-content/uploads/2014/07/ah728-300x258.jpg 300w, http://gabijack.com/wp-content/uploads/2014/07/ah728-150x129.jpg 150w, http://gabijack.com/wp-content/uploads/2014/07/ah728-400x345.jpg 400w, http://gabijack.com/wp-content/uploads/2014/07/ah728.jpg 490w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p>It&#8217;s like drinking from a fire hose. That&#8217;s the analogy our CTO used recently when talking about the sheer amount of information that gets dumped on you during your first days or weeks on the job. It gets better with time. I do my part by reading everything Ruby or Rails that falls in my hands, watching videos, following tutorials, etc. As a matter of fact,  I am incredibly lucky I finished reading  &#8216;Everyday Rails Testing with RSpec&#8217;  just in time to put all those newly acquired testing skills to good use on my first week on the job.  I highly recommend that book! The railscasts have been a great help, as well, but there&#8217;s plenty that can only be learned while on the job. Nothing beats that kind of experience.</p>
<p>Perhaps, my next update will find me a lot more confident. For now, I&#8217;m enjoying the job, because this is what I wanted to do and every step is getting me closer and closer to where I want to be someday, but I am also  in &#8220;survival mode&#8221;, spending most of my spare time trying to learn more and learn faster.</p>
<p>&nbsp;</p>
]]></content:encoded>
			</item>
		<item>
		<title>Packt&#8217;s 10 year anniversary means $10.00 books and videos!</title>
		<link>http://gabijack.com/packts-10-year-anniversary-means-10-00-books-and-videos/</link>
		<pubDate>Wed, 02 Jul 2014 04:07:55 +0000</pubDate>
		<dc:creator><![CDATA[]]></dc:creator>
				<category><![CDATA[Education]]></category>

		<guid isPermaLink="false">http://gabijack.com/?p=200</guid>
		<description><![CDATA[One more time, my favorite IT book publisher is having a fantastic sale. This time, Packt Publishing is celebrating 10 years of providing great learning and information materials for IT professionals.  According to their press release,  during that time Packt has  published over 2000 titles and helped projects become household names, awarding over $400,000 through its [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a href="http://gabijack.com/wp-content/uploads/2014/07/packt.jpg"><img class="alignleft  wp-image-201" style="margin: 5px 15px;" alt="packt" src="http://gabijack.com/wp-content/uploads/2014/07/packt-300x125.jpg" width="300" height="125" srcset="http://gabijack.com/wp-content/uploads/2014/07/packt-300x125.jpg 300w, http://gabijack.com/wp-content/uploads/2014/07/packt-150x62.jpg 150w, http://gabijack.com/wp-content/uploads/2014/07/packt-400x166.jpg 400w, http://gabijack.com/wp-content/uploads/2014/07/packt.jpg 600w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>One more time, my favorite IT book publisher is having a fantastic sale. This time, Packt Publishing is celebrating 10 years of providing great learning and information materials for IT professionals.  According to their press release,  during that time Packt has  published over 2000 titles and helped projects become household names, awarding over $400,000 through its Open Source Project Royalty Scheme.</p>
<p>To celebrate this milestone, Packt is offering all their books and videos for only $10.00 each. There&#8217;s no limit how many books or videos you can purchase from them, but this offer will only last until July 5th.</p>
<p><b>More information is available at: </b><a href="http://bit.ly/1qqyquT">http://bit.ly/1qqyquT</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			</item>
		<item>
		<title>Celebrate Day Against DRM with Packt!</title>
		<link>http://gabijack.com/celebrate-day-against-drm-with-packt/</link>
		<pubDate>Tue, 06 May 2014 03:28:17 +0000</pubDate>
		<dc:creator><![CDATA[]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://gabijack.com/?p=195</guid>
		<description><![CDATA[I just heard news of Packt&#8217;s Day Against DRM (#DayAgainstDRM)  that will take place on May 6th 2014,  and wanted to share the good news with you. For  24 hours, all  of Packt&#8217;s ebooks and videos will be only $10.00 each.  This is a great opportunity to stock up on their most popular and/or newest [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I just heard news of <a href="http://www.packtpub.com">Packt&#8217;s</a> Day Against DRM (<b><a href="https://twitter.com/search?q=%23DayAgainstDRM">#DayAgainstDRM</a>)</b>  that will take place on <strong>May 6th 2014</strong>,  and wanted to share the good news with you. For  24 hours,<strong> all  of Packt&#8217;s ebooks and videos will be only $10.00 each</strong>.  This is a great opportunity to stock up on their most popular and/or newest titles!</p>
<p>According to the definition of DRM on Wikipedia, <b>Digital Rights Management (DRM)</b> is a class of technologies that are used by hardware manufacturers, publishers, copyright holders, and individuals with the intent to control the use of digital content and devices after sale.</p>
<p>However, Packt Publishing firmly believes that you should be able to read and interact with your content when you want, where you want, and how you want – to that end they have been advocates of DRM-free content since their very first eBook was published back in 2004.</p>
<p>To show their continuing support for <a href="https://www.defectivebydesign.org/">Day Against DRM</a>, Packt Publishing is offering all its DRM-free content at $10 for 24 hours only on May 6<sup>th</sup> – that’s all 2000+ eBooks and Videos.</p>
<p>So now you know, if you are as much a fan of great books and great sales as I am, take advantage of this offer and spread the word among your friends!  There&#8217;s no limit to the amount of books and videos you can purchase from their website, and all for only $10.00 each.  <b><a href="http://bit.ly/1q6bpha"><br />
</a></b></p>
<p><b><br />
</b><b></b></p>
<p>&nbsp;</p>
]]></content:encoded>
			</item>
		<item>
		<title>Packtpub is celebrating their 2000th title with a BOGO sale!</title>
		<link>http://gabijack.com/packtpub-is-celebrating-their-2000th-title-with-a-bogo-sale/</link>
		<pubDate>Fri, 21 Mar 2014 04:47:03 +0000</pubDate>
		<dc:creator><![CDATA[]]></dc:creator>
				<category><![CDATA[Education]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[packtpub]]></category>
		<category><![CDATA[sale]]></category>

		<guid isPermaLink="false">http://gabijack.com/?p=190</guid>
		<description><![CDATA[I love Packtpub books!  I just had to spread the word about their milestone sale as it is a great opportunity for packtpub books lovers everywhere to acquire a few more titles. Hurry! The sale is for a limited time!  🙂 &#160; Known for their extensive range of pragmatic IT ebooks, Packt Publishing are celebrating their [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>I love Packtpub books!  I just had to spread the word about their milestone sale as it is a great opportunity for packtpub books lovers everywhere to acquire a few more titles. Hurry! The sale is for a limited time!  <img src="https://s.w.org/images/core/emoji/2.3/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>&nbsp;</p>
<p>Known for their extensive range of pragmatic IT ebooks, <a href="http://bit.ly/1j26nPN">Packt</a> Publishing are celebrating their 2000th book title `Learning Dart’– they want their customers to celebrate too.</p>
<p>To mark this milestone Packt Publishing will launch a ‘Buy One Get One Free’ offer across all eBooks on March 18th – for a limited period only.</p>
<p>Packt is one of the most prolific and fast-growing tech book publishers in the world. Originally focused on open source software, Packt contributes back into the community paying a royalty on relevant books directly to open source projects. These projects have received over $400,000 as part of Packt’s Open Source Royalty Scheme to date.</p>
<p>Their books focus on practicality, recognising that readers are ultimately concerned with getting the job done. Packt’s digitally-focused business model allows them to quickly publish up-to-date books in very specific areas across a range of key categories – web development, game development, big data, application development, and more. Their commitment to providing a comprehensive range of titles has seen Packt publish 1054% more titles in 2013 than in 2006.</p>
<p>Here are some of the best titles across Packt&#8217;s main categories &#8211; but Buy One, Get One Free will apply across all 2000 titles:</p>
<ul>
<li><a href="http://bit.ly/1g9Q1Cp">Web Development</a></li>
<li><a href="http://bit.ly/1iBWSUw">Big Data &amp; Cloud</a></li>
<li><a href="http://bit.ly/Nt9tgH">Game Development</a></li>
<li><a href="http://bit.ly/OvJRAW">App Development</a></li>
</ul>
]]></content:encoded>
			</item>
	</channel>
</rss>
