Posts

Showing posts with the label the iron yard

After the Demo Day

Though my time at The Iron Yard has come to it's final end (after graduation, after career development, and after Demo Day) and I have come out a whole new person. I have a newfound confidence that I never knew I was capable of before. I've overcome so many of my personal fears and feel like I am a stronger person now that I have challenged myself in a field I previously felt I didn't belong in. The road ahead is going to continue to be difficult as a I find my way in but I know I can handle it and for the first time in a long time I am proud of what I have accomplished. The LGBT redesign will be a continuous project I work on with the Center until we implement the new look. I still have the Corky's Kettle Corn site to update as well. In between those projects I continue to update my previous projects by writing well crafted READMEs, refactoring old code, adding new features, and implementing unit testing. With so many new tools available to me I know it is only a...

Home Stretch

Image
It is officially the last week of career development at The Iron Yard and our prototype, even stretched, is complete! Today Kelly and I review the presentation, practice it, and film tomorrow during rehearsals. October 25th is demo day and we are prepped, practiced, and ready to go! I am very proud of what we've been able to accomplish in such a short amount of time! Over the next few weeks I will continue to work with the Center on implementing our prototype and then continuing to maintain it over time. The experience I've had working with them is invaluable and I am absolutely grateful at the opportunity to work with the community and build something that will help sustain and grow the LGBT Center of Raleigh. I am already looking forward to the lessons I will learn going forward. I anticipate a trial period that will require changes to our design. After hearing feedback from the community, volunteers, and members I anticipate a lot of excitement but certainly items tha...

From Sketch to Prototype

Image
After spending a considerable amount of time doing market research, analysis, client feedback, community polls, and even a SWOT analysis of the current site Kelly and I were able to move from a rough sketch of a redesign to a cleaned up mockup all the way to a high fidelity prototype! It is still a work in progress but we are able to code in HTML and CSS a functional mockup to display our redesign. We used tools along the way to keep track of our progress like Trello as well as Balsamiq to complete our sketches. Our prototype is available on Github at  https://github.com/victoriarainc/lgbtCenterofRaleigh . Kelly was able to find a Bootstrap layout called Modern Business that implemented a lot of the styles we had in mind for the site. It is already responsive, much more modern, and introduces clean navigation throughout the site. The prototype is still in progress but we hope to have it completed by next week!

I'm a Freelancer?

Image
On top of the LGBT Center's redesign I have now also been commissioned for a redesign of the Corky's Kettle Corn's website. They are a local kettle corn business that wants a larger online presence in order to expand and increase revenue. I will not only be in charge of client communication but design and development of their website using a few tools I haven't ever worked with before. The site itself is currently build on ZenCart and php - a software I've never used and a language I've never seen. However, I'm confident I can execute a satisfying template and implement it in a reasonable timeframe. I'm really excited to start learning more tools that will make me a more effective coder and freelancer! This is only a sketch of a splash page but it is a start! I hope it will inspire me over the next few weeks to continue to update and modernize Corky's website!

Graduated!

Image
It's official. As of Friday, September the 15th I am an Iron Yard alumni! The next four weeks entail a final project. I will be working closely with a classmate on a project of our choosing. Fortunately for us I already had an idea in mind. Since November of last year I have been a volunteer at the LGBT Center of Raleigh. With my new development skills I proposed helping maintain the site to the web team, Jim Manchester. He came back with the suggestion to do a full page redesign! This is a huge undertaking and one I intend to pour my heart and soul into so the main viable product I can deliver by the end of the four weeks is a high fidelity prototype of the home page. That is just a fancy term for a coded mockup. My project partner Kelly from DesignBright will be in charge of technical writing, SWOT analysis, and market research. As well, she will be a developer and lead designer for the project. We intend to update the LGBT Center's webpage to modern standards, introduce ...

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...

Routers: The Comeback

Image
As we've progressed further into React I am relearning how to accomplish some tasks that I knew how to do in Node but is done a bit differently now. For example, routing is not a new concept and is something I have done before in previous projects but React handles routes a little differently than Node. Fortunately, both are Javascript so nothing is radically different. Inside of the index.js file I've placed this BrowserRouter which I imported at the top of the page. I then used the syntax I found from the documentation to make a list of endpoints I wanted. The most simple route, the root path, on the bottom to allow the file to read every preceding path as well. The first path here is a dynamic route meaning the :id can change but still render the same layout. I've accomplished all of this before but I did get quite stuck on figuring out where to put my code in React. After enough trial and error I finally moved it into the right spot, linked the component files, a...

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...

