<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.8.5">Jekyll</generator><link href="https://maslin.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://maslin.io/" rel="alternate" type="text/html" /><updated>2019-11-26T20:06:14+00:00</updated><id>https://maslin.io/feed.xml</id><title type="html">Justin Maslin</title><subtitle>A blog about my technology projects</subtitle><entry><title type="html">Llama Party</title><link href="https://maslin.io/llama-party/" rel="alternate" type="text/html" title="Llama Party" /><published>2018-03-02T14:00:00+00:00</published><updated>2018-03-02T14:00:00+00:00</updated><id>https://maslin.io/llama-party</id><content type="html" xml:base="https://maslin.io/llama-party/">&lt;p&gt;&lt;img class=&quot;bigger-image&quot; style=&quot;margin-top: 0; margin-bottom: 0;&quot; src=&quot;/assets/images/blog/llama-or-alpaca-cover.png&quot; alt=&quot;Screenshot of the site&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Llama or Alpaca?&lt;/strong&gt; This is the question people all over the world have been asking. But, like all projects, this one began with a serious question: how can you tell the difference between llamas and alpacas?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Just want to play the game? &lt;a href=&quot;https://llama.party/?ref=justinmaslin-blog&quot;&gt;Click here.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The typical origin story.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A few years ago, over Thanksgiving, the question was asked by one of my cousins. At the time, the only logical next move was to create a simple website to see who could tell the difference. A few years later (last week) inspiration hit and I decided to create a new version of the quiz.&lt;/p&gt;

&lt;p&gt;After about an hour and a half during one of my night classes (mostly research to find the images) the first version of Llama or Alpaca was live.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Well, is it a llama or alpaca?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Some people think the game is too simple. Alpacas are fluffier, of course. They have ended up not scoring too high. Others have not even been able to finish - the funny faces proved to be too much to handle.&lt;/p&gt;

&lt;p&gt;Some statistics since launching a week ago:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Over 2,000 unique users from 75 countries.&lt;/li&gt;
  &lt;li&gt;An average of 1.84 sessions (games) per user, with each game taking 2 minutes.&lt;/li&gt;
  &lt;li&gt;An average score of 6.5 / 10.&lt;/li&gt;
  &lt;li&gt;&lt;del&gt;Almost&lt;/del&gt; Over 200 upvotes on &lt;a href=&quot;https://www.producthunt.com/posts/llama-or-alpaca&quot;&gt;ProductHunt&lt;/a&gt;!&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;breaker&quot;&gt;&lt;/div&gt;

&lt;p&gt;In addition to many games played, we have also received some buzz on Twitter. One person thinks this is a commentary on what millennials find important.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;
As millennials age, they are increasingly beset by anxieties. It’s good to see these innovators addressing one of the most acute.
&lt;a href=&quot;https://t.co/8rP2NB58q9&quot;&gt;https://t.co/8rP2NB58q9&lt;/a&gt;&lt;/p&gt;&amp;mdash; Aaron Ross Powell (@ARossP)
&lt;a href=&quot;https://twitter.com/ARossP/status/969293233204482048?ref_src=twsrc%5Etfw&quot;&gt;March 1, 2018&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;Other people are using Llama or Alpaca to procrastinate, which is not the worst thing in the world. It’s educational, after all!&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;
Me: I’m going to work hard today and finish the week on a high note!&lt;br /&gt;&lt;br /&gt;Also me: spends 30 minutes on &lt;a href=&quot;https://t.co/dUcZtYZSTL&quot;&gt;https://t.co/dUcZtYZSTL&lt;/a&gt; trying to guess if it’s a llama or alpaca&lt;/p&gt;&amp;mdash; Steve (@steveshugg)
&lt;a href=&quot;https://twitter.com/steveshugg/status/969599695940042752?ref_src=twsrc%5Etfw&quot;&gt;March 2, 2018&lt;/a&gt;
&lt;/blockquote&gt;

