<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.0">Jekyll</generator><link href="https://www.rubaniuk.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.rubaniuk.com/" rel="alternate" type="text/html" /><updated>2022-02-01T07:19:12+00:00</updated><id>https://www.rubaniuk.com/feed.xml</id><title type="html">Code and Coda</title><subtitle>Blog by Andrei Rubaniuk.</subtitle><entry><title type="html">Updating Ruby on Apple M1 MacBook</title><link href="https://www.rubaniuk.com/jekyll/apple/m1/2022/01/31/ruby-apple-m1.html" rel="alternate" type="text/html" title="Updating Ruby on Apple M1 MacBook" /><published>2022-01-31T22:49:00+00:00</published><updated>2022-01-31T22:49:00+00:00</updated><id>https://www.rubaniuk.com/jekyll/apple/m1/2022/01/31/ruby-apple-m1</id><content type="html" xml:base="https://www.rubaniuk.com/jekyll/apple/m1/2022/01/31/ruby-apple-m1.html">&lt;p&gt;After a 12 months-long hiatus I started blogging again. Expired TLS certificate and the process of transitioning to LetsEncrypt were the inspiration and motivated me to share the knowledge with the world.&lt;/p&gt;

&lt;p&gt;I also need to mention that I had to update Ruby on my Apple M1-powered MacBook as I was getting tons of errors when trying to re-build the blog. Note that I had the latest macOS Monterey which comes with pre-installed Ruby 2.7.0, but it wouldn’t work for me. I needed to update the version that I previously installed via Homebrew.&lt;/p&gt;

&lt;p&gt;After some trial and error, I stumbled upon “The Definitive Guide To Installing Ruby Gems on a Mac” by Moncef Belyamani. The guide was excellent and I specifically followed all steps in section &lt;a href=&quot;https://www.moncefbelyamani.com/the-definitive-guide-to-installing-ruby-gems-on-a-mac/?utm_source=stackoverflow&amp;amp;utm_campaign=51126403#homebrew-ruby&quot; target=&quot;_blank&quot;&gt;Install Ruby with Homebrew&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The following version was installed side-by-side with the one Apple provides:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-md&quot; data-lang=&quot;md&quot;&gt;ruby -v                                                 
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [x86_64-darwin21]&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Jekyll was still giving me trouble, this time due to missing webrick - apparently Ruby 3.0 lacks that packages: &lt;a href=&quot;https://github.com/github/pages-gem/issues/752&quot; target=&quot;_blank&quot;&gt;Jekyll serve fails on Ruby 3.0 (webrick missing) #752&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I quickly resolved it by adding webrick…&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-md&quot; data-lang=&quot;md&quot;&gt;bundle add webrick&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;… and re-built and tested my blog:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-md&quot; data-lang=&quot;md&quot;&gt;bundle exec jekyll build --verbose
bundle exec jekyll serve --trace --watch --incremental&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;</content><author><name></name></author><category term="jekyll" /><category term="apple" /><category term="m1" /><summary type="html">After a 12 months-long hiatus I started blogging again. Expired TLS certificate and the process of transitioning to LetsEncrypt were the inspiration and motivated me to share the knowledge with the world.</summary></entry><entry><title type="html">Migrating Jekyll Blog’s SSL certificate to LetsEncrypt</title><link href="https://www.rubaniuk.com/jekyll/ssl/certificate/letsencrypt/2022/01/31/ssl-letsencrypt.html" rel="alternate" type="text/html" title="Migrating Jekyll Blog’s SSL certificate to LetsEncrypt" /><published>2022-01-31T21:51:00+00:00</published><updated>2022-01-31T21:51:00+00:00</updated><id>https://www.rubaniuk.com/jekyll/ssl/certificate/letsencrypt/2022/01/31/ssl-letsencrypt</id><content type="html" xml:base="https://www.rubaniuk.com/jekyll/ssl/certificate/letsencrypt/2022/01/31/ssl-letsencrypt.html">&lt;p&gt;I recently got a notice from my domain provider that my SSL certificate for www.rubaniuk.com will expire in 1 month and that I need to renew it. I opened this blog and noticed that the certificate has expired already, I decided to dig deeper and found out that GitHub Pages aren’t receiving new cert from my Certificate Authority!&lt;/p&gt;

