Showing posts with label git. Show all posts
Showing posts with label git. Show all posts

Tuesday, May 31, 2011

Project 1, rolled-off.

Friday was my last day on my first TW project. What have we learned?

Handover is very important, but with practice it can be done well with little effort. One centralized repository for knowledge is good, although in this case it's more like a combination of Mingle and direct email.

Turning a temporary build server off and back on again will teach you everything about how to set up new ones- also, where the script to do it is. Scripts are wonderful. I think that automating everything using Puppet would be even more wonderful.

Servers without enough space on them are an enormous nuisance when testing giant data import tasks. How to fix this: ask nicely. Also, back channels of communication.

Never assume that you know what an error message means (in Resque tasks, one task can fail because of a parsing error, without the rest of them failing. This happens when there is a small anomaly in the data. You don't need to fix the anomaly in order to finish running the test.)

Developers (well, me) are much happer when they get comfortable chairs, and floors with no holes for chairs to fall into.

git:// vs git@ is an important distinction: the first one gets a read-only copy, the second gets read-and-write. Your build server needs the first one, your development machine needs the second one. The second one throws interesting authentication errors against some firewalls. (I haven't figured out exactly what happened there yet.) When git clone fails and you're in a hurry, you can just scp over the most recent version from a different machine. This is deeply suboptimal because git pull will fail either consistently or sporadically, depending on your firewall configuration.

The db/data directory in a rails app is my favorite because you can auto-generate rake data import tasks by putting things in it.


RHEL (RedHat) 5.5 has no package for git. Use wget, configure, and make. Pick your favorite package version. http://kernel.org/pub/software/scm/git/


Always put your hardware diagrams and reference scripts in the repository. 


If you have problems with unstable commits, label the obviously unstable and obviously stable ones. Git tag is a great command. 


Making a diagram of iOS certificate signing is difficult, can be done in many different ways, and although ideally it would explain itself that is so far not the case; it's just a very useful visual aid to a question-answer session.

Mongo shell is a lot of fun.

Hotdogging someone's computer by making it easy to lock the screen is acceptable. On OSX, do this by:
System Preferences, desktop/Screensaver/, hot corners, put display to sleep (in one of them). Then, System Preferences, Security, Require password immediately after sleep or screensaver begins.
"Hotdogging" is a colloquial term for "doing something to an unlocked computer to point out to the owner of that computer that they shouldn't leave their computer unlocked"

If you have trouble hearing on the phone, there are several easy partial fixes:
  1. use Skype (better sound quality)
  2. email the topics that you heard discussed to someone that was also on the call and ask them to fill in gaps
  3. get a hearing test 

Evernote will take over your life and become your primary external brain storage, but it will make you soooo on top of things. So it might be worth it. I would recommend using the opensource clone Nevernote instead; it has cooler features.

Pre-built secure RPMs exist (you'll probably want to make them yourself?) and you use them for your production machines. To prevent surprises, also use them in advanced testing.


Screenshots are beautiful, essential things when you are working in distributed teams. They reveal communication empty spots which you might have otherwise discovered at a less convenient time. Send them daily. Request them daily. They don't have to be fancy.

Rands in Repose wrote a very excellent book called Managing Humans and as a developer I enjoyed reading it; it discusses some very useful things about communication styles which were directly relevant to things I was having trouble with. (See above re: phone calls and distributed teams)

Friday, April 1, 2011

installing git on CentOS 5.3

(required in order to get many many other useful things)

sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
sudo yum install git

that link will change depending on your version of CentOS, and of course it changes over time. Look it up at https://fedoraproject.org/wiki/EPEL

Thursday, February 3, 2011

Iteration 2, Thurs

Hibernate is an interface layer between Java (or .NET) and a database. Saving a change in a record in a table from Java through Hibernate to a database is as easy as creating a Session, then a SessionFactory which is a new Configuration, which you configure using buildSessionFactory. The session is your new factory, and you open a session with it. Then, create a new transaction which begins a transaction in the session. 
Dog dog = (Dog)session.get (Dog.class, new Long(1)); 
Then update your object, say Dog, with the parameters you want, like .setBark and .setFurColor. Then use the .update function of your session, the .commit on your transaction, and finally close the session. 

CCMenu is a nice small and clean build monitor. And it turns out that with a plugin you can rig it up to play a music clip which changes depending on whether the build is red or green. 

Git is an interesting beast. Hard reset is useful, and revert is easy to misuse but is still the best way to fix a broken build and get out of everyone's way (if it's not a merge that you're trying to revert).  Fetch is useful for seeing the differences between your most recent pull and the most recent state of the origin master without having to commit and stash your local changes to prevent being overwritten.




Friday, January 28, 2011

Iteration 1, Fri

Today I spent a large amount of the time discussing analytic paths and the site visit yesterday rather than coding/configuring/scripting.

Git is a complicated beast which enables many fantastic data exchanges when you use its higher level commands and setting modifiers. I have found no tutorials particularly suited to my usage needs, although this one was informative.

I installed and spent some time using Wordpress today. Also, I learned some things about path errors in OSX and thus about .bashrc and .bash_profile.  

Tuesday, November 2, 2010

Amp talk @ ThoughtWorks

These are straight notes taken during the presentation and posted during the clapping. They may be updated later to add explanation and details. Presentation: 6:30pm-7pm, + questions.

Talk is by Justin Love
AMP: Mercurial.

His first version control was http://en.wikipedia.org/wiki/Microsoft_Visual_SourceSafe ...soon learned better. had to let Windows ppl in, so used Hg (git was no-windows in 2007)

Michael Edgar, Ari Brown. User seydar
Current version: Amp 0.5.3

Starting to implement git support. Which is hard. Started over and scrapped the old one. Learned a lot. This time: modular. Amp frontend. Git is written in C. Mercurial is written in Python. Monotone is in C==, SVN is in C?

There's not much from Ruby on here. http://en.wikipedia.org/wiki/Comparison_of_revision_control_software and part of the manifesto is to change that.

briefly mentioned

Amp will be somewhat like ActiveRecord? In that it translates...

Talking about the rebuilding of Rails 3 around modularization. Common api to things.

Showing off the ability to modify/rename commands. Also looking @ code.

This is using Trollop. What's Trollop? http://trollop.rubyforge.org/ "A commandline parser for Ruby that gets out of your way. "

Discuss billing command parsing... "estimate time spent" How many ppl here just understood those last few slides? (about implementing billing estimate using amp)?

in amp, a command will be defined as a class. Can use Ruby built-in modules to customize commands. (hwa?)

git output- not standardized. Many problems. Get around this by amp-grit instead of amp-git? http://grit.rubyforge.org/

I would like to see the version of the manifesto. Link?

There's a guy w a fancy camera taking pics. I want a camera like that. I wonder where the pics will be posted?

Questions:

Q svn will be supported?
yes. problem yet to be tackled. svn workflow is very different... haven't addressed problem yet.

Q what distinguishes amp? what makes you choose it over Hg? or a different system?
It's a general system. Well, it will be a general system. "Ignore the ppl who don't care right now."

"This is my RubyConf talk, I have to add 15min to it, so give me suggestions.

To present at one of these things, talk to chicagoruby.org via email.
Elephant and Castle now.

Monday, October 11, 2010

Legalese

Format legal code in LaTeX, run all modifications through github. Rancorbeast's idea. Implementation...