Skip to main content

About the Blog

Earlier this year, it appeared to me that finding an actual internship wasn't in the cards for this summer--a combination of limited opportunities matching my experience and desires, many of those not being a fit, and finally getting down to the last opportunity seeming to evaporate left me thinking about how to productively spend my summer. That's when I came up with this idea to not just work on my own project, but to also document it via this blog.

THE ORIGINAL PLAN

I started to imagine the ideal backup plan for the summer. I knew I had some specific knowledge gaps I was hoping to fill out on the job--deploying a project, seeing big projects written by multiple people being pulled together, how exactly professionals go about coding day to day in an office setting, how test driven development works, planning things out from customer requirement to writing the methods.

Some of this, I could do myself. I'm a smart guy. I can force myself to adjust to "red-green-refactor" and write unit tests, though it would definitely be easier following someone's example. I can plan my own iterations based on use cases I've pondered at length. I can toy with my own best practices and develop a good rhythm for making commits and feature branches in my repo. It might not be as smooth as a structured, already-in-place environment but there's no reason I can't deploy my own project while practicing key skills.

However, all of this proved unnecessary as I was offered a chance to intern at OrangeBoy, Inc (side note: they have nothing to do with this blog and this blog has nothing to do with them--all content, opinions, etc are mine and my responsibility). That's not really a good enough reason to abandon all this prep work, so...

THE PLAN NOW

I'm continuing the project in my spare time, in addition to finishing my final semester at CSCC and continuing my internship through the fall semester. This blog will be the place I document my progress, with an eye towards laying out the exact steps taken and challenges met (and hopefully overcome). The overall goal of this blog is to provide a bridge from the knowledge provided at CSCC in basic concepts and syntax to the basic levels of app development, unit testing, and beyond--leaving a trail of breadcrumbs for others to follow into the wild jungle of .NET development.

Popular posts from this blog

Use Cases: The Theory

They told me in my CSCI-1275 Systems Analysis and Design course there's a tendency for programmers to just start coding stuff without thinking, and this was nigh on tantamount to total catastrophe. I didn't fully understand this until a little later in the semester. We had just learned about arrays and collections in my CSCI-1630 C# Programming I course, and I found this to be a perfect excuse to write a little application that would synthetically divide polynomials . (That's a really great way to master synthetic division, actually, if you're interested in brushing up on that skill. Although my wife still insists the time would have been better spent putting more time into my algebra homework. Two types of people...). At any rate, long story short: I made the program work perfectly, for 3rd degree polynomials that divided evenly. Then I realized it broke when I tried a polynomial of the 4th degree. And then again when the 3rd degree polynomial had a remainder. ...

Activity Diagram: Theory

So I've got use cases figured out. Not all of them--only a fool or a genius thinks he can sit at a desk away from the end user and think he's got all the use cases figured out (and a genius would never truly believe it). But you can't sit around trying to anticipate every possible use case before you start, so once we have enough to cobble together a complete program or part of one we can move on for a bit. Side note, this is the beauty of the agile approach: "Yeah, we know we gotta go to the moon. But we have to do it in 10 years, so we can't spend 5 years thinking up every problem we might need to solve before we start solving them. How about we start with 'design a rocket that reaches orbit without killing anyone' and build on that when we finish?" That's called an iteration, but more on that later. Fleshing out what that use case needs is the next step, and there are a couple tools I remember being taught. One of them is the activity diagra...

Activity Diagrams: Pertaining to the Project

I don't think I'll be posting about every diagram I do--they're not great works of art the world must see, and if you really wanna see them they'll be in the Github repo. But I did want to post something project specific for each piece of theory here. Thus, please see below. I think this is pretty self explanatory, even to the uninitiated. Black dot with no ring is the start point, black dot with a ring is the end of the use case. In this case, we can end the use case by just...stopping, or by going on to the "create course" use case. Which will be a diagram I can link to, hence that weird symbol after the Create Course block. As an aside, I'm using a program called Violet to do my diagrams, and have been for about a year now. It may not be as fancy as Visio or several online subscription options, but I'm honestly more interested in being able to get something on paper (so to speak) quickly, so I can start messing with it. I need to understand...