&lt;p&gt;This wasn’t great user experience and that got me thinking: what if I switched to free LetsEncrypt Certificate Authority? Let’s do just that!&lt;/p&gt;

&lt;p&gt;First, let’s delete existing CNAME file with domain in it:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-md&quot; data-lang=&quot;md&quot;&gt;git rm CNAME 
git commit -m &quot;Deleting custom domain&quot;  
git push&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Second, let’s configure &lt;a href=&quot;https://support.dnsimple.com/articles/caa-record/&quot; target=&quot;_blank&quot;&gt;Certification Authority Authorization record&lt;/a&gt; (CAA record) - you can do it in settings for your domain at your domain registrar’s website. For my custom domain the settings were as follows:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-md&quot; data-lang=&quot;md&quot;&gt;Type        Host                Value                       TTL
CAA Record  www.rubaniuk.com    0 issue &quot;letsencrypt.org&quot;   Automatic&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Third step - let’s re-create CNAME file with the custom domain as the only line in it:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-md&quot; data-lang=&quot;md&quot;&gt;echo www.rubaniuk.com &amp;gt; CNAME 
git add CNAME 
git commit -m &quot;Re-enable custom domain after configuring CAA record/letsencrypt&quot;
git push&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The TLS certificate was issued nearly instantly and I was able to check “Enforce HTTPS”.&lt;/p&gt;

&lt;p&gt;LetsEncrypt updates TLS certificates every 90 days. The cert was had an expiration date of “Saturday, April 30, 2022 at 9:03:18 PM Pacific Daylight Time” at the moment of writing this post.&lt;/p&gt;

&lt;p&gt;The certificate should auto-renew in 90 days and I will post an update if I see any issues.&lt;/p&gt;</content><author><name></name></author><category term="jekyll" /><category term="ssl" /><category term="certificate" /><category term="letsencrypt" /><summary type="html">I recently got a notice from my domain provider that my SSL certificate for www.rubaniuk.com will expire in 1 month and that I need to renew it. I opened this blog and noticed that the certificate has expired already, I decided to dig deeper and found out that GitHub Pages aren’t receiving new cert from my Certificate Authority!</summary></entry><entry><title type="html">Migrating WordPress blog to Jekyll</title><link href="https://www.rubaniuk.com/jekyll/update/2021/01/25/migrating-wordpress-blog-to-jekyll.html" rel="alternate" type="text/html" title="Migrating WordPress blog to Jekyll" /><published>2021-01-25T06:53:00+00:00</published><updated>2021-01-25T06:53:00+00:00</updated><id>https://www.rubaniuk.com/jekyll/update/2021/01/25/migrating-wordpress-blog-to-jekyll</id><content type="html" xml:base="https://www.rubaniuk.com/jekyll/update/2021/01/25/migrating-wordpress-blog-to-jekyll.html">&lt;p&gt;It was time for me to embrace GitHub Pages and migrate my blog from WordPress to Jekyll.&lt;/p&gt;

&lt;p&gt;Why? WP is a great publishing platform, but I wanted something that requires minimal maintenance, doesn’t ask me to renew web hosting and allows me to publish from command line. Jekyll checked all the boxes and I mostly followed Bob Gale’s &lt;a href=&quot;https://www.bawbgale.com/from-wordpress-to-jekyll/&quot; target=&quot;_blank&quot;&gt;excellent migration guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It wasn’t as smooth as I anticipated. Even though all blog _posts, _drafts and wp-content were exported, I ran into issue where simply copying exported markdown files (.md) from _posts folder didn’t work and I had to comment out id, guid and permalink (see below). After these changes posts showed mostly fine.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-md&quot; data-lang=&quot;md&quot;&gt;&lt;span class=&quot;gh&quot;&gt;# id: 433&lt;/span&gt;
title: Failed to connect to a Windows service
date: 2016-06-04T11:39:27-07:00
author: andrei
layout: post
&lt;span class=&quot;gh&quot;&gt;# guid: http://www.rubaniuk.com/?p=433&lt;/span&gt;
&lt;span class=&quot;gh&quot;&gt;# permalink: /?p=433&lt;/span&gt;
...&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;I did write “mostly” because book reviews used WP book review plugin and I still need to do extra formatting in order to properly display these posts.&lt;/p&gt;

