Posts

Showing posts with the label coding

Building From Scratch

Image
As my graduation date slowly approaches I now have the freedom and the tools to start building my own applications from scratch. I came into this program three months ago knowing I wanted to build web pages for my photography and handmade crafts. Now I finally can! Even better, I can create a portfolio app that showcases all of these new skills as well as my personal projects. For the last couple of days I went ahead and dived into Handmade by Vi - a responsive website that dynamically displays available products and service using React, HTML, and CSS. My first steps were to sketch out a rough idea of how the application was going to look. I picked three colors, created a layout for each page, and loosely linked how the navigation was going to render. In a few hours I was able to develop the barebones and functionality of my site. I chose some pretty simple and clean designs,  added a media query to handle mobile view, and implemented a few dynamic routes for my 'shop' page...

Children and Inheritance

Image
This past week has been a more in depth look into React. It turns out there are many different ways to approach compartmentalizing code. Organizationally, React likes to keep everything in components. This way code can be written for a specific section, including its logic, its HTML, and its styling, all in one place that is separate from the rest. These components are likely to still be a piece of the whole page so in order to avoid typing the same code over and over there are a few different approaches. Inheritance is exactly as it sounds, small components can inherit properties from the section it is inside of or the larger component around it. Just like last week, these properties are passed down in the constructor. They can include defined variables, functions, or even state. In a way, inheritance is a method of linking the separated components together to allow for more reusable code. Children components are very similar. Some properties can still be passed down to childr...

State, Props, and Star Wars

Image
I have harped on this before but it is worth mentioning again - React is a library that allows for the rendering of small components. This is wonderful for applications that require a lot of changing data. A great organizational method for React is to piece each of these components in to their own file rather than lumping all code into one difficult to read file. This allows for easier manipulation of individual pieces. Some of those components require something called 'state'. State is a bit of a confusing concept. What it basically boils down to is a time frame. If you're building an application that requires anything to be remembered or recalled over time than state needs to be set. In Node I did this with a package called Session that handled a lot of the logic for me. In React, which is still JavaScript, then I can use a method called setState. When state isn't being used I still want to pass properties down to that component so I use 'props' in my const...

Classes vs Constructors

React is built on a lot of ES6 syntax (an updated and more modern way to write JavaScript) and there are a few more concepts in JavaScript we're learning about before diving into anything else. Some of these concepts are function constructors, inheritance, prototypes, and classes. From what I understand these don't necessarily come up very often when building apps in React but it is an important concept to understand before moving forward. Essentially, function constructors work like object constructors. They can be seen as a schema, or a model, to be called on later when required. When building a lot of the same type a prototype can be used so that all of its children can inherit its properties. In less vague terms a prototype is exactly what it sounds like - a simply constructed piece that can be cloned over and over but look exactly the same. Classes on the other hand also seem to be the same exact thing. But prettier! Classes are what is called syntactic sugar for const...

Code Snippets

Image
I have no idea if this is the best approach to a project but I'm implementing the MVC methodology to this web app that I'm building. As in, I'm first going to build as much of the model as I can then as much of the views as I can before working on the controller. As I mentioned yesterday, what I do know is that I will need two schemas for this project - one for the snippets and one for the users. I will be using a noSQL database because I already know how to use Mongoose to connect Mongo to my Node application. One trick I knew I would have to add in order to 'link' the two collections in my database is on line 15. I knew I would have to give each snippet a way to connect to its owner in order to only display that owner's snippets. This probably would have been easier to do in a SQL database where tables have a bit more structure and can include foreign keys to reference other tables. However, I wanted to use tools I have already learned how to use to accom...

SQL Equals Spreadsheets

Last week I learned about Mongo - a NoSQL data structure. This week we've covered the opposite. SQL is much more structured and rigid but does allow for an 'easier to organize' approach. More time and thought has to be put into a table's creation. Extra data can be added after the fact but it is easiest to have all of the data you know you want to collect ahead of time. Basically you're turning your raw data into a spreadsheet. That is, SQL is great for data that already exists and needs to be organized.  Unfortunately most of this happens behind the scenes and is executed in the command line. That means I really don't have any images to share. Even when turning in my assignment I had to export my raw data into a file and upload that with a README file explaining what I did to achieve that success.  Tables are just organized data and can be joined to filter out needed information. Those queries look something like this:  SELECT title FROM todos WHERE com...

Salt Your Hash!

Image
Security is a huge topic in tech. As technology progresses so does cyber security. I know basically nothing about it either! However, we did learn about encrypting passwords yesterday and tried our hand at two different ways to do so. One package is bcrypt and another is Password. I played around with each and the biggest difference is that Password allows for logging in through twitter or facebook. Pretty neat, right? I didn't get the chance to play around with it that much though. I did local encryption instead. This all still looks foreign to me but a great benefit of Node.js is the ability to use these packages when you need them with the code you already have. As I get more comfortable with the language I'll be able to create a multi-page application with authentication, validation, and password encryption!

Learn Something New Every Day!

