Fun


I was sitting at the Lone Star Ruby Conference and during one of the workshops the speaker mentioned we could find a pair programming partner for the next segment of the workshop. Being a little shy and the only person I knew there was with his co-worker, I thought it would sure be nice to easily find a pair programming partner! During the break I had this idea and bought rubypair.com … I had hoped that during the conference I would find someone that also would share my vision and keep me on task to finish it. I had heard Evan Light during his talk when he mentioned has has open “office hours” where you can make an appointment to pair with him. So I found him and told him of my idea. He liked it and we agreed to pair on rubypair on the last day of the conference. We were trying to get it done so we could demo at the lightning talks but we kept wanting to try new and shinies (rails 3.1, sass, compass, mongodb etc) that we didn’t make it in time! But we made some progress and said we’d pair remotely to work on it.

The next weekend we set up time to pair on it and we worked through somethings. I was pretty rubied out though having spent the weekend prior to Lone Star Ruby Conference at an all night-hack fest in Austin. Evan took the bull by the horns (yes I live in texas now!) and worked out more kinks, David Browning did the logo and site design and Evan implemented it with SASS and Compass. Others helped out almost immediately and we had pull requests! We deployed RubyPair.com on Sept 3! See the Contributors list for the growing list of contributors.

Give it look and never code alone!

Repo: https://github.com/rubypair/rubypair
Tasks: https://github.com/rubypair/rubypair/issues

I don’t know what else to call this post, I’ve been doing a little bit of everything in past few months. I’ve changed jobs and thats taken much of my freetime to ramp up and get going on new projects. SO, I will write up a little of what I’ve been doing.

Facebook — Yes, I worked on some facebook projects. Some were fan pages and some were applications. It was pretty interesting, I hadn’t done much with facebook other than get addicted to some stupid games (Yes, cafe world, i’ve quit again.. for now..). Developing on facebook can have some frustrating moments, as if you are using FBML, then facebook takes liberty to rewrite things at will and not give you much information on errors. Programming in FBML can be irritating but, when using iframe in an application canvas url… its pretty cool because then you can code in the familiar word of jquery. The new stuff coming out like the social plugins/widgets is pretty handy.

Python — Yes, I like to gripe about python and the sometimes functional and sometimes OOP nature of it. But.. I worked on a project where they already had apps in python and they weren’t interested in supporting a rails app, I am not interested in supporting a rails app (they didn’t want to use heroku) so.. python it is. And postgresql … I had more problems with postgresql then python. We had our moments but we are good now. I just needed a lightweight framework so I used web.py which is pretty similar to Sinatra for Ruby. So, that was pretty good. I didn’t find it as irritating to program in python as I thought, it didn’t bother me about the intenting/whitespace at all.. and only a few times I forgot the : at the end of a block statement.

PHP — I tried Zend Framework.. I did PHP for 6 years of my life, never really gave the MVC framework from Zend a fair shot. So I set out to give it a whirl, I started working through the tutorial on zend .. when I got to the part where I had to do all this coding to setup the database.. I was like, ack, i can’t take it. I am not going to knock it if you like it..but its not for me :)

Grails — Yes, I’ve always thought that other frameworks that try to mimic rails FAIL. I haven’t gotten too much into grails, but.. so far I haven’t run screaming. Hehe. One thing I noticed.. the first time you run the app, it will go ahead and install all the plugins. No need to run something like bundler or rake gems:install … it has meta-programming aspect because of Groovy, so I think that it might be successful where other frameworks zend, cakephp, etc don’t quite cut it for me (I’ve always held fast to the reason that rails is so successful is because its made with Ruby).

Groovy — This is the scripting language that Grails uses… it compiles to the JVM and i haven’t quite got it all figured out .. but i found this Koans to learn the language (I love ruby koans and go back every now and then and work through them)…I know that if I knew about groovy when I was doing java a few years ago I would have been alot happier. Java just requires so much typing, ack. Groovy (although i think it could use a better name) might make java programming fun again…

Javascript — Been doing more javascript/jquery. I’m always on the lookout for for screencasts/tutorials and I subscribed to ThinkVitamin. They have great tutorials on css/html5/javascript and a growing section of frameworks. Its 25 a month but I think its well worth it. They have a series now about making an HTML5 game .. exciting!! I’ve been looking at javascript game frameworks. Keeping a collection of options in mind for when I figure out what kind of game I want to make.