&lt;p&gt;Also, in multiple posts iframe wasn’t exported at all so I had to do copy it manually from original posts.&lt;/p&gt;

&lt;p&gt;After testing locally, I went ahead and &lt;a href=&quot;https://www.namecheap.com/support/knowledgebase/article.aspx/9645/2208/how-do-i-link-my-domain-to-github-pages/&quot; target=&quot;_blank&quot;&gt;linked my domain to GitHub Pages&lt;/a&gt; and &lt;a href=&quot;https://docs.github.com/en/github/working-with-github-pages/managing-a-custom-domain-for-your-github-pages-site#configuring-a-subdomain&quot; target=&quot;_blank&quot;&gt;configured custom domain rubaniuk.com&lt;/a&gt; in the GitHub Pages settings for rubaniuk.github.io repo.&lt;/p&gt;

&lt;p&gt;It took about 30 minutes for DNS settings to change. Note that TLS version wasn’t available immediately and after waiting 2-3 hours for TLS certitifcate to be available, I enforced HTTPS in the GitHub Pages settings.&lt;/p&gt;

&lt;p&gt;It’s pretty liberating to be able to run an incremental Jekyll build and simply refresh your browser to see the changes:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;bundle &lt;span class=&quot;nb&quot;&gt;exec &lt;/span&gt;jekyll serve &lt;span class=&quot;nt&quot;&gt;--trace&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--watch&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--incremental&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;I still need to figure out custom themes and format book reviews.&lt;/p&gt;

&lt;p&gt;Overall, I have no regrets and recommend Jekyll as a lightweight alternative to WP.&lt;/p&gt;</content><author><name></name></author><category term="jekyll" /><category term="update" /><summary type="html">It was time for me to embrace GitHub Pages and migrate my blog from WordPress to Jekyll.</summary></entry><entry><title type="html">Book Review: Becoming a Better Programmer</title><link href="https://www.rubaniuk.com/book%20review/career/software%20development/software%20industry/2016/08/31/book-review-becoming-a-better-programmer.html" rel="alternate" type="text/html" title="Book Review: Becoming a Better Programmer" /><published>2016-08-31T16:32:46+00:00</published><updated>2016-08-31T16:32:46+00:00</updated><id>https://www.rubaniuk.com/book%20review/career/software%20development/software%20industry/2016/08/31/book-review-becoming-a-better-programmer</id><content type="html" xml:base="https://www.rubaniuk.com/book%20review/career/software%20development/software%20industry/2016/08/31/book-review-becoming-a-better-programmer.html"></content><author><name>andrei</name></author><category term="Book Review" /><category term="Career" /><category term="Software Development" /><category term="Software Industry" /><summary type="html"></summary></entry><entry><title type="html">Book Review: Learning to Program</title><link href="https://www.rubaniuk.com/book%20review/software%20development/2016/08/30/book-review-learning-to-program.html" rel="alternate" type="text/html" title="Book Review: Learning to Program" /><published>2016-08-30T16:45:26+00:00</published><updated>2016-08-30T16:45:26+00:00</updated><id>https://www.rubaniuk.com/book%20review/software%20development/2016/08/30/book-review-learning-to-program</id><content type="html" xml:base="https://www.rubaniuk.com/book%20review/software%20development/2016/08/30/book-review-learning-to-program.html"></content><author><name>andrei</name></author><category term="Book Review" /><category term="Software Development" /><summary type="html"></summary></entry><entry><title type="html">Book Review Rating Guide</title><link href="https://www.rubaniuk.com/book%20review/2016/08/30/book-review-rating-guide.html" rel="alternate" type="text/html" title="Book Review Rating Guide" /><published>2016-08-30T16:19:52+00:00</published><updated>2016-08-30T16:19:52+00:00</updated><id>https://www.rubaniuk.com/book%20review/2016/08/30/book-review-rating-guide</id><content type="html" xml:base="https://www.rubaniuk.com/book%20review/2016/08/30/book-review-rating-guide.html">&lt;p&gt;Here are the definitions for star ratings for my book reviews:&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;**&lt;/em&gt; An original work, masterpiece, must-read book.&lt;/p&gt;

