PHEW! So… for days everyone has been talking about “the wall” which is our advanced PHP assignment where we have to sort of recreate a Facebook wall-type thing where a user can register and log in and then can post messages or comments to messages. It’s cool because it combines a whole lot of different things that we’ve learned so far in an interesting way that really makes you put it all together. And it’s notorious for being really challenging – so everyone feels like they are literally “hitting a wall” when working on the wall… I spent a solid day on just the wall portion (and the past 2 days I guess on the registration portion) but I think I got it! Here are some pictures:
And there’s all kinds of crazy stuff on the back end that processes everything depending on which button you click, adds items to the database, runs database queries, validates everything, sets error messages to display, etc.
It was definitely a challenge but it felt good to put so many different things together, and it certainly feels like quite an accomplishment to have “scaled the wall”… :-) Based on feedback from my remote TA who reviewed just my registration side, this morning I ended up redoing the formatting using Bootstrap which we learned in Week 1. Then that day we had spent writing zillions of MySQL queries really paid off when it came time to write queries involving joins on this assignment which I hadn’t done since. Plus of course everything that we’ve learned in PHP which is the heart of the assignment. I still have some things that I’d like to figure out that might make it better but it’s good enough for now!
As a sidenote, we were supposed to validate our inputs for the registration form such that the name fields were letters and not numbers, so I had a funny moment when I tried to register myself on my own site using my real info and found that it wouldn’t let me because of the hyphen in my last name! Ha. So there’s one minor thing I definitely need to change – to let it accept letters or some special characters but no numbers…
But first I should go home and get some sleep!
Someone in my class sent me this article about reinventing oneself:
Here are a couple of my favorite quotes.
First, related to programming! :-) :
[If you] have passion for reinvention, then everything you look at will be a metaphor for what you want to do. The tree you see, with roots you don’t, with underground water that feeds it, is a metaphor for computer programming if you connect the dots. And everything you look at, you will connect the dots.
And second, to stay with my “road” theme…:
Keep reinventing every day. Don’t try and find the end of the road. You can’t see it in the fog. But you can see the next step and you do know that if you take that next step eventually you get to the end of the road.
Plus bonus points for the article having a picture of John Locke… :-)
More brain exhaustion… I’ve been working through all kinds of assignments involving PHP and processing websites with multiple forms – adding info to a SQL database, retrieving and posting that info, etc. Here’s a goofy example – a ninja game where the ninja goes different places and earns or loses gold – and the site keeps track of the amount of gold and there’s an activity log of all of the ninja’s actions:
There’s just *a lot* of details to work out to make something like that function correctly! Today I spent much of the day working on a basic user registration page and just got really stuck on one thing and then proceeded to get totally lost even though I had been pretty close to begin with! But I think it’s working now. It’s all a learning experience, solving all these little problems, and nothing beats the feeling of finally getting something to work, and even better understanding why it works and knowing that you fixed the problem in a satisfying way (vs. sometimes just mysteriously getting something to work but not really understanding why which also happens…). :-)
We also learned about Git and Github today which basically is a version control system for your code. You run it in your command line in the Terminal so it’s a little scary but also a little fun. But of course I messed something up and accidentally deleted a bunch of files when I was trying to learn about it! Oops.
I’ve been trying to go to some meetups too and I went to one tonight about a new kids’ educational game app, and I also had gone to one last week about “building street cred” for women new to software engineering. Mostly it’s just good to go and talk to people. When I’m sitting through the presentation portions sometimes I just think how I could have been spending that time learning/coding… :-) Though after the program ends when I have more time I will try to go to lots more.
So that was a good break I suppose and now back to my PHP!
Oh, did I mention I won the costume contest at the Coding Dojo Halloween party? :-) My costume was my interpretation of Ruby on Rails (a super popular programming language + framework). I guess I knew my audience… :-)
I can’t believe it’s already the end of week 3. 1/3 of the way done. It’s flying by. I spent all day yesterday working through PHP programming examples. Practicing for loops, if statements, defining functions, etc. My favorite example involved using PHP to create a checkerboard, and I was pretty pleased with the code I wrote and my process for figuring it out. (2 for loops one inside the other, basically iterating through the rows and columns creating the squares. And meanwhile you check to see if either both the row and column numbers are even or if both the row and column numbers are odd in which case make the square black, otherwise (one even and one odd) it’s red. Math! Fun! :-) ) And then I spent a ton of time trying to wrap my head around creating a sorting algorithm from scratch. By the end of the day my brain was exhausted.
So now it’s time to move on to connecting PHP with SQL and actually make pages that can process information, add info to a database, do stuff with that data, etc. It’s exciting because it means we’ll finally be able to create things that “do” something. Except at the moment it all feels a little overwhelming! I just need to start working through everything… The pace and intensity is definitely starting to pick up. Good thing it’s almost the weekend so I can spend some time catching up and making sure I really understand everything.
Plus we’re having a Halloween party this weekend too. :-)
Starting to wrap my head around PHP… Fun to start doing some real “programming.” I’ve done similar stuff on my own but it’s good to now be doing it as a part of the class. I had done the PHP track on Codecademy as part of the prep work though I’m still having to re-remember all the syntax. Key things to remember sytnax-wise:
1. always end lines with semicolons; ( :-) )
2. start variable names with dollar signs
3. use == for “is equal to” in things like if statements (vs. = which does variable assignment – same in other languages but I still forget sometimes – possibly b/c I’m still so used to FileMaker Pro which just uses = for comparisons in calculations – mainly I suppose b/c it has sort of a separate way of setting variables…)
So I just worked through a long example involving rolling dice x number of times, displaying each roll, and then displaying a summary of how many times each number was rolled and also the percentage for each number out of the total. My first time through I had a ton of repetition involving assigning separate variables for $summary_1, $summary_2, $summary_3, $summary_4, $summary_5, and $summary_6, doing the same thing for the 6 separate percentage variables, and also writing out echo statements 6 times for displaying like “Number 1: 10 rolls / 50 total (20%).” So much repetition. It was 62 lines of code total. So then I refactored and used arrays instead of the 6 separate variables and used for loops instead of so many lines echoing out info in a similar form. And now it’s 32 lines. :-) I cut it in half and it’s so much more elegant! Definitely a good sign that this is so exciting to me. :-)
And 14 hours later I am a MySQL query master! Maybe… :-)
Phew. This week was a bit of a whirlwind. Monday we had a long tech talk in the middle of the day, Wednesday we did a group assignment in the morning and then had our “sports day” for a few hours (we just go to a local park and play sports or hang out and have lunch there – to give us a break from coding in the middle of the week), Thursday most of us went to this all-day event in SF Uncubed, and Friday we had our first “belt exam” all afternoon. Not as much straight learning/coding this week I guess, though other good experiences. So today (Saturday) I came into Coding Dojo and am trying to catch up on a bunch of stuff. Including writing a blog post. :-)
Our tech talk Monday was interesting. It was a current instructor at Hackbright Academy, another one of these programming bootcamps, and he talked about some Internet basics – like what exactly happens when you type in google.com and press enter – all of the behind-the-scenes steps to go from your computer to the Google servers and get back info, etc. And he talked about binary some which was fun for me. A lot of what he talked about I at least had some familiarity with from my Udacity classes that I did, so it’s so great that those are proving useful – at least to have given me some prior exposure to all of this. Concepts from those classes keep coming up again and again, so it’s great to at least have an idea of what people are talking about.
The Uncubed event was cool too. Some good talks and good to get out and meet some people. I met the founder of Ampush who I recognized from the Bravo TV show Start-Ups: Silicon Valley which I loved but sadly was canceled after one season. So that was a little bit of a silly highlight for me.
And then yesterday we had our first “belt exam.” Over the course of the class, we’ll take 4 exams and earn “belts” (like in a martial arts dojo…) – except I think the belts that we get are actually just stickers. So yesterday was the yellow belt exam which covered HTML, CSS, and a teensy bit of jQuery. It essentially involved re-creating a screenshot of a website in HTML and CSS, which we’ve already done a bunch of times, so it was just doing the same thing one more time. We had 4 hours to do as much as we could, and then we also needed to make a short video afterwards to explain a little bit about our thought process. It went well, though I’m sure I didn’t do everything in the most efficient and cleanest way possible.
So now we are moving on to databases and MySQL and then on to PHP. I have so much prior experience with databases from working with FileMaker Pro but somehow it’s all still a little confusing. It’s just not taught in our platform the best way possible I guess. I’m looking forward to having our teacher actually teach us about it. I’m sure that will help clarify things. But I’m figuring out how to use MySQL Workbench, which feels clunky compared to FileMaker Pro, but I’m starting to get the hang of it. And there are a few things that are easier in MySQL Workbench than in FileMaker Pro, though most of the time I find myself thinking how everything is way easier in Filemaker Pro. But that is also just what I am used to. :-)
Phew – that was a lot of updates from a long week! Hopefully I’ll be able to find time in the coming weeks to write shorter posts more frequently…
BTW, I am now level 5 on Codeivate. And during our belt exam yesterday I guess I increased my max streak to 2 hours and 46 minutes of non-stop coding. (I must have stopped for long enough sometime in the middle of the 4-hour exam that it got broken up.) It’s sort of fun to keep track this way. Adds a weird added sense of productivity – like when I’m coding I’m building stuff and learning but I’m also leveling up! Even if it doesn’t actually “mean” anything, it feels like it does. :-)