<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: MattMilton57</title>
    <description>The latest articles on Forem by MattMilton57 (@mattmilton57).</description>
    <link>https://forem.com/mattmilton57</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F341067%2Fe0785ebc-6cf9-49dc-8b70-1a4ca1c9c69d.jpg</url>
      <title>Forem: MattMilton57</title>
      <link>https://forem.com/mattmilton57</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mattmilton57"/>
    <language>en</language>
    <item>
      <title>Creating an auto-complete search bar - Part 1</title>
      <dc:creator>MattMilton57</dc:creator>
      <pubDate>Tue, 24 Mar 2020 22:30:24 +0000</pubDate>
      <link>https://forem.com/mattmilton57/creating-an-auto-complete-search-bar-part-1-1ped</link>
      <guid>https://forem.com/mattmilton57/creating-an-auto-complete-search-bar-part-1-1ped</guid>
      <description>&lt;p&gt;One common feature in many apps is a search bar that persists through every page of the application and features common navigational links that allow a user to readily access all areas of the app. A great feature to add to this type of search bar is an auto-complete, which will allow the user to start entering their desired search term and will create a drop down box with pre-defined search terms that could match their selection. My group for my mod 3 project discussed having exactly this type of feature in our app, so I decided to research it and found it surprisingly easy to do. &lt;/p&gt;

&lt;p&gt;Step 1: Create a search bar in HTML. Make sure that the autocomplete function of the search bar that you create is set to “off.”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RtdYubfc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/j4yrrp5116vw78sqysrx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RtdYubfc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/j4yrrp5116vw78sqysrx.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Create an array that contains all of the possible answers that you would like for your search box to autocomplete to. Store this array with your javascript or in your HTML in a script section. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IxlEUe2A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wiv3j1p0hyphkp74w4hs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IxlEUe2A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wiv3j1p0hyphkp74w4hs.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3: In the style section of your HTML header, entire the CSS information for your search box. Make sure that the position of your search box is relative so that the drop down autocomplete box isn’t obscured by your select button! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kwGcR43h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xs798leo4sr3dcg6ez43.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kwGcR43h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xs798leo4sr3dcg6ez43.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My next blog will focus on writing the javascript logic that makes this menu work.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I'm a mess, or, Kanban for all. </title>
      <dc:creator>MattMilton57</dc:creator>
      <pubDate>Tue, 10 Mar 2020 23:42:06 +0000</pubDate>
      <link>https://forem.com/mattmilton57/i-m-a-mess-or-kanban-for-all-5f8k</link>
      <guid>https://forem.com/mattmilton57/i-m-a-mess-or-kanban-for-all-5f8k</guid>
      <description>&lt;p&gt;Im a mess. That isn’t just a report on my current mental state as I enter the third module of my coding bootcamp, it's a fact that has been true my entire life. Organization has never come easily to me, despite many many may efforts to the contrary.  Because of this, I have learned that, in order to survive in the working world I have to develop strategies. Well, “learned” might be going a little too far. Let’s just say that Im mostly aware that mental strategies exist and sometimes I remember to use them. It is eternally tempting to dive into a project head first without taking the time to plan it out, and then get lost within it. After experiencing major organizational difficulties on my second software engineering project, I began research into what methods professional software engineers used to keep themselves organized. lt just so happens that these organizational issues aren’t isolated to me, but are fairly common in tech. Many software engineers use a system designed to help with &lt;/p&gt;

&lt;p&gt;Kanban, in Japanese translates to visual signal. It is a system first developed for engineers at Toyota in the 1940s to help control the allocation of resources within the company. Toyota met with great success from this system and it was eventually adopted by many American companies. Software development teams have especially embraced Kanban as a way to efficiently improve communication and manage workflow. &lt;/p&gt;

&lt;p&gt;One of the issues that I dealt with on my Mod 2 project was that I allowed the scope of the project to get out of control as I enthusiastically added features and user stories to it throughout development. While my intentions were good, all of these different tasks quickly become overwhelming. Kanban helps with this by giving us a simple concrete way to track tasks within a project, this is known as the Kanban board.&lt;/p&gt;

&lt;p&gt;A Kanban board can be drawn on some paper, a whiteboard, or anywhere where you can put some sticky notes. On it you create columns which represent what is called your work flow. The work flow represents the stages your work goes through as you are completing it. Work flow is a very personal thing, and can be different for anyone. So far, my personal workflow columns are: “Backlogged,” “Today,” “In Progress,” “Stuck,” and “Done.” These are likely to change as I learn and adapt to the system. Inside of the columns go my Kanban cards, which I put on sticky notes. Each card represents a task that I need to finish as I work towards completing my project. While writing this blog, my Kanban cards had titles like “Find a blog topic,” “Research Kanban,” “Create visual aids,” etc..  For software development, cards often contain a single user story. &lt;/p&gt;