&lt;p&gt;**** Very good book with a lot of interesting insight, useful &amp;amp; enriching experience. This is the book you just can’t put down.&lt;/p&gt;

&lt;p&gt;*** Satisfactory experience, several good ideas and not too many cliches, worth reading if you have a lot of free time.&lt;/p&gt;

&lt;p&gt;** Either poorly written book or an obvious copy-paste full of common knowledge for the area.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Very poorly written book, complete waste of time. Something that I normally wouldn’t review as just skimming through the book reveals that.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;</content><author><name>andrei</name></author><category term="Book Review" /><summary type="html">Here are the definitions for star ratings for my book reviews:</summary></entry><entry><title type="html">Failed to connect to a Windows service</title><link href="https://www.rubaniuk.com/uncategorized/2016/06/04/failed-to-connect-to-a-windows-service.html" rel="alternate" type="text/html" title="Failed to connect to a Windows service" /><published>2016-06-04T18:39:27+00:00</published><updated>2016-06-04T18:39:27+00:00</updated><id>https://www.rubaniuk.com/uncategorized/2016/06/04/failed-to-connect-to-a-windows-service</id><content type="html" xml:base="https://www.rubaniuk.com/uncategorized/2016/06/04/failed-to-connect-to-a-windows-service.html">&lt;p&gt;Recently I was testing real-world performance of &lt;a href=&quot;http://www.amazon.com/TP-LINK-Archer-T9E-Beamforming-Low-profile/dp/B00TQEX7AQ&quot;&gt;TP-LINK Archer T9E AC1900&lt;/a&gt; wireless adapter. The experiment was quite unsuccessful and I didn’t experience any reasonable improvement. Quite the opposite: speeds did not improve but the connection was mush less stable.&lt;/p&gt;

&lt;p&gt;After uninstalling TP-Link driver/utility package I’ve noticed that it left my Windows 10 installation quite messed up:&lt;/p&gt;

&lt;p&gt;&lt;img loading=&quot;lazy&quot; class=&quot;aligncenter size-full wp-image-436&quot; src=&quot;http://www.rubaniuk.com/wp-content/uploads/2016/06/Untitled.png&quot; alt=&quot;Untitled&quot; width=&quot;356&quot; height=&quot;115&quot; srcset=&quot;https://www.rubaniuk.com/wp-content/uploads/2016/06/Untitled.png 356w, https://www.rubaniuk.com/wp-content/uploads/2016/06/Untitled-300x97.png 300w&quot; sizes=&quot;(max-width: 356px) 100vw, 356px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Really TP-Link? I was not able to use my old USB Wireless Adapter and the list of wireless networks simply wouldn’t show up. Quick Internet search helped solve the problem, resetting Winsock Catalog fixed it:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;netsh winsock reset&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;&lt;span style=&quot;line-height: 24.0001px;&quot;&gt;In addition, I suspected that Windows system files might be corrupted so I decided to check:&lt;/span&gt;&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;C:&lt;span class=&quot;se&quot;&gt;\W&lt;/span&gt;INDOWS&lt;span class=&quot;se&quot;&gt;\s&lt;/span&gt;ystem32&lt;span class=&quot;se&quot;&gt;\s&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;fc&lt;/span&gt; /scannow

Beginning system scan. This process will take some time.

Beginning verification phase of system scan.
Verification 100% complete.