Image
Today I've been tasked with teaching myself something new! In the coming weeks it will be time to decide what language to specialize in. I have the options of React, Java, and Ruby. All are wonderful options but as I've worked throughout this program I am still leaning towards a more visual career. That entails continuing to learn front-end development. In turn that makes React my best option. So today I'm going to get a little ahead of myself and learn some basics of React. I have no plans to build anything snazzy. From the little I've read about React it can be intimidating to get into. There are a lot of moving parts to code but it seems especially true of React. Just finding a tutorial on React itself instead of all of the other packages and frameworks that go into it was difficult. If I can just populate a page of images today using React I'll be satisfied! I'm using the first two tutorials listed here:  http://andrewhfarmer.com/getting-started-tuto...

On To Back-End!

Image
After learning the basics of HTML, CSS, JavaScript, Git, Terminal, and GitHub I'm now moving into back end development! Our first reading is on Node.js which is neither a language nor a program but a way for the JavaScript language to interact with browsers. I'm not entirely sure what that means yet but I'm confident I will by the end of the day. Until then, I'm working on our latest weekly project. It is a search page that uses the iTunes API to find music! The hardest part so far has been figuring out how to play audio and that was ultimately easier than I expected. I'm very fortunate to be learning how to code now with HTML5 and CSS3 that have a lot of included tags and elements. Back in the day I'm sure these projects would have been much more intensive! Here I have some JavaScript that begins a function when a search result is clicked. Once it has been clicked, the audio file is plugged into the HTML (hardcodes it) and displays the artist's name ...

Oh What A Week It's Been!

Image
If you haven't heart already - The Iron Yard went public on Thursday that it's locations will be shutting down after all current students complete their courses. This, naturally, impacted a lot of us emotionally but I know, for myself, that I'm still in this to learn as much as possible. I'm incredibly lucky that the staff here has built the Raleigh campus together and they also will stick this out until the end. Outside of that, this week was the final week of front end development before we move on to back end. Thursday and Friday we broke into groups and were inspired to begin our Hackathon project. Our theme was 'Mashup' so my team decided to do an arcade style page with multiple mini games. I, specifically, offered to do a Choose Your Own Adventure Game. I chose to write a 'tour' of Iron Yard's Raleigh campus. After a greeting and an input field for your name, you enter each room as you choose. The tricky part was to make sure that once a room...

Hackathon Adventure

Image
As we round out our month of front-end development (I can't believe it we've come this far) our final task is to collaborate on a project. We've been challenged to complete a 48 hour Hackathon with the theme of 'Mashup'. My group has picked an arcade-style page that includes multiple mini games that are all interactive and show off various skills we've learned. My particular mini game is a Choose Your Own Adventure game, or as it turns out, a Tour of Iron Yard with Stacey our Campus Director! I'm not as advanced as I would like to be but the logic I implemented to complete the task worked! It got pretty messy pretty fast but I was able to accomplish a series of alerts nested in one another. My tour is three rooms long and once you 'enter' a room it can not be reentered. I did this using nested if statements linked to dialogue boxes with template literals. This worked great but if I ever decided to add additional rooms it would get close to impossib...

So Fetch!

Image
Last night our daily assignment was to create a web page from scratch. It's super easy now to auto populate some simple HTML and complete the organization of the page through DOM manipulation in JavaScript. The difficult part was using fetch to pull data out of an API in order to display search results. I did it though! Once the class realized that there was some extra security going on and we needed to read the next day's lesson to learn about CORS we got it all sorted out. I made the colors pretty obnoxious just for fun. I'm starting to get the hang of the hover styling in CSS. I also just discovered google's color picker! Just search 'color picker css' and there at the top of the page is a sliding bar that allows you to manipulate the color in the box. That color coordinates with a hexadecimal code or rgb set of numbers that CSS understands. Voila! Beautiful colors that aren't super generic! I'm still pretty rusty on the fetch method of request...

Hazzah!

Image
As we're going through new material I've started to rely heavily on our reading as a resource. My objective throughout the day isn't to be able to build code from scratch by myself - it's to know what resources to use to do it. Half of the battle is knowing what tools you need and the other is how to implement it. If I can figure it out using the reading from the night before I know I'm doing something right. Some of the students are reaching the part of overwhelmed that I hit my first day. They had previous background in HTML and CSS so they breezed through the first three weeks and now feel stuck. It sounds condescending to recommend the night's reading to them but that's how I've been getting through the whole time. Take, for example, XMLHTTPRequests. After the reading and the lesson I learned they facilitate the process of my code retrieving data from another 'location' on the web. Knowing when I want to use an XMLHTTPRequest and how to wri...

Birthday Coding

Image
It's my birthday! But it's also Monday so I'm back to programming just like any other week. I'm ahead, for now, and spent the weekend working on a personal project! Instead of sketching it out like I know I should I jumped right in and expanded on my project until I got stuck. Then, instead of working out that knot in my code I just jumped into another project instead. Probably not best practice here. On nights and weekends I'm still crafting and practicing photography. I'm trying to build a site for each of those. Ultimately, what I would like to do is build just one single site that ties both hobbies together. I don't have anything down on paper yet but I'm willing to bet I will tonight. As these sites progress I'll update on my bugs and how I worked through them. Right now, on my photography page, I'm have the hardest time getting my images to work properly. I have them embedded in my HTML just fine but CSS is a different kind of cranky. I c...