&lt;p&gt;At the end of the day, we are glad it is important enough to be shared with friends and family.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;
&lt;a href=&quot;https://twitter.com/SamPatue?ref_src=twsrc%5Etfw&quot;&gt;@SamPatue&lt;/a&gt; i know you&amp;#39;ll ace this: &lt;a href=&quot;https://t.co/W5ySZDc3zi&quot;&gt;https://t.co/W5ySZDc3zi&lt;/a&gt; I got 7/10 😢&lt;/p&gt;&amp;mdash; 𝚓𝚊𝚔𝚎 𝚍𝚞𝚗𝚌𝚊𝚗 ⚡️ (@jkdncn)
&lt;a href=&quot;https://twitter.com/jkdncn/status/969271126126923776?ref_src=twsrc%5Etfw&quot;&gt;March 1, 2018&lt;/a&gt;
&lt;/blockquote&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;
&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Please take a moment to participate. Llama or Alpaca? &lt;a href=&quot;https://t.co/XZQDzOglwk&quot;&gt;https://t.co/XZQDzOglwk&lt;/a&gt;&lt;/p&gt;&amp;mdash; Fabricio Teixeira (@fabriciot) &lt;a href=&quot;https://twitter.com/fabriciot/status/969610574152785920?ref_src=twsrc%5Etfw&quot;&gt;March 2, 2018&lt;/a&gt;
&lt;/blockquote&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;
&lt;p lang=&quot;nl&quot; dir=&quot;ltr&quot;&gt;Llama or Alpaca? Ik ken de verschillen nog steeds niet. En dan heb je ook nog de vicuña. Lijkt er ook al sprekend op. Lastig hoor. &lt;a href=&quot;https://t.co/SxKaorcVCs&quot;&gt;https://t.co/SxKaorcVCs&lt;/a&gt; &lt;a href=&quot;https://t.co/MHGXYjnKDL&quot;&gt;pic.twitter.com/MHGXYjnKDL&lt;/a&gt;&lt;/p&gt;&amp;mdash; Patrick 🕶 (@patrickloonstra) &lt;a href=&quot;https://twitter.com/patrickloonstra/status/969502837058269184?ref_src=twsrc%5Etfw&quot;&gt;March 2, 2018&lt;/a&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;breaker&quot;&gt;&lt;/div&gt;

&lt;div class=&quot;side-by-side&quot;&gt;
  &lt;div class=&quot;toleft&quot;&gt;
  &lt;p&gt;&lt;strong&gt;Simple yet successful.&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;
    This game was meant to be a goofy distraction and an excuse to do some coding. It ended up making lots of people laugh and being fun for all ages. &lt;em&gt;Special thanks to my extended family for the inspiration and letting me spam the group chat a little bit.&lt;/em&gt;
    &lt;/p&gt;
    &lt;p&gt;
    If you have any questions, feature requests, or found a great picture of a llama / alpaca that needs to be included, let me know!
    &lt;/p&gt;
    &lt;p&gt;
    For code and more technical information, please check out the projects section.
    Thanks for reading!
    &lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&quot;toright&quot;&gt;
    &lt;img class=&quot;image&quot; src=&quot;https://s3.amazonaws.com/llama-or-alpaca/z-5.jpg&quot; alt=&quot;An alpaca. Or is it a llama?&quot; /&gt;
    &lt;figcaption class=&quot;caption&quot;&gt;An alpaca. Or is it a llama?&lt;/figcaption&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;</content><author><name>justinmaslin</name></author><category term="blog" /><category term="web" /><summary type="html"></summary></entry><entry><title type="html">Llama or Alpaca</title><link href="https://maslin.io/project-llama-or-alpaca/" rel="alternate" type="text/html" title="Llama or Alpaca" /><published>2018-03-02T14:00:00+00:00</published><updated>2018-03-02T14:00:00+00:00</updated><id>https://maslin.io/project-llama-or-alpaca</id><content type="html" xml:base="https://maslin.io/project-llama-or-alpaca/">&lt;p&gt;For more background information, check out the &lt;a href=&quot;/llama-party&quot;&gt;blog post&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Llama or Alpaca is a simple web-based quiz that challenges users to find the difference between llamas and alpacas. A group of randomly selected pictures and gifs of llamas and alpacas is presented to the user, who must decide if it is a llama or alpaca.&lt;/p&gt;