Windows Resource Protection found corrupt files and successfully repaired
them. Details are included &lt;span class=&quot;k&quot;&gt;in &lt;/span&gt;the CBS.Log windir&lt;span class=&quot;se&quot;&gt;\L&lt;/span&gt;ogs&lt;span class=&quot;se&quot;&gt;\C&lt;/span&gt;BS&lt;span class=&quot;se&quot;&gt;\C&lt;/span&gt;BS.log. For
example C:&lt;span class=&quot;se&quot;&gt;\W&lt;/span&gt;indows&lt;span class=&quot;se&quot;&gt;\L&lt;/span&gt;ogs&lt;span class=&quot;se&quot;&gt;\C&lt;/span&gt;BS&lt;span class=&quot;se&quot;&gt;\C&lt;/span&gt;BS.log. Note that logging is currently not
supported &lt;span class=&quot;k&quot;&gt;in &lt;/span&gt;offline servicing scenarios.&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;All fixed, back to more productive activities.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;</content><author><name>andrei</name></author><category term="Uncategorized" /><summary type="html">Recently I was testing real-world performance of TP-LINK Archer T9E AC1900 wireless adapter. The experiment was quite unsuccessful and I didn’t experience any reasonable improvement. Quite the opposite: speeds did not improve but the connection was mush less stable.</summary></entry><entry><title type="html">A Case for Mechanical Keyboards</title><link href="https://www.rubaniuk.com/software%20development/software%20industry/2015/07/29/a-case-for-mechanical-keyboards.html" rel="alternate" type="text/html" title="A Case for Mechanical Keyboards" /><published>2015-07-29T05:44:07+00:00</published><updated>2015-07-29T05:44:07+00:00</updated><id>https://www.rubaniuk.com/software%20development/software%20industry/2015/07/29/a-case-for-mechanical-keyboards</id><content type="html" xml:base="https://www.rubaniuk.com/software%20development/software%20industry/2015/07/29/a-case-for-mechanical-keyboards.html">&lt;p&gt;&lt;strong&gt;Lead-In&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After many years of using various ergonomic keyboards both at work as well as home I finally had had enough. It was time to go back to good old mechanical switches. Having some free time and enough courage I researched and finally bought old-school mechanical keyboard.&lt;/p&gt;

&lt;p&gt;The first step was to order a &lt;a href=&quot;http://www.wasdkeyboards.com/index.php/products/sampler-kit/wasd-6-key-cherry-mx-switch-tester.html&quot; target=&quot;_blank&quot;&gt;Cherry MX Switch Tester&lt;/a&gt; from WASD Keyboards.&lt;/p&gt;

&lt;p&gt;&lt;img loading=&quot;lazy&quot; class=&quot;aligncenter size-full wp-image-394&quot; src=&quot;http://www.rubaniuk.com/wp-content/uploads/2015/07/IMG_1189_.jpg&quot; alt=&quot;&quot; width=&quot;960&quot; height=&quot;720&quot; srcset=&quot;https://www.rubaniuk.com/wp-content/uploads/2015/07/IMG_1189_.jpg 960w, https://www.rubaniuk.com/wp-content/uploads/2015/07/IMG_1189_-300x225.jpg 300w, https://www.rubaniuk.com/wp-content/uploads/2015/07/IMG_1189_-624x468.jpg 624w&quot; sizes=&quot;(max-width: 960px) 100vw, 960px&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6 Cherry MX Switches&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The tester comes with 6 switches of which 4 are smooth (clear, red, black and brown) and 2 are actually clicky (blue, green). I didn’t like any of the smooth switches as they were all reminding me of a regular keyboard except a little more precise as each key has an individual switch (duh!).&lt;/p&gt;

&lt;p&gt;I ended up liking Cherry MX Green best as it is more clicky and resitant than Cherry MX Blue. When you compare these two the difference is very clear: the green ones just feel more precise and even sturdy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Keyboard I chose&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As Cherry MX Green was the best choice, I wanted to purchase magnificent &lt;a href=&quot;http://www.wasdkeyboards.com/index.php/products/code-keyboard/code-104-key-mechanical-keyboard-mx-green.html&quot; target=&quot;_blank&quot;&gt;CODE keyboard&lt;/a&gt; that has the best design – clean and simple, that simply allows you to focus on work &amp;amp; typing. It was out of stock! What was surprising is how rare the MX Green keyboards are! Only the CODE had a decent layout (i.e. not extra buttons/knobs and other pseudo-professional bells-n-whistles), but it was not available which was a huge disappointment.&lt;/p&gt;

&lt;p&gt;The next best option was Cherry MX Blue-based &lt;a href=&quot;http://www.amazon.com/gp/product/B008PFABI8?&quot; target=&quot;_blank&quot;&gt;Das Keyboard Model S&lt;/a&gt; ordered on Amazon during their Prime Day. So far so good: satisfying typing experience, the keyboard is a heavy, sits nicely on the desk and reminds me of heavy IBM keyboards from childhood. Overall build is good, it looks like a high-quality product except for the stupid functional keys that fortunately are mixed shared with functional keys.&lt;/p&gt;