Misc — I finally got the Seven Languages in Seven Weeks by Pragmatic Programmers. When I first saw it, I squealed with delight but held off buying it till I had some time to dig in. I got it, did most of the ruby which I knew most of but it was good. Now I am working on the Scala section. I was listening to the Java Posse podcast and heard the excitement and joy in Dicks voice, so I was intrigued to find what is scala? Once I tried it, I understood his excitement. Scala has clear syntax (like ruby) and one thing I like for learning an interactive console…the completest (or maybe its compulsive crazy person) in me is not wanting to try the others until I finished the Scala section.

My <3 still belongs to Ruby, but I like to try out other things from time to time...I basically strive to use the best tool for the job and sometimes that means using whatever is going to be supported (as in the case of using python for one project) or one that is already in use (the grails site I am working on) and I don't want to begrudge anyone on their choice of languages.

And Happy New Year!

Go forth and program!

Seems like Pair Programming is “all the rage” lately in my circles. I haven’t exactly done it before but after hearing about the success and rapid knowledge growth amongst those that pair program…I was almost dying to try it! Especially after i saw David Chelimsky and Corey Haines at WindyCityRails in Sept 2009. I saw them pair and do BDD with Rspec/Cucumber and it was so fascinating, It was like I was watching a ballet as they hopped from RSpec to Cucumber and back and forth. I was like, wow…I wish I was that good! I would have paid good money for a recording of that so I could watch it again and again! I see Corey Haines traveling around pairing with people too. Some people get together and play cards, but Corey gets together to code!

So ok, I like code, I like people, I want to try it! I live a little south of Chicago so its a long commute and it seemed everyone was so busy to pair in person when I asked. I asked on Devchix mailing list for suggestions on how to do pairing online. I had found a few, and the group had some good suggestions. I even had a volunteer to try it with me! This week aimee and I set a few hours aside to try it and see if we could do it!

This article was also sort of “paired” as it was written from my perspective with input and suggestions from aimee!

We asked on Devchix mailing list for suggestions on how to do pairing online. I had found a few, and the group had some good suggestions. I even had a volunteer to try it with me! This week aimee and I set a few hours aside to try it and see if we could do it!

After introductions on Skype we set about getting a shared environment in which to code together. Ideally, we wanted some kind of desktop sharing so we could run tests, console and editor.

We had heard of a few tools and got suggestions from the devchix list:

IChat desktop sharing – we couldn’t get this to work, we did different things and it would appear to connect but then it failed. I tried to mess with settings for Sharing on mac, but nothing doing.

Rio seems to be a library to make collaborative apps, not to use in a pair programming environment.

BeSpin was hard to use.. we couldn’t figure out exactly how to use it. It almost seemed to offer to import the git repository we were working on, but then it said it only supports Subversion and Mercurial, not git.

SubEthaEdit worked but we would have to open each file individually and share each file… unless I was missing something. This would be fine for collaborating on a single file but then we could not share the test runs, terminal commands or view the browser together.

Etherpad – we didn’t end up trying this but I have used it before to debug some code or try out ideas with a friend. They recently got bought by Google, so it would be interesting to see what they do with it. This would suffer the same limitations as SubEthaEdit in that it’s just a text editor.

GoToMeeting (which is $40-50/month) its a little steep for the open source work I want to do. But people say it works really well.

VNC and Unix Screenaimee had used this successfully before but since we weren’t on the same network, just our laptops at home, we weren’t sure it how we could make it work easily.

Then we came to TeamViewer which worked brilliantly! We shared desktop and I could type in aimee’s console window, see the tests running and type in textmate. Even with aimee on her Dvorak keyboard and I on Qwerty! I could type fine but couldn’t copy/paste with keyboard shortcuts so I used the mouse to copy/paste and it worked fine.

All in all, it was an awesome experience and I picked up on a few tidbits of knowledge from aimee on git, and rake! I had some bits of code from another project i was able to quickly copy/paste and get us rolling. We had a few discussions about coding style as we went.

Since aimee was more familiar with the codebase, she mainly wrote the behavioral specs and I wrote the code to satisfy them. We plan to switch around next time, when we pair on a different project that I’ve been developing for a while.

Lately, I have been fascinated with Google Web Toolkit as of late. What you say, you love ruby but doing java?!!? My ruby friends will probably smack me but really i love all languages. The widgets and rpc stuff, that is pretty cool as well as learning how to do MVP. There are some new features in trunk that will be released “this fall” but I don’t want to wait that long, so last night i set about to checkout and compile trunk and try it out!

1. I installed the latest version of eclipse Galileo, with the Google plugin

