weblog.masukomi.org

mah-soo-koh-me

 

As the neutrino flies… September 28, 2007

Filed under: Uncategorized — masukomi @ 6:41 pm

Defective
Yeti
has a
Cliche
Rotation Project
going on. Trading in the old cliches for new shiny ones.





I just made the following submission: As the crow flies -> As the
neutrino
flies.



The problem with crow flight is that it is still subject to going around
skyscrapers, mountains, etc. Neutrinos, on the other hand, don’t have such
problems.

 
 

Ebony’s Thought Process September 23, 2007

Filed under: Uncategorized — masukomi @ 6:45 am

Khoi Vinh
flow
charted the thought process of his dog
(Mr.
President) which got me thinking about the thought process of my
dogs. 
Bandido’s
is entirely too complex to flow chart, and I only understand small bits of it,
but Ebony’s has always been relatively simple and it seems that the limitations
of her rather ancient body have simplified it even further. So, being the type
of person who enjoys making flow charts I figured it would be fun to map out the
way she thinks. But, there are a couple things you need to know to fully
appreciate this. First of all,
Ebony
will be 14 in a couple weeks (I’ve had her since she was one), and she’s a Great
Dane. Officially Great Dane’s live about 9 to 13 years, but it’s my impression
that it’s pretty rare to see one older than 10. Combine that with those
long
legs
and you’ve got a dog who has a lot of trouble
standing, or sitting, or laying down. Stairs with more than five steps are no
longer and option (she falls down) and the only reason she’ll deal with those
short flights is that she couldn’t get into the house without being carried if
she didn’t, and she really doesn’t like being picked up. That and she knows that
I’ll catch her when she starts to fall trying to go up those which happens at
least once a week.



So, without further ado, I present to you Ebony’s thought process:



 
 

What makes you so special? September 17, 2007

Filed under: Uncategorized — masukomi @ 2:06 am

Seriously. What makes you so special?

It’s not that you’re brilliant, because, statistically speaking, you’re not.
Sure there may be one or… maaaybe two brilliant people reading this. But, the
odds are that you aren’t them. So what makes you so special?



The way I see it there are three types of people:

  • The people who are brilliant.
  • The people you look up to.
  • Everyone else.

And, since it’s safe to say that you’re not brilliant, you’re either someone
people look up to or… someone else.



So, what  makes you so special?



Are you actively pursuing your dream? Are you fighting for a cause you believe
in? Are you actively trying to be the best you could be at whatever it is you
do? Or, are you like everyone else?



I work with coders, and I am happy to say that most of the people I work with
are really smart, and really good at what they do, but there are very few whose
work I would want to emulate. They’re like “everyone else.” And that’s not bad.
That’s, in fact, quite normal. But, do you really want to be normal?



Maybe the “normal” people around you lead passionate and powerful lives when
they leave the office. I’d like to think they do, but I think most of them
don’t. The sad fact of life in the USA is that you are defined by your job. Your
job takes up the vast majority of your waking hours. When people meet you they
ask what it is that you “do” and, if you’re like most, you answer with your job,
because it’s not just others that define us by our jobs. Artists are one of the
few exceptions to this. When you ask an artist what they “do” they’ll say “I’m
an artist.”, or “I’m a painter.”, or something like that, even though art is
rarely what pays their rent or puts food on their table. I say this is a “sad
fact of life” because, in the USA at least, people generally don’t love their
jobs. They generally do something they happen to have skills for, or work in a
position they happened to fall into. If you’re like most people your job is
something you do to get money to pay the bills. Are you really happy about the
idea of spending the rest of your foreseeable future doing what you’re doing?



When I started writing this, as with most things I write here, I was thinking
about coders and the type of code they leave in their wake. I was thinking about
the type of people in my professional life, and I was going to make a point
about the type of code that you write. But, I think the code you write is more a
symptom of this larger issue. There are a lot of talented people I work with
but, I think, for the most part, they aren’t passionate about what they do. And
if you’re not passionate about what you don’t have a personal investment in the
product of your labor. Sure you want it to be good enough to not get fired but
beyond that I wonder how many of you really care. And, I’m not talking about my
current job, I’m talking about everyone I’ve encountered. I think my office
would be a very empty place if all the people who were just “going to work”
suddenly disappeared.