&lt;p&gt;Mechanical keyboards may not be for everyone, but software engineers should definitely give them a try for few weeks and see if they like them.&lt;/p&gt;</content><author><name>andrei</name></author><category term="Software Development" /><category term="Software Industry" /><summary type="html">Lead-In</summary></entry><entry><title type="html">Algorithms, Part I on Coursera</title><link href="https://www.rubaniuk.com/coursera/java/programming%20interview/2015/03/25/algorithms-part-i-on-coursera.html" rel="alternate" type="text/html" title="Algorithms, Part I on Coursera" /><published>2015-03-25T05:45:13+00:00</published><updated>2015-03-25T05:45:13+00:00</updated><id>https://www.rubaniuk.com/coursera/java/programming%20interview/2015/03/25/algorithms-part-i-on-coursera</id><content type="html" xml:base="https://www.rubaniuk.com/coursera/java/programming%20interview/2015/03/25/algorithms-part-i-on-coursera.html">&lt;p&gt;About a week ago I finished &lt;a title=&quot;Algorithms, Part I&quot; href=&quot;https://www.coursera.org/course/algs4partI&quot; target=&quot;_blank&quot;&gt;Algorithms, Part I &lt;/a&gt;course on Coursera. Few thoughts after completing this course:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;good course by Robert Sedgewick and Kevin Wayne that is focused primarily on algorithms and their analysis&lt;/li&gt;
  &lt;li&gt;great refresher especially for those who worked in the industry for a while&lt;/li&gt;
  &lt;li&gt;course uses Java as programming language, but having very little Java experience wasn’t a problem, being proficient in C++ and especially C# helped a lot&lt;/li&gt;
  &lt;li&gt;the course focuses mostly on application of existing algorithms but does not focus on the algorithm design which is its biggest drawback&lt;/li&gt;
  &lt;li&gt;Dr. Java IDE that comes with the course is terrible. Instead, I used Eclipse and version of Java that the default course setup installs on your machine (see previous post on &lt;a title=&quot;Configuring Eclipse IDE for Algorithms, Part I (Coursera)&quot; href=&quot;http://www.rubaniuk.com/?p=365&quot; target=&quot;_blank&quot;&gt;how to configure Eclipse&lt;/a&gt; for this course)&lt;/li&gt;
  &lt;li&gt;the course does &lt;strong&gt;not&lt;/strong&gt; provide a verified certificate which is a bummer especially after all the hard work&lt;/li&gt;
  &lt;li&gt;all of the programming tasks were fun and challenging&lt;/li&gt;
  &lt;li&gt;lecture and slides are helpful but you obviously need to do your own learning in addition to that&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In order to be successful in this class, you need to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;make sure you keep delivering exercises and programming assignments before the due date or at least hard deadline. For me it was a big challenge in the beginning due to packed schedule but I had supportive environment and overall experience was smooth.&lt;/li&gt;
  &lt;li&gt;do not study if you’re tired after work – instead, get a good night of sleep and study when your brain is fresh – sounds like a no-brainer but it’s not so obvious until you experience double load – both at work and in the class&lt;/li&gt;
  &lt;li&gt;do not use Dr Java – it’s almost impossible to debug your code fast, especially complex data types. Install Eclipse. Enough said.&lt;/li&gt;
  &lt;li&gt;try to have fun and enjoy every moment of it!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overall, I recommend this class.&lt;/p&gt;</content><author><name>andrei</name></author><category term="Coursera" /><category term="Java" /><category term="Programming Interview" /><summary type="html">About a week ago I finished Algorithms, Part I course on Coursera. Few thoughts after completing this course:</summary></entry><entry><title type="html">Configuring Eclipse IDE for Algorithms, Part I (Coursera)</title><link href="https://www.rubaniuk.com/coursera/java/software%20development/2015/02/15/configuring-eclipse-ide-for-algorithms-part-i-coursera.html" rel="alternate" type="text/html" title="Configuring Eclipse IDE for Algorithms, Part I (Coursera)" /><published>2015-02-15T02:45:49+00:00</published><updated>2015-02-15T02:45:49+00:00</updated><id>https://www.rubaniuk.com/coursera/java/software%20development/2015/02/15/configuring-eclipse-ide-for-algorithms-part-i-coursera</id><content type="html" xml:base="https://www.rubaniuk.com/coursera/java/software%20development/2015/02/15/configuring-eclipse-ide-for-algorithms-part-i-coursera.html">&lt;p style=&quot;text-align: left;&quot;&gt;
  Coursera is offering great algorithmic courses &lt;a title=&quot;Algorithms, Part I&quot; href=&quot;https://www.coursera.org/course/algs4partI&quot; target=&quot;_blank&quot;&gt;Algorithms, Part I&lt;/a&gt; and &lt;a title=&quot;Algorithms, Part II&quot; href=&quot;https://www.coursera.org/course/algs4partI&quot; target=&quot;_blank&quot;&gt;Part II&lt;/a&gt; by Robert Sedgewick. The only problem with them is Dr. Java IDE they recommend. It is free, usable but completely impractical when it comes to debugging.  I&amp;#8217;ve configured Eclipse IDE and my productivity increased significantly, especially when it comes to debugging.
&lt;/p&gt;

&lt;p style=&quot;text-align: left;&quot;&gt;
  Here is how to configure Eclipse on Windows machine for Algorithms, Part I/part II:
&lt;/p&gt;

&lt;li style=&quot;text-align: left;&quot;&gt;
  Uninstall any instances of Java from your machine
&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;
  Follow step 0 from &lt;a title=&quot;Hello World in Java on Windows&quot; href=&quot;http://algs4.cs.princeton.edu/windows/&quot; target=&quot;_blank&quot;&gt;http://algs4.cs.princeton.edu/windows/&lt;/a&gt; to install &lt;a title=&quot;algs4.exe&quot; href=&quot;http://algs4.cs.princeton.edu/windows/algs4.exe&quot; target=&quot;_blank&quot;&gt;algs4.exe&lt;/a&gt; &lt;ul&gt;
    &lt;li&gt;
      only follow step 0, skip the rest as we will use Eclipse instead of Dr. Java
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;

&lt;li style=&quot;text-align: left;&quot;&gt;
  Download &lt;a title=&quot;stdlib.jar&quot; href=&quot;http://algs4.cs.princeton.edu/code/stdlib.jar&quot; target=&quot;_blank&quot;&gt;stdlib.jar&lt;/a&gt; and &lt;a title=&quot;algs4.jar&quot; href=&quot;http://algs4.cs.princeton.edu/code/algs4.jar&quot; target=&quot;_blank&quot;&gt;algs4.jar&lt;/a&gt; to permanent folder
&lt;/li&gt;
&lt;li style=&quot;text-align: left;&quot;&gt;
  Download &lt;a title=&quot;Eclipse IDE for Java Developers&quot; href=&quot;http://www.eclipse.org/downloads/&quot; target=&quot;_blank&quot;&gt;Eclipse IDE for Java Developers&lt;/a&gt; &lt;ul&gt;
    &lt;li&gt;
      At the time of this blog post I had Eclipse Luna SR1 4.4.1 on my machine
    &lt;/li&gt;
  &lt;/ul&gt;
&lt;/li&gt;

&lt;ol&gt;
  &lt;li&gt;Follow instructions in &lt;a title=&quot;eclipse.pdf&quot; href=&quot;http://www.cs.princeton.edu/~elancast/labta/eclipse.pdf&quot; target=&quot;_blank&quot;&gt;eclipse.pdf&lt;/a&gt; to configure Eclipse. 
    &amp;lt;li style=&quot;text-align: left;&quot;&amp;gt;
 The instructions are long and little tedious but well worth it
    &amp;lt;/li&amp;gt;
    &amp;lt;li style=&quot;text-align: left;&quot;&amp;gt;
 Here’s how you create a User Library in Eclipse: go to Window &amp;gt; Preferences &amp;gt; Java &amp;gt; Build Path &amp;gt; User Libraries, create New library and add&lt;strong&gt;&lt;em&gt; algs4.jar&lt;/em&gt;&lt;/strong&gt; and &lt;em&gt;&lt;strong&gt;stdlib.jar&lt;/strong&gt;&lt;/em&gt; from step 3 (I called it Coursera): &lt;a href=&quot;http://www.rubaniuk.com/wp-content/uploads/2015/02/0UserLibraries.png&quot;&gt;&lt;img loading=&quot;lazy&quot; class=&quot;aligncenter size-full wp-image-371&quot; src=&quot;http://www.rubaniuk.com/wp-content/uploads/2015/02/0UserLibraries.png&quot; alt=&quot;0UserLibraries&quot; width=&quot;702&quot; height=&quot;559&quot; srcset=&quot;https://www.rubaniuk.com/wp-content/uploads/2015/02/0UserLibraries.png 702w, https://www.rubaniuk.com/wp-content/uploads/2015/02/0UserLibraries-300x238.png 300w, https://www.rubaniuk.com/wp-content/uploads/2015/02/0UserLibraries-624x496.png 624w&quot; sizes=&quot;(max-width: 702px) 100vw, 702px&quot; /&gt;&lt;/a&gt;
    &amp;lt;/li&amp;gt;
    &lt;ul&gt;
      &lt;li&gt;Whenever you create a new Java project you need to add newly created user library : right click on project, Build Path &amp;gt; Add Libraries &lt;a href=&quot;http://www.rubaniuk.com/wp-content/uploads/2015/02/1AddLibrary.png&quot;&gt;&lt;img loading=&quot;lazy&quot; class=&quot;aligncenter size-full wp-image-372&quot; src=&quot;http://www.rubaniuk.com/wp-content/uploads/2015/02/1AddLibrary.png&quot; alt=&quot;1AddLibrary&quot; width=&quot;525&quot; height=&quot;508&quot; srcset=&quot;https://www.rubaniuk.com/wp-content/uploads/2015/02/1AddLibrary.png 525w, https://www.rubaniuk.com/wp-content/uploads/2015/02/1AddLibrary-300x290.png 300w&quot; sizes=&quot;(max-width: 525px) 100vw, 525px&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.rubaniuk.com/wp-content/uploads/2015/02/2AddLibrary.png&quot;&gt;&lt;img loading=&quot;lazy&quot; class=&quot;aligncenter size-full wp-image-373&quot; src=&quot;http://www.rubaniuk.com/wp-content/uploads/2015/02/2AddLibrary.png&quot; alt=&quot;2AddLibrary&quot; width=&quot;525&quot; height=&quot;508&quot; srcset=&quot;https://www.rubaniuk.com/wp-content/uploads/2015/02/2AddLibrary.png 525w, https://www.rubaniuk.com/wp-content/uploads/2015/02/2AddLibrary-300x290.png 300w&quot; sizes=&quot;(max-width: 525px) 100vw, 525px&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;Here’s what your Java project in Eclipse will look like after adding this library:&lt;a href=&quot;http://www.rubaniuk.com/wp-content/uploads/2015/02/3Project.png&quot;&gt;&lt;img loading=&quot;lazy&quot; class=&quot;aligncenter size-full wp-image-374&quot; src=&quot;http://www.rubaniuk.com/wp-content/uploads/2015/02/3Project.png&quot; alt=&quot;3Project&quot; width=&quot;633&quot; height=&quot;531&quot; srcset=&quot;https://www.rubaniuk.com/wp-content/uploads/2015/02/3Project.png 633w, https://www.rubaniuk.com/wp-content/uploads/2015/02/3Project-300x251.png 300w, https://www.rubaniuk.com/wp-content/uploads/2015/02/3Project-624x523.png 624w&quot; sizes=&quot;(max-width: 633px) 100vw, 633px&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Eclipse worked well for me and as I mentioned previously increased my productivity which made studying fun again.&lt;/p&gt;

&lt;p&gt;Good luck and let me know if you have questions!&lt;/p&gt;</content><author><name>andrei</name></author><category term="Coursera" /><category term="Java" /><category term="Software Development" /><summary type="html">Coursera is offering great algorithmic courses Algorithms, Part I and Part II by Robert Sedgewick. The only problem with them is Dr. Java IDE they recommend. It is free, usable but completely impractical when it comes to debugging.  I&amp;#8217;ve configured Eclipse IDE and my productivity increased significantly, especially when it comes to debugging.</summary></entry></feed>