http://code.google.com/eclipse/

2. Checkout the source code

http://code.google.com/webtoolkit/makinggwtbetter.html#workingoncode

Make sure you have ant installed. It takes awhile, i think maybe 20 mins or so on my macbook.

3. Setup the API directory in the Preferences for GWT
It took a while (and many searches) of messing around to figure out how to switch to the trunk version of the API.

Go to Eclipse > Preferences. Find the Google Web Toolkit on the left. It has an interface to add/remove APIs. Click add, add the path like so:
~/gwt/trunk/build/lib
I named it “trunk”

4. Create project
Create a new Web Application Project, select “trunk” as the version of API. And now you are on your way!

Once i’ve done a little more with it, I’ll write about some of the new features that are really awesome.

Even though I don’t do ruby at work, I do it for fun on weekends. I paid for my own self to go to the WindyCityRails conference and tutorial on Cucumber, RSpec Testing. It was well worth the money!! Not many things can get me to go up to Chicago early in the morning and on a weekend!

I went to a 3 hour tutorial class “Behaviour Driven Rails with RSpec and Cucumber” … in my limited time I can spent with I’ve had a hard time getting my head around cucumber. I did rspec alot a few years ago, so thats a piece of cake. David Chelimsky and Corey Haines. 4 days before the conference, they sent an email to attendees of the tutorial with a list of resources to read and libraries to install. I worked all week on watching railscasts.com videos on cucumber, factories, testing. I always like to try things out myself first, then I am familiar with it when I go “to class” :) Dave and Corey did the class pair programming style..which was totally fascinating. There was one laptop, two wireless mice and one wireless keyboard. Dave typed on the laptop keyboard and Corey typed on the external keyboard. One would talk and explain things while the other typed. They took turns. It was really awesome. After watching them program, then they told us to split up in pairs and do the same thing for another scenario. I was sitting between two people so I kinda bounced between them. The one on my left didn’t have the same version of rails, so he typed on my keyboard and we took turns. It was awesome, I had not really done pair programming quite like that before. They bounced between cucumber tests and rspec tests. I wish I could have recorded video and played it back in slow motion!

The regular talks:

Better Ruby through Functional Programming
Dean Wampler, Object Mentor, Inc.

I started to learn haskell once.. bought the O’Reilly book (which is excellent with little exercises)… but thats as far as I got with functional programming. This talk was interesting with code samples of ruby. We were challenged to learn a functional programming language. He mentioned others like scala, erlang … hmm what to choose!

Super-easy PDF Generation with Prawn and Prawnto
John McCaffrey, Pathfinder Development

I have not had to make PDFs with ruby yet…but now I know there are some great libraries. Cool part of this is John was making a PDF of a ruby app, pulling in twitters happening at the conference and using Googles graphs APIs to make pretty graphs! I saw alot of people saying “I didn’t know that Google had graph APIs!!!” :)

“Comics” Is Hard: On Domains and Databases
Ben Scofield, Viget Labs

When the talk started Ben asked for a show of hands of who reads comics? I meekly raised my hand. My husband is a comic book fan and I read them on occasion. I sat at his table for lunch and he asked me about it. I was surprised he saw my hand, iwas sitting near the back! This talk didn’t have much code, but talked about the number of attributes that comic books have (title, issue, theme, publisher, etc) and how hard it was to model in a relational database. He talked about couch db, mongo … i haven’t tried any of those, but I might now that I know it can be the best choice for some data sets.

Rails 3 Update
Yehuda Katz, Engine Yard

Yehuda talked about whats coming up in Rails3. But by this time I was kinda brain dead and was trying to make plans for dinner!

Devchix!!!
A few of the local chix came to the after party and hung out. There was a few at the conference I had not met yet and a few I invited to join! It was awesome. It was so fun. I caught up some of my ruby buddies I hadn’t seen in awhile and made some new friends. I was sad to see it end…

Not sure!

I’m done with school for the summer and trying to decide on …