&lt;p&gt;Live Version: &lt;a href=&quot;https://llama.party/?rel=justinmaslin-project&quot;&gt;https://llama.party&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Technologies Used:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;ReactJS&lt;/li&gt;
  &lt;li&gt;Amazon S3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/jmaslin/llama-or-alpaca&quot;&gt;See it on GitHub.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.producthunt.com/posts/llama-or-alpaca&quot;&gt;Featured on ProductHunt.&lt;/a&gt;&lt;/p&gt;</content><author><name>justinmaslin</name></author><category term="project" /><category term="programming" /><category term="web" /><summary type="html">For more background information, check out the blog post!</summary></entry><entry><title type="html">Movie Kudos</title><link href="https://maslin.io/project-movie-kudos/" rel="alternate" type="text/html" title="Movie Kudos" /><published>2018-01-31T14:00:00+00:00</published><updated>2018-01-31T14:00:00+00:00</updated><id>https://maslin.io/project-movie-kudos</id><content type="html" xml:base="https://maslin.io/project-movie-kudos/">&lt;p&gt;A simple Alexa skill that returns a random cast member (and their role) from a movie of your choice.&lt;/p&gt;

&lt;p&gt;A fun way to find random people you may have never heard of before!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Amazon Skill: &lt;a href=&quot;https://www.amazon.com/gp/product/B079FNR7L1&quot;&gt;https://www.amazon.com/gp/product/B079FNR7L1&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Twitter Feed: &lt;a href=&quot;http://twitter.com/MovieKudos&quot;&gt;http://twitter.com/MovieKudos&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Technologies Used:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;NodeJS&lt;/li&gt;
  &lt;li&gt;Alexa&lt;/li&gt;
  &lt;li&gt;Lambda&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/jmaslin/movie-kudos&quot;&gt;See it on GitHub.&lt;/a&gt;&lt;/p&gt;</content><author><name>justinmaslin</name></author><category term="project" /><category term="programming" /><category term="alexa" /><summary type="html">A simple Alexa skill that returns a random cast member (and their role) from a movie of your choice.</summary></entry><entry><title type="html">Learning to Crawl (the Internet)</title><link href="https://maslin.io/learning-to-crawl-the-internet/" rel="alternate" type="text/html" title="Learning to Crawl (the Internet)" /><published>2016-02-01T23:00:00+00:00</published><updated>2016-02-01T23:00:00+00:00</updated><id>https://maslin.io/learning-to-crawl-the-internet</id><content type="html" xml:base="https://maslin.io/learning-to-crawl-the-internet/">&lt;p&gt;Most projects start with wanting to know something: how many dinosaurs would be necessary to re-take over the world, could cats become world-famous scientists, etc. In my case, I just wanted to know what famous people were born on a particular day of the year. Google does a great job with their &lt;a href=&quot;http://www.google.com/doodles/&quot;&gt;doodles&lt;/a&gt;, but they are very selective with who gets one. You probably think this is a non-issue — there are tons of sites that have this information, right? And you would be correct, except for one problem: they look awful. &lt;/p&gt;

&lt;p&gt;If I wanted to use a website with the UI/UX from the early 2000s, I would not be writing this article. Like most people, I really enjoy using the Internet, and I want it to look good. I also believe in minimal, unintrusive design without ads for hoverboards in my face. Based on these principles, I had the requirements for my minimum viable product. I would develop a website that:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Shows you a famous person that was born on the current date. &lt;/li&gt;
  &lt;li&gt;Information about the person (birthday, some information, a picture, and a link to learn more about them).&lt;/li&gt;
  &lt;li&gt;Loads a different person every time you refresh (or click a button).&lt;/li&gt;
  &lt;li&gt;Allows you to choose any day of the year.&lt;/li&gt;
  &lt;li&gt;Be available for offline usage. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Seems simple. Except, as I got started, I ran into &lt;strong&gt;problem one: what people would be on this website?&lt;/strong&gt; It would be a bit bias to put myself on, and I could not find any good APIs that solved this problem. After some quick google-fu, I learned that Wikipedia was my answer (as it is the answer to everything else). It turns out that Wikipedia has a page for every day of the year. On this page are significant events, births, and deaths. Awesome!&lt;/p&gt;

