{"@attributes":{"version":"2.0"},"channel":{"title":"The Code Ship","link":"https:\/\/www.thecodeship.com\/","description":{},"lastBuildDate":"Thu, 11 Jun 2020 21:06:00 +0300","item":[{"title":"Transforming browser HAR logs into an analysis friendly format in Javascript","link":"https:\/\/www.thecodeship.com\/web-development\/transforming-browser-har-logs-into-analysis-friendly-format\/","description":"<p>HAR files extracted from HTTP sessions include a lot of useful data that can be utilized for creating custom network and performance audits. Their format though, is not that compatible with analysis tools like Pandas or Tableau out of the box. In this post, I go over a super easy approach towards parsing and transforming them via Objectron in JS.<\/p>","pubDate":"Thu, 11 Jun 2020 21:06:00 +0300","guid":"tag:www.thecodeship.com,2020-06-11:\/web-development\/transforming-browser-har-logs-into-analysis-friendly-format\/","category":["har","browsers","logs","http","javascript","objectron","nodejs","performance"]},{"title":"A guide to Service Workers - pitfalls and best practices","link":"https:\/\/www.thecodeship.com\/web-development\/guide-service-worker-pitfalls-best-practices\/","description":"<p>Service workers is one of the most useful features that came to modern browsers. Implementation can be quite tricky though and prone to a lot of issues that could slip into production. I'll be discussing my set of tips and best practices on the subject.<\/p>","pubDate":"Sun, 10 May 2020 11:00:00 +0300","guid":"tag:www.thecodeship.com,2020-05-10:\/web-development\/guide-service-worker-pitfalls-best-practices\/","category":["service-workers","javascript","best","practices","advice","pitfalls","tips"]},{"title":"Tip on Converting Cocoa Core Data to Unix Timestamp in Python","link":"https:\/\/www.thecodeship.com\/general\/converting-cocoa-unix-timestamp\/","description":"<p>When accessing a Core Data database, you might notice that the timestamp is not exactly a unix epoch timestamp but an Apple specific one instead. In this post, I explain the difference and how to convert that into the popular Unix timestamp that we all love.<\/p>","pubDate":"Wed, 18 Sep 2019 15:00:00 +0300","guid":"tag:www.thecodeship.com,2019-09-18:\/general\/converting-cocoa-unix-timestamp\/","category":["coredata","apple","timestamp","epoch","unix","conversion","python"]},{"title":"A simple algorithm for generating a dataset based on combinations of multiple sets","link":"https:\/\/www.thecodeship.com\/algorithms\/simple-algorithm-generating-dataset-combinations-multiple-sets\/","description":"<p>Generating sample data based on the combination of specific parameters and options is a common use case. In this post, I illustrate utilizing a simple recursive approach for generating all possible combinations from input into a dataset.<\/p>","pubDate":"Sat, 18 Aug 2018 12:00:00 +0300","guid":"tag:www.thecodeship.com,2018-08-18:\/algorithms\/simple-algorithm-generating-dataset-combinations-multiple-sets\/","category":["datasets","combinations","input","recursion","permutation"]},{"title":"A guide on implementing free SSL certificate on Nginx using Let's Encrypt","link":"https:\/\/www.thecodeship.com\/web-development\/guide-implementing-free-ssl-certificate-nginx-lets-encrypt\/","description":"<p>If you're reading this article, I'm assuming that you're already sold on the numerous benefits of securing your website with an SSL certificate. Wether it's for encrypting data transfers, establishing more credibility or even improving your <a href=\"http:\/\/searchengineland.com\/googles-gary-illyes-https-may-break-ties-between-two-equal-search-results-230691\">SEO ranking<\/a> (yes you heard it right) it's now easier than ever to obtain \u2026<\/p>","pubDate":"Sun, 07 May 2017 17:35:00 +0300","guid":"tag:www.thecodeship.com,2017-05-07:\/web-development\/guide-implementing-free-ssl-certificate-nginx-lets-encrypt\/","category":["SSL","free","ubuntu","nginx","letsencrypt","encrypt","https","security"]},{"title":"Bootstrap your vanilla JS game with this project setup and gulp build","link":"https:\/\/www.thecodeship.com\/web-development\/bootstrap-vanilla-js-game-gulp-build-project-setup\/","description":"<p>Building your own vanilla HTML5 game without dependencies might sound like a tough and odd job to do. In fact, it's a really fun experience and a huge opportunity to sharpen your JS and general programming skills. One awesome competition that empowers this movement is the JS13K competition. It ...<\/p>","pubDate":"Sun, 14 Aug 2016 06:00:00 +0300","guid":"tag:www.thecodeship.com,2016-08-14:\/web-development\/bootstrap-vanilla-js-game-gulp-build-project-setup\/","category":["gulp","canvas","project","build","js13k","structure","html5"]},{"title":"Sudden S3 Boto authorisation error on server? Might need to sync up the time!","link":"https:\/\/www.thecodeship.com\/gnu-linux\/sudden-s3-boto-auth-error-sync-up\/","description":"<p>I usually have a couple cron jobs scheduled, executing backup scripts between EC2 instances and store the data on S3 via Python's Boto library. Everything was running smoothly for several months until one day, the script was failing to authenticate with a 403 error from AWS S3, on one of the EC2 instances...<\/p>","pubDate":"Sun, 22 May 2016 15:03:00 +0300","guid":"tag:www.thecodeship.com,2016-05-22:\/gnu-linux\/sudden-s3-boto-auth-error-sync-up\/","category":["s3","ntp","sync","boto","api","time"]},{"title":"A year of Vim - Beginner advice and lessons learned","link":"https:\/\/www.thecodeship.com\/tools\/year-of-vim-beginner-advice-lessons-learned\/","description":"<p>I've been using vim daily for almost a year now; it has been a wonderful (sometimes frustrating) experience. Today, a friend of mine was informing me about his interest in jumping into Vim. I thought I'd give him some advice from what I have learned over this period ...<\/p>","pubDate":"Sat, 30 May 2015 22:13:00 +0300","guid":"tag:www.thecodeship.com,2015-05-30:\/tools\/year-of-vim-beginner-advice-lessons-learned\/","category":["beginner","experience","vim","tips","advice"]},{"title":"The Hackathon Toolbox - Essential Tools and Practices","link":"https:\/\/www.thecodeship.com\/general\/hackathon-toolbox-essential-tools-practices\/","description":"<p>In a couple of days I will be mentoring a team of students at the <a href=\"http:\/\/nyuad.nyu.edu\/en\/news-events\/conferences\/nyuad-hackathon.html\">NYUAD 2015 hackathon - Building Apps for Social Good in the Arab World<\/a>. Since I tend to participate often in development competitions and hackathons, I thought I'd compile a comprehensive list of essential tools needed ...<\/p>","pubDate":"Tue, 07 Apr 2015 20:04:00 +0300","guid":"tag:www.thecodeship.com,2015-04-07:\/general\/hackathon-toolbox-essential-tools-practices\/","category":["mvp","tricks","practices","tools","hackathon","tips"]},{"title":"A Developer's year in review","link":"https:\/\/www.thecodeship.com\/general\/developer-year-in-review\/","description":"<p>As the end of every year approaches, we start to reflect back on it. As software developers, our questions can be many, What did I work on? What did I produce? What mistakes I have done, and what did we learn from them. Today, I'll seize this opportunity to ...<\/p>","pubDate":"Fri, 02 Jan 2015 19:00:00 +0200","guid":"tag:www.thecodeship.com,2015-01-02:\/general\/developer-year-in-review\/","category":["review","developer","2014"]},{"title":"Common pitfalls when working with Javascript Arrays","link":"https:\/\/www.thecodeship.com\/web-development\/common-pitfalls-when-working-with-javascript-arrays\/","description":"<p>In most programming languages, an array is a data structure represented by an arrangement of items at equally spaced addresses in computer memory. Unfortunately, that is not the case with Javascript. A Javascript array is simply an object with array like characteristics reflected through certain methods. Apart from being much \u2026<\/p>","pubDate":"Thu, 27 Mar 2014 15:00:00 +0200","guid":"tag:www.thecodeship.com,2014-03-27:\/web-development\/common-pitfalls-when-working-with-javascript-arrays\/","category":["javascript","arrays","tips","pitfall"]},{"title":"A guide to Python's function decorators","link":"https:\/\/www.thecodeship.com\/patterns\/guide-to-python-function-decorators\/","description":"<p>Python is rich with powerful features and expressive syntax. One of my favorites is decorators. In the context of design patterns, decorators dynamically alter the functionality of a function, method or class without having to directly use subclasses. This is ideal when you need to extend the functionality of functions ...<\/p>","pubDate":"Mon, 06 Jan 2014 12:00:00 +0200","guid":"tag:www.thecodeship.com,2014-01-06:\/patterns\/guide-to-python-function-decorators\/","category":["python","patterns","decorators","syntax","functions"]},{"title":"An alternative to Javascript's evil setInterval","link":"https:\/\/www.thecodeship.com\/web-development\/alternative-to-javascript-evil-setinterval\/","description":"<p>If you use Javascript often you might have come across the need for delaying the execution of code within intervals of time with repetition. This is were the native setInterval function comes to use. Despite being useful in many applications, setInterval's shortcomings could blow up your application in some ...<\/p>","pubDate":"Sun, 03 Nov 2013 12:00:00 +0200","guid":"tag:www.thecodeship.com,2013-11-03:\/web-development\/alternative-to-javascript-evil-setinterval\/","category":["javascript","improvement","setinterval","settimeout"]},{"title":"Understanding the apt-cache depends Output","link":"https:\/\/www.thecodeship.com\/gnu-linux\/understanding-apt-cache-depends-output\/","description":"<p>I was using apt-cache in Ubuntu to get a list of dependencies for a certain package and parse the output programmatically, eventually I wanted to programatically download and package them within an archive for offline installs later on. I was not really sure about the exact meanings of the output ...<\/p>","pubDate":"Sun, 18 Aug 2013 05:00:00 +0300","guid":"tag:www.thecodeship.com,2013-08-18:\/gnu-linux\/understanding-apt-cache-depends-output\/","category":["output","cache","apt","linux"]},{"title":"Proxypy: Cross Domain Javascript Requests with Python","link":"https:\/\/www.thecodeship.com\/web-development\/proxypy-cross-domain-javascript-requests-python\/","description":"<p>When working with web applications you might run into the need to fetch remote content via Ajax where that content isn't necessarily JSON, such as HTML or config file, or even request JSON content from a remote server that doesn't support JSONP. This is when setting up a ...<\/p>","pubDate":"Sat, 08 Jun 2013 17:00:00 +0300","guid":"tag:www.thecodeship.com,2013-06-08:\/web-development\/proxypy-cross-domain-javascript-requests-python\/","category":["javascript","python","cross-domain"]},{"title":"Javascript URL Object","link":"https:\/\/www.thecodeship.com\/web-development\/javascript-url-object\/","description":"<p>I've been doing some operations on URLs in Javascript where I needed to extract different parts from a string URL, such as the domain, port, and most importantly the parameter values. I really wished there was some function which takes a string URL and breaks it down into an ...<\/p>","pubDate":"Mon, 20 May 2013 11:00:00 +0300","guid":"tag:www.thecodeship.com,2013-05-20:\/web-development\/javascript-url-object\/","category":["javascript","parameters","urls","parsing"]},{"title":"Serializing a Function's Arguments in Javascript","link":"https:\/\/www.thecodeship.com\/web-development\/serializing-function-arguments-in-javascript\/","description":"<p>At many instances when doing Ajax requests in Javascript, a serialize function comes in handy for creating a string in standard URL-encoded notation for the request parameters. The most widely used <a href=\"http:\/\/api.jquery.com\/serialize\/\">serialize function<\/a> is that of jQuery which works great on forms. But what if the request is not based ...<\/p>","pubDate":"Mon, 13 May 2013 01:00:00 +0300","guid":"tag:www.thecodeship.com,2013-05-13:\/web-development\/serializing-function-arguments-in-javascript\/","category":["javascript","serialization","functions","parameters"]},{"title":"Quality Computer Science Education for Free? Yes Please!","link":"https:\/\/www.thecodeship.com\/general\/quality-computer-science-education-free-yes-please\/","description":"<p>Recently I have been following a couple of online courses on Coursera and udacity, and I must say the quality of the material is really good. Browsing through several programming and computer science courses you can notice that the quality of the material is at least as good as many...<\/p>","pubDate":"Fri, 03 May 2013 13:57:00 +0300","guid":"tag:www.thecodeship.com,2013-05-03:\/general\/quality-computer-science-education-free-yes-please\/","category":["science","coursera","free","udacity","computer","education"]},{"title":"New Version of the Blog is Out","link":"https:\/\/www.thecodeship.com\/general\/new-version-of-the-blog-is-out\/","description":"<p>Hello everyone, as you can see I have just rolled out a new design for this blog, the old one was nice yet had some evident problems in terms of UX, layout and colors. So I decided to revamp it into this. The new blog design is simpler, the layout ...<\/p>","pubDate":"Thu, 02 May 2013 15:23:00 +0300","guid":"tag:www.thecodeship.com,2013-05-02:\/general\/new-version-of-the-blog-is-out\/","category":["new","version"]},{"title":"Methods Within Constructor vs Prototype in Javascript","link":"https:\/\/www.thecodeship.com\/web-development\/methods-within-constructor-vs-prototype-in-javascript\/","description":"<p>At many instances when working with javascript objects, different pieces of code can give the same result on the surface yet underneath they could be different. One scenario is when adding methods to your Javascript 'classes'. First of all lets agree on the fact that there are no classes in ...<\/p>","pubDate":"Tue, 02 Apr 2013 17:26:00 +0300","guid":"tag:www.thecodeship.com,2013-04-02:\/web-development\/methods-within-constructor-vs-prototype-in-javascript\/","category":["prototype","methods","constructor","performance"]},{"title":"Exercise: Alien Language Pattern Matching","link":"https:\/\/www.thecodeship.com\/algorithms\/exercise-alien-language-pattern-matching\/","description":"<p>As part of my programming workout I was going through some nice Google code jam exercises and came across an interesting exercise from the 2009 qualification round related to matching words against patterns. Not hard but interesting to solve.<\/p>","pubDate":"Mon, 01 Apr 2013 10:33:00 +0300","guid":"tag:www.thecodeship.com,2013-04-01:\/algorithms\/exercise-alien-language-pattern-matching\/"},{"title":"The undefined vs null Pitfall in Javascript","link":"https:\/\/www.thecodeship.com\/web-development\/the-undefined-vs-null-pitfall-in-javascript\/","description":"<p>Sometimes I come across JavaScript code with a lot of null checking against properties that are uninitialized, which is really wrong. Many people might think that uninitialized properties get a default value of null, but that is not the case despite having something like foo == null resulting in true, assuming ...<\/p>","pubDate":"Sat, 23 Mar 2013 21:06:00 +0200","guid":"tag:www.thecodeship.com,2013-03-23:\/web-development\/the-undefined-vs-null-pitfall-in-javascript\/","category":["javascript","null","undefined","web"]},{"title":"TypeScript: Enhanced Javascript","link":"https:\/\/www.thecodeship.com\/web-development\/typescript-enhanced-javascript\/","description":"<p>One of the most important platforms nowadays is the web, and Javascript incorporates a large share from any web application today more than ever. As we get more into the single page applications trend and Javascript on the server (such as NodeJS), this language can't be really dealt with ...<\/p>","pubDate":"Thu, 07 Mar 2013 15:00:00 +0200","guid":"tag:www.thecodeship.com,2013-03-07:\/web-development\/typescript-enhanced-javascript\/","category":["superset","TypeScript","enhanced"]},{"title":"Deploy Django on Apache with Virtualenv and mod_wsgi","link":"https:\/\/www.thecodeship.com\/deployment\/deploy-django-apache-virtualenv-and-mod_wsgi\/","description":"<p>I have recently got into Django and built a small project with it which is this blog. Then came the time for me to deploy the project on an unmanaged VPS, the process went fine yet with a few problems here and there due to the lack of a definitive ...<\/p>","pubDate":"Sun, 03 Mar 2013 04:03:00 +0200","guid":"tag:www.thecodeship.com,2013-03-03:\/deployment\/deploy-django-apache-virtualenv-and-mod_wsgi\/","category":["virtualenv","wsgi","deploy","apache2","django","tutorial"]},{"title":"Birth","link":"https:\/\/www.thecodeship.com\/general\/birth\/","description":"<p>Hello everyone, I have recently decided to start a blog for sharing my thoughts about programming, software, web development and everything that goes around those topics. Programming is not the simple skill you acquire within a defined period of time and keep using it over and over again within repetitive ...<\/p>","pubDate":"Tue, 26 Feb 2013 17:35:00 +0200","guid":"tag:www.thecodeship.com,2013-02-26:\/general\/birth\/","category":["introduction","birth"]}]}}