Tuesday, August 12, 2008

Introducing Rethink Columbus

As a programmer, I've been able to accomplish a lot of things by sheer effort alone. Working in this age, whenever a brick wall problem comes along, we're usually able to brute force it with a well-crafted Google search. These situations allow us to learn some things; they expose things about the language/platform that we didn't previously know (syntax/grammar) and sometimes they represent idioms of the language we're working with. But programmers cannot live by effort alone. It's time to refactor our minds.

Welcome to Rethink Columbus. The goals of this group are simple

  • Introduce attendees to diverse programming languages and styles in order to change the way they think about solving problems with programming languages.

  • Convey a pragmatic "right tool for the job" attitude toward programming languages.

  • Above all: have fun.


Rethink Columbus is intended to be a gathering place for open-minded individuals who are interested in honing their skills as software craftsman. Rethink Columbus is also part lab space. It gives us the opportunity to play with languages, platforms and concepts that we might not be able to fit, or maybe don't want to fit, into the daily 9-5. The fun part is the journey. Think of it like a cruise:

  • We'll start out with a destination; a place we can point to on the horizon. Maybe that's programming language or concept that can teach something; change the way we think.

  • Hire a guide. When it feels right, we'll bring in someone to steer the ship a bit. Provide some experience for the exploration.

  • Identify some excursions. Maybe there are a few focused exercises that can provide clear goals and more discussion points... maybe even some pairing involved?

  • Enjoy the company of others. Eat, drink and be merry! Meet people. Discuss!


I think that about does it. If you're interested, sign up for the mailing list at Google Groups and stay tuned to the website. If people are as excited as I am, maybe drinks would be in order? We'll see what happens. Thanks for listening.

http://rethinkcolumbus.com
http://groups.google.com/group/rethink-columbus

Sunday, August 3, 2008

Making Curved Lines in Apple Keynote 2008

When I was working on my slides for OSCON 2008, I really wanted to have a curved line in my presentation. Unfortunately there is no simple tool that creates curved lines or allows you to curve straight lines in Apple Keynote 2008. So I went to Google and search for a way to do it. I came up with a lot of results for people asking how to accomplish this and an almost equal amount of results saying it wasn't possible. Then I found this post in the Apple Discussion Forums. The first time I read it, I breezed through it and immediately went to test it out in Keynote. It didn't work for me. So, I went searching farther. Later in the day, after much failure, I found that posting again and read the directions more carefully and tried each step. The results were flawless. At that point, I decided that the internet could use at least one more resource on the subject, and this blog post was born. Here's the instructions on making a curved line in Apple Keynote 2008 with screenshots.

1. While working in your Keynote presentation, choose the "Draw a shape" tool by click on the "Shape" icon in the toolbar, then choosing the "Draw a Shape" icon at the bottom. Alternatively, you can go through the menu (Insert -> Shape -> Draw a Shape) to achieve the same results.

Curved Lines in Apple Keynote 2008: Step 1

2. Click on the presentation to set the first point. This is where your line will start. Then, when setting the second point, click and hold the mouse button. This will give you the ability to adjust the curve of the line. While holding, move your mouse downwards on the screen and adjust the mouse left and right accordingly to get the curve that you want. When you're happy with the curve, let go of the mouse button. Hit the Escape Key (esc) to stop the drawing process.

Curved Lines in Apple Keynote 2008: Step 2

3. Your "shape" should now be selected. If it's not (has no white boxes around it), click on the shape once. Now open up the Inspector. (⌘⌥I or View -> Show Inspector) Click on the "Object Inspector" button. Now select the drop down for "Fill" and choose "None." This will turn your shape into an empty path.

Curved Lines in Apple Keynote 2008: Step 3

4. Last, select the drop down for "Stroke" and choose "Line". This will make your line look like a real line. At this point you're basically done!

Curved Lines in Apple Keynote 2008: Step 4

5. From here, you can customize your line line any normal line. In my example below I added a 15px stroke and an arrow head on the end point.

Curved Lines in Apple Keynote 2008: Step 5

Enjoy!

Wednesday, July 23, 2008

Slides from OSCON2008

Intro to Ruby Web Frameworks


Commanding Your SSH Universe with Capistrano


I will update this after my Capistrano talk. (read: slides still need work)

UPDATED: Capistrano talk slides uploaded!

Monday, July 21, 2008

