RailsCamp 3

September 19th, 2010

This September marks the third RailsCamp New England that I’ve attended. For those of you who don’t know, RailsCamp is the ultimate unconference: a get-together that has all the advantages of a conference, but in a much more informal environment. About 30 or so programers of varying degrees of familiarity with Ruby on Rails get together at a location, where we all proceed to hack our little hearts out. The venue is typically small, encouraging everyone to get to know the others in the room. People take turns giving presentations on topics ranging from e-commerce solutions in Ruby on Rails, “Things I Wish I Knew When I Started Rails”, to learning how to make the switch from Rails 2 to Rails 3 (something I still have yet to do). At the end of RailsCamp, everyone is encouraged to show off what they have been working on the whole weekend.

I love RailsCamp. I think it’s an awesome idea. Where else would find a place where you have experts in the field hanging out, specifically with the goal of teaching newbies in a one-on-one environment on how to improve their mad ruby skillz? I think the community for Ruby on Rails is probably what draws me to the language/framework the most. I’ve met some wonderful people over the course of these three RailsCamps, and I’ve gone from someone who knew next to nothing about Ruby, to someone who apparently spends most of her spare time hacking on a Ruby on Rails app (It’s a character sheet / campaign manager for D&D 3.5, more details on that project in a future post). But RailsCamp wouldn’t be possible without the help of sponsors, who help make costs more affordable, by covering some of the venue costs and paying for meals.

Which is why I want to end this post by thanking the people for making RailsCamp NE possible. Thank you, Velir and Vermonster, for sponsoring the 3rd rails camp. Thanks also to Brian Cardarella, for organizing Railscamp every six months, and taking the time to help find sponsors. RailsCamp wouldn’t be the same without you.

Javascript, Canvas, and the Return of the Old School RPG

July 13th, 2010

In all likelihood, I doubt that I will survive the Zombie Apocalypse.  A sad fact, it’s true, but at least I can console myself with the fact that I’ll be on the winning team, providing that the zombies prevail, a cure is not found, and I’m not eaten to complete bits before turning into one of the smelly undead.  One of the things that clued me in on the fact that I probably wouldn’t survive as a human, was the fact that I suck at first person shooters.  9 times out of 10 I end up the player who gets killed the most, and I lack the coordination skills to run and accurately shoot at the same time.  As a result, first person shooter games tend to make me very violent, and swearing real life pains and torments upon my friends who decided to play with me.   Figures that I’m the type of person to get competitive at the one genre I truly suck at.

As a result, I tend to prefer RPGs.  Mostly because it doesn’t actually involve good coordination skills with an xbox controller, but either button mash with attack/block keys, or wait for your turn, select your attack, and then let the dice roll and hope you don’t die.  I find if I do poorly in these sort of situations, I can just blame it on the game logic rather than my inadequacies as a player.  Not necessarily a logical conclusion, but it doesn’t prevent me from attempting to stab stuff outside the virtual world.  Plus, on the more English-y side, I find RPGs tend to have better stories than other genres.  If I’m going to be playing a game by myself, I would like to at least be engaged with some sort of interesting story.  Graphics don’t really factor into my enjoyment of a game – I’m just as willing to play something in 8-bit as I am with 3D environments, high polygon count, and amazing textures – just as long I find the story interesting.

Which brings me to the point of the post, if in a highly roundabout way.  Typically, in-browser games are most often seen in the form of Flash.   Most of the interesting apps I’ve played on Facebook that held my attention for more than a week before ultimately getting blocked were Flash games.  Flash, after all, is a very popular media for interactive stuff that moves around.  Unfortunately, (for Flash developers at least) Flash is starting to lack it’s ability to be used in every browser that is browsing the internet, providing that browser has downloaded the proper Flash plug-in.  As smartphones and tablets are becoming the new popular method for browsing on the go, we still have yet to see many (if any) of these platforms actually support Flash . This is understandable, as Flash does tend to put a bit of a drain on battery life.

So what is the alternative?  Javascript.  After all, it’s already natively supported in most browsers.  You don’t have to download anything.  And if you’ve checked out the awesome stuff you can do with Canvas these days, it’s a wonder why more sites aren’t making the switch (we are, for the purposes of this post, ignoring Internet Explorer).  Last March I decided to start experimenting with Canvas after seeing some examples of what awesomeness

