Monday

Monday Morning Snap Challenge

The goal of this snap challenge was to:

  • Write code or psuedocode to convert a weight in ounces, pounds, kilograms, grams or milligrams to grams.
  • Write a javascript function to find the sum of all unique positive factors of a number.

I was a math major in college and my senior year I took a couple of classes on numerical methods: i.e. algorithms to solve math problems. So I knew right off the bat how to approach these problems.

My goal in the bootcamp isn’t to get a grade. (It’s a pass-fail thing anyway.) My goal is to learn as much as possible. So I don’t just try to solve the problems. I try to figure out the next step, make my code a little better, or figure out how to learn a little bit more.

In this case, this meant working to wire up my javascript to html files and making actual webpages that will accept the inputs and display the function outputs.

A lot of this was substantially similar to the code from our prework projects so I adapted some of that code. But working through it all a couple of times is helping to cement the processes in my brain.

It took me longer than the allotted hour, but by the end of lunch, I had my code for both problems working.

Intro to object oriented programming

For the second part of the morning we did an exercise to introduce us to concepts to object oriented programming.

This involved breaking into teams and coming up with a cast of actors for an imaginary Star Trek movie. I’m completely clueless about most pop culture so while a lot of people enjoyed the combos of actors the groups came up with, it sort of all went over my head.

But the point of the exercise was that while each group picked a different actor and name for the captain and their other crew members, certain things were the same. Each group had a captain who had a name and specific thing he would do in his role of captain like command the ship.

This was to demonstrate that the idea behind object-oriented programming is to group things together that have common attributes and actions.

In the afternoon, we also got into talking about the format for the code for making a class. Attributes, getters, setters, methods, etc.

MySQL stuff…

MySQL Commands


-- This is a comment for MySQL
-- login to MySQL
mysql -u username -p
-- list databases
show databases;
-- set it to use a specific database until told otherwise
use databaseName;
-- list tables in DB
show tables;
-- get information about a table
desc tableName;
-- insert a record into a table
insert into tableName(columnName1, columnName2, columnName4)
	values(value1, value2, value4);
-- unhex a uuid & insert
insert into user(uuid, userName, favoriteColor)
	values(unhex("6bc1a84a4cf347bb8f0fc4a3e7e77abf"), "ralphnader", "red");
-- get all info from a table
select * from tableName;
-- change data in a row
update user set favoriteColor = "green" where username = "ralphnader";

One of my next goals is to get MySQL setup on my own site. I think I’ve figured out the process based on the FAQs at NearlyFreeSpeech.Net, but I have not yet figured out what sort of access to grant my users (read: other versions of me). Also, I haven’t found anything I actually need to put in my database yet.

Code hilighting

My project for further exploration for the day involved learning about formatting code snippets on websites. I wanted to put a few lines of the MySQL stuff we were learning on this page. The info on the Mozilla Developer Network talked about a code tag that is good for small, inline snipppets of code. It suggested wrapping the code tags in pre tags for longer chunks of code. But since this doesn’t include any formatting it is sort of unreadable.

I tried looking at the source for the Deep Dive Coding page which has nicely formatted code, but it was clear that the formatting had been applied automatically somehow and that each word of code hadn’t been manually formatted.

The amazing thing about the bootcamp is having knowledgeable people around to ask. So Captain Paul guided me to the library that the Deep Dive Coding page actually uses: hilight.js. (They actually use a PHP version which makes it a lot harder (impossible?) to discover what they are using.)

**This was before I moved this to a WordPress site where my code blocks are handled differently.**

Tuesday

We had a lecture about if statements, for loops, etc. I already have this basic logic down really well, so I mostly worked on some other stuff.

composer – a php package manager

The point of composer is that if you are using pre-existing php libraries maintained by other people that it imports and manages all of that code. It keeps track of what version of each package you are using. This is important because if your code is made to work with one version, you might not want to auto-update to the next one without testing to make sure it doesn’t break things first.

I’ve done a little tiny bit of Python programming where the best practice is to set up a virtual environment for each folder that basically does an analogous thing. It lets you download your libraries and keeps the same version for that project. Then if you use say version 1.1 on one project and version 1.2 on the next you don’t have to worry about version 1.2 not being backward compatible. The first project still has version 1.1 to work with.

composer.json defines packages to use

composer install : creates composer.lock that includes the versions of packages used and ‘locks them. Can be updated with composer update.

creates /vendor with code dependencies

Also, add */vendor to .gitignore so that git doesn’t track these files. (They probably have their own git tracking anyway.)

I’ve also paid enough attention to major security breaches to know that this sort of feature can get people in trouble. It’s important to go update these packages at some point- especially if they have security updates.

Wednesday

This morning was another snap challenge. Today’s tasks were to write the code to generate a new table in MySQL and to write a query to pull specific information from a database.

Next up we all contributed ideas for our major group projects called Capstones. Then we voted on our favorites and turned in our personal rankings of the five projects selected.

In a couple of days we’ll find out our groups and the project that we actually get to work on.

The afternoon started with information about the next phase of our Personal Web Project. Then we had open work time.

I spent my work time working on our Object Oriented assignment- the goal of which was to write and instantiate a basic class.

Up next is figuring out what I am actually going to do for my Personal Web Project. The goal is just a one page website to demonstrate our html/ccs/javascript skills.