Come see me at OSCON 2008


OSCON 2008


If you see me this week, please come up and chat for a bit! If you're even more adventurous, come and see one of my talks:

Tuesday, July 15, 2008

Easier Capistrano Deployments from Github

I've posted an article this morning on the Edgecase Blog about our experiences in updating our deployment strategy after moving from a self-hosted centralized git repository to Github. Enjoy!

Easier Capistrano Deployments from Github

Thursday, April 3, 2008

Git branches for storing project assets

Background: So I'm starting up a personal project. This is a the first of which I'm going to do completely on Git hosted at github. I'm really excited because I've been using git at work, and I have been watching github come to life on the sidelines. But all was not well in git-ville. In my projects, I tend to do a BUNCH of Photoshop mockups and slice them into HTML to "prototype" designs/layouts and I like to keep them in version control if possible. In Subversion, my repository would look something like this:


- _design
|- assets
|- mockups
- branches
- tags
|- myapp_0_1
|- myapp_0_2
- trunk
|- app
|- config
|- db
[Standard Rails Directories]



Unfortunately there's some problems with this kind of setup in Git. First, what we've come to know and love as trunk in Subversion, Git refers to, more or less, as the "master" branch. So there's no way to create some top-level directory above the root of my app to handle "odd" files.

Another option I thought of was just keeping a "design" folder in the root of my app, but REALLY didn't like that. Dirtay! The idea from the beginning is to keep these files separate from my actual app. And then when deploying I'd sure as heck want to make sure that I either 1) didn't get those files when pulling (which I'm pretty sure would be have been next to impossible) or 2) setup some sort of script to delete that crap out of my release directory as part of deploy process.

In the spirit of Git, why not create another branch to track the odd files? (git checkout -b designbranch) Is that one of the things that Git is supposed to be really good at? Yes, but part of the idea of branches is that they share a common history. git checkout -b designbranch is the same as git checkout -b designbranch HEAD or git checkout -b designbranch and that's not what I want, but it seems like the best plan with a little bit of deleting... and hacking... and ABSOLUTELY no merging.

My Solution: I decided tonight was the night. I needed to do something to get this done. I made a little mention of this at the office explaining to Jerry, who's going to help me out on the design stuff, what the plan was. Chad then interjected with the idea that Git was capable of making blank branches. Wow! That would be great. But a quick look at man git-branch left me wanting. There was nothing there that looked like you could create a blank branch.

Fast forward to "free time". So I'm ready to do this thing, and being the Git newb that I am, I wanted to make sure that I was creating this branch properly so that it would work with my github setup and subsequent clones would have access to the branch in the proper manner. I stop by one of my favorite git usage guides, and that pretty much had what I wanted, but it still didn't feel right, so I moved onward. After Googling at bit I found an article with a very interesting title: Creating a git branch without ancestry. Jackpot! This is exactly what I needed. And, after a few tests, rm projectdir; git clone git@...project.git and some success recreating this in /tmp here's what I came up with:



# standard github project setup
mkdir myproject
cd myproject
git init
touch README
git add README
git commit -m 'Intialize repo'
git remote add origin git@github.com:ryanbriones/myproject
git push origin

# add design branch
git symbolic-ref HEAD refs/heads/design
rm .git/index
mkdir assets mockups
echo 'Placeholder.' > assets/HOLDER
echo 'Placeholder.' > mockups/HOLDER
git add assets/ mockups/
git commit -m 'Initialize design branch'
git checkout -f master
git push origin design:refs/heads/design

# after making changes in design branch, push with
git push origin design



And so far I'm happy with this, but of course, if I run into any issues with this, I'll post something about it. Enjoy.

Friday, March 21, 2008

Stephanie on Etsy

So I've been a little lazy about making this blog post. Ok, really lazy. I've been trying to convince my wife Stephanie for a long time to post her notecard crafts online and try to make a little money at it. We were almost there one time, but I failed at "e-commerce 101". Luckily, one of Stephanie's coworkers picked up the torch where I left off and had a much more adept convincing power.

Stephanie created a site on Esty a week or two before Valentines Day and since has put up some wicked cool notecards. I'm personally keen on the Repurposed Magazine Envelopes with Notecards. You can't pack that up in Hallmark!

So, if you've got a few extra dollars just burning a hole in your pocket, consider buying some notecards for you or one of your loved ones. Money well spent!