Javascript is up to these days (including a NES Emulator, which is so full of old school awesome I cannot even begin to express it properly in this post).  In between attempting to finish up my English and Computer Science majors in one semester (which pretty much involved non-stop essay writing), I decided to start playing around with Javascript and Canvas.  And what better way to do it, then with the one type of genre I’m actually somewhat decent at: RPG.

Thus, in the middle of Rhode Island, on a rainy March day at RailsCamp (which, oddly enough was supposed to be used as a Ruby on Rails gathering, but a bunch of us decided to use the time to experiment with Javascript and Canvas) (oh, and I designed the t-shirt) Javascript RPG was born.  (We’re still working on the title).  I decided I wanted to see if a an RPG would be possible to run it on Javascript.  As homage to my Zelda days, I promptly found a sprite of Link and began coding.

At the end of RailsCamp the basics of the experiment had begun, and I had a working mockup of Link moving around a pretty simple map (There is even a pretty unflattering picture of me presenting this Javascript RPG).  There was hyrule music that stayed on constant loop, and every time Link changed direction, an entirely new .png file had to be loaded.  As a result sometimes Link would vanish for a step or two because Javascript was unable to load the image fast enough.  The map was an array file that said “1″ was a rock and Link couldn’t pass, and “0″ meant to draw grass and Link could walk through it.  There was no real way to modify the Link sprite or the map without major changes to the code, and almost all of the original code was being stored in index.html.

Flash forward 3 months.  After running around writing essays like a madwoman while attempting to find spare time to program for class, never mind for fun, did some artwork/logo design for Daymash.com (look for the morbid dying suns), I had finally graduated with a degree in English and Computer Science from Colby College, and found myself suddenly with an excess of spare time because I didn’t have time to actually search for a job while attempting to graduate from college (so if you’re looking for a programer/web developer, here’s my resume).  Thus I dusted this project off in my guthub account and started work anew.  Brushing up on my AJAX skills, I moved map and sprite handling off of the index.html page, created their own classes, and then had them handle all of their information using JSON, making it very easy to update new information.  Instead of having a new image every time Link changed direction, I set up the system so the javascript could handle a sprite sheet and show the needed segment.  The map is still as ugly as ever, but Link now has a nifty little walking animation.  At one point, pressing “Z” had Link hold out his sword and some random bad guy jerkishly moved about the screen, but that was before I added animation and Sprite.js handled all movements (these elements are currently commented out until I can more elegantly handle them).

If you go to my github page, you can see the project as in currently stands.  I’ve tested it out in Firefox, Safari, and Chrome, and it should work in all three (although Chrome can’t handle the JSON when playing with it locally).  Or if you want, you can click the screenshot of the game up above to see a working version on my server.  Just press the arrow keys on your keyboard, and Link should be able to walk around. My next goal is to either to add the attacking action again, or create a menu.  If there is any interest, I can post some more in-depth explanations about the mechanics of parts of this RPG experiment.  Otherwise, my next post will be on how I managed, after four years studying two different disciplines, to find a way to combined English and Computer Science for my final project.

Back to School – Tips After Three Years of Doing This Stuff

September 5th, 2009

One of my least favorite things in the world is packing. Which is kinda funny, since I spend most of my summer living out of a suitcase. All the same, move-in day is this Monday, and I’m attempting to pack everything I need, while keeping in mind all that stuff I won’t need.

That’s the thing about all those ‘back to school’ college lists. They list a whole bunch of crap that you will NEVER use. Then it just ends up cluttering up your room for the nine months or so that you spend in a tiny dorm room packed in with another person. I for one, happen to be a huge bookworm. I have at least 45 ft worth of shelves in my bedroom at home for my books, and I ran out of space shortly after I graduated from high school (somehow aligning with the fact that I had gotten a job, and thus had a large amount of spare money that was just begging to be spent). In that new room I’ve been building all summer, I’m gonna have 70ft of shelf space, and I’m only praying that will be enough. My freshman year, I started out with five books in my dorm room. By the end of the year, I ended up having to carry home all the books I had accumulated over the year in about five different boxes (although to be fair, several books were textbooks).

