Daniel Petersen's Blog

Developing two videogames -- 9001, an addictively fast paced arcade game, and It Usually Ends In Nuclear War, a strategy game which is something of a mix between Civilization and Stellaris.


Dev Bootcamp Thoughts

Posted on 2014-03-15

I’m feeling a bit introspective tonight, so I thought I’d sit down and write out some of my thoughts on being a student at Dev Bootcamp.

Today marks the end of week 7 out of 9. It’s funny looking back on it now, as I wasn’t quite sure what to expect when I walked into Dev Bootcamp on day 1. I’m generally a quiet person by nature and take a while to adjust to my surroundings, and it was a bit jarring adjusting to DBC on that first day.

Day 1 I was greeted by a group of people waiting outside the DBC door, my new cohort mates. Sometime around 8 o’clock we heard cheering, clapping, and music emanating from the room. After maybe a minute or so, they opened the door and we all sort of ran in. All the current students and staff had formed a line leading from the entrance to a room called the great hall, and you had to kind of run through this line and high five people as you ran by. Then we had to go back outside and do it again, because CNN or something was there filming a documentary (?), and they didn’t get the first time on camera.

Then it was time for some team building exercises, and honestly, who doesn’t love a good team building exercise? They basically had us walk around each other and avoid eye contact. After a few minutes of this, they tell you to lock arms with a person near you and tell them your most embarrassing story. Then you walk around in circles some more and repeat, this time telling them your four most loved people in the world. The final time you’re supposed to act like the other person is your best friend in the whole world who you haven’t seen in 15 years.

We then all sat down and we went around the room introducing ourselves. I think they provided some lunch for us after that, and we got to mingle. Then it was a few more team building exercises and some speeches.

There were cameras from CNN (?) on us most of the first day, and that threw me off quite a bit. They kept doing shots of you where they’d stand directly in front of you blocking your entire view, and the camera would be something ridiculous like a few feet from your face. It felt like it was staring into your soul, so that was great. But yeah, after lunch they let us loose on solving programming challenges. This was actually a lot of fun.

An average day of DBC consists of a school wide checkin at 8 o’clock in the morning, where they announce any important news / upcoming events. There’s then usually a short lecture, after which point they pair you up with another student in your cohort and unleash you to solve programming challenges together. Some of the challenges are considered core, which means you must complete them, and some of the challenges are considered stretch, which means that you should but aren’t required to do them. Lunch starts at 11:30 and ends at 1:00, which is a long time but some people actually work through some of lunch. After lunch there’s another school wide check in, and then it’s back to coding.

Some days have extra activities in there. There’s weekly yoga classes, which last for around an hour. On Thursday night there’s a speaker who talks to us about whatever topic the speaker deems appropriate. They provide counselors to students who want it, which I think is pretty awesome for those inclined. Finally, there’s also something called engineering empathy that they have us do occasionally, which I’m not going to go into.

They have two monitors, two keyboards, and two mouses linked to every one computer. The computer monitors are mirrored, but you can set them up to a normal dual monitor setup if you want. So you have to work together with your partner on this setup trying to solve some programming challenges. This is pretty damn hard, and I’m still not that great at it, but it’s always an interesting challenge. They encourage you to have one person be relegated to the higher level decision making, and the other person relegated to typing out what the first person wants to happen.

You’re allowed to leave at around 5, although most people tend to stick around and finish up anything that they’re working on.

Fridays are always pretty awesome. They have you work on projects in groups of 4 or 5. The first week and probably my favorite project was creating a program which took a Sudoku puzzle and solved it.

They run the school in phases, each phase consisting of 3 weeks. Phase 1 mostly works on algorithmic problem solving. Phase 2 introduces you to databases and web development (mostly with sinatra + active record). Phase 3 is Rails and more group projects.

The end of phase 1 and 2 have assessments, which are basically three hours of programming a challenge, followed by a discussion with a teacher where you walk them through what you did and explain your thought process.

I’m in phase 3 right now, which means that I’m thankfully done with all the challenges. I spent the past three days working in a group with three other people. We basically got to choose a project to work on, and we ended up making what’s in my mind a pretty solid clone of Stack Overflow . One of the guys in my group threw ours up here, but that link may or may not be dead soon – I’m not sure how long he’ll keep it there.

Everyone actually worked on some cool stuff. One group made a website which allowed users to easily create text based adventure games. Another group made a sort of synthesizer, which is pretty awesome. I actually got to help out a little bit with the javascript for the synthesizer, which was nice.

