Fun


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 Screen - aimee 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.

I love it.

Thats all I can say.

I had a brilliant idea today. I tried to get a client to consider RoR and got the expected response. Hey, I’ll make a Framework called “Makin’ Do” here’s a list of features I’ve come up with so far:

  • PHP 4.0
  • MySQL 3.17
  • No Pear
  • Does not include any ridiculous testing apparatus (who needs it anyways?)
  • No template system needed
  • Database migration tools? that’s a self-service feature, best way is to just keep it in your brain, then you don’t need to worry about backing it up.
  • Mixes PHP and HTML saves on the number of files you need. Less files you have the better.
  • Uses extremely long file names, that way you can tell what’s in the file without even opening it example (”/department/officemanagement/administration/catalog/springCatalogUpdatePage.class.php”)
  • Design patterns make it hard for mere mortals to understand, therefore you will not find any in this framework.
  • Uses PHP Globals. Less typing then instead of hammering out $_POST, $_REQUEST, and $_GET

So how bout it?? did I miss anything??

And I think I will even make it a commercial product, since this is just the sort of things corporations dig!

There. I feel better :)

Next Page »