Earthquakes?

Image
No, not real earthquakes. Just another web application! I'm not entirely solid on React yet (still on shaky ground) but I've taken my first few steps. Set up is not as difficult as I anticipated. Rather than starting every project from scratch our activities are now set up in a way that simulates a more realistic situation. We're given a set of files and basically told to fix it. For this application that is covering how to map over an array (loop or iterate over a list in order to apply a function to each item) we are using a government API to access data about earthquakes. This data updates in real time and only the last hour's activity is displayed. This is possible through React! As mentioned before, React allows a page's components to update without a page refresh. It immediately creates a better user experience because it isn't up to the user to make sure the page is properly loaded or displaying the newest data. The biggest learning curve is organiz...

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...

Intro to React

Image
The last four weeks of my time at The Iron Yard is set aside for 'specialization'. That is, we as students had the choice between learning Ruby, React, and Java. Given my background in visual arts and design I started this programming boot camp assuming I would go in to front end development. After spending the last four weeks with back end fundamentals I have even more reason to believe I would be happiest working with React, the front end option, over the other two. React itself is a library for JavaScript written to keep up with the changing demands of web applications. On a page like Facebook, the creators of React, there is a need for constant updating. Without reloading your page you should be able to see when someone likes a post, when someone sends you a message, and every time someone you follow posts a status. This requires specific containers making updates without the entire page refreshing each time a change happens. React's speciality is handling these cont...

Code Snippets: Password Encryption

Image
Another model I need to use for this web application is for my user's. When someone visits my app I want to ask for username, name, and email. At some point, they should be able to edit their profile to add a picture or an avatar and I definitely want to encrypt their passwords for them. In order to make sure each user has these elements attached to their profile I created a schema, installed a package to handle my encryption, and a package to handle authenticating that password. I chose bcrypt and Password because that is what I'm familiar with and what we went over in class. However, there are other ways to encrypt passwords and other packages that do it similarly. The userSchema.methods and .statics was all 'boilerplate' code that I was able find in our reading material but if I ever need it again in the future I can either look back on this project or find bcrypt documentation. My next steps will be routing my login and register pages that I made templates fo...

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...

Creating a Back End Application

Image
To wrap up our back end instruction The Iron Yard requires a final project that rounds out the skills we've learned over the last three weeks. In a nutshell, we use Node.js and a few of its packages to write an application. Our objective is to create a web app that requires a login and password, allows for registration, enforces password encryption, and brings the user to a home page. For this project, that home page is a code snippet organizer. This project has no mockup or wireframe because design is not the main objective. However, there are a set of abilities our app must have. A user must be able to view all of their snippets, be able to edit or add or delete their snippets, and there must be a search bar that filters through those snippet's tags and languages. That means there are two schemas being used in conjunction. There is a collection of users and a collection of snippets all being stored in the same database. They have to be two separate schemas because each mode...

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!

A Mongo and A Mongoose

Image
Last week we covered databases! Super exciting, right? It only makes sense, though, that the majority of back end development would be storing, accessing, and updating data. There are quite a few tools available for Node.js and the ones we covered are Mongo and Mongoose. Mongo or MongoDB itself stores data flexibly. Why does that flexibility matter? It is perfect for sets of data that are incomplete. If I had a list of contacts I wanted to store but I didn't have everyone's emails it wouldn't be a big deal - those email addresses would just be empty. Mongo stores the data and Mongoose is a tool that accesses it for you. This is the secure way to retrieve data and validate it rather than having potentially sensitive information stored right in the code for anyone to see. Mongoose is pretty straightforward to use and I implemented it into my robots database (that thing again!). In a nutshell, I was able to swap out the database I had stored in a file and put it into Mongo o...

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...

Model View Controller (Rinse and Repeat)

Image
There seems to be a lot of debate around what Model View Controller (MVC) is. After almost 48 hours of discussion, intense Googling, and furious debate I believe I can comfortably say that MVC is a way to organize your code. To compare, there are dozens of ways to organize a craft room. On top of those dozens of ways you could think of to organize your stuff - there are overarching theories and methods to help. I've read articles on the psychology of organization and popular methods such as bundling your stamps based on theme versus month of the year you would use it. MVC is a method of organization for programmers. Keep in mind a lot of the implementation is dependent on the project itself. Also, a programmer's code is personal and nothing beats methods that work for that programmer. With that in mind, MVC attempts to propose an ideology to follow. Model can be a folder to store sets of data and any logic used to filter through that data. View's purpose is to hold any vi...