My sophomore year I had a collection of maybe 20 DVDs that I brought to school, convinced that I couldn’t live without it. That collection didn’t grow as much, thank goodness, but the book collection underwent a similar freshman year phenomena.

Same thing happened junior year.

Oddly enough, I never read most of the books that I brought, I just never found the time/motivation/whatever to read them. Ditto with the DVDs – after all, they were already mine, I had already watched them half a dozen times.

So this year, during my great packing ordeal, I have finally decided: “Why Bother?” Seriously, with the way Netflicks is these days, I can always just subscribe to that and get any movies I want sent straight to my mailbox at school (the key to which I am hoping is somewhere in my bedroom). Another great thing is the school library – I was kinda amazed by the collection of DVDs they have to offer (all seven seasons of Buffy!).

Then you can always just borrow a book you want from the library, and if they don’t have it, more often than not another library has it (this works with movies, we totally found a way last year to get several seasons of Farscape through interlibrary loan).

Of course, I just got a brand new Kindle (generation 2, for those of you wondering), which I absolutely adore, for my birthday, and I’ve decided to use it for all my book needs. Not that I don’t love my ‘real’ non ebook books, I do. There is something about the smell of paper and the feeling of a book under my fingers that gets me all poetic.

But frankly, in a dorm room, that’s just not a practical option. With a kindle, you can have all your books in one tiny little package that takes up little room, and you can bring it around wherever you want. (It also has internet access, and while it doesn’t allow for much Facebook, you can still check and update twitter, if you happen to be the social networking type).

But books aside, let’s talk about computers.

Now I’ve done both sides of the coin. I’ve done the desktop computer, and I’ve done the laptop thing. Plus side to the desktop: Harder to break, often cheaper to get a good enough system to do heavy gaming, and a bigger monitor. Downside? Portability.

In a dorm room situation, desktops are normally only a really good idea if you are in a single. If you’re sharing your room, I honestly think laptop is the way to go. That way, if you need to go somewhere else to study, you can. It’s more easy to hide your laptop in case it’s decided that there will be a party in your room and you want to see how many people you can fit in a 180 square foot room that has all your stuff in it. It’s also good if you just wanna go home for the weekend (providing you live close enough) to visit and have homework you have to do.

Believe me, while by the end of freshman year I was a wiz at taking apart my Dell desktop and putting it back together in about five minutes – it’s not something you want to make a habit of.

Now if you happen to need a bigger monitor for your desktop, just buy one, and go double monitor. Better yet, buy a tv monitor and then it can double for both tv and your computer (I know one guy who uses a giant HD tv screen for his computer programing, kinda overwhelming, but geekily awesome).

However, if you don’t get a computer, most schools have labs you can go work in. With printers. So you don’t even really need to get a printer for your room, if you have good time management, make sure you get all your papers done in plenty of time to jog down to the computer lab to print everything off.

Although those printers are normally black and white printers, so if you want your colored pictures, you might just have to go with a color printer in your room.

Now onto Food:

Honestly, I know dorm food sometimes sucks, but it’s only for four years. Suck it up and bare with it. After all, you’re already paying 2,000 dollars a year for it (or at least I am), might as well make sure that money is going to good use. So while you might wanna have your microwaveable dinners in your dorm room, or get pizza delivered, I would suggest cutting back dorm room food to snacks and drinks only – maybe stuff for breakfast if you’re a late riser.

Doesn’t mean you can’t do all that stuff, but if you want to cut back on spending money (and not have to deal with unexpected moldy Bagel Bites), I would suggest cutting back on dorm room food.

Besides, I’ve seen many situations where unwashed dishes piled up in dorm rooms making them not very pleasant smelling.

Clothes:

Don’t bring everything you own. You aren’t going to wear it, and you don’t have a lot of space. Go through your stuff, and find what looks good on you. What you tend to wear the most.