&lt;p&gt;Except this led me to &lt;strong&gt;problem two: I had no clue how to get the information off that page&lt;/strong&gt;, unless I wanted to embed an iFrame of that unstyled list into my site. Take a second to visualize that. Sorry about that, next time I will include a trigger warning. Another option could just be manually copying the list from every page into a giant JSON file. There are only 366 days (do not forget February 29th!), after all, and this is a MVP. I decided not to do that, however, as I was reminded of a quote.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it.” &lt;/p&gt;

  &lt;p&gt;— Bill Gates&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Save every list myself? That would be madness and probably take longer than writing the actual program. And that is how I found the solution to problem two: &lt;strong&gt;learn how to crawl&lt;/strong&gt;. Or, more specifically, learn how to crawl every one of these wiki pages to get the information I needed.&lt;/p&gt;

&lt;p&gt;The code of my project went through three major revisions. I want to take some time to thank &lt;a href=&quot;https://medium.com/@yonkeltron&quot;&gt;Jonathan E. Magen&lt;/a&gt; for inspiring the second two revisions, lessons learned, and other major aspects of this application. Without his advice and guidance, we may still be looking at famous birthdays on a list that looks like this: &lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/blog/onthisday-birthday-list.png&quot; alt=&quot;Birthday List&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;We want to avoid sites that look like this. Source: http://www.onthisday.com/today/birthdays.php&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Anyway, let us look at the major takeaways from each of these revisions and lessons learned.&lt;/p&gt;

&lt;h3 id=&quot;01-everything-is-in-an-angular-service&quot;&gt;0.1: Everything is in an Angular service.&lt;/h3&gt;
&lt;p&gt;Version 0.1 of the site had everything in an Angular service. Every request meant multiple sub-requests to the Wikipedia API. That’s right, all parsing, formatting, and querying was done on the fly. As you can imagine, this was not very efficient. The code was extremely messy and unorganized.&lt;/p&gt;

&lt;p&gt;Lessons learned: &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Use test driven development.&lt;/strong&gt; I had no idea what worked, what did not, and what would break if I changed something.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Break code into logical classes via the &lt;a href=&quot;https://en.wikipedia.org/wiki/Single_responsibility_principle&quot;&gt;single responsibility principle&lt;/a&gt;.&lt;/strong&gt; I like to think of this as the “do-not-have-a-function-be-a-hero philosophy”. Functions should have one responsibility, they should do it well, and they should rely on their fellow functions to do the other parts.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Stop doing the same actions more than once!&lt;/strong&gt; Why query/parse/format this data on-the-fly when it only has to happen once. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;02-use-the-latest-most-hipster-technology-ever&quot;&gt;0.2: Use the latest, most hipster technology ever.&lt;/h3&gt;
&lt;p&gt;Version 0.2 had two goals: break the application in half, and use the latest, coolest web frameworks. One of these was accomplished.&lt;/p&gt;

&lt;p&gt;In order to make the app faster, Jonathan  suggested breaking the application into two parts: the web app, and the crawler. The crawler would be responsible for:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Parsing every Wikipedia page and grabbing the list of names.&lt;/li&gt;
  &lt;li&gt;Querying every name to get additional information about them (short biography, birthday, picture).&lt;/li&gt;
  &lt;li&gt;Saving the information into a data store.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The web-app would be responsible for:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Serving the birthday data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first part went great. Using my newly learned lessons, I created a Node.JS application called WikiCrawler. Using the MediaWiki API and Wikipedia, it makes the necessary requests and saves the data into JSON.&lt;/p&gt;

&lt;p&gt;It takes ~100 seconds to gather the data for ~90,000 famous people. Not too bad when you factor in rate-limits and me trying not to get IP-banned from using the API. Note: at this time, this does not include the requests needed to get images.&lt;/p&gt;

&lt;p&gt;The final file size wound up being 42.8 megabytes. Not too bad, but not something you want to load every time you use a website.&lt;/p&gt;

&lt;p&gt;The web-app was supposed to be a super-sleek Angular 2 app, built with TypeScript, componentized, and compiled with Babel. Angular 2 just hit beta, and it is awesome! It also has a fraction of the documentation that Angular 1.x has, which can be a problem when you are not sure what is broken, and what is you doing something wrong. After internally struggling with how to build my web-app, I was reminded of another quote.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;There are two kinds of start-ups. Those with beautiful code, and those that ship. &lt;/p&gt;

  &lt;p&gt;— Silvio Galea&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This quote is what inspired the next (and current) version.&lt;/p&gt;