I have been dealing with code that just “gets the job done” for years.
I’m guilty of writing enough of it myself. I’ve written a lot of crap too, much
of it because I was young and ignorant, although I’m sure I’ll write more crap
in the days to come. And, for all those who have had to deal with my crap, I’m
sorry. I’m sorry I didn’t realize what it meant to be the best I possibly could.
I didn’t realize the difference between “quality work” and “work”. I was like
most of you; agreeing with the smart people about the way things “should” be
done but never getting off my ass and doing it.



But, I realized something. I realized that it is not enough to want to be
someone worth looking up to. It is not enough to want to do or be better. You
have to act. You have to actively work towards these things and that’s
where most people fail. They think that doing is harder than saying. But it
isn’t. It really isn’t. The key is to get your ass out of bed and do it. Every
day. That’s it. It’s not a hard thing. Build the best damn house you can. Be the
best damn parent you can. Be the best damn coder you can. And every time you see
yourself slacking you need to go back and fix it, make it the best thing you
can. Maybe you’re not great at what you do, but you are the only thing
preventing you from being the best you possibly can be at what you do, and if
you keep being the best you can be, you’re just going to keep getting better.
All you have to do is hold yourself to your own standards, accept nothing less
than the best from yourself. How hard is that really? If you look at something
you’ve just done and think, “I really should have done x”, then go do x. 
Don’t just move on and accept something you know isn’t right, and don’t allow
yourself to keep making the same mistakes. Learn from your actions, so that next
time you can be better. Make a promise to yourself that you won’t accept
anything less than the best you can do. When you find yourself slacking go back
and fix it. Repeat.



I want to be someone worth looking up to, not because I want your admiration, or
even your respect (although that would be nice), but because I have to live with
myself and I am not OK with being another schlemiel, and neither should you.



So, what makes you so special?

 
 

The Cheese Pizza Cell Phone September 15, 2007

Filed under: Uncategorized — masukomi @ 2:19 am

For those of you who were wondering: recent research plus years of entrepreneurial experience has brought me to the conclusion that combining the tasty goodness of cheese pizza with this generation’s must have gadget (the cell phone) will not produce the next multi-billionaire. If you disagree, please feel free to take the idea and make as much money as you can from it.

 
 

Do you want them to love it or just use it?

Filed under: Uncategorized — masukomi @ 1:57 am

I’ve been sitting on this post for a few days, pondering if it was worth
releasing or if I was just beating a dead horse. I’ve come to the conclusion
that it is worth releasing but not to point out how much Perforce sucks but to
act as a very concrete example of the difference between applications that care
about how you use them and applications that don’t, about how the words you
choose can make a big difference in usage, and how your current position affects
the perception of your actions.



Renaming/Moving a file in
Darcs:

darcs mv bad_name.txt
decent_name.txt


“mv” is known to millions of linux/unix geeks but even so it looks like they’re
renaming the command to “move” just to be even easier.



Renaming/Moving a file in
Mercurial:

hg rename bad_name.txt
decent_name.txt


Can’t get much more obvious than that.



Renaming/Moving a file in Perforce:

p4 integrate bad_name.txt
decent_name.txt


p4 delete bad_name.txt

Integrate:

[v]  become one; become integrated; “The students at this school
integrate immediately, despite their different backgrounds”

  1. The word choice here is entirely wrong. You’re not integrating anything. No
    things are coming together into one, not even behind the scenes. Using the
    wrong word makes the command misleading and unintuitive. Merging files
    would be an appropriate time to use “integrate” (and they do). But
    when a new user goes to look for this command they’re either going to look
    for “move” or they’re going to look for “rename”. They’re not going to think
    “I want to integrate my file with a bad name into a non-existent file with
    the name I want…where’s the command for that?”
  2. It would have been trivial to do what Mercurial (Hg) did and add a
    “rename” command that simply wraps the copy and delete operations.



Perforce has been working on their tool for twelve years and in all that time
they couldn’t be bothered to spend the 5 minutes (probably literally) it would
have taken to add a “move” command to make their system easier and more
intuitive. Back in the day they probably figured that since they already had an
“integrate” command (which was decently named for what it did) they may as well
just reuse it for something that, under the covers, was essentially the same
operation. In all this time it doesn’t seem to have mattered to them that it is
a horrible and misleading name for a rename operation. Nor do they seem to care
that it makes it harder for new users. It didn’t even seem to matter to them
that by the act of taking money for their product they are setting themselves up
to a higher level of accountability than any free product.



