One fateful day, VMWare and OS/X conspired to trash my
shared filesystem, losing several days of uncommitted
code in the process.
Several days of uncommitted code? We need to have a heart to heart talk about your process. One fateful day, VMWare and OS/X conspired to trash my
shared filesystem, losing several days of uncommitted
code in the process.
Several days of uncommitted code? We need to have a heart to heart talk about your process.Now we're on Mercurial and life is better.
Edit: A nice win with the Linode is that they back it up for me for $5 a month. Sure, there are solutions for the desktop too, but somehow I never got around to using one of those.
There’s zero shame in being the first kind :-)
Personally I have a mirrored drive set that I use as my primary storage, and a third disk that I rsync to nightly and use for backups of other stuff, because I don't trust that I won't have filesystem errors or controller problems that might render both disks in the mirror unusable. Then on top of that I use Crashplan to ensure I have an offsite copy.
For most of my code I also push to github or private external repositories regularly and/or pull to my laptop.
Maybe a bit paranoid, but I've had to recover from enough scary hardware and software failures over the years to not want to take risks.
One of the first thing I did when I got the new computer was to put a symlink to my projects directory in my Dropbox folder, so that all of my projects now get backed up to Dropbox automatically.
git push origin develop
for this reason, but some environments probably don't allow you to do this easily? I work alone. (EDIT: be nice to people)When you do this, much less important data is stored locally, on developer's actual machines.
Your post has got me wondering about Vim again.. :) Making the switch to Sublime Text has got me appreciating a more shell-like interface for some things.
Have you ever found yourself wanting to code and not have an internet connection? I think that's a pretty rare scenario, I'm rarely offline.
The few times I have wanted to code offline, I've also wanted to look something up >.<
Between having tethering and generally ubiquitous tethering, we should be good.
I think I want to try getting into VIM again. Is there a good resource site you like, where I can find a decent guide and some pointers on where to find some language dictionaries? Totally off topic but I'd appreciate it.
Once I got the basics down (15 minutes in vimtutor), I noticed enough productivity gains to use it immediately for note taking and scripting. Then I just decided to jump in and use it for a real project. I learn new hotkeys, plugins, and config tricks every week and I just feel my productivity inch its way up and up.
http://www.amazon.co.uk/Apple-MB167B-A-Wireless-Keyboard/dp/...
Making the Macbook Air 11" the lighter option.
I have the wireless keyboard (the older three-AA revision) and it's comparatively lighter than my 7" Tab, which is 380 g.
edit: Charlie Stross says 325 g for a four-AA revision in http://www.antipope.org/charlie/blog-static/2010/05/ipad-wri.... Macworld says 323 g in http://www.macworld.com/article/150600/2010/04/ipadwhichkeyb...
My keyboard, bought in November 2008, part number MB167LL/A, definitely takes three.
Current revision available on Apple's website is MC184LL/B and that one is well known to only require two.
Here's an attempt:
Mac lost my data
Many days of work gone
Cloud to the rescueMany day of work gone
Learn to commit more
It's the poor craftsman
Who points the blame at his tools
Y U NO COMMIT? There once was some data I lost:
Days worth of work just got tossed!
So I decided to write code
On an iPad plus Linode
Getting backups for minimal cost. you say its haiku
but you missed a syllable
in your second line crafting great software
takes many small commitments
like playing JengaCannot get to my work
Twiddling thumbs feeling dumb
The cloud went down
Cannot get to my work
Throwing birds at pigs
Three things are certain:
Death, taxes, and lost data.
Guess which has occurred.I'm using time machine for backups, so i don't think i'll lose much ... but i'm sorta hazy about how i should be using svn for all these little incremental steps. I'm uncomfortable with committing code that's going to break the whole system.
Should i be creating a branch for projects longer than an afternoon, and just committing that fairly often? I feel like eclipse's history is working okay but i have a vague paranoia i'm doing something dumb when i see comments like this.
It's also not just about avoiding data loss. If your feature starts going off-course or has a bug, you can look at previous revisions to get fixed up.
Having used git for four years, I now feel absolutely filthy if I'm not coding on a branch. If I start coding anything, I make a branch first, because the overhead is nearly zero, if I screw something up I can easily revert, and the downside of being scared to push code is too great.
Example: Yesterday I started a new feature. Step 1 was to branch from our develop branch. A bit into the coding I realized that this feature was going to take longer than expected. I committed what I had on my branch and pushed it to the remote repository (github in this case). This affects no one else, because the code is on a branch.
What really makes this possible is that merging is so easy. Branching and merging in svn was scary. I was never sure if something horrible was about to happen. With git (and hg) branching and merging is the expected behavior, and it's easy.
Always being on a branch also makes it easier to deal with interruptions. "Hey, there's an emergency, can you fix Foo?" No problem, commit what you have on your branch (or use `git stash` which is amazing) and jump back to the branch that has the code you need to fix. Need that fix in your branch as well? You can merge or simply `git cherry-pick` a single commit across branches. You no longer have to worry about the dreaded "Did I already merge this? What if I merge it again, what will happen?"
I use perforce for my daily work, and all too often I'll get to a stopping point and think to myself that my approach isn't working - usually I'll wrap my stuff up in a changelist and save the diff off to a file. Then I need to revert to latest and start my work from there.
It's not hard, but it's slightly painful, because if I wanted to try different approaches I end up having dpks lying around on my disk which have no easy relation to what they contain.
I've been tempted to install Hg and use it's branching mechanisms on top of perforce, but I'm not so sure my workplace would condone that (plus, Hg + perforce may not play well - I'm not sure).
Time Machine is great, but as others have mentioned that may not help if the building catches on fire. It's good to also have your stuff backed up at a different location, preferably in a different time zone. :-)
Edit: Like others, I use DropBox for stuff that doesn't really warrant a full-blown source control system. It's very easy to just right-click, compress, then copy the zip to the DropBox folder.
One day his VMWare went wack
So he picked up his code, went to Linode
Which now handles all of his stack
Apparently lots of people make this mistake.
Is it stupid? Maybe. Probably.
Do we need to have a lengthy discussion about it every time it is a minor part of a story or article? I'd rather not.
(I'm also not terribly worried about my Air or my Hackintosh giving up the ghost, so...)
CVS? I think I've forgotten how I used that, thankfully.