&lt;h3 id=&quot;03-keep-it-simple-get-it-working-get-it-public&quot;&gt;0.3: Keep it simple, get it working, get it public.&lt;/h3&gt;
&lt;p&gt;The goal of version 0.3 was to use my (mostly working) crawler and get this app shipped! This version solved my main problem:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Write code that makes sense.&lt;/li&gt;
  &lt;li&gt;Loading the data quickly and efficiently.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I ditched Angular 2, for now, and went back to the stable yet reliable Angular generator. I have experience with it, it works, and there is tons of support for it.&lt;/p&gt;

&lt;p&gt;When I talked to Jonathan, he had a simple solution for the data problem: “why not just break the data up by day”. So I did, and created 366 JSON files. Boom, instant loads. Completely offline. Now that my code was in a workable format, I was able to easily create services to handle my data. And Famous Birthdays was born.&lt;/p&gt;

&lt;h2 id=&quot;lets-wrap-it-up&quot;&gt;Let’s wrap it up. &lt;/h2&gt;
&lt;p&gt;Famous Birthdays is currently live, on the web, and is hosted on GitHub Pages. At the time of this article, we do not currently have images, but they will be added soon.&lt;/p&gt;

&lt;p&gt;I learned to crawl. This project may not change the world, but it was an amazing learning experience for me, for future projects. It was not about the problem of finding out what famous people were born, but solving the surrounding problems:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;How can we programmatically use Wikipedia to quickly and easily gather required data.&lt;/li&gt;
  &lt;li&gt;Learning to use the right tools for the job.&lt;/li&gt;
  &lt;li&gt;Writing a program that is readable and reliable. (Or, the importance of building a solid foundation on important concepts, such as test-driven-development and the single responsibility principle).&lt;/li&gt;
  &lt;li&gt;Approaching a problem that seems easy on the outside, but is in fact a lot more complicated on the inside. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for taking the time to follow the journey of how I learned to crawl! I have learned a lot on this project, and there is still more to go. Next stop, maybe the Chrome Web Store. And after that is out-of-scope for this post.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can check out the project &lt;a href=&quot;https://famousbirthday.netlify.com&quot;&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;</content><author><name>justinmaslin</name></author><category term="blog" /><category term="web" /><category term="programming" /><summary type="html">Most projects start with wanting to know something: how many dinosaurs would be necessary to re-take over the world, could cats become world-famous scientists, etc. In my case, I just wanted to know what famous people were born on a particular day of the year. Google does a great job with their doodles, but they are very selective with who gets one. You probably think this is a non-issue — there are tons of sites that have this information, right? And you would be correct, except for one problem: they look awful. </summary></entry><entry><title type="html">Famous Birthdays</title><link href="https://maslin.io/project-birthday/" rel="alternate" type="text/html" title="Famous Birthdays" /><published>2016-02-01T12:00:00+00:00</published><updated>2016-02-01T12:00:00+00:00</updated><id>https://maslin.io/project-birthday</id><content type="html" xml:base="https://maslin.io/project-birthday/">&lt;p&gt;A simple web app that displays famous people born on a certain day.&lt;/p&gt;

&lt;p&gt;This was created in two parts:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;A Wikipedia web crawler to grab famous people data. &lt;a href=&quot;https://github.com/jmaslin/wikiCrawler&quot;&gt;Github&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;A web app to quickly display the information. &lt;a href=&quot;https://github.com/jmaslin/birthday&quot;&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Read about how I developed it &lt;a href=&quot;/learning-to-crawl-the-internet/&quot;&gt;here&lt;/a&gt; or check it out &lt;a href=&quot;https://famousbirthday.netlify.com&quot;&gt;live&lt;/a&gt;!&lt;/p&gt;</content><author><name>justinmaslin</name></author><category term="project" /><category term="web" /><summary type="html">A simple web app that displays famous people born on a certain day.</summary></entry><entry><title type="html">Hackathon @Google</title><link href="https://maslin.io/googlehack/" rel="alternate" type="text/html" title="Hackathon @Google" /><published>2014-12-07T20:00:00+00:00</published><updated>2014-12-07T20:00:00+00:00</updated><id>https://maslin.io/googlehack</id><content type="html" xml:base="https://maslin.io/googlehack/">&lt;h2 id=&quot;hack4humanity&quot;&gt;&lt;a href=&quot;https://twitter.com/hashtag/hack4humanity?src=hash&quot;&gt;#Hack4Humanity&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;This was the hashtag used by close to 100 student hackers, Googlers, and guest speakers at Google NYC’s recent &lt;a href=&quot;https://sites.google.com/site/hack4humanitynyc/&quot;&gt;Hack4Humanity&lt;/a&gt; hackathon! From Friday night to early Sunday morning, we coded and brainstormed with intermittent breaks for talks, food, coffee, and sometimes even sleeping.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/blog/google-nyc.jpg&quot; alt=&quot;The Google Logo&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This was my first official hackathon, so I had no idea what to expect. On top of that, it was at Google, so I really did not want to embarass myself too much.&lt;/p&gt;

