Thursday, September 17, 2015

New Website













Hey, everyone.  Did you know I have an official website now? Check it out.

thesingingcoder.com

Monday, August 4, 2014

Day 21: Pet Adoption App

This is my first full C# app. Click here to see the site. It's a pet adoption site.

I finished my first week of C# and completed mt first weekend project.  We have moved into a different module with a new teacher, Jason.  He has a lot of coding experience, even though he's younger than all of the students.  His teaching style is much different form Alex and I'm still adjusting to it.  Alex has a gift for making abstract concepts concrete by using crazy, extended metaphors.  Jason just tells what commands to write into the visual studios.

We learned more about the MVC model this week.  We separated our code using encapsulation.  This makes it easier to collaborate with other developers.  It also makes it easier to maintain the code and adjust parts as the needs of the website or app changes, while leaving other parts untouched.  Unfortunately, in reality this take about five times longer for me to write the same code as before.

The Project
Click here to see the project
 
This is a pet adoption app.  The homepage shows all the pets you can adopt.  You can click on a drop down on the right-hand side to see the pets by type.  You can also add new pets or edit their information.

I used ASP.NET, and Razor for this app.  I used an if statements to make rows of three pictures.  I seeded the data with Singletons.  The project had full CRUD (create, read, update, delete).  We haven't learned how to link our project to a database yet, so there is no persistence.  

Monday, July 28, 2014

Day 16: Starting Session 2

My official first C# project 3 hours into class

Friday we had to pass a JavaScript exit test to move on. There were a couple of tricky questions, but overall I thought the test was fairly straight forward. I got half a point off for misnaming a object constructor (I named it "myObj", apparently is was suppose to be "Students").

Today we transitioned into the second phase of Coder Camps, back-end design. Camp is a microcosm of college: Session 1 are the Freshmen, Session 3 are the Seniors, Session 2 fall somewhere between Sophomores and Juniors. I've decided we are Sophomores for the first week and a half and then move up to Junior status. Even though we have only been here for three weeks, we are welcoming the new people with an air of sophistication.

The second session focuses on C# and the .Net framework. (So far I have refrained from making enharmonic D-flat jokes). There's been a lot of talk from the older troops that this session is a lot harder than the first. I'm hoping that by coming into the class expecting it to be very difficult, I will be pleasantly surprised when it is more manageable. I am tracking the difference in the JavaScript and C# languages in my notes. It helps me keep the bigger picture in my mind and I think it will be a good reference for when go back to JavaScript and merge the back-end with the front-end.

Monday, July 21, 2014

Day 11: The Chirper App

A preview of my Chirper app. Click here to see the full app.

 

 

Project Experience 

 

This week our teacher Alex let us in on a great idea he has for a start up!  People can text or write posts of 140 characters or less and send them to their friends.  Ha!  Actually, this is an obvious rip off of a company not to be named featuring another bird sound.  We created our "Chirper" page using Javascript.  It was our first taste of a group project.

Thursday afternoon we were given about an hour of class time to draw out the structure of our project and name all our objects.  We each have a separate Firebase database to store our "chirps", but use the consistent name to access each other group member's chirps and info in their database.  It was overwhelming at first to think of connecting everyone's together and setting up a structure from scratch that was able to do so many things.  After some thought and group input, I was able to sketch out a rough draft of objects on the white board.  After class I went back over the objects with two of my classmates, Kiyo and Laura, and came up with a more definitive list.  I sent this screen grab to everyone to make sure we organized, spelled, and capitalized everything consistently.


From there the project became more individual.  I found the writing "chirps" pushing them onto my table of "chirps" relatively easily.  It took some thinking to sketch out the code for a Timeline of everyone's chirps.  I went over my thoughts with Alex and he said it sounded good.  Once I nailed down the logic of the Timeline it felt like the rest of the project fell out naturally.

Sunday evening several of our group met at camp to iron out some kinks.  I  gave a few tips to people. I really appreciated Laura sacrificing a good chunk of her time writing a Ajax call just to send me a private message so I could test my code.

Today we presented our projects.  Four of us were able to create Timelines.  Alex said this was the first time he had more than one person in the class achieve this.  I was very impressed with the visual design of several of my classmate's pages.  I even revised mine a bit after seeing theirs.  I was very pleased to be able to achieve full functionality with my project.

Overall, I think this project has been my best experience at camp so far.  It was challenging, interesting and was a great group bonding opportunity.


The Project

 

This is my Chirper App.   The home page is my personal Chirper page.

Note: You cannot add new chirps or update my profile on this site.  I secured the database so that you cannot write into it.  Hopefully that will prevent someone from spamming my database and/or accidentally deleting it.