And for goodness sake, don’t pack a lot of shoes. I tend to go with a five pairs of shoes rule:

    Sneakers (running/exercise)
    Casual shoes (for going to class/hanging out)
    Boots (good for both rain and snow)
    Sexy Shoes (For that night you decide to look nice)
    Slippers/Flip Flops (For wearing around the dorm room/bathroom so you don’t track dirt everywhere)

Technically you could probably merge the sneakers and the casual shoes together. So, four pairs of shoes.

That pretty much handles everything, and it leaves space in your closet so you can dump your laundry basket there so it isn’t out in the open. (And a note on the laundry – while laundry isn’t fun, neither is having to deal with the fact that all your clothes are dirty, and finding yourself mining through your clothes for a pair of socks or pants that look presentable and aren’t too stinky. Try to do your laundry once every two weeks, believe me, it makes your room a lot cleaner, smell nicer, and you don’t find yourself tripping over dirty underwear.)

Ok, so there is my what has become a fairly extensive post on some ideas about packing. Naturally you’re still going to want bedding (probably want to check on what size the beds are too, since the mattresses at my school are those long twin mattresses). And make sure you have laundry detergent (and put your name on it, just in case). Keep your bathroom stuff at a minimal too – often all you get is a tiny little cubby to shove your stuff in.

Besides, if worse comes to worse and you find you really need something – more often than not your local campus bookstore or whatever will have it.

Or Walmart. Because they have everything, and they’re cheap. (Even if we don’t necessarily like them).

RailsCamp

August 4th, 2009

My macbook

I am a horrible procrastinator.  This post has seriously been sitting in various unfinished forms in TextMate on my computer, and this is the first time I’ve gotten around to posting this.  Between programing, and a week of hot weather without air conditioning that literally fried my brain, I’m finally working on catching up with everything. (Actually, I have a lot to catch up on, but let’s do it one at a time).  

 

So, what is now two-ish weeks ago, I spent my weekend without internet at the Maine MountainView House in Bryant Pond, Maine  at a little thing called RailsCamp.  RailsCamp is a very informal weekend getaway for Ruby on Rails enthusiasts (and newbies too) to get together, hack, play video games, and talk about various projects regarding Ruby on Rails.  What made this particular RailsCamp special, was that it was the first RailsCamp to be hosted within the US.

Huzzuh for us.

People Presenting on the Projector

 

In all honestly, my memory of the ride over is hazy at best – mostly because I’m one of those people who tend to pass out soon after getting into a moving vehicle.  More often than not I wake up with a creak in my neck from doing the Sleeping Head Bobble and hoping that I don’t drool all over myself.  After a few misadventures (and accidently crashing a family reunion rather than RailsCamp) we made it to the Maine MountainView House.

After getting settled in, we all pretty much camped out in the dining room and living room – every available surface taken up by laptops.  We had a local version of Twetter loaded up, and that soon became the source of camp gossip over the weekend, such topics including the rumored source of internet near a rock wall, and the possibility of playing laser tag in the nearby town (which unfortunately did not happen, since it turned out the laser tag place went out of business several months before)  For those of you who don’t know, Twetter is basically a locally run version of Twitter that you can use at places like RailsCamp, where we’re supposedly off the internet grid.  Let it not be mistaken with real Twitter – there are a lot of Twitter features that don’t work on Twetter,

Fire

but it’s a good enough for a local connection.  There was some Ruby on Rails programing, showing off of code, and me deciding that I hadn’t worked on GSoC enough due to the big drawing fest of the previous week, and thus giving into the guilt by taking my laptop off into the corner and hacking a bit on the Word Configuration program.  Dinner was pizza from Pat’s Piazza, and so we feasted.

 

At 10:41 pm on Friday night, Rock Band was brought out, and promptly failed less than a minute into Eye of the Tiger.  Naturally this was attributed to technical difficulties, which lead to several minutes of replacing the tv that came with the place with a widescreen Dell monitor.  Then it was decided the monitor was too small, which lead to me grabbing a white sheet I brought up for the air mattress that was never used as a screen for the projector.

It was an honor to know that I helped contribute to the process.  Naturally, my involvement in the process ended shortly after that to just being a spectator, and the guys eventually were able to get the sheet up on the wall using a bunch of tacks.