The people behind Darcs and Mercurial aren’t getting paid for their efforts and
they’re taking the time to make their tools easier to use. Git’s commands could
still use some work before they’re ready for general usage but the project is
still new, they readily admit that the commands need work, and they’re actively
working to make them easier for people. Even now, after a little more than two
years of part time work, I believe that Git’s command set is better that
Perforce’s. If it wasn’t I still would have excused them simply because the
project is both young and free.



If you think I’m making a mountain out of a mole hill, I’m just picking on the
“move” command because it’s a simple concept to grasp that’s easy one to
demonstrate to you. There are similar, and worse, issues all over the
place
when dealing with Perforce. Alone, you’re right, one or two issues
like this are not a big deal. In concert, they’re an impediment to adoption and
an increased level of frustration and annoyance.



But, it goes beyond even that. It’s the principle of the thing. When faced with
The
3 Pixel Conundrum

Panic
Software
went out of it’s way to make things right. The Darcs team is
constantly improving it’s commands and trying to make itself easier to use.
Darcs is molasses on a glacier compared to Mercurial and
Git but its user interface
is just so damn good that people like using it. Google around for
the comments people leave about their experiences using Darcs. They’re like
people who finally got a deep breath of fresh air after sucking car exhaust
through a straw for three weeks.



Why should anyone have to put up with misleading terminology combined with extra
steps and an obvious lack of concern for the users that Perforce shows when they
could use a product that makes them feel the way Darcs makes people feel? They
both get the same job done in the end, but one of them is hard to learn and
miserable to use and the other… well, isn’t. Apps like
Delicious
Library
don’t even do much of anything but they are so enjoyable to use that
you want to buy them, and you want to tell your friends to buy them. I bought it
and I love it and I’m still not sure why I need a categorized list of 500+ books
and movies but I know I’ve got a few stacks of books new books that I need to
get in there and I’d have fun doing it. Scan, smile. Scan, smile.



You shouldn’t tolerate Perforce’s approach in the tools you buy. Unfortunately,
sometimes you don’t have much choice, but you most definitely shouldn’t tolerate
it in the tools you make. I expect better of myself and I expect better of
you. I especially expect better of something that people have been
working on for twelve years!



People don’t rave about how great Perforce is. They say it’s reliable and
stable. People don’t say Perforce is easy to use they say I should “learn how to
use it”. Can you see the difference? Darcs has evangelists. Mercurial does too,
even Subversion with all it’s limitations has evangelists. You don’t hear people
saying “I use Subversion because it’s stable and reliable.” No, you hear people
say “I use Subversion because it’s excellent!” It doesn’t matter if you agree
with them or not. What matters is that these tools have paid attention to what
their users wanted, or thought they wanted, and are all trying to make things
better for those users. You have a choice, you can use tools from people who
want you to love their product or you can use tools from people who want you to
use their product. The same choice applies to the tools you make too. Do you
want your users to love your product or just use it, and what effect should that
have on the choices you make in your work? Panic Software and Delicious Monster
want you to love their products, and the effort that they’ve put towards that
goal has paid off.





P.S. Darcs is groovy and all but I’m still recommending
Mercurial.

P.P.S. Delicious Library is really good for keeping track of who you lent books
too, but doesn’t track the books you’ve borrowed. Overall there’s a lot I wish
it would do, but I mention it here because it’s a really good example of what a
difference making your app pleasurable to use can make. It has made it’s
creators a lot of money almost entirely because it’s pretty and easy to use.
Come to think of it… that describes the iPods too. People LIKE these things
and you can’t discard them as crap because of limited feature sets. They do what
the main thing their owners want and they make doing it enjoyable. I’ll take
that over 50,000 features, rote memorization, and a thick users manual any day.

 
 

Kinesis Contoured Keyboard: first impressions

Filed under: Uncategorized — masukomi @ 1:25 am

I just received my Kinesis Contoured keyboard and thought that those of you who
actually care about the ergonomics of your work environment might appreciate my
first impressions of it. I also needed an excuse to type something so as to get
used to it. ;)

Now, before I get started I should mention, as many of you already know, that I
take my ergonomics seriously. I endured two weeks of painfully slow typing while
I retrained myself to use the Dvorak keyboard layout because doing so involves
provably less contorting and reaching, and is thus less wear on your hands.
Being a programmer, and wanting to continue to be a programmer for the
foreseeable future, and having the tendency to come home and either write or
code after a long day of writing or coding I believe it to be in my best
interest to take preventative measures to not end up in wrist braces unable to
type for more than a few hours at a time. I use a trackball that involves
minimal thumb movement, and nothing else, and now I, finally, have a keyboard
that’s actually ergonomically designed. Let me explain…