Anyway, the last week of Phase 3 is final projects. You and a team of 3 or 4 work on a project for 7 days, after which point you present your projects to the entire school as well as employers from the Chicago area. I’m really looking forward to this actually, I think it’ll be a lot of fun.

On Sunday DBC is hosting a hackathon which I’m going to participate in. You basically form into small groups and try to make something in a limited timeframe, I think this one is going to be 10 hours. My brother texted me a pretty simple game idea that he wanted to see made, so I’m going to try my hand at it. He explained it as a small twist on the helicopter flash game from the 90’s (?) / flappy bird. I’m going to use the opportunity to dive into some javascript and have some fun. No idea how it’ll turn out.

Looking back on it, joining DBC was a hard decision to make. It’s a lot of money to spend, and it’s such a short amount of time that it seems logical to conclude that you won’t learn all you need to learn in order to know enough to be a professional programmer.

If I could talk to myself back then, I’d first explain that the program is actually longer than 9 weeks. They’ve started doing what they’re calling phase 0, which begins before you get to the school and attempts to ensure that you know the basics of programming.

Even with that, though, it’s still not much time to learn, but it’s all right. I really do think that Dev Bootcamp has put me into a new state of mind, a state of mind where I’m not afraid to learn and aggressively seek out understanding new things. I enjoyed programming before I got into DBC, but being here has confirmed in my mind that this is what I want to do and this is what I want to become good at. What DBC has done is serve as a way for me form great learning habits, a great work ethic, as well as get me up to speed with the proper tools and resources that I’ll need in order to succeed as a programmer.

What’s really crazy, though, is that for me, the main thing to take away from Dev Bootcamp isn’t the programming aspect at all. DBC is really just a congregation of awesome people who are all unique and amazing in their own way. The most important thing that I’ve learned here I’ve actually learned from my fellow students, these awesome people. Just be yourself, love yourself, and love that you love yourself.

Sins of a Hex Empire

Posted on 2013-10-09

I spent the past few days working on an old project that I could never quite get working correctly. It’s a clone of the game Hex Empire which I’m affectionately calling Sins of a Hex Empire. The name is a play on the game Sins of a Solar Empire, which is probably one of the worst names ever, but I think it’s endearing. Anyway, the old version I attempted to make was in C++ with SDL. I’ve been spending the past few weeks studying up on web development stuff, which has been interesting, but I wanted to go back and finish some of my unfinished projects before I go to school. Working on this served to give me a nice sense of progress considering it was something that I was previously unable to get working correctly.

The first thing I did was port it over from SDL 1.2 to SFML. I did this because I’m a lot more familiar with SFML, and the version of SDL it was using was dated, so I wanted to either port it to something else or work on updating it to the latest version of SDL. It was really just a question of porting to SDL 2.0 or SFML, which was a no brainer for me.

I ended up drastically changing the code structure, rewrote a lot of old functions since some of my old code was terrible, fixed a bug with the pathfinding which took forever to figure out, and added in an AI. The AI isn’t that great, but it only has a few hours of work on it, and I don’t think I have enough time to play around with it and improve it some more. It’s managed to beat me a few times so I figure that it’s good enough for a base line level. If you want a harder challenge you can artificially handicap yourself by picking a terrible starting position.

I present Sins of a Hex Empire:

Github Repository

  • Turn based strategy game.
  • Your goal is to defeat three opposing AI and conquer the entire map.
  • The black dots scattered across the map are cities. If you own a city, it generates one army every turn.
  • The light blue hexes in the screenshot are water tiles. You cannot move on them.
  • The green hexes in the screenshot are land tiles not owned by any nation.
  • The red, yellow, dark blue, and purple tiles are land tiles owned by each respective nation.
  • Capitals (the stars) generate two armies per turn. If you capture a capital, that enemy will be eliminated.
  • Your units have two values -- armies and experience. Armies are the thin black crosses, experience is the black outline around those crosses.
  • A unit gains experience whenever it expands your nations borders.
  • You have a limited number of moves per turn.
  • Pressing enter moves to the next turn.
  • Pressing spacebar at any time spawns a new map.

So This Exists

Posted on 2013-09-23

All right, my name is Daniel Petersen. I’m 24 years old and from Long Island, New York. I’m going to be using this blog to talk about my experiences with learning to program.

A few months ago I successfully applied to DevBootcamp, and one of the things that they encourage you to do is create a blog to showcase your progress and motivate yourself. I figure now is as good a time as any to start.

Previous Page

Copyright © - Daniel J. Petersen