A silly picture, taken on the front porch, I had dyed my hair right before going to railscamp

 

 

Ground rules were established shortly after that (no smoking in the house, don’t do anything stupid, etc), and then a group of 12 of us played Werewolf (basically the game Mafia only with cards) while another group worked on a Ruby on Rails debugger tool that tells you was MySQL calls your program is about to make before it makes it.  I ended up going to sleep around 2am.

People, laptops, and chairs everywhere

 

 

Saturday and Sunday were pretty much the same in my mind, and I honestly have very little notes of what happened in those two days.  A bunch of us thought it would be fun to create Dope Wars for Twitter, so we spend a large part of the early afternoon of

Saturday discussing ideas.  We ended up switching Twetter from Pat’s laptop to a local gemcutter server, and lots of people took turns giving talks about various Ruby on Rails projects and programing practices.

 

On Sunday some of us went down to the lake to go swimming and canoeing.  It was nice getting some fresh air, and I was quite excited to note that I didn’t sunburn (quite often I turn into the Great Lobster Skin Girl).

Nights were spent around a campfire near the waterfront, where we cooked s’mores, played more Werewolf, and around 11 would head back to the house were all programing productivity was lost in favor of Munchkin, Rock Band (I sang), and a massive LAN party playing Urban Terror (to which I can officially say, I hate playing FPS on a laptop without a mouse . . . not fun)

The empty house

 

 

Monday morning was spent cleaning up, packing up, and finally heading back home and back to the world of the internet.  I have to say that I enjoyed the weekend a lot, learned a lot more about Ruby on Rails that I didn’t know before, and met a lot of interesting people.  Rumor has it that there might be another RailsCamp this winter, which would be totally awesome if I could snag another ticket to go to that too.

 

Oh, and thanks James Daniels for the pictures – since I didn’t actually have my camera on me.

Delicious Library 2

June 13th, 2009

I’ve been trying out Delicious Library 2, and I must say, I’ve fallen in love with it.  For those of you who haven’t checked it out, it’s one of the many library programs out there that help you organize your stuff, although I do believe it far outranks anything else I have previously used.  For a girl whose book collection has officially overflowed off of her three floor to ceiling bookshelves and into various boxes, having a way to organize my books (especially between moves between home, college, and wherever) is always greatly appreciated.  Now I have in the past used various free applications before, both for Windows and Linux, but since my recent switch to the wonders of Mac, I figured I might as well try out a Mac product.  And so I downloaded the demo.

First thing I noticed, beyond the sleek, pretty look, was that not only did Delicious Library 2 keep track of my books, but it also imported everything from my iTunes.  Now, I’m not saying that it was a necessary feature, honestly, if I want to know what’s in my iTunes library, I can always just click on iTunes and look through there.  However, it was the first sign of just how much information that Delicious Library 2 was prepared to handle.  Not only does it keep track of books, but it keeps track of movies, videos, and games (I scanned Munchkin on a whim to see if it would work).  Oh, and that leads me to the best part – you can use your webcam to scan the barcodes of your stuff into the computer.  When the book/movie/whatever gets scanned, the computer reads out loud the name of the item, all the while having a nifty little animation of the book/movie/whatever appearing.  (Although I still like deleting stuff, and watching the book go up in flame in the process).

Now with the demo version I was using, the scanning thing didn’t always work.  Or rather it did, but instead of scanning the random Star Wars book I was attempting to scan, the computer told me it was attempting to read Ishmael or some random help your teen book.  However, when that happens, you can always do the happy-fire-delete-the-book-thing and then search for the book manually, which was surprisingly easy alternative.

And finally, you can keep track of where your books are – whether you’ve loaned them out to a friend, or, if you’re like me, keep track of which books are in storage at home or hidden in the clutter of a dorm room, mixed in with all your room mate’s stuff.  Apparently you can also post your library online so others can see what books you have too.

So despite the few issues, I forked over the forty bucks.  The recent update to the program has actually improved performance (less misfires with the whole barcode scanning thing), and there is now an iphone app now (I think that’s what the latest update said), for all of you who happen to have iphones.

My opinion: 4 1/2 out of 5 stars.