Unlike most “ergo” keyboard the Kinesis Contoured is, and I realize this may
sound a bit crazy at first, contoured to fit your fingers. I know, I know,
you’re thinking “But Kate! Fingers should be contoured to match the shape of the
keyboard not the other way around!” But, bear with me. I think these Kinesis
people may actually be on to something. Instead of just splitting a keyboard so
that your arms weren’t bent anymore they actually discovered the amazing fact
that finger-tips don’t form a straight line! I know, who would have guessed?! So
they went and designed a keyboard where the keys that fell under your “longer”
fingers were farther away so that when you rest your fingers on the keyboard
they, get this, “rest” lightly against the keys without having the longer
fingers being arched back more than the shorter ones.

Traditional keyboards which were designed with diagonal rows because otherwise
connecting the levers that moved the strikers would have been much more
difficult. Oddly most keyboard manufacturers don’t seem to have noticed that we
don’t have levers and strikers and paper rolled around a drum any more. Kinesis,
bright folks that they are, did notice this. So they decided to lay the keys out
in straight rows that aligned with the way you curve your fingers back and out
so no more shifting to the side a little to get the key “below” the one your
finger is currently on. This is a decidedly weird feeling at first. You don’t
realize how many weird contortions you’ve been doing until you suddenly have to
train yourself to not do them any more.

The arrow keys are no longer over in an inverted T that you have to move your
fingers away from the letters to use anymore. Instead they’re 2 rows below the
home keys, which would absolutely suck on a traditional keyboard but on this
keyboard makes you go “Oh my god! I didn’t realize reaching for arrow keys was
just as bad as reaching for the mouse!” Of course now they’re in a completely
different place so that’s going to take some getting used to but they feel so,
so much better in the new place that I can’t wait to get used to them
here.

They’ve moved a few other non-letter keys around and for the most part I agree
with the choices, although I’m not sure what the thinking was behind moving the
= - and ~ keys around was. Getting used to the new location of the control keys
is also going to take some getting used to but the space, backspace, and delete
keys rock in their new homes: very comfortable, very natural, although the space
bar is only accessible from the right hand so the default location might be an
issue for lefties, fortunately you can remap keys. As a lefty I’d probably swap
the sides of the four large thumb keys. You can take a gander at the
keyboard
layout of the Contoured here
. So far the only keys that look as if they’re
going to take any real time to get used to are the arrow keys and the control
other than that it’s very nice. The number keys are now so easy to reach that I
don’t think I’m going to want to take advantage of the keypad option (like the
one on your laptop except it’s useful because the keys are in straight rows not
screwed up diagonals).

The keyboard makes a small click when each key is activated which, if i had of
heard about beforehand would have turned me off, but it’s so subtle that I
wasn’t even sure it was happening, and while you can turn it off I’ve come to
the conclusion that it’s an excellent feature that’s sorely lacking in other
keyboards. The reason I like it is because I actually tend to use real passwords
with like thirteen characters, numbers, and various capitalisation’s. The
problem I have is that sometimes in the middle of typing in a password I won’t
know if I actually pressed that key enough of if I just think I pressed the key
enough and if I press it again will I end up that character typed twice or just
once. I also type quickly (80-120wpm) and without looking at the keyboard so I
either have the option of stopping and counting how many black dots are in the
field or just wiping them all out and starting over. Now I *know* when I’ve
fully depressed a key enough to activate it or not by if I’ve heard that subtle
click or not. It’s not even remotely annoying because the click of the actual
keys being struck is louder (no louder than most keyboards). So, it’s a nice
subtle touch (no pun intended).

The one thing I really wish they had done differently was given it some weight.
When I spend $250+ dollars on a keyboard I want it to feel 6 times more
expensive than a $40 keyboard. I want metal and impressive thuds, but the
overall construction feels no better or worse than any standard $40 keyboard
I’ve tried.

Final verdict? This thing rocks and I’m pretty sure that I need to get one for
home now too because going back to that half-assed Microsoft “Ergonomic” is
going to suck after using something as nice as this all day. I don’t even want
to think about what typing on the horrid laptop keyboards is going to feel like
after this.