&lt;p&gt;Upon arriving, and after being given an unhealthily amount of Google swag, we found our table and listened to some guest talks. They described real-life problems they have encountered and empowered us to find a solution. This hackathon was not about making something cool for yourself, or technically challenging; it was about making something useful and even life-changing to some part of the world.&lt;/p&gt;

&lt;p&gt;Baris Yuksel (&lt;a href=&quot;https://twitter.com/baris_wonders&quot;&gt;@baris_wonders&lt;/a&gt;), a tech lead at Google and one of the hackthon’s organizers, described it best by saying our goal was not to create a “scheduling app” or one of the other dozen ideas that people always try. “How many people in the world do you think would benefit from a website that enables you to double major?” he asked us today, right after complimenting every group on a job well done. The answer is not too many.&lt;/p&gt;

&lt;p&gt;Everyone demoed a practical app today that could easily improve the quality of life of some people and possibly safe others.&lt;/p&gt;

&lt;p&gt;Our app may not have won anything, but I still learned a lot and was very grateful for the opportunity. Many valuable lessons were learned, and not just on the coding side, and I hope to apply them at future hackathons.&lt;/p&gt;</content><author><name>justinmaslin</name></author><category term="blog" /><category term="life" /><category term="programming" /><summary type="html">#Hack4Humanity</summary></entry><entry><title type="html">Primes</title><link href="https://maslin.io/primes/" rel="alternate" type="text/html" title="Primes" /><published>2014-11-16T18:00:00+00:00</published><updated>2014-11-16T18:00:00+00:00</updated><id>https://maslin.io/primes</id><content type="html" xml:base="https://maslin.io/primes/">&lt;h1 id=&quot;prime-numbers&quot;&gt;Prime numbers.&lt;/h1&gt;

&lt;p&gt;Hopefully, by now, we know what they are. Do we, however, know an efficient way to add up every single one between 1 and 2,000,000?&lt;/p&gt;

&lt;p&gt;This question, also known as &lt;a href=&quot;https://projecteuler.net/problem=10&quot;&gt;problem 10&lt;/a&gt; on Project Euler, seems pretty simple at face value. For beginners, the simplest and obvious solution is to solve it by brute force:&lt;/p&gt;

&lt;h4 id=&quot;exhibit-a&quot;&gt;Exhibit A&lt;/h4&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-java&quot; data-lang=&quot;java&quot;&gt;&lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sumOfPrimes&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;kt&quot;&gt;boolean&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;isPrime&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2000000&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;++)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;isPrime&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;++)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;isPrime&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;break&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
        &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;	    
    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;isPrime&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;sumOfPrimes&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nc&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;out&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sumOfPrimes&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This way would be fine if our upper limit was not two million. Running this code works, but it takes over 10 minutes to get the answer on my Acer Aspire S7-392 Ultrabook (a great computer, but it is not Watson).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://imgs.xkcd.com/comics/compiling.png&quot; alt=&quot;XKCD 303 - Compiling&quot; title=&quot;Comic by XKCD&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I am pretty sure Project Euler has a one minute compiling “rule” where you should get your results in under a minute, so this solution was obviously not acceptable.&lt;/p&gt;