I Survived Week 3!

Image
JavaScript is if loops, DOM manipulation, template literals, nested arrays and objects, and a load of new commands I have literally never worked with or even seen before last week. Here I am feeling like I've taken the first baby step (a huge step!) in to the right direction. I can actually start a project, ask the right questions, and use the correct resources. I may not be able to finish. It may take me all day. But I can start and I'm not going to take that achievement for granted. https://victoriarainc.github.io/week-02-project/ This page isn't beautiful or interactive but all that was required of me was to print those same answers to the console (a tool in Chrome you can access by right-clicking on that page and clicking 'Inspect'). Before submitting I realized my page was just completely empty. A white page. Which is what my instructors are expecting but I didn't want to settle for that. I had a few extra hours last night and spent that time 'd...

Bringing it All Together

Image
Coding is all a logic game. I've discovered it's using tools in conjunction to produce a result. Brain teaser doesn't even begin to describe it! My head feels like a swarm of bees caught in tiny net trying to solve this one! https://github.com/victoriarainc/blackjack If you take a look at the link you'll see a program (well, a bunch of notes that resemble some bizarre string of consciousness) that calculates the total of your digital hand in the game of Blackjack. I've never thought so critically about the value of a card before! Throwing in the curveball of Ace being one of two values depending on your cards really throws me for a loop. Taking it one step at a time is key though and something I definitely need to improve on. This bit of JavaScript isn't quite as crafty as some other very visual aspects but it is still super addictive! In the same way solving a word search is though. I'm completely infuriated until I finally find the word I haven...

Template Literals and Stencils

Image
In the midst of being completely floored by today's content going over my head, template literals are shining through the confusion. DOM modification itself I was pretty fuzzy on for a while. Then I came across a real world reason to do so! I learned that you would want to write HTML in your JavaScript file in order to link JavaScript to specific elements in your HTML! How would you do that? By creating a template literal that not only created the HTML that doesn't already exist but to nest commands and links inside of it that only Javascript can understand. This makes your page much more dynamic and allows for content to change easily without rewriting any code. For all of my crafters out there, this is equivalent to making a stencil! Image you want to draw a speech bubble around every month in your bullet journal. You could try to draw one around each month and hope that you get a similar size and shape. Or you could just make a single stencil (I've been 3D printing...

Side Note: Time for CodeCombat

Image
It's only Tuesday of this week and my head is already at capacity. We're quickly moving into more JavaScript by going over DOM (Data Object Model) today. It's essentially a way to write HTML without writing HTML. The concepts seemed pretty straightforward in the reading last night. When you want to target an element by it's class, there is a command for that. When you want to target a whole document, there is a command for that! I feel optimistic about today's activities and I'm looking forward to some of the crazy JavaScript commands that can do funky effects on my pages! Until then, I've found a resource I'd love to share! I'm definitely a 'gold star' learner and love to see my 'progress' tracked. CodeCombat is a wonderful interactive game for beginners of almost every age. You control your character in the command line and complete certain tasks with given commands. If you haven't played yet I highly recommend it! Just l...

Art Tours and Photography Pages

Image
This weekend was supposed to be a retreat into beloved hobbies while I felt ahead in content for The Iron Yard. I achieved this goal on Saturday by going to a local Stamp Art Tour here in Raleigh and buying more than I needed but certainly less than I expected! After organizing all my new product and setting my self up to craft last night I thought I would spend all day today making cards and scrapbooking. Instead, I find myself working on index cards, rewriting my notes to look prettier, and knocking out enough changes on my side project to push a commit to github! Currently, I have a facebook page with a small collection of albums that hold some of my pictures. It's pretty much a super informal portfolio:  https://www.facebook.com/viphotography.raleigh/ . It certainly isn't a terrible way to go about displaying past work. But it isn't the greatest. As a way to both improve my brand and practice my development and design skills I've started to build my own page. I kn...

End of Week Two

Image
This week has been the week of a Tuesday holiday; both incredibly short and surprisingly long! I've been consistently on top of my work out of habit, thankfully, but I'm ready for material that I feel solid on. I guess in a way I should embrace this uncomfortable feeling that I don't understand what I'm doing as technology itself is never just one thing and constantly evolves. As we get more into JavaScript I will be excited to see how to actually use it in my HTML and CSS. So far we've mostly covered concepts like truthy/falsey, if statements, if/else statements, and pushing to git pages. Compared to last week it feels like we barely covered anything but I'm happy to take this step by step now. The weekly project was a challenge but I knew myself well enough to space out the web page one piece at a time. All of the concepts I thought would be difficult, like parallax and favicon, were unbelievably easy. Yet I still feel shaky on when to use flex and when to u...