Thursday

Project Management

Waterfalls

Waterfalls method- Goes in 1 direction. Intuitive.

The steps (often ran by different teams)

  1. Planning/Scoping
  2. Development
  3. Testing
  4. Launch/Maintenance

Managers love Waterfall method at step 1 because at Planning stage they know budget, scope, etc.

Disadvantages

  • Features can be harder than anticipated
  • Debugging can take a long time
  • Stakeholders don’t know what they want
  • Difficult to maintain
  • Organizational friction
  • Small piece delays project
  • Development is complex enough it can impact scope

Agile Project Management

The Agile Manifesto –

Cycling quickly (1-2 weeks) through the steps with all teams working on all parts.

MVP – Minimum Viable Project

Sprint- Period of short focused work designed to get a bunch of tickets done. Basically what user stories turn into. “As a user, I want to be able to login to my site.” Designed to be small.

Sprints for our capstone projects will be 2 weeks each.

One developer – one ticket to work on at any one time until it’s ready for testing.

Agile is very flexible- personnel, budget, etc. can change.

Good at proving to stakeholders you know what you’re doing. Plus if the stakeholders are more involved, they better know what they are getting.

Distribution model – internet vs. old school CDs.

Cheap, fast & good. You can only have two of three.

Everybody claims to use it, but lots of differences across the industry.

Scrum- frequent bite-sized communication. Stand-up meetings.

In the bootcamp we will be doing scrums T, TH& Fr. What you’ve been up to. What you’re going to do next. Plus Asana project management software for Capstones.

Friday

Capstone Project Assignments

Friday morning was mostly open work time, but the exciting news for the day was the announcement of the teams for our group projects.

I got assigned to a team with two other wonderful ladies. Our project is going to be creating a map-based web app. Our goal is to make it display crime incidents and property values.

Snooping around on the county assessor’s website to find out about getting property value data, I did notice that they had info for the livestock count in the county including things like pigs, cows and alpaca. I don’t know whether or not the data they have regarding the alpacas and their address of residence is open records or not, but I’m really hoping to put a layer on the map for the alpacas. I find this much more exciting than plotting stolen cars.

I have a ton of mapping experience, but I’m super curious about learning how to use the Google Maps API to display custom data sets. I took a free online Udacity class on the Google Maps API once, but it didn’t touch on the custom data aspect.

Friday afternoon Pro Dev

Our Friday afternoon professional development consisted of a brief talk from John Mierzwa. He was one of the original founders of the bootcamp, but has mostly moved on to other projects like Ingenuity Software Labs.

He focused on tips for networking and finding a job/customers post-bootcamp. Key take-aways included:

  • Putting an emphasis on networking
  • The importance of showing enthusiasm. (Employees will know that an entry level developer will need further training, but they look for potential.)
  • Make business cards to handout and give them to everybody. (This takes a little bravery, but it’s good practice.)
  • Connect with people on LinkedIn.
  • Go to MeetUps and events.

After his talk, we had a celebration for the bootcamp since they won an award for workforce training. This involved some awkward mingling (and a bit of guilt for not being better at it, especially following a talk about networking).

But I did have a few interesting conversations. One with a gentleman who has been programming since the late 70s. One with a former bootcamp assistant instructor. And one with a guy who helped develop the curriculum for the Java and Android bootcamp.

Take-aways included a mental note to learn about Flutter if I ever decide to look at making mobile apps again.

The weekend

A Linux computer

The first thing I tackled for the weekend was ordering a new (refurbished) laptop from the Dell Auction site that was recommended by one of our bootcamp instructors. The goal here is to get a computer I can run Linux on and I didn’t want to install it on my current computer. I thought about loading it on one of my old laptops, but thought something new would just provide a better experience.

Now for the hard part of waiting for this thing to show up…

Python

The bootcamp teaches PHP for server-side stuff. I haven’t done that much with Python, but I really want to learn more and one of my side goals is to figure out how to use it on the server instead. So I have been slowly investigating the options.

Progress this weekend involved confirming that Python comes pre-installed at the place I host this site. This turned out to be as simple as opening up an SSH shell and typing in ‘python’.

Also I found the link to a tutorial for using Flask that I had seen at a Python MeetUp in January of this year. Flask is a Python library for making websites. At the time, I typed in the lines of code at the MeetUp, but had no idea what was actually happening. It now makes so much more sense and I’d like to follow through the rest of the tutorial at some point.

One of the amazing things about this bootcamp is how it has brought so many different concepts that I knew together in a coherent way for me. It’s like I had a whole box of puzzle pieces stored in my head and they are finally making a real picture.

I also started reading about Django- one of the other very popular Python web frameworks. And I verified that these also come pre-installed with my webhost.

I am still trying to learn a few more details about these things before I actually try to make a live site with them. I could just follow some of the tutorials, but I want to make sure I am setting things up right. By which I mean that I want to make sure that I am following the best security practices.

Adobe XD

Also on my list for the weekend is learning a little bit about Adobe XD- Adobe’s new program for prototyping and wireframes. It’s currently available for free.

We have to make wireframes (greyscale outlines of what our site will look like) for our Personal Web Projects so I’m looking to get a start on that. Plus it’s always fun to design things.

Comments are closed.