&lt;p&gt;When beginning a project, the first task is to write out all of the Kanban cards that I can think of and place them in the Backlog conlum. This allows me to partake in the first principal of Kanban, “Visualize your work.” Once all of the cards are laid out in front of me I can begin to get an idea of the scope of the project. I can begin to prioritize features and tasks, and to put them into an order to allow for the most efficient completion of the project as a whole. Having all of the facets of a project laid out in front of me like this makes it easy to make decisions about how advisable it would be to add in “just a few extra features.”  &lt;/p&gt;

&lt;p&gt;Once I have built, edited, and ordered my backlog, the next step is to “check out” the cards that represent tasks that I can reasonably expect to complete that day and move them to the “Today” column. If working in a team, then multiple people would put their checked out cards in the today column so that the entire team could know what the rest of the team is working on &lt;br&gt;
Once I’m ready to start working on my first task, the second major principal of Kanban comes into play: “Limit work in progress.”  The theory is (And I can confirm this with many personal anecdotes) If you are working on too many things at one time, your attention will be spread out too thin to create work of quality. It is with that in mind, that the Kanban board introduces card limits in some of its columns. For my personal board, I limit my in progress column to two cards at a time. &lt;/p&gt;

&lt;p&gt;My next column is called “stuck” and it is reserved for exactly what it sounds like. Sometimes it is good to put aside something that I am working on when I find myself unable to make progress, this allows me to stew on it for a little while and hopefully come to a solution via divine intervention. That said, the stuck column has a card limit of one and cards can only travel in one direction on the board, so if I find myself stuck on another in progress item, that means that it is time for me to really dive into my stuck item so that I can clear that space. &lt;/p&gt;

&lt;p&gt;The final column on my board is the best one, it is simply titled “Done.” When working on a large project, it can be easy to get lost in the weeds and feel like you are making no progress towards your goal Having a done column lets you see in real time what you are achieving. &lt;/p&gt;

&lt;p&gt;Software engineering teams around the world constantly drive towards the feeling they get watching Kanban cards migrate from left to right on their boards and, in my short time using one, I am starting to see why. Im looking forward to putting this too into use as I create further projects here at flatiron.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aRwgYxyw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6122ct2lq6stcu3eqht6.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aRwgYxyw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6122ct2lq6stcu3eqht6.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flatiron</category>
      <category>kanban</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Setting up a join table in ruby (or "How I made a dumb mistake and failed my code challenge, sigh.")</title>
      <dc:creator>MattMilton57</dc:creator>
      <pubDate>Tue, 03 Mar 2020 00:45:43 +0000</pubDate>
      <link>https://forem.com/mattmilton57/setting-up-a-join-table-in-ruby-or-how-i-made-a-dumb-mistake-and-failed-my-code-challenge-sigh-2fcg</link>
      <guid>https://forem.com/mattmilton57/setting-up-a-join-table-in-ruby-or-how-i-made-a-dumb-mistake-and-failed-my-code-challenge-sigh-2fcg</guid>
      <description>&lt;p&gt;One of the most stressful aspects of a coding bootcamp is the code challenge. Code challenges are test, one for each module of the bootcamp, usually coming in the middle of the 2nd of three weeks in the module. They are given in the 2nd week so that any student who fails them can re take them the next week. So far we are 2 mods into my bootcamp and I have had to retake both of my code challenges. Needless to say, timed tests are not my strong suit. &lt;/p&gt;

&lt;p&gt;For the most recent coding challenge, my main issue was in my implementation of what are called join tables. A join table is a class in an ActiveRecord database that has the sole responsibility of tracking a relationship between two separate classes. For this challenge in particular, the join table was tasked with tracking the relationship between a super heroine and her various powers. Notice I said “various,” thats because one of the reasons for needing a join table is to track what is called a many to many relationship. In a many to many relationship, no one object is a sole owner of another object. Superheroines can have many different powers simultaneously, while a power does not belong exclusively to one super heroine, but can be possessed by any number of them. The join table allows us to save that information in such a way that we can access it from multiple directions, making it easy to find out all of the powers of a particular heroine while also allowing us to easily query the names of all of the different heroines that possess a certain power. &lt;/p&gt;

&lt;p&gt;The join table is a very useful tool and, unfortunately, one that I wasn’t quite ready to implement effectively for my code challenge. I was more than aware that I needed to find a way to associate my heroines and their powers, but what I attempted to do was to create the association within an individual object that would have to be instantiated simultaneously with the creation of each new heroine. This proved to be impossible, as each time I tried to query the various powers a super heroine had or to find a list of the assorted super heroines with a certain power I was met with a frustrating error. I could find no way to effectively create the instance of a heroine and the new object of the joining relationship within one method. I spent many precious minutes of my coding challenge staring at my screen attempting to figure out a way to make my relationships worth, and eventually had to give up and move on to another part of the challenge. &lt;/p&gt;