&lt;p&gt;The next thing I tried was putting the numbers in an ArrayList, from two to two million. Then, I ran them through a loop that deleted the numbers from the list if they were not prime. You can imagine this was not very efficient either - in fact, it was faster to brute force. After messing around with this (very messy) code for an extended period of time, I did some research on algorithms and stumbled upon the Sieve of Eratosthenes.&lt;/p&gt;

&lt;h3 id=&quot;sieve-of-eratosthenes&quot;&gt;Sieve of Eratosthenes&lt;/h3&gt;

&lt;p&gt;The &lt;a href=&quot;http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes&quot; title=&quot;Sieve of Eratosthenes&quot;&gt;Sieve of Eratosthenes&lt;/a&gt; works on the idea that, if number (n) is prime, any multiples of (n) will not be prime. So where n is prime, 2n would not be.&lt;/p&gt;

&lt;p&gt;It took me a few tries to implement it correctly, but I believe I did it farily efficiently here:&lt;/p&gt;

&lt;h4 id=&quot;exhibit-b&quot;&gt;Exhibit B&lt;/h4&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-java&quot; data-lang=&quot;java&quot;&gt;&lt;span class=&quot;kd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;ArrayList&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Integer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;primesList&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;ArrayList&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;Integer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;();&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;boolean&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;isPrime&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;testDigit&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;primeVal&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;primesList&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;testDigit&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;primeVal&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
            &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;kt&quot;&gt;long&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sumOfPrimes&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2000000&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;++)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;isPrime&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;))&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;primesList&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;add&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;			
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;int&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;primeVal&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;primesList&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;sumOfPrimes&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;primeVal&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;

&lt;span class=&quot;nc&quot;&gt;System&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;out&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;println&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sumOfPrimes&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Instead of comparing each digit to every possible factor, we now only compare it to known prime numbers. Starting with 2, there are no digits in our array list of primes, so 2 is added to the prime list. The number 3 is compared to the array list of primes, which only consists of 2 - it cannot divide evenly, so 3 is added to the list of primes. When 4 is compared against the list of primes, it can divide evenly against 2, so it is not added to the list and the program breaks out since the number cannot be prime. And so on.&lt;/p&gt;

&lt;p&gt;This, of course, makes our program take a fraction of the time to find a solution, because we are comparing each digit against a lot less numbers. When the upper limit is 2 million, the efficiency gains are much more noteworthy.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Time to find the solution in exhibit B: ~46 seconds.&lt;/em&gt;&lt;/p&gt;</content><author><name>justinmaslin</name></author><category term="blog" /><category term="programming" /><summary type="html">Prime numbers.</summary></entry><entry><title type="html">Unclassifieds</title><link href="https://maslin.io/unclassifieds/" rel="alternate" type="text/html" title="Unclassifieds" /><published>2014-11-10T22:00:00+00:00</published><updated>2014-11-10T22:00:00+00:00</updated><id>https://maslin.io/unclassifieds</id><content type="html" xml:base="https://maslin.io/unclassifieds/">&lt;h2 id=&quot;why-does-everything-need-a-specific-category&quot;&gt;Why does everything need a specific category?&lt;/h2&gt;

&lt;p&gt;Lets replace the classified advertisements with a more modern approach. I could post a wanted classified advertisement on Craigslist, or pay for one in my local newspaper, but there is no guarantee anyone will ever see those. Even if the right person does, who is to say it will be in time?&lt;/p&gt;

&lt;p&gt;It is almost 2015: we live in an age where instant feedback is expected. We could hit refresh every 10 seconds on Craigslist but that does not seem very time efficient.&lt;/p&gt;

&lt;h2 id=&quot;the-idea-and-a-rough-example&quot;&gt;The idea (and a rough example).&lt;/h2&gt;

&lt;p&gt;Lets create a platform where people can post their requests and display them to relevant, applicable people. For example, pretend I want to play frisbee right now:&lt;/p&gt;

&lt;p&gt;I post a request (except lets call them buzzes) saying “Looking for people to play some frisbee.” Sounds great, but this could potentially be millions of people. So lets narrow it down a bit.&lt;/p&gt;

&lt;p&gt;In my buzz criteria, I will put “Drexel University students in a one mile range”. I can also add “able to play sometime this afternoon”.&lt;/p&gt;

