
<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Leigh Halliday's RSS Feed]]></title><description><![CDATA[Leigh is an engineering manager at Wrapbook. He writes about Ruby, Rails, React and JavaScript.]]></description><link>https://www.leighhalliday.com</link><generator>GatsbyJS</generator><lastBuildDate>Wed, 22 Sep 2021 16:49:09 GMT</lastBuildDate><author><![CDATA[@leighchalliday]]></author><item><title><![CDATA[MongoDB GeoJSON Schema Validation]]></title><description><![CDATA[If you want to save the location of someone, something, or somewhere, you'll need to store its coordinates. In this article we'll be looking at a  Point , a singular location with latitude and longitude. We'll see how  GeoJSON points  should be…]]></description><link>https://www.leighhalliday.com/mongodb-geojson-schema-validation</link><guid isPermaLink="false">https://www.leighhalliday.com/mongodb-geojson-schema-validation</guid><category><![CDATA[javascript]]></category><category><![CDATA[mongodb]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Mon, 06 Jul 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[How To Mock Fetch in Jest]]></title><description><![CDATA[Making HTTP requests in tests isn't a great idea in most situations... it can slow your tests down, is unreliable, and the API you are making requests to may not appreciate it either. So how do you avoid making HTTP requests in your tests? If you are…]]></description><link>https://www.leighhalliday.com/mock-fetch-jest</link><guid isPermaLink="false">https://www.leighhalliday.com/mock-fetch-jest</guid><category><![CDATA[javascript]]></category><category><![CDATA[testing]]></category><category><![CDATA[jest]]></category><category><![CDATA[mocks]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 15 May 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to use Reduce in JavaScript]]></title><description><![CDATA[The  reduce  function of an  Array  is one of the most versatile functions in JavaScript. With it you can accomplish a lot of the functions from the  Array  and  Math  objects. It's job is to start with an array, and reduce those elements into some…]]></description><link>https://www.leighhalliday.com/reduce-javascript</link><guid isPermaLink="false">https://www.leighhalliday.com/reduce-javascript</guid><category><![CDATA[javascript]]></category><category><![CDATA[fundamentals]]></category><category><![CDATA[arrays]]></category><category><![CDATA[reduce]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sat, 09 May 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to Publish an NPM Package]]></title><description><![CDATA[Publishing an NPM package with TypeScript has never been easier with the help of  tsdx , a wonderful package from  Jared Palmer , who also happens to be the creator of  Formik  for easily building forms in React. With tsdx, without ever having…]]></description><link>https://www.leighhalliday.com/publish-npm-package</link><guid isPermaLink="false">https://www.leighhalliday.com/publish-npm-package</guid><category><![CDATA[npm]]></category><category><![CDATA[javascript]]></category><category><![CDATA[hooks]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 09 Jan 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Leaflet Marker Clustering]]></title><description><![CDATA[Performance can begin to degrade pretty quickly when you are trying to show large amounts of data on a map. Even at hundreds of markers using  Leaflet  via  React Leaflet , you may feel it start to lag. By clustering the points together you can…]]></description><link>https://www.leighhalliday.com/leaflet-clustering</link><guid isPermaLink="false">https://www.leighhalliday.com/leaflet-clustering</guid><category><![CDATA[react]]></category><category><![CDATA[hooks]]></category><category><![CDATA[maps]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 08 Jan 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Google Maps Marker Clustering]]></title><description><![CDATA[Performance can begin to degrade pretty quickly when you are trying to show large amounts of data on a map. Even at hundreds of markers using  Google Maps  via  google-map-react , you may feel it start to lag. By clustering the points together you…]]></description><link>https://www.leighhalliday.com/google-maps-clustering</link><guid isPermaLink="false">https://www.leighhalliday.com/google-maps-clustering</guid><category><![CDATA[react]]></category><category><![CDATA[hooks]]></category><category><![CDATA[maps]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sun, 29 Dec 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mapbox Marker Clustering]]></title><description><![CDATA[Performance can begin to degrade pretty quickly when you are trying to show large amounts of data on a map. Even at hundreds of markers using  Mapbox  via  react-map-gl , you may feel it start to lag. By clustering the points together you can improve…]]></description><link>https://www.leighhalliday.com/mapbox-clustering</link><guid isPermaLink="false">https://www.leighhalliday.com/mapbox-clustering</guid><category><![CDATA[react]]></category><category><![CDATA[hooks]]></category><category><![CDATA[mapbox]]></category><category><![CDATA[maps]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 27 Dec 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Replacing Redux with React Hooks]]></title><description><![CDATA[Redux  has been the go-to way to manage state within your React application for years. It's popularity is due in large part because when it was introduced, it solved a number of problems which were difficult to do in vanilla React on its own. A few…]]></description><link>https://www.leighhalliday.com/replacing-redux-with-react-hooks</link><guid isPermaLink="false">https://www.leighhalliday.com/replacing-redux-with-react-hooks</guid><category><![CDATA[react]]></category><category><![CDATA[redux]]></category><category><![CDATA[hooks]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 18 Dec 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[How Does SWR Work?]]></title><description><![CDATA[SWR  is a great package from  Zeit  to help make it easier to fetch remote data with hooks. It is based on the  stale-while-revalidate  RFC, which in simple terms says to show stale (old) data while you are fetching a new version of the data. The…]]></description><link>https://www.leighhalliday.com/how-does-swr-work</link><guid isPermaLink="false">https://www.leighhalliday.com/how-does-swr-work</guid><category><![CDATA[react]]></category><category><![CDATA[hooks]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sun, 15 Dec 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Secrets and Environment Variables in Next.js and Now]]></title><description><![CDATA[Zeit has great documentation, but it took me a while to understand the difference between environment variables (secrets) on the serverless side vs how to get env vars exposed and available to the React code which runs client side, in the browser…]]></description><link>https://www.leighhalliday.com/secrets-env-vars-nextjs-now</link><guid isPermaLink="false">https://www.leighhalliday.com/secrets-env-vars-nextjs-now</guid><category><![CDATA[serverless]]></category><category><![CDATA[now]]></category><category><![CDATA[nextjs]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sat, 07 Sep 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Serverless OG Image]]></title><description><![CDATA[If you've ever pasted a URL from an article on  dev.to  into Slack, Twitter, Facebook or LinkedIn, you'll notice they have an awesome social share image that is included. Little did you know that they have thousands of people all over the world…]]></description><link>https://www.leighhalliday.com/serverless-og-image</link><guid isPermaLink="false">https://www.leighhalliday.com/serverless-og-image</guid><category><![CDATA[serverless]]></category><category><![CDATA[now]]></category><category><![CDATA[lambda]]></category><category><![CDATA[node]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Mon, 15 Jul 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Iterate over Objects in JavaScript]]></title><description><![CDATA[How do you iterate over objects in JavaScript? In this article we'll answer this question by showing 3 alternatives. The data we'll be using for this article contains the name of 3 Toronto Raptors, with a unique key property for each of them. Mapping…]]></description><link>https://www.leighhalliday.com/iterate-objects-javascript</link><guid isPermaLink="false">https://www.leighhalliday.com/iterate-objects-javascript</guid><category><![CDATA[es6]]></category><category><![CDATA[javascript]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 26 Jun 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Tagged Template Literals]]></title><description><![CDATA[I kept seeing  Tagged Template Literals  in a number of popular libraries, but I didn't understand how they worked. This article explores what they are, how they're used "in the wild", and we'll then build a small version of a  css  function which…]]></description><link>https://www.leighhalliday.com/tagged-template-literals</link><guid isPermaLink="false">https://www.leighhalliday.com/tagged-template-literals</guid><category><![CDATA[es6]]></category><category><![CDATA[javascript]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Tue, 02 Apr 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Using the useEffect hook]]></title><description><![CDATA[useEffect  is meant to handle any sort of "side effect" (making a change in some external system, logging to the console, making an HTTP request, etc...) that is triggered by a change in your component's data or in reaction to the component rendering…]]></description><link>https://www.leighhalliday.com/use-effect-hook</link><guid isPermaLink="false">https://www.leighhalliday.com/use-effect-hook</guid><category><![CDATA[react]]></category><category><![CDATA[hooks]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 28 Mar 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Generating TypeScript Types from GraphQL Schema in Apollo]]></title><description><![CDATA[GraphQL  is a typed language, so why redefine all of the types ourselves inside our  TypeScript  code when we should be able to take advantage of the types coming from GraphQL and have them automatically generated for us? That's exactly what we can…]]></description><link>https://www.leighhalliday.com/generating-types-apollo</link><guid isPermaLink="false">https://www.leighhalliday.com/generating-types-apollo</guid><category><![CDATA[typescript]]></category><category><![CDATA[apollo]]></category><category><![CDATA[graphql]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sun, 24 Mar 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Async Axios in React Testing Library]]></title><description><![CDATA[In this article we'll take a look at how to handle async code in React Testing Library, specifically at how to test and mock a call using Axios. Async code... waiting for an element In the example component shown in my article  introducing React…]]></description><link>https://www.leighhalliday.com/async-axios-react-testing-library</link><guid isPermaLink="false">https://www.leighhalliday.com/async-axios-react-testing-library</guid><category><![CDATA[react]]></category><category><![CDATA[testing]]></category><category><![CDATA[react-testing-library]]></category><category><![CDATA[axios]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 07 Mar 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Firing Events in React Testing Library]]></title><description><![CDATA[In this article we'll see how to fire and test events in our React components using the React Testing Library. With React Testing Library it's very easy to simulate browser events such as a click event. The library comes with a function called…]]></description><link>https://www.leighhalliday.com/firing-events-react-testing-library</link><guid isPermaLink="false">https://www.leighhalliday.com/firing-events-react-testing-library</guid><category><![CDATA[react]]></category><category><![CDATA[testing]]></category><category><![CDATA[react-testing-library]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 07 Mar 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introduction to the React Testing Library]]></title><description><![CDATA[React Testing Library  is an amazing yet simple testing library from  Kent Dodds . It works alongside the testing library  Jest  to provide React specific testing for snapshots, verifying DOM attributes or content, triggering click (or other) events…]]></description><link>https://www.leighhalliday.com/introduction-react-testing-library</link><guid isPermaLink="false">https://www.leighhalliday.com/introduction-react-testing-library</guid><category><![CDATA[react]]></category><category><![CDATA[testing]]></category><category><![CDATA[react-testing-library]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Tue, 29 Jan 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[React Hooks with Apollo GraphQL]]></title><description><![CDATA[With React 16.7 we were  introduced to hooks . A way to allow things like state, refs, and lifecycle functions to live inside functional components, functionality once only available in class based components. The great thing about hooks though is…]]></description><link>https://www.leighhalliday.com/react-hooks-with-apollo-graphql</link><guid isPermaLink="false">https://www.leighhalliday.com/react-hooks-with-apollo-graphql</guid><category><![CDATA[react]]></category><category><![CDATA[apollo]]></category><category><![CDATA[graphql]]></category><category><![CDATA[hooks]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sun, 09 Dec 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Using apollo-link-rest to use GraphQL with your RESTful endpoints]]></title><description><![CDATA[So you've updated your React code to use GraphQL, but there's those 2 RESTful API endpoints that you still have to integrate with... what do you do? You could use  fetch  or  axios  with your favorite state management tool, but now you have 2 ways of…]]></description><link>https://www.leighhalliday.com/using-apollo-link-rest</link><guid isPermaLink="false">https://www.leighhalliday.com/using-apollo-link-rest</guid><category><![CDATA[react]]></category><category><![CDATA[apollo]]></category><category><![CDATA[graphql]]></category><category><![CDATA[rest]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Tue, 06 Nov 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[React and Purity]]></title><description><![CDATA[React gets its name from being reactive to changes in your data. When data changes, the UI reacts to those changes to re-render the page to match the data. Data is known as two things in React: state and props. State is data owned by the component…]]></description><link>https://www.leighhalliday.com/react-purity</link><guid isPermaLink="false">https://www.leighhalliday.com/react-purity</guid><category><![CDATA[react]]></category><category><![CDATA[javascript]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 24 Oct 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to use GraphQL with React]]></title><description><![CDATA[GraphQL is an amazing new(ish) paradigm for communicating with APIs, made popular by Facebook but since then used by many companies including Shopify and as we will see in this article, GitHub. If you're completely new to GraphQL, I recommend the…]]></description><link>https://www.leighhalliday.com/how-to-use-graphql-with-react</link><guid isPermaLink="false">https://www.leighhalliday.com/how-to-use-graphql-with-react</guid><category><![CDATA[react]]></category><category><![CDATA[graphql]]></category><category><![CDATA[apollo]]></category><category><![CDATA[javascript]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sun, 13 May 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Map, Reduce, Filter, and Pie Charts]]></title><description><![CDATA[Data comes in all sorts and sizes, and one of the key skills a developer can have is how to convert it into the required format and shape. In this article we'll convert data coming from the GitHub GraphQL API into the format required to generate a…]]></description><link>https://www.leighhalliday.com/map-reduce-filter-and-pie-charts</link><guid isPermaLink="false">https://www.leighhalliday.com/map-reduce-filter-and-pie-charts</guid><category><![CDATA[javascript]]></category><category><![CDATA[react]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Tue, 24 Apr 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mocking Axios in Jest + Testing Async Functions]]></title><description><![CDATA[In our tests we don't want to perform an actual HTTP request. To start with it is slow, but there are certain calls you really can't make with every test run, for example charging someone's credit card. In this article we'll look at a function that…]]></description><link>https://www.leighhalliday.com/mocking-axios-in-jest-testing-async-functions</link><guid isPermaLink="false">https://www.leighhalliday.com/mocking-axios-in-jest-testing-async-functions</guid><category><![CDATA[javascript]]></category><category><![CDATA[react]]></category><category><![CDATA[testing]]></category><category><![CDATA[jest]]></category><category><![CDATA[mocks]]></category><category><![CDATA[axios]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Mon, 09 Apr 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Testing Asynchronous Components with Mocks in Jest]]></title><description><![CDATA[In this article below we will test a component which runs asynchronous code inside of its  componentDidMount  lifecycle event. We'll look at how to avoid making real AJAX requests through the mocking functionality provided by Jest, as well as learn a…]]></description><link>https://www.leighhalliday.com/testing-asynchronous-components-mocks-jest</link><guid isPermaLink="false">https://www.leighhalliday.com/testing-asynchronous-components-mocks-jest</guid><category><![CDATA[javascript]]></category><category><![CDATA[react]]></category><category><![CDATA[testing]]></category><category><![CDATA[jest]]></category><category><![CDATA[mocks]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 06 Apr 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing the React Context API]]></title><description><![CDATA[The new  React Context API  is touted (at least on Twitter and a number of articles) as solving the need to use a state management tool, when I think in reality what it solves is easy dependency injection: Take something that lives at the top of your…]]></description><link>https://www.leighhalliday.com/introducing-react-context-api</link><guid isPermaLink="false">https://www.leighhalliday.com/introducing-react-context-api</guid><category><![CDATA[javascript]]></category><category><![CDATA[react]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 04 Apr 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Error Boundaries and Render Props]]></title><description><![CDATA[Error boundaries  were introduced in React 16.2 and provide a sort of declarative try/catch pattern for you to handle errors which occur during the  render  of a component. In this article we'll look at how to implement error boundaries, but we'll…]]></description><link>https://www.leighhalliday.com/error-boundaries-and-render-props</link><guid isPermaLink="false">https://www.leighhalliday.com/error-boundaries-and-render-props</guid><category><![CDATA[javascript]]></category><category><![CDATA[react]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Mon, 02 Apr 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Testing React with Jest, Enzyme, and Sinon]]></title><description><![CDATA[In this article we'll look at how to get up and running with testing React in a  create-react-app . We'll look at how to configure your tests and tackle 3 common testing patterns. Config create-react-app comes with  Jest  pre-configured, but there…]]></description><link>https://www.leighhalliday.com/testing-react-jest-enzyme-sinon</link><guid isPermaLink="false">https://www.leighhalliday.com/testing-react-jest-enzyme-sinon</guid><category><![CDATA[react]]></category><category><![CDATA[jest]]></category><category><![CDATA[enzyme]]></category><category><![CDATA[sinon]]></category><category><![CDATA[testing]]></category><category><![CDATA[javascript]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 29 Mar 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introduction to React Motion Tutorial]]></title><description><![CDATA[React Motion  is an animation library loved within the React community. I have to say that having some experience with libraries like GSAP, it isn't the easiest to comprehend, but its power comes from the ability to directly tie animations to your…]]></description><link>https://www.leighhalliday.com/introduction-react-motion-tutorial</link><guid isPermaLink="false">https://www.leighhalliday.com/introduction-react-motion-tutorial</guid><category><![CDATA[javascript]]></category><category><![CDATA[react]]></category><category><![CDATA[animations]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sat, 17 Mar 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Easy MobX and Redux Comparison]]></title><description><![CDATA[In this article/video we'll start with a simple React app made with create-react-app that uses component state (setState) as its state management. We'll then take it from component state to MobX, and then again from component state to Redux. During…]]></description><link>https://www.leighhalliday.com/easy-mobx-redux-comparison</link><guid isPermaLink="false">https://www.leighhalliday.com/easy-mobx-redux-comparison</guid><category><![CDATA[javascript]]></category><category><![CDATA[react]]></category><category><![CDATA[mobx]]></category><category><![CDATA[redux]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Tue, 13 Mar 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Best Ruby & Ruby on Rails Resources]]></title><description><![CDATA[I wanted to compile an ultimate list of Ruby resources, books, courses, people to follow, etc... This list contains resources I have used over the years while learning and writing Ruby (on Rails) professionally. My goal is to keep this list up to…]]></description><link>https://www.leighhalliday.com/best-ruby-and-ruby-on-rails-resources</link><guid isPermaLink="false">https://www.leighhalliday.com/best-ruby-and-ruby-on-rails-resources</guid><category><![CDATA[ruby-on-rails]]></category><category><![CDATA[resources]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sun, 11 Mar 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[MobX Async Actions]]></title><description><![CDATA[I've always loved MobX because of it's lack of boilerplate in comparison to Redux. It just seems so effortless to modify state... so how does it fare with Async code? In Redux you'd reach for something like  thunk , but in MobX there are a few easy…]]></description><link>https://www.leighhalliday.com/mobx-async-actions</link><guid isPermaLink="false">https://www.leighhalliday.com/mobx-async-actions</guid><category><![CDATA[javascript]]></category><category><![CDATA[mobx]]></category><category><![CDATA[react]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 07 Mar 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Using Refs in React]]></title><description><![CDATA[Currently there are 3 distinct ways of using  refs  in React. A ref gives you access to the underlying DOM element. This is especially useful when interfacing with libraries which require the DOM element. An example of this is  three.js , which wants…]]></description><link>https://www.leighhalliday.com/using-refs-in-react</link><guid isPermaLink="false">https://www.leighhalliday.com/using-refs-in-react</guid><category><![CDATA[javascript]]></category><category><![CDATA[react]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sun, 25 Feb 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introduction to MobX State Tree]]></title><description><![CDATA[MobX State Tree takes something which is awesome (MobX) and brings it to the next level. You can now define your own typed models, made up of typed fields, and have them all nested together in a tree. You still get all of the same beautifully hidden…]]></description><link>https://www.leighhalliday.com/introduction-mobx-state-tree</link><guid isPermaLink="false">https://www.leighhalliday.com/introduction-mobx-state-tree</guid><category><![CDATA[react]]></category><category><![CDATA[javascript]]></category><category><![CDATA[mobx]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Mon, 19 Feb 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[MobX in Create React App Without Ejecting]]></title><description><![CDATA[You do not have to eject from create-react-app to get support for decorators and other babel plugins. MobX works fantastic with decorators and I've always been ejecting to get that working... but there is no longer a need to do that! In this video we…]]></description><link>https://www.leighhalliday.com/mobx-create-react-app-without-ejecting</link><guid isPermaLink="false">https://www.leighhalliday.com/mobx-create-react-app-without-ejecting</guid><category><![CDATA[mobx]]></category><category><![CDATA[javascript]]></category><category><![CDATA[create-react-app]]></category><category><![CDATA[react]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 09 Feb 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Create React App with MobX using Decorators]]></title><description><![CDATA[Create React App is a great way to get up and running with React. It comes configured with sane defaults which are great for most people, but unfortunately we'll need to make a few changes before we can use MobX. I'm a huge fan of MobX and it's been…]]></description><link>https://www.leighhalliday.com/create-react-app-mobx-decorators</link><guid isPermaLink="false">https://www.leighhalliday.com/create-react-app-mobx-decorators</guid><category><![CDATA[javascript]]></category><category><![CDATA[react]]></category><category><![CDATA[mobx]]></category><category><![CDATA[create-react-app]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Tue, 24 Oct 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Named Captures in Ruby Regular Expressions]]></title><description><![CDATA[In Ruby we can use the  match  method which belongs to the  String  class to both check a string for a regular expression match but also to extract data using captures. Captures allow you to extract part of the string... to isolate it. You do this by…]]></description><link>https://www.leighhalliday.com/named-captures-ruby-regular-expressions</link><guid isPermaLink="false">https://www.leighhalliday.com/named-captures-ruby-regular-expressions</guid><category><![CDATA[ruby]]></category><category><![CDATA[regex]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 01 Sep 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introduction to Mobx and React]]></title><description><![CDATA[In this video tutorial I show how to get up and running with Mobx in a React app. We will go from  create-react-app  all that way to having a fully functioning Mobx store connected to our components. If you would like to follow along, you will need…]]></description><link>https://www.leighhalliday.com/mobx-react-introduction</link><guid isPermaLink="false">https://www.leighhalliday.com/mobx-react-introduction</guid><category><![CDATA[javascript]]></category><category><![CDATA[react]]></category><category><![CDATA[mobx]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Tue, 16 Feb 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Is it nil?]]></title><description><![CDATA[What is actually happening under the covers in Ruby when you ask if a variable is nil? It turns out that it's way simpler than you may think, and it all comes down to object oriented programming and inheritance. You've probably heard it said that…]]></description><link>https://www.leighhalliday.com/is-it-nil</link><guid isPermaLink="false">https://www.leighhalliday.com/is-it-nil</guid><category><![CDATA[ruby]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 25 Nov 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Skinny controllers through refactoring]]></title><description><![CDATA[Controllers can get out of control. Their job should generally be quite simple. In an MVC framework such as Rails, they should have the job of knowing how to work with the Model in order to get what is needed for the View. In other words, they…]]></description><link>https://www.leighhalliday.com/skinny-controllers-through-refactoring</link><guid isPermaLink="false">https://www.leighhalliday.com/skinny-controllers-through-refactoring</guid><category><![CDATA[ruby-on-rails]]></category><category><![CDATA[refactoring]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 25 Nov 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Building a CLI in Ruby with GLI]]></title><description><![CDATA[Typically in Rails apps we use  rake tasks  as a way to interact with our application through the command line. We're all familiar with running code like  rake db:migrate , or custom rake tasks that we create ourselves. There is another way to create…]]></description><link>https://www.leighhalliday.com/building-cli-ruby-with-gli</link><guid isPermaLink="false">https://www.leighhalliday.com/building-cli-ruby-with-gli</guid><category><![CDATA[ruby]]></category><category><![CDATA[ruby-on-rails]]></category><category><![CDATA[cli]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 25 Nov 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Understanding method missing]]></title><description><![CDATA[In this article we are going to look at  method_missing  and  respond_to_missing?  in order to see what they do and how they can be used. We're going to re-create the  StringInquirer  class in Ruby on Rails as a way to demonstrate what is happening…]]></description><link>https://www.leighhalliday.com/understanding-method-missing</link><guid isPermaLink="false">https://www.leighhalliday.com/understanding-method-missing</guid><category><![CDATA[ruby]]></category><category><![CDATA[metaprogramming]]></category><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Tue, 08 Sep 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Exploring some string methods]]></title><description><![CDATA[I'm working with an API which requires a phone number to be in the format 555-555-5555. As much as you want your users to enter it in that format, they won't always do that... even with placeholder text showing the correct format. To make their lives…]]></description><link>https://www.leighhalliday.com/exploring-some-string-methods</link><guid isPermaLink="false">https://www.leighhalliday.com/exploring-some-string-methods</guid><category><![CDATA[ruby]]></category><category><![CDATA[strings]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 13 Aug 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[A Stack in Ruby using Linked Lists]]></title><description><![CDATA[What is a Stack? A  Stack  is an abstract data type in programming which has a variety of uses. The basic premise of a Stack is that you can add a new value to the end (pushing), and you can remove the last value off of the end. This is referred to…]]></description><link>https://www.leighhalliday.com/stack-in-ruby-linked-lists</link><guid isPermaLink="false">https://www.leighhalliday.com/stack-in-ruby-linked-lists</guid><category><![CDATA[ruby]]></category><category><![CDATA[algorithms]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 03 Jul 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Weighted Quick Union & Quick Find Algorithm in Ruby]]></title><description><![CDATA[Today we're going to explore a Ruby implementation of the Weighted Quick Union & Quick Find algorithm. This is an algorithm used to find if there is a connection between two nodes. Imagine a complicated maze and ask the question of whether you can…]]></description><link>https://www.leighhalliday.com/weighted-quick-union-find-algorithm-in-ruby</link><guid isPermaLink="false">https://www.leighhalliday.com/weighted-quick-union-find-algorithm-in-ruby</guid><category><![CDATA[ruby]]></category><category><![CDATA[algorithms]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Mon, 29 Jun 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Showing similar results in Postgres]]></title><description><![CDATA[Correcting for spelling mistakes If you search "trgrams in pstgres" in Google, you'll get results for "trigrams in postgres". To say that is useful is an understatement! Recently at work I wanted to search a table of tags, but I wanted to account for…]]></description><link>https://www.leighhalliday.com/showing-results-for-trigrams-in-postgres</link><guid isPermaLink="false">https://www.leighhalliday.com/showing-results-for-trigrams-in-postgres</guid><category><![CDATA[databases]]></category><category><![CDATA[postgres]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 25 Jun 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Avoid race conditions in Rails with Postgres locks]]></title><description><![CDATA[Race conditions A race condition or race hazard is the behavior of an electronic, software or other system where the output is dependent on the sequence or timing of other uncontrollable events. It becomes a bug when events do not happen in the order…]]></description><link>https://www.leighhalliday.com/avoid-race-conditions-with-postgres-locks</link><guid isPermaLink="false">https://www.leighhalliday.com/avoid-race-conditions-with-postgres-locks</guid><category><![CDATA[ruby-on-rails]]></category><category><![CDATA[databases]]></category><category><![CDATA[postgres]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Tue, 16 Jun 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[CORS in Phoenix]]></title><description><![CDATA[Single page applications Single page applications (SPA) are becoming more and more popular, often replacing the more traditional server rendered websites that are common in Rails or PHP. You have options such as Angular, Ember, React, and there are…]]></description><link>https://www.leighhalliday.com/cors-in-phoenix</link><guid isPermaLink="false">https://www.leighhalliday.com/cors-in-phoenix</guid><category><![CDATA[elixir]]></category><category><![CDATA[cors]]></category><category><![CDATA[api]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 11 Jun 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Recursion in Elixir]]></title><description><![CDATA[Intro I recently wrote an article on  Recursion in Ruby , and this is meant to be its Elixir counterpart. It will provide a way to compare solving the same problems in both languages and a chance to talk about some of their differences. Heads & Tails…]]></description><link>https://www.leighhalliday.com/recursion-in-elixir</link><guid isPermaLink="false">https://www.leighhalliday.com/recursion-in-elixir</guid><category><![CDATA[elixir]]></category><category><![CDATA[algorithms]]></category><category><![CDATA[recursion]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sat, 30 May 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Recursion in Ruby]]></title><description><![CDATA[This article is the counterpart to one I wrote on  Recursion in Elixir . What is recursion? Recursion in computer science is a method where the solution to a problem depends on solutions to smaller instances of the same problem (as opposed to…]]></description><link>https://www.leighhalliday.com/recursion-in-ruby</link><guid isPermaLink="false">https://www.leighhalliday.com/recursion-in-ruby</guid><category><![CDATA[ruby]]></category><category><![CDATA[algorithms]]></category><category><![CDATA[recursion]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Tue, 26 May 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[FizzBuzz in Elixir]]></title><description><![CDATA[Intro... learning Elixir This is my first post in the new  Elixir  category I've set up on my site. I'm new to Elixir and functional programming in general, aside from a  Scala  course I've done on Coursera. Ruby  is the language I'm currently most…]]></description><link>https://www.leighhalliday.com/fizzbuzz-in-elixir</link><guid isPermaLink="false">https://www.leighhalliday.com/fizzbuzz-in-elixir</guid><category><![CDATA[ruby]]></category><category><![CDATA[elixir]]></category><category><![CDATA[algorithms]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 15 May 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[My solution to Software Engineer challenge]]></title><description><![CDATA[The challenge Write a program that outputs all possibilities to put + or - or nothing between the numbers 1, 2, ..., 9 (in this order) such that the result is always 100. For example: 1 + 2 + 34 – 5 + 67 – 8 + 9 = 100. Apparently every Software…]]></description><link>https://www.leighhalliday.com/solution-software-engineer-interview-challenge</link><guid isPermaLink="false">https://www.leighhalliday.com/solution-software-engineer-interview-challenge</guid><category><![CDATA[ruby]]></category><category><![CDATA[algorithms]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sat, 09 May 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Requiring Uniqueness in Rails]]></title><description><![CDATA[How to ensure your values are unique It's often the case that you want to ensure that you've got uniqueness in your data. You only want an email address to be used once... otherwise what would happen when that person tries to log in? Which user…]]></description><link>https://www.leighhalliday.com/requiring-uniqueness-in-rails</link><guid isPermaLink="false">https://www.leighhalliday.com/requiring-uniqueness-in-rails</guid><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 30 Apr 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Object hierarchy in Ruby]]></title><description><![CDATA[As a way to better understand how Ruby works, I started to dive into how object hierarchies work in the language. We're going to be covering the default ancestry chain in Ruby, how to create your own ancestors, and what the base level objects in Ruby…]]></description><link>https://www.leighhalliday.com/object-hierarchy-in-ruby</link><guid isPermaLink="false">https://www.leighhalliday.com/object-hierarchy-in-ruby</guid><category><![CDATA[ruby]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 23 Apr 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Where is this method defined?]]></title><description><![CDATA[My problems today Today I was trying to write a test for a method, and I was expecting certain behaviour that I definitely wasn't getting. Why was this method returning me a valid value when it surely should be failing? So I started poking around…]]></description><link>https://www.leighhalliday.com/where-is-this-method-defined</link><guid isPermaLink="false">https://www.leighhalliday.com/where-is-this-method-defined</guid><category><![CDATA[ruby]]></category><category><![CDATA[metaprogramming]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 23 Apr 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Savon - SOAP that doesn't leave you feeling dirty]]></title><description><![CDATA[Can you do this integration? Is what I was asked. Oh no... it's in SOAP? Instantly all the time I spent working with SOAP APIs in PHP flashed before my eyes, bringing back memories I would have rather left in the past. What is SOAP? SOAP, originally…]]></description><link>https://www.leighhalliday.com/savon-soap-doesnt-leave-you-feeling-dirty</link><guid isPermaLink="false">https://www.leighhalliday.com/savon-soap-doesnt-leave-you-feeling-dirty</guid><category><![CDATA[ruby-on-rails]]></category><category><![CDATA[soap]]></category><category><![CDATA[api]]></category><category><![CDATA[gross]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 16 Apr 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Ruby Metaprogramming - Method Missing]]></title><description><![CDATA[What is method_missing? method_missing  is a method that ruby gives you access inside of your objects a way to handle situations when you call a method that doesn't exist. It's sort of like a Begin/Rescue, but for method calls. It gives you one last…]]></description><link>https://www.leighhalliday.com/ruby-metaprogramming-method-missing</link><guid isPermaLink="false">https://www.leighhalliday.com/ruby-metaprogramming-method-missing</guid><category><![CDATA[ruby]]></category><category><![CDATA[metaprogramming]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Mon, 06 Apr 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Ruby Metaprogramming - Creating Methods]]></title><description><![CDATA[Creating Methods In this post I'll be discussing another aspect of metaprogramming in Ruby. The ability to create methods dynamically, during runtime. There are many reasons to do this, but one of them is to allow you to write generator methods to…]]></description><link>https://www.leighhalliday.com/ruby-metaprogramming-creating-methods</link><guid isPermaLink="false">https://www.leighhalliday.com/ruby-metaprogramming-creating-methods</guid><category><![CDATA[ruby]]></category><category><![CDATA[metaprogramming]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 01 Apr 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Ruby Introspection - Metaprogramming]]></title><description><![CDATA[What is metaprogramming? You might have heard the term  metaprogramming  before, but what is it and what does it have to do with Ruby? To start off, let's look at the Wikipedia definition: Metaprogramming is the writing of computer programs with the…]]></description><link>https://www.leighhalliday.com/ruby-introspection-metaprogramming</link><guid isPermaLink="false">https://www.leighhalliday.com/ruby-introspection-metaprogramming</guid><category><![CDATA[ruby]]></category><category><![CDATA[metaprogramming]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 20 Mar 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creating a Ruby DSL]]></title><description><![CDATA[Overview I've been in Colombia for the last month visiting family, and last week I had the opportunity to hang out with the  Medellin.rb meetup . It was led by  Oscar Rendon  and it was all about DSLs in Ruby. It was also a fun challenge to try to…]]></description><link>https://www.leighhalliday.com/creating-ruby-dsl</link><guid isPermaLink="false">https://www.leighhalliday.com/creating-ruby-dsl</guid><category><![CDATA[ruby]]></category><category><![CDATA[dsl]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 12 Mar 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[The simple but powerful Ruby Struct]]></title><description><![CDATA[What is a Struct? A Struct in Ruby is one of the built-in classes which basically acts a little like a normal custom user-created class, but provides some nice default functionality and shortcuts when you don't need a full-fledged class. Below I'll…]]></description><link>https://www.leighhalliday.com/ruby-struct</link><guid isPermaLink="false">https://www.leighhalliday.com/ruby-struct</guid><category><![CDATA[ruby]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Mon, 23 Feb 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Intro to MongoDB for Postgres developers]]></title><description><![CDATA[Intro to MongoDB MongoDB is an object or document based database... in other words, a NoSQL database. This puts it in contrast to databases such as MySQL, PostgreSQL, or SQLite, who store their data relationally in a tabular format. MongoDB stores…]]></description><link>https://www.leighhalliday.com/intro-to-mongodb-for-postgres-developers</link><guid isPermaLink="false">https://www.leighhalliday.com/intro-to-mongodb-for-postgres-developers</guid><category><![CDATA[mongodb]]></category><category><![CDATA[postgres]]></category><category><![CDATA[databases]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 20 Feb 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why doesn't my code work outside of Rails?]]></title><description><![CDATA[Situation Maybe you originally wrote some code for a Rails project that you're trying to use in another framework, in an automation script, or in a Gem that you're extracting out of your project. Have you ever run into an error saying something along…]]></description><link>https://www.leighhalliday.com/why-doesnt-my-code-work-outside-rails</link><guid isPermaLink="false">https://www.leighhalliday.com/why-doesnt-my-code-work-outside-rails</guid><category><![CDATA[ruby]]></category><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 19 Feb 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[What is Rack?]]></title><description><![CDATA[The basics of Rack Taken from the  Rack website : Rack provides a minimal interface between webservers supporting Ruby and Ruby frameworks. It gives a large number of webservers (Unicorn, Puma, Phusion Passenger, WEBrick) a common way of…]]></description><link>https://www.leighhalliday.com/what-is-rack</link><guid isPermaLink="false">https://www.leighhalliday.com/what-is-rack</guid><category><![CDATA[ruby]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 13 Feb 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Embracing change and choosing your identity]]></title><description><![CDATA[My switch from PHP to Ruby as primary language About 3 years ago I started coding the first version of  FlipGive, an online fundraising platform . It was written in PHP. Why? Because for the 7 years prior that is the language I had primarily been…]]></description><link>https://www.leighhalliday.com/embracing-change-and-choosing-your-identity</link><guid isPermaLink="false">https://www.leighhalliday.com/embracing-change-and-choosing-your-identity</guid><category><![CDATA[career]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 06 Feb 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[8 tips on how to choose a technology]]></title><description><![CDATA[Deciding on technologies When deciding on which technologies to focus your time and energy on to learn, or whether it makes sense to use one over another on any given project, it comes down to a number of different factors. Here are some of the…]]></description><link>https://www.leighhalliday.com/tips-on-how-to-choose-a-technology</link><guid isPermaLink="false">https://www.leighhalliday.com/tips-on-how-to-choose-a-technology</guid><category><![CDATA[tech]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 06 Feb 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Tree Structures in your Rails models]]></title><description><![CDATA[What are tree structures used for? Tree structures are needed any time you want to insert a hierarchy into your data. It's when you want to store relationships between data of the same type, vertically. Think of categories, org charts, and family…]]></description><link>https://www.leighhalliday.com/tree-structures-in-your-rails-models</link><guid isPermaLink="false">https://www.leighhalliday.com/tree-structures-in-your-rails-models</guid><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 04 Feb 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[When your Rails app slows to a crawl]]></title><description><![CDATA[Hi, Leigh, are you busy? The website is no longer responding... can you investigate? A phone call nobody really likes to receive on a Saturday. We launched a new website on Friday and it appeared to be working great! Little did we know that our…]]></description><link>https://www.leighhalliday.com/when-your-rails-app-slows-to-a-crawl</link><guid isPermaLink="false">https://www.leighhalliday.com/when-your-rails-app-slows-to-a-crawl</guid><category><![CDATA[performance]]></category><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sat, 31 Jan 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Implementing Ruby's Collect Method]]></title><description><![CDATA[Ruby's Collect method Ruby's  collect  method is part of the Enumerable mixin; a mixin which provides very useful and powerful methods for collection objects.  collect  is a method I use all the time and recently wrote about in my article  Working…]]></description><link>https://www.leighhalliday.com/implementing-rubys-collect-method</link><guid isPermaLink="false">https://www.leighhalliday.com/implementing-rubys-collect-method</guid><category><![CDATA[ruby]]></category><category><![CDATA[enumerable]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sun, 25 Jan 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Implementing Ruby's Tap Method]]></title><description><![CDATA[What is the Tap method? Ruby's  tap  method allows you to "tap into" a method chain, modify an object and receive that same object as the result. An Engine Yard blog recently spoke about  five ruby methods you should be using  in which  tap  was one…]]></description><link>https://www.leighhalliday.com/implementing-rubys-tap-method</link><guid isPermaLink="false">https://www.leighhalliday.com/implementing-rubys-tap-method</guid><category><![CDATA[ruby]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sat, 24 Jan 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Copying Postgres Table with its Attributes]]></title><description><![CDATA[Why do this? Recently at work we had 1 data model that was getting a bit out of control. When we first modelled the data it made sense, but over time business requirements change and we discovered that the model made more sense to be split in half to…]]></description><link>https://www.leighhalliday.com/copying-postgres-table-with-its-attributes</link><guid isPermaLink="false">https://www.leighhalliday.com/copying-postgres-table-with-its-attributes</guid><category><![CDATA[postgres]]></category><category><![CDATA[databases]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 23 Jan 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Working with Enumerables Four powerful collection methods]]></title><description><![CDATA[What is an Enumerable? Enumerable is a Ruby mixin/module which provides a large set of functionality to collection classes. You already know of some objects which are enumerable that come standard in Ruby such as Array and Hash. You can also make…]]></description><link>https://www.leighhalliday.com/working-with-enumerables-four-powerful-collection-methods</link><guid isPermaLink="false">https://www.leighhalliday.com/working-with-enumerables-four-powerful-collection-methods</guid><category><![CDATA[ruby]]></category><category><![CDATA[enumerable]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 22 Jan 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Adding translations to your Rails website]]></title><description><![CDATA[Why does this site have I18n? It's a good question because my content is only available in English (perhaps I should write some articles in Spanish??). The answer is that the code for this site powers my wife's blog too, who does in fact write…]]></description><link>https://www.leighhalliday.com/adding-translations-to-your-rails-website</link><guid isPermaLink="false">https://www.leighhalliday.com/adding-translations-to-your-rails-website</guid><category><![CDATA[i18n]]></category><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 14 Jan 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Learning Tips for the Software Developer]]></title><description><![CDATA[The life of a developer Working as a software developer is the decision to become a lifelong learner. What you learn today has a good chance of being obsolete a few years from now. What is more important is to build a strong foundation of skills and…]]></description><link>https://www.leighhalliday.com/learning-tips-for-the-software-developer</link><guid isPermaLink="false">https://www.leighhalliday.com/learning-tips-for-the-software-developer</guid><category><![CDATA[junior]]></category><category><![CDATA[career]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 09 Jan 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Can I Use Angular in my Rails App?]]></title><description><![CDATA[Using Angular in Rails App Single Page Applications (SPA) aren’t incredibly new any more, but there are a lot of people with Rails applications using a more traditional server-side Rails approach to the website’s architecture. So what happens when…]]></description><link>https://www.leighhalliday.com/can-i-use-angular-in-my-rails-app</link><guid isPermaLink="false">https://www.leighhalliday.com/can-i-use-angular-in-my-rails-app</guid><category><![CDATA[angular]]></category><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Tue, 06 Jan 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[User Authentication in Rails]]></title><description><![CDATA[Our Goal In this article I'd like to discuss how to implement user authentication into this blog.  In this article  about modelling the data for our blog we talked about wanting to keep track of Authors, and that they would be stored in the User…]]></description><link>https://www.leighhalliday.com/user-authentication-in-rails</link><guid isPermaLink="false">https://www.leighhalliday.com/user-authentication-in-rails</guid><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sat, 03 Jan 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Easily Upgrading from RSpec 2.x to 3.x with Transpec]]></title><description><![CDATA[Background At  FlipGive  we use  RSpec  to handle all of our testing. Over the years we've built up quite a few tests... last count there are 2130 of them, which take 3 minutes and 20 seconds to run. Not the fastest test suite in the world, but…]]></description><link>https://www.leighhalliday.com/upgrading-rspec-2x-to-3x-with-transpec</link><guid isPermaLink="false">https://www.leighhalliday.com/upgrading-rspec-2x-to-3x-with-transpec</guid><category><![CDATA[rspec]]></category><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 31 Dec 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Building an admin section in Rails]]></title><description><![CDATA[Today's Goal: Creating an Admin Section This website, along with most of the other ones I create end up having an admin section; a place where data can be created and managed. It's only accessible to registered users (or possibly a subset of those…]]></description><link>https://www.leighhalliday.com/building-an-admin-section-in-rails</link><guid isPermaLink="false">https://www.leighhalliday.com/building-an-admin-section-in-rails</guid><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 18 Dec 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Postgres Insights with PgHero]]></title><description><![CDATA[What is PgHero? PgHero  is a gem written by  Andrew Kane  for getting quick insights into how your Postgres database is performing and where there is room for improvement. It provides a quick overall status of your database, a look at the queries…]]></description><link>https://www.leighhalliday.com/postgres-insights-pghero</link><guid isPermaLink="false">https://www.leighhalliday.com/postgres-insights-pghero</guid><category><![CDATA[postgres]]></category><category><![CDATA[database]]></category><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Mon, 15 Dec 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to model data in Rails]]></title><description><![CDATA[Deciding What Models are Needed In my last article in this series,  getting started with ruby on rails , we worked through getting Rails installed and creating a new application, with some initial gems being chosen and installed. Now we're ready to…]]></description><link>https://www.leighhalliday.com/how-to-model-data-in-rails</link><guid isPermaLink="false">https://www.leighhalliday.com/how-to-model-data-in-rails</guid><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sat, 13 Dec 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Getting Started with Ruby on Rails]]></title><description><![CDATA[Git Init The first thing I do when starting a new project is to create a new git repository. GitHub is great if you don't mind the code being public, or you don't mind paying to have a private repository. There is another option available called…]]></description><link>https://www.leighhalliday.com/getting-started-with-ruby-on-rails</link><guid isPermaLink="false">https://www.leighhalliday.com/getting-started-with-ruby-on-rails</guid><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Mon, 08 Dec 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[The Basics of PSQL]]></title><description><![CDATA[Overview PSQL is the command line tool for accessing the PostgreSQL database. I recommend anyone using Postgres to at least learn the basics of how to navigate around and feel comfortable working in this tool. Even for those used to only dealing with…]]></description><link>https://www.leighhalliday.com/the-basics-of-psql</link><guid isPermaLink="false">https://www.leighhalliday.com/the-basics-of-psql</guid><category><![CDATA[psql]]></category><category><![CDATA[database]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sun, 07 Dec 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Sorting null values in PostgresSQL]]></title><description><![CDATA[The Problem Say you have a table of people and you want to sort them alphabetically by their nickname in descending order (Z - A). That works great as long as everyone has a nickname, but what happens when one doesn't? What you'll get is a result…]]></description><link>https://www.leighhalliday.com/sorting-null-values-in-postgresql</link><guid isPermaLink="false">https://www.leighhalliday.com/sorting-null-values-in-postgresql</guid><category><![CDATA[postgres]]></category><category><![CDATA[database]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Sun, 07 Dec 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Mail Interceptors and Observers for Logging and Development]]></title><description><![CDATA[What is a Mail Interceptor? When using ActionMailer in Rails, there is a way to hook into the outbound message after you call the "deliver" method, but before it is actually sent to the delivery agents. You can think of these interceptors a little…]]></description><link>https://www.leighhalliday.com/mail-interceptors-and-observers</link><guid isPermaLink="false">https://www.leighhalliday.com/mail-interceptors-and-observers</guid><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 28 Nov 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Pull Requests for Quality, Training, and Shared Knowledge]]></title><description><![CDATA[Intro To Pull Requests A pull request is when you are wanting to merge code from one git branch to another, and instead of just merging it yourself, you send a request to another developer to review the changes and merge the code into the desired…]]></description><link>https://www.leighhalliday.com/pull-requests-quality-training-shared-knowledge</link><guid isPermaLink="false">https://www.leighhalliday.com/pull-requests-quality-training-shared-knowledge</guid><category><![CDATA[software-development]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 28 Nov 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Responding with JSON in Rails]]></title><description><![CDATA[When building a RESTful API in Rails, there are many different options and gems you can use to format your JSON responses. This isn't a post about how to build an API, but rather about some of the different popular options on how to define and…]]></description><link>https://www.leighhalliday.com/responding-with-json-in-rails</link><guid isPermaLink="false">https://www.leighhalliday.com/responding-with-json-in-rails</guid><category><![CDATA[json]]></category><category><![CDATA[api]]></category><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Wed, 26 Nov 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Block Based Configuration]]></title><description><![CDATA[Block based configuration is a pattern you see quite a bit when using ruby. When I look at this website itself, there are 3 different gems that I am configuring using this approach. I think it provides a clean and encapsulated interface for…]]></description><link>https://www.leighhalliday.com/block-based-configuration</link><guid isPermaLink="false">https://www.leighhalliday.com/block-based-configuration</guid><category><![CDATA[ruby]]></category><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Mon, 24 Nov 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[How To Succeed As a Junior Developer]]></title><description><![CDATA[10. Don't Feel Discouraged It's easy to feel discouraged when you first start at something... anything, not just programming. Lance Armstrong most likely started out with training wheels on his bike and fell quite a bit at the beginning. Things…]]></description><link>https://www.leighhalliday.com/how-to-succeed-as-a-junior-developer</link><guid isPermaLink="false">https://www.leighhalliday.com/how-to-succeed-as-a-junior-developer</guid><category><![CDATA[junior]]></category><category><![CDATA[career]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Tue, 18 Nov 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Onboarding Junior Developers]]></title><description><![CDATA[Having The Right Mindset When bringing on junior developers to the team, you obviously have some goals for them, but you shouldn't forget that they have goals for themselves too. It's important to find out what their goals and interests are so that…]]></description><link>https://www.leighhalliday.com/onboarding-junior-developers</link><guid isPermaLink="false">https://www.leighhalliday.com/onboarding-junior-developers</guid><category><![CDATA[junior]]></category><category><![CDATA[career]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Tue, 18 Nov 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creating QR Codes In Rails]]></title><description><![CDATA[Barby  is a great gem for when you have to generate a barcode or QR code. You can choose to output it as any number of barcode types or as a QR code. This example will use a QR code but I have successfully used the Code128 barcode which is fairly…]]></description><link>https://www.leighhalliday.com/creating-qr-codes-in-rails</link><guid isPermaLink="false">https://www.leighhalliday.com/creating-qr-codes-in-rails</guid><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Fri, 14 Nov 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Translating Your Ruby on Rails Application]]></title><description><![CDATA[Goal If you're planning to take over the world (or a smaller but no less noble task of taking over Canada), you'll either need to convince everyone to speak your language, or better yet, why don't you offer them a website that speaks their language…]]></description><link>https://www.leighhalliday.com/translating-your-ruby-on-rails-application</link><guid isPermaLink="false">https://www.leighhalliday.com/translating-your-ruby-on-rails-application</guid><category><![CDATA[i18n]]></category><category><![CDATA[ruby-on-rails]]></category><dc:creator><![CDATA[@leighchalliday]]></dc:creator><pubDate>Thu, 13 Nov 2014 00:00:00 GMT</pubDate></item></channel></rss>