&lt;p&gt;Ultimately, the seeds of my failure were sewn in my attempt to create the relationship between a super heroine and her powers within a traditional ruby model. What I should have done was to generate a new join table by using the command line to generate a migration called “CreateHeroinePowers”. Within that migration, I could have generated a join table with all of its magical properties by using the command “create_join_table” followed by the two items you would like to join, written as symbols (for this project, the command looked like this: “create_join_table :heroines, :powers.) &lt;/p&gt;

&lt;p&gt;After my code challenge was over, I was able to implement the join table properly and , to my amazement and frustration, all of the relationships were suddenly working. I was able to successfully query all of the individual powers that a heroine possessed  by assigning said heroine to a variable (h1) and then calling h1.powers.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Software as hardwood</title>
      <dc:creator>MattMilton57</dc:creator>
      <pubDate>Mon, 24 Feb 2020 16:32:06 +0000</pubDate>
      <link>https://forem.com/mattmilton57/my-why-19dh</link>
      <guid>https://forem.com/mattmilton57/my-why-19dh</guid>
      <description>&lt;p&gt;“Give me a lever long enough and a fulcrum on which to place it, and I shall move the world.” - Archimedes&lt;/p&gt;

&lt;p&gt;I love wood. Specifically I love working with wood. I love the smell a plank of cedar makes as you run it through a finely tuned bandsaw. I love its look. I love the feel of its texture under my fingers, the bumps and curves of its rough state and the almost glass-like smoothness that is the reward of hours spent sanding. Woodworking has been one of the great pleasures of my life. There are so many things that I love about it that the list could stretch high as the highest tree in a redwood forest. That said, there is one thing about woodworking that I love the most. I love to see the things that I create being used to change lives, in ways great and small.   &lt;/p&gt;

&lt;p&gt;See, there are two ways to create something out of wood. You can build fast, with cheap wood. You can sand something down with a machine rather than by hand, you can remove redundant supports and use fasteners, which are fast, rather than glue and clamps, which take much more time. There really isn’t anything wrong with building things this way, despite the distain that you can probably see for it in my words. There is a certain utility that lies in producing goods quickly and cheaply, so that they can be put into the hands of needy people at a price they can afford. I’ve built a thing or two this way myself, when the need arose, but I took no real pleasure in it. My joy come in building things to last. &lt;/p&gt;

&lt;p&gt;A table that can hold a thanksgiving dinner can be built quickly and well, but a table that can hold five times that weight takes twice as long to build. The thing is, in ten years that first table will be firewood, while the second one will host generation after generation of Thanksgivings, Christmas dinners, and every meal in between. That only comes from quality, from picking the best wood, and putting in the hours needed to shape it, so that the table in your vision can stand up to every use you could possibly imagine for it, and a few that you can’t. Longevity like that only comes from what is commonly known as craftsmanship. &lt;/p&gt;

&lt;p&gt;My interest in code was first piqued when I began building intricate spreadsheets to keep track of my family budget ten years ago. Initially the sheets were just lists, simple documents allowing me to associate costs with budget items. Eventually, I began to experiment with adding arithmetic to them, first simple operations to add up monthly expenses, and then one was added to track our savings from month to month. My paycheck at the time would vary every month so I eventually added equations that would divide the amount into percentages that would be divided into different categories. Eventually I built out a document that spanned months of expenses and helped my family save for vehicles, vacations, and a home. I saw that what I built was a tool, one that made a positive impact on my life. More importantly, I saw that what had shaped that tool was a curiosity about what it could become, and a determination to bring that final form about. I’ve found that the curiosity that drives me to add one more feature to a program, the determination to spend hours building menus that cannot be broken or pages that look just right, that curiosity is that same the same as what would lead me to a brand new technique for turning a goblet on a lathe. The same determination would lead me to one more round of sanding on a tabletop, or some extra bracing on a desk. It was craftsmanship, and that craftsmanship could create tools, and those tools, on a large enough scale, cold create things I never thought possible. &lt;/p&gt;

&lt;p&gt;Code is the new wood. Like wood, it can be used cheaply and quickly to build temporary things of little consequence. We see that a lot. But, also like wood, it can be used to create things that can change lives for generations to come. Code doesn’t have to be harvested from a forest. You don’t have to pay for fine stock from which you can create code, because the stock is our imagination and our imagination is a renewable resource. Code can be used to facilitate travel, to enable commerce, to spread art, to unite families. That is my why. That is why I’m here at Flatiron school. Im here learning to code because, while wood can change a family, I’ve come to realize that well crafted code can change the world. &lt;/p&gt;

&lt;p&gt;My why is the realization that code, not cedar, will create the future, even though It doesn’t smell as good. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YEUZ7IJN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rhxgv6ahseowolwfrtx7.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YEUZ7IJN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rhxgv6ahseowolwfrtx7.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>firstyearincode</category>
      <category>flatironschool</category>
      <category>bootcamp</category>
    </item>
  </channel>
</rss>