Cool Things the App Does:

  •  Loads with my home page with profile picture and bio and a table of my chirps
  • Click "Add chirp" and add a new chirp to my table
  • Click "Edit Profile" to change my profile and bio
  • Click "Timeline" to view all my friend's chirps
  • Click the plus/minus sign next to a friend to friend or defriend them
    • Once defriended they no longer show up on your Timeline and you cannot see their profile until you friend them again.
  • Click the person icon next to a friend's name to see their profile and a table of their chirps
    • Laura was the only other person to successfully post her picture and profile on Firebase. I recommend you click on her.  I have a function to show the person's name and 'no bio included' if they did not have a picture and/or bio.
  • Click "Message" under a friend's picture to send them a private message
    • The message is color coded and shows up on the left or right side of the screen depending on who sent it.
    • No one else was able to successfully set up the private messages.  I again recommend clicking on Laura to see the message she sent me so I could test my code.

 

Future Ideas:

The project is basically fully functional right now.  We could always add a Troop group or expand the project in along those lines.  Maybe Chirper games?  We are just beginning to learn AngularJS.  I know form the older groups we will eventually rebuild this app using Angular.  I don't feel comfortable with the framework yet, but I think the code will be a lot cleaner with Angular.

Monday, July 14, 2014

Day 6: First Weekend Project

Click here to try the app.


Today our troop presented our the first weekend project, the Quiz App.  Mine is called the "Name the Composer Quiz".  It is a series of multiple choice questions all about classical music composers.  I am hoping to link the final product to this blog, but am still working on uploading it.  The app includes all but one of the "stretch goals", but there were still a few improvements I would like to make (without introducing bugs).  Since you can't play with it yet, here's some highlights

Update: I finally uploaded it on GitHub.  Here's a link to the app!

Cool Thing My Quiz App Currently Does:

  • Contains a dynamic progress bar
  • Displays the questions in a random order
  • Displays the answer choices in a random order
  • Highlights the correct answer in green and highlights the incorrect selected choice in red when "check answer" button is clicked
  • Contains a modal where the user can create a new question and answer choices 
    • It adds these choice into the question array and adjusts the javascript accordingly.


Things I Would Like to Add:

  • Create an answer bank of wrong answers for the user generate multiple choice questions
    • The bank itself would be simple, but I would have to include a robust search function to make sure the user generated correct answer isn't in the answer bank.
  • Different types of questions while maintaining random function
    • I tried to do this with a series of "if" statements, but wasn't able to completely debug the boolean answers.
  •  Create different types of new questions 
    • This seems relatively simple once I get my booleans to evaluate to true when I want them to.

Wednesday, July 9, 2014

Day 3: A Sacrifice and an Investment

Benjamin Britten pondering the wave motif of Peter Grimes

Although I've only been in camp for a few days, I'm already really enjoying my time here.  The teachers are very intelligent and enthusiastic.  Everyone in our troop is getting to know each other and so far I think we're hitting it off.  Our current teacher Alex is starting to give us some more challenging problems.  They are difficult enough to tickle my brain, but not too difficult to become overly frustrating.  We completed a "mathy" example on Coderbyte.  Math + coding, what could be better?  (Seriously, it's great!)

Today I was offered the roll of Miss Wordsworth in Albert Herring. They're not performing the entire opera, but it still would have been a great opportunity.  Plus, I'm a big Benjamin Britten fan.  This is another glaring reminder of everything I am sacrificing to attend the Coder Camps.  However, I am trying to re-frame this as a relatively small sacrifice considering all the roles being a freelance coder will allow me to accept.  This is a great opportunity to invest in the analytical part of my brain and create a new career doing something flexible that I also enjoy.  Right now, I'm battling to complete the homework assignments and still practice my solo literature (in a hotel, mind you).  I'm still working to find the balance between devoting most of my time to coding while allowing some time for everything else.

Monday, July 7, 2014

Day 1 of Coder Camp

A photo of the Coder Camps, a bit reminiscent of Facebook during the Winklevoss twins days.

Today was my first official day at Coder Camps.  After passing the entrance assessment,  I thought the testing was behind me, but I was wrong.  We began the day with an intro and another test.  Most of the questions were pretty simple.  Just like with the home assessment I got stuck on one question.  After staring at it for about 30 minutes, I asked our teacher Alex for help and he introduced me to the console on windows.  This helped immensely.  I figured out the answer in under 5 minutes after that.  I haven't received my grade back yet, but I think I got all the questions right.

The rest of the day was devoted to teaching the very beginning basics of html, CSS, and Javascript.  So far it was all review for me.  I'm sure it will get much harder, very quickly.  Alex talked a lot about stress management and scheduling. I'm feeling overwhelmed that we will spend so much time coding, but I usually find requirements are greatly exaggerated in my mind than in reality.  One reason I chose this camp was so that I could keep up my church job and volunteering in the area on the weekends.  The time management lecture worried me about being able to do this.  Stay tuned and we'll see how it goes!

I volunteer as the Girl Scout Registrar for the Kingwood and part of the Atascocita area.  I created a database for the community in FileMaker.  I'm excited to be able to recreate this database without the program crutch.  I'm hoping to upload onto the web and password protect it so that other volunteers can access and update pertinent information directly instead of through the Registrar.