&lt;p&gt;By adding specific criteria, we can make sure not to spam random people and guarantee our buzz is seen by people who want to see it! If all went well, Drexel students currently in the area who like frisbee and are not marked as busy would see this post and be able to respond to it. If someone was really into frisbee, they could setup push notifications whenever a buzz was posted with the keyword frisbee.&lt;/p&gt;

&lt;h2 id=&quot;that-still-sounds-like-categories&quot;&gt;That still sounds like categories.&lt;/h2&gt;

&lt;p&gt;Sure, it may seem like that example falls in the sports or frisbee category, but the point is not to limit people. What if you wanted to eat toast while skateboarding by a river while its raining?&lt;/p&gt;

&lt;p&gt;I want to create the declassifieds, because no experience ever falls into one category. Something like playing frisbee may seem basic at face value, but it will always be a unique experience!&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Buzz at 10:21pm: Looking to bake a cake; I can provide eggs, flour, and an oven.
               	 Open to all friends of friends within a mile.
               	 This buzz will expire in one hour if not answered.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;This is the first post in my new Ideas series, where I will be blogging about different ideas that come to mind.&lt;/em&gt;&lt;/p&gt;</content><author><name>justinmaslin</name></author><category term="blog" /><category term="ideas" /><summary type="html">Why does everything need a specific category?</summary></entry><entry><title type="html">Ideas</title><link href="https://maslin.io/ideas/" rel="alternate" type="text/html" title="Ideas" /><published>2014-11-06T17:00:00+00:00</published><updated>2014-11-06T17:00:00+00:00</updated><id>https://maslin.io/ideas</id><content type="html" xml:base="https://maslin.io/ideas/">&lt;h1 id=&quot;everyone-has-ideas&quot;&gt;Everyone has ideas.&lt;/h1&gt;

&lt;p&gt;Some are better than others. Ordering a pizza at 3am on a Tuesday may seem like a good idea at the time, but you will probably regret it the next morning.&lt;/p&gt;

&lt;p&gt;I like ideas because there are very little parameters. Ideas do not have to be a certain size, conform to a certain standard, or be executed in a specific way. The best idea in the world may be something people use everyday but do not even think about. Having a cell phone alert you by vibrating instead of playing a loud, obnoxious ringtone was a great idea.&lt;/p&gt;

&lt;p&gt;Anyway, having ideas is a good idea. And everyone has them, all the time. That is why I want to dedicate part of my blog to discussing my own ideas! If I think of something during the day, I will blog about it. It may be a horrible idea, like using your oven to heat up bath towels in the winter, but the point is to find out what makes it so bad. (Or good. Sometimes I have good ideas too.)&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;</content><author><name>justinmaslin</name></author><category term="blog" /><category term="ideas" /><summary type="html">Everyone has ideas.</summary></entry><entry><title type="html">Hello Jekyll</title><link href="https://maslin.io/new-website/" rel="alternate" type="text/html" title="Hello Jekyll" /><published>2014-09-08T18:00:00+00:00</published><updated>2014-09-08T18:00:00+00:00</updated><id>https://maslin.io/new-website</id><content type="html" xml:base="https://maslin.io/new-website/">&lt;h1 id=&quot;hello-internet&quot;&gt;Hello, internet.&lt;/h1&gt;

&lt;p&gt;I have decided to rebuild my website and blog using the &lt;a href=&quot;http://jekyllrb.com&quot;&gt;Jekyll framework&lt;/a&gt;. My old site was built on &lt;a href=&quot;http://wordpress.org&quot;&gt;Wordpress&lt;/a&gt;, which is a bit heavy for what I need to do. Hosting this website on &lt;a href=&quot;http://github.com/jmaslin&quot;&gt;my Github page&lt;/a&gt; allows me to do the following.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Securely update it from anywhere.&lt;/li&gt;
	&lt;li&gt;Avoid using an unncessary database.&lt;/li&gt;
	&lt;li&gt;Save money by using Github's hosting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plus, since the site is a git project, I can easily grab the latest version from whatever workstation I am using, and work offline. Over the next few weeks I plan on giving the site a facelift and adding more content, including links to my current web projects.&lt;/p&gt;

&lt;p&gt;Stay tuned!&lt;/p&gt;</content><author><name>justinmaslin</name></author><category term="blog" /><category term="meta" /><summary type="html">Hello, internet.</summary></entry></feed>