- working on a site in rails (haven’t done much rails in the past year.. ::cry::)
- learning more about GWT (Google Web Toolkit)
- making an android app, i started a few but haven’t gotten very far
- trying antlr (http://www.pragprog.com/titles/tpantlr/the-definitive-antlr-reference)
- reading a sort non-tech book like Pragmatic Programmer or http://www.pragprog.com/titles/cfcar2/the-passionate-programmer

I picked up another copy of Getting Things Done.. i had given the book to my mother and bought it on audio book. Is such a nice sized little book (paperback).

I’m watching the git peepcode again.. haven’t used this in a little while. Man if you don’t use something you lose it! All I’ve been doing lately is perl and mason. I read a bit about using git to use your svn repos but i am not so sure its worth it??

More later… when i figured out what project to work on. Suggestions welcome!

I am trying to teach my husband Nick some programming. He has tried before but he always loses interest before we get more than a couple sessions. He finally found a problem he was interested in solving. He wants a program that will tell him the most efficient way to organize his vast dvd collection. Keeping series together in a binder and leaving blank spaces for DVDs yet to be acquired. Then no more shuffling will be needed later when he gets the other DVDs.

He was confuse with some of the terms I was using …

Loop
Ok so we start simple, just reading a hard coded file name and looping through and printing the csv row from the file. He was like “loop?” thinking that we were going to start at the beginning, go to end, then back to the first which didn’t make any sense! He was like why are we looping?? Oh, hmm. I guess we aren’t really looping. We are more like walking through the file and printing each row of data

Why do we use the word loop?? it not really a loop? What is a better word?

Dictionary.com says (among many defintions) :

1. a circular area at the end of a trolley line, railroad line, etc., where cars turn around.

2. an arm of a cloverleaf where traffic may turn off or onto a main road or highway.

3. Computers. the reiteration of a set of instructions in a routine or program.

Iterate

I also use the word iterate interchangable with loop. “We need to iterate though this list and find X value” Nick was saying that iterate is when you review something. What do you think?

Dictionary.com says:

1. to utter again or repeatedly.
2. to do (something) over again or repeatedly.
–verb (used without object)
3. to operate or be applied repeatedly, as a linguistic rule or mathematical formula.

Do we as programmers abuse the english language and come up with our own dialect?

My large beast of a 17 inch Sager laptop is now a desktop. I opened it 1.5 weeks ago to have the hinge snap out on me, a month after the 1 year warranty! doh! I’d been wanting to get a smaller laptop since I’m on the go so much, but was juts waiting for the right time. The large laptop is still in good condition, just no good for transporting. So, Nick ordered me a new one and it arrived yesterday and I have it mostly configured.

The brand is Crown and I ordered from PowerNotebooks.com and its great. It came naked so I could install the windows I already own (decided not to get vista, mostly what I do these days is run linux in VMs) and not have a load of crap on it like aol, et al. Its a 2Ghz dual core with 2 GB memory and 80 gig hard drive. Plenty of space for my VMs – was a bit cramped on 40GB on my older one. Its weighs just 5.6lbs with battery and I think will work out great. Since I have destructive tendencies it seems, Nick got the 3 year warrenty for this one!

It seems that some people misunderstand my love for language as having no focus.

I like going to usergroups and meeting fellow geeks – in my free time … I like learning languages – its fun. Some people collect stamps, or thimbles, or pencils! I collect languages.

What do I do?

Carry your towel with you throughout the day to show your participation and mourning.

When do I do it?

May 25th.

Where do I do it?

Everywhere.

Why a towel?

A towel, it says, is about the most massively useful thing an interstellar hitch hiker can have. Partly it has great practical
value – you can wrap it around you for warmth as you bound across the cold moons of Jaglan Beta; you can lie on it on the brilliant marble-sanded beaches of Santraginus V, inhaling the heady sea vapours; you can sleep under it beneath the stars which shine so redly on the desert world of Kakrafoon; use it to sail a mini raft down the slow heavy river Moth; wet it for use in hand-to-hand-combat; wrap it round your head to ward off noxious fumes or to avoid the gaze of the Ravenous Bugblatter Beast of Traal (a mindboggingly stupid animal, it assumes that if you can’t see it, it can’t see you – daft as a bush, but very ravenous); you can wave your towel in emergencies as a distress signal, and of course dry yourself off with it if it still seems to be clean enough.

More importantly, a towel has immense psychological value. For some reason, if a strag (strag: non-hitch hiker) discovers that a hitch hiker has his towel with him, he will automatically assume that he is also in possession of a toothbrush, face flannel, soap, tin of biscuits, flask, compass, map, ball of string, gnat spray, wet weather gear, space suit etc., etc. Furthermore, the strag will then happily lend the hitch hiker any of these or a dozen other items that the hitch hiker might accidentally have “lost”. What the strag will think is that any man who can hitch the length and breadth of the galaxy, rough it, slum it, struggle against terrible odds, win through, and still knows where his towel is is clearly a man to be reckoned with.

Next Page »