And all of you people who keep saying “I can only type on a straight keyboard”
or “I like straight keyboards” should really stop for a minute and ask yourself
if whatever it is that keeps you from switching to something that actually
resembles the way your hands and arms are shaped is really worth the increased
risk of carpal tunnel? I don’t think it really matters much for casual typists
but if you spend your day clicking away at a keyboard like I do then I think you
should seriously re-evaluate what you’re putting your hands, wrists, and arms
through. Sure those ergo keyboards may feel “weird” and make you type like a
dork at first but you get used to them really quickly (usually within an hour or
two) and you tend to find that the movements that are hardest to get used to on
the new keyboards are the ones that you really shouldn’t have been doing in the
first place. Maybe you’re not convinced enough to plunk down  $250 dollars
on a keyboard like this one. But maybe you should consider something that’s at
least a little better than that crap straight keyboard. And, at the very
least, stop putting up those little feet at the back of your keyboard. They
force your wrists to bend upwards more when they should really be straight like
a concert pianists. The only reason those feet exist is because typewriters used
to have to have rising rows of keys so that the levers didn’t collide. Do you
really think you should be compensating for non-existent levers?

 
 

This morning at Akamai September 12, 2007

Filed under: Uncategorized — masukomi @ 1:15 am

Six years ago Akamai lost
one
of it’s founders
in 9/11. It’s still quite evident what a blow it was to the
people here as he was apparently a man who lived life to the fullest and really
touched a lot of lives. How Akamai has chosen to deal with this loss has really
impressed me. The made a little park next to the office building (at least i
don’t think it was here before then) and planted a tree for him. Instead of
making some disconnected financial contribution to some random charity they
encourage employees to go help out at the food bank or spend time at a
children’s center. They give an award every year in his name to employees who
show the same kind of drive and passion that Danny had.



This morning there was a small service in the park.
Paul
and
Tom
said a few words about Danny why trying not to cry. Then we had a moment of
silence and those who were close to him each laid a rose next to his tree. Danny
is never mentioned in the abstract here. He’s not some random guy who a bad
thing happened to. His spirit very much lives on in Akamai, and that’s quite
possibly the greatest tribute they could give him.



This morning emphasized one thing to me. That Akamai is one of the few companies
that really is a family. I may be on the outside edge of that but I feel proud
to be included at all.


 
 

Branching for atomic patches and cherry-picking September 10, 2007

Filed under: Uncategorized — masukomi @ 4:20 am

The best thing about Distributed Source Control Managers (
IMNSHO
) is how quick and easy it is to branch and merge. The problem is that most of
cut our teeth on centralized systems that couldn’t even hope to take advantage
of cherry picking, which is, in short the ability to take a single patch out of
the middle of a sequence of patches, or every patch but one from a sequence.
Just imagine knowing that there was a bug introduced in a specific patch and
being able to prune it from your repository but not any of the patches around
it. Or, plucking one little feature out of a mass of others that should wait until the next release.
You can, but if you don’t make the effort to keep your patches as atomic as
possible you’ll find that that patch you want to remove or extract is dependant upon
another one, or more, that you may not want to involve.



Which brings me to my hierarchy of branches. Now, I’m still working with this
concept so if you can improve upon it please let me know (masukomi @
masukomi.org) . The idea is that most of the time you’re not adding one little
atomic feature, you’re adding a number of features that can be conceptually
clustered. So, you make a branch for the cluster, but do no actual development
directly in it. Then you branch from there for each atomic feature (be sure to
scroll down to the graph below the fold here).



While you are working on a feature feel free to commit as often as you want.
Check in broken or unfinished code. Pollute that branch’s revision history with
as much crap as you want. Do whatever it takes in there to make sure you can
roll back to any point you want, and never loose work. Have a cron job check in
any uncommitted changes to this micro-branch every night in case you forget to.
It doesn’t matter because you’re not going to push the revision history back up
to the branch for the feature cluster. Instead you diff from the branch point
and patch the cluster branch and commit it. This way you’ve got one atomic
revision with the combined changes for that one small feature and if you need to
prune it for any reason (maybe it’s broken, or decided you should wait on adding
it) you can easily do so without worry of dependencies. Your micro branch has
all the details of the feature evolution if you really feel you need it, but
most of the time you’ll just delete it after creating the patch and applying it
to the cluster. Eventually the cluster will have all the related features
completed and checked in and it’s revision history will consist of a series of
atomic commits. The cluster’s revision history is then pushed upstream to your
personal development branch. Occasionally you’ll have a small feature to work on
with no related ones to cluster. Just branch from your personal development
trunk and then patch back into it as you would have into a feature cluster.



Bugs should be treated in exactly the same way as features, although you’ll find
yourself with many more small bugs that don’t need a parent cluster and can just
be worked on in their branch and then used to patch your personal development
branch.



People working farther upstream now have the option of cherry picking features,
feature clusters, bugs, and bug clusters, and will be able to do so with much
less worry of getting caught up with patches that depend on other patches.


a heirarchy of branches

 
 

Responses your comments on the “Dear Perforce” post September 9, 2007

Filed under: Uncategorized — masukomi @ 5:00 am

Please note that I wasn’t just bitching about Perforce. No, I don’t like it, but I’ve done something about it. I’ve written a tool called SSCM to enable people experiencing my frustrations to work with tools we do appreciate and still keep our work synced with tools like Perforce for the benefit of our coworkers.

My
Dear
Perforce: fuck you
post made the front page of
Reddit
Programming
, which generated a lot of comments so rather than address them
individually I’m going to address them here.

The comments could basically be broken into three categories but before I go
into any of them I must point you to
the
best damn response anyone had to that post
. Thanks keithb.



I’ve used it for n years and it’s never screwed up a file / been unstable
/gone down comments:

I’ve been using it for 4 years on my own project, never once running into any
of the problems you talk about. -Michael G

I only ranted about one thing that was broken (my weird rollback issue)
everything else was an issue I had with something intentionally coded by
Perforce’s developers.



Perforce is not breaking for me. It’s behaving as designed, and that’s almost
as bad.



To be totally clear: Perforce has recorded everything correctly, except for
the fact that it will change line-endings on you, and yes I realize there is
something you can config to control this, however I’m of the opinion that your
version control system should never be second-guessing what you meant to stick
in it. No files were corrupted or lost, and I don’t expect that it will do so
at any point in the future.


I’d have to say that whatever its faults, it’s stable and reliable and
does what it says on the box. -Jeremy O’Donoghue



Perforce has been rock-solid for our group of ~10 developers and a
codebase of 10,000+ files (text and binary), used from Linux and Windows
and OS X. -Mike McNally

I can’t argue with these statements even a little bit. I believe that the
Perforce server is exactly as Jeremy describes it. I give the Perforce server
every benefit of the doubt, because to-date, I have seen nothing to make me
believe that it isn’t a solid, and reliable, repository for your code. My
complaints lie entirely with its end user tools.


You just don’t know how to use it / haven’t given it a chance / are forcing
it comments:



I have been able to get up and running with no notable difficulty with Bazaar,
CVS, Darcs, Git, Mercurial (Hg), and Subversion, each in under an hour using
only things I could google. I have given Perforce over two months. I have
talked with a number of developers around me who have been using it for years.
When I talk with experienced people the responses are either that they have no
clue how to do some operation from the command line but they can in the gui,
they have a clue how to do it on the command line or gui but have absolutely
no explanation for why the whack results we see. You are entirely
correct when you suggest that I don’t know how to use it
, but my
point is that it shouldn’t take 2 months to figure out how to do basic Source
Control Management operations (including branching and merging)
, and
there’s no excuse for the fact that after using it for years the people around
me still can’t explain why it does some of the whack crap it does and / or
don’t know how to do some of the similar operations. I would suggest to you
that Perforce’s user interaction is fundamentally flawed when using it is so
unintuitive that after years of using it daily many people still don’t really
understand how it works or the best way to use it.


The only people who ever have any problems with it are the ones who don’t
understand it and randomly try things to get it to work instead of asking
for help. — Bill Napier

I don’t doubt this statement in the least. But instead of taking this as an
indication of failure on the user’s part couldn’t it just as easily be
considered a failure on the part of Perforce to provide its users with an
intuitive interface? Perforce does not employ a paradigm that is significantly
different from any other centralized Source Control Manager. As such,
shouldn’t it’s general usage be fairly similar and fairly intuitive to
anyone who is familiar with using them?


It sounds to me like you’re trying to use Perforce as if it were a
distributed system, when it’s the opposite. I suspect many of the problems
you’re having with it are a result of your attempt to use it like svn, git,
or darcs. You should use a system the way it was designed to be used, and if
its architecture doesn’t benefit you or help your process in any way, then
you shouldn’t be using it at all. -MCS

Well, first off SVN isn’t a distributed system. With that noted, I consider
Distributed Source Control Managers to be a very very recent blink in the
history of computing. My first version control experiences were with CVS years
ago, and later with SVN. I’m not coming to this from the perspective of some
kid whose first experience with version control was with a distributed system
and trying to shoehorn those ideas into a centralized system. I am very aware
of the differences between them and while I was never thrilled with CVS or SVN
I have no problem in using either of them. If anything Perforce should be
easier for me to get my head around than any of these new-fangled
distributed dodads.


I think you’re being completely unfair on Perforce. The reliability
must be a configuration issue. The model is highly centralized, which
sounds like it’s not what you want. -Jeremy O’Donoghue

Actually, I really don’t mind centralized systems. I just don’t prefer them. I
also think that there are some great arguments to be made for using a
centralized system in combination with distributed systems. Do the major
branches in the central system, and do thousands of micro-branches in the
distributed systems… one for each non-trivial bug fix and one for every new
feature, then merge back with the distributed tools which tend to handle
merging much better than any of the centralized ones I’ve seen. Also,
reliability should never be a configuration issue. I should never be
able to misconfigure a version control system in such a way as to make it
unreliable. Break it sure, but if it works at all it should work reliably. If
you can’t rely on your version control system then there is something horribly
wrong with the system.

I find the command-line tools to be very powerful and useful. -Mark
Adams

They are. I can’t deny that the command line tools are both powerful and
useful. Heck, it seems as if the GUI is just running those same command-line
commands under the covers for almost every operation.  I also believe
that the
F-16
Fighter
plane is a very powerful and useful but that doesn’t mean that it
even remotely approaches something that is actually usable without some
serious training. Unfortunately, I think the same can be said about Perforce’s
command line tools (although not as much training… I hope).


So Perforce takes a different approach - try getting the hang of it before
ranting so aggressively. I found it awkward too when we started using it.
-i_soar

Why do I feel like I’m the only one who sees the inherent problem with “I
found it awkward too when we started using it”… No. NO NO NO. This should
NEVER be uttered. Perforce has been around for years, and people have been
getting familiar with Source Control Managers for even longer. There is
absolutely no excuse for the basic version control operations being anything
other than easy at this point. Perforce has had plenty of time to refine their
interface, to do crazy things like add an effing “move” command (Yes I know
about the integrate command. It’s not the same thing). It’s fine to say some
new, fresh out of beta tool is awkward. It’s fine to say that some tool that
uses an entirely different paradigm than you’re used to is awkward. It is
unacceptable for an app as old as Perforce in a paradigm as old as centralized
source control management.


I agree with Perforce suckage comments:

Thanks. It’s nice to know that I’m not the only one.
 
 

SSCM v0.3 Released + observations on Bazaar

Filed under: Uncategorized — masukomi @ 3:19 am

SSCM
v0.3 is now available
.



New version includes support for CVS and
Bazaar and
other
goodness
. :)



CVS support should be considered experimental until I get more feedback from CVS
users. I really don’t expect any problems with it though.



In the process of putting this release together I discovered that Bazaar isn’t
getting nearly the attention it deserves. From a user’s standpoint Bazaar does
almost everything right:

  • It’s easy to use. The commands are generally sensible and have good options.
  • Just uploading your repo to a web server is enough to share it with the
    world (Darcs is the only other one that seems to support this)
  • Branching can be just a matter of copying the repo directory (as with
    all the other Distributed Source Control Managers) OR you can take advantage
    of it’s internal branch management mechanisms.
  • They’ve got pre-built versions for Windows, OS X, Ubuntu/Debian, and Fedora,
    as well as source for anything else, and it’s written in Python so it should
    run practically everywhere.
  • It supports Cherry Picking
  • It’s got the slickest looking site of any of the Distributed Source Control
    Managers, and it is filled with lots of good documentation.



It’s not perfect, and I’m not sure if has the same level of cryptographic
integrity checking on its files as Git and Mercurial do but it appears as if it
does. If you’re considering giving a Distributed Source Control Manager a shot,
take a moment and spend some time with Bazaar. Currently I’m recommending
Mercurial
(Hg)
to folks but I think Bazaar may just be an equal, or better,
competitor. It’s still too early for me to say, but what I will say is that
Bazaar definitely deserves more air-time and your consideration.