It's that time of year again, the one where all submission deadlines converge. I've been putting in many hours at work lately trying to get something semi-publishable on time. Strangely, I've gotten into this nice habit of going to bed before 2h and getting to work around 10h. I'm loving it! More please! I've got this fantasy of me getting up at 7h, having a good breakfast, reading some articles for work, and then making my way calm and happy because I had made the effort to nourish my scientific brain. I dunno how long this will last, or why I seem to think that getting up earlier is better.
Anyway, been working on the PatchApply stuff for bug 154. Got the flag in, now I just have to see to all the stuff that calls an apply function. Not very clear what's going on with apply_to_slurpy though...
Hobby-hacking Eric
2006-03-31
2006-03-28
Repository diagrams
I just uploaded 9 darcs repository diagrams for the darcs model chapter of the wikibook. I'm not sure these are really useful, that they actually help communicate the idea behind darcs, but it was worth a shot. Just taking a break from all this patch theory stuff, doing something easy for a change. Got a friend at work that seems to get confused by all the darcs commands, so maybe a little visual support could be useful. Or it could just add to the confusion.
I just uploaded 9 darcs repository diagrams for the darcs model chapter of the wikibook. I'm not sure these are really useful, that they actually help communicate the idea behind darcs, but it was worth a shot. Just taking a break from all this patch theory stuff, doing something easy for a change. Got a friend at work that seems to get confused by all the darcs commands, so maybe a little visual support could be useful. Or it could just add to the confusion.
Repository diagrams
2006-03-27
patch theory intro
Spent this afternoon finishing off the rewrite of the patch theory chapter. Like it a lot better. There's still a bit to polish off regarding the definition of a merge, and the commutation with inverse property, but it's definitely progress. Don't know if I have the energy to work on the other two chapters. Probably charge the mental batteries for a while, go work on something else. We'll have to see.
Spent this afternoon finishing off the rewrite of the patch theory chapter. Like it a lot better. There's still a bit to polish off regarding the definition of a merge, and the commutation with inverse property, but it's definitely progress. Don't know if I have the energy to work on the other two chapters. Probably charge the mental batteries for a while, go work on something else. We'll have to see.
patch theory intro
2006-03-26
Constructive patch theory
I have not only been procrastinating on the Understanding darcs rewrite but have been a total flake this week on darcs and life in general.
Think I was having a somewhat bad couple of weeks and have been self-medicating by picking up a short freeciv addiction. I hate freeciv. I don't know what I can't shake it. It is something I do not find enjoyable, but every once in a while, I get this inexplicable craving, and well, you know how it goes. Lost sleep. Bad dietary habits. And all for a stupid game you've played over and over again (each time badly) with no surprises and no change in strategy. Anyway, I'm glad that's done with. Geez, even watching Firefly was better than playing freeciv.
Right... darcs. I've finally started the rewrite that I had been promising Arjan. Rewriting is really good for you. Forces you to look at crufty old bits of text and say to yourself, "waitasecond, that doesn't make one bit of sense!''. There's still a couple of holes in the introductory stuff. Need to write the complex undo bit, and reexplain what a context is, because I think the way I have it now is probably flat out wrong.
Holy shit. Did it just become 3h? But... is today leap forward day? It is indeed! Gah! And all this time I was being impressed by myself for being tired before 2h and wanting to call it an early night. Foiled!
Oh, and uh, Juliusz accepted the ssh patches today, along with the diff command stuff. Glad that's off my plate and I can move on to other stuff, like the wikibook.
Think I was having a somewhat bad couple of weeks and have been self-medicating by picking up a short freeciv addiction. I hate freeciv. I don't know what I can't shake it. It is something I do not find enjoyable, but every once in a while, I get this inexplicable craving, and well, you know how it goes. Lost sleep. Bad dietary habits. And all for a stupid game you've played over and over again (each time badly) with no surprises and no change in strategy. Anyway, I'm glad that's done with. Geez, even watching Firefly was better than playing freeciv.
Right... darcs. I've finally started the rewrite that I had been promising Arjan. Rewriting is really good for you. Forces you to look at crufty old bits of text and say to yourself, "waitasecond, that doesn't make one bit of sense!''. There's still a couple of holes in the introductory stuff. Need to write the complex undo bit, and reexplain what a context is, because I think the way I have it now is probably flat out wrong.
Holy shit. Did it just become 3h? But... is today leap forward day? It is indeed! Gah! And all this time I was being impressed by myself for being tired before 2h and wanting to call it an early night. Foiled!
Oh, and uh, Juliusz accepted the ssh patches today, along with the diff command stuff. Glad that's off my plate and I can move on to other stuff, like the wikibook.
I have not only been procrastinating on the Understanding darcs rewrite but have been a total flake this week on darcs and life in general.
Think I was having a somewhat bad couple of weeks and have been self-medicating by picking up a short freeciv addiction. I hate freeciv. I don't know what I can't shake it. It is something I do not find enjoyable, but every once in a while, I get this inexplicable craving, and well, you know how it goes. Lost sleep. Bad dietary habits. And all for a stupid game you've played over and over again (each time badly) with no surprises and no change in strategy. Anyway, I'm glad that's done with. Geez, even watching Firefly was better than playing freeciv.
Right... darcs. I've finally started the rewrite that I had been promising Arjan. Rewriting is really good for you. Forces you to look at crufty old bits of text and say to yourself, "waitasecond, that doesn't make one bit of sense!''. There's still a couple of holes in the introductory stuff. Need to write the complex undo bit, and reexplain what a context is, because I think the way I have it now is probably flat out wrong.
Holy shit. Did it just become 3h? But... is today leap forward day? It is indeed! Gah! And all this time I was being impressed by myself for being tired before 2h and wanting to call it an early night. Foiled!
Oh, and uh, Juliusz accepted the ssh patches today, along with the diff command stuff. Glad that's off my plate and I can move on to other stuff, like the wikibook.
Think I was having a somewhat bad couple of weeks and have been self-medicating by picking up a short freeciv addiction. I hate freeciv. I don't know what I can't shake it. It is something I do not find enjoyable, but every once in a while, I get this inexplicable craving, and well, you know how it goes. Lost sleep. Bad dietary habits. And all for a stupid game you've played over and over again (each time badly) with no surprises and no change in strategy. Anyway, I'm glad that's done with. Geez, even watching Firefly was better than playing freeciv.
Right... darcs. I've finally started the rewrite that I had been promising Arjan. Rewriting is really good for you. Forces you to look at crufty old bits of text and say to yourself, "waitasecond, that doesn't make one bit of sense!''. There's still a couple of holes in the introductory stuff. Need to write the complex undo bit, and reexplain what a context is, because I think the way I have it now is probably flat out wrong.
Holy shit. Did it just become 3h? But... is today leap forward day? It is indeed! Gah! And all this time I was being impressed by myself for being tired before 2h and wanting to call it an early night. Foiled!
Oh, and uh, Juliusz accepted the ssh patches today, along with the diff command stuff. Glad that's off my plate and I can move on to other stuff, like the wikibook.
Constructive patch theory
2006-03-18
At last, ssh multiplexing.
Patches sent to the list.
Well, glad I got that done. Hope it actually works as advertised. Unfortunately, this is not using Ganesh's idea, but I guess I'll let somebody more competent take care of that. This easier solution only works for people who have a fancy new ControlMaster-enabled ssh. It is nice not to have to type my password a whole bunch of times.
Well, glad I got that done. Hope it actually works as advertised. Unfortunately, this is not using Ganesh's idea, but I guess I'll let somebody more competent take care of that. This easier solution only works for people who have a fancy new ControlMaster-enabled ssh. It is nice not to have to type my password a whole bunch of times.
diff-command
Whilst waiting for my tests to complete (I use record --no-test, followed by darcs trackdown when I'm almost ready to send), I took the opportunity to freshen my --diff-command patch and the refactoring stuff. Yeah, I know Daan's already sent his --external-diff one, but mine handles something which is perculiar to Macs, that being opendiff. The thing about opendiff aka FileMerge is that it quits immediately, leaving a subprocess on chew on the diff. But if darcs automatically cleans things up after opendiff exits, then FileMerge gets confused. The solution, at least, the one I borrowed from --external-merge, is to make the user press a key to continue. This way, we don't do the temp file cleanup until we really have to. The other thing is that my version of the patch is pickier about keeping things refactored. Oh well. I guess I don't really care either way, since I don't use --external-merge or --external-diff. I just wanted to get rid of my patches. Had been sitting around since January. What had happened was that Daan asked if the feature was there, I volunteered to implement it, sent it off, Juliusz got busy, and I forgot to tell Daan that there was a patch he could play with. So he decided to go implement it himself, and now we have two patches that do the same thing :-)
Patches sent to the list.
Well, glad I got that done. Hope it actually works as advertised. Unfortunately, this is not using Ganesh's idea, but I guess I'll let somebody more competent take care of that. This easier solution only works for people who have a fancy new ControlMaster-enabled ssh. It is nice not to have to type my password a whole bunch of times.
Well, glad I got that done. Hope it actually works as advertised. Unfortunately, this is not using Ganesh's idea, but I guess I'll let somebody more competent take care of that. This easier solution only works for people who have a fancy new ControlMaster-enabled ssh. It is nice not to have to type my password a whole bunch of times.
diff-command
Whilst waiting for my tests to complete (I use record --no-test, followed by darcs trackdown when I'm almost ready to send), I took the opportunity to freshen my --diff-command patch and the refactoring stuff. Yeah, I know Daan's already sent his --external-diff one, but mine handles something which is perculiar to Macs, that being opendiff. The thing about opendiff aka FileMerge is that it quits immediately, leaving a subprocess on chew on the diff. But if darcs automatically cleans things up after opendiff exits, then FileMerge gets confused. The solution, at least, the one I borrowed from --external-merge, is to make the user press a key to continue. This way, we don't do the temp file cleanup until we really have to. The other thing is that my version of the patch is pickier about keeping things refactored. Oh well. I guess I don't really care either way, since I don't use --external-merge or --external-diff. I just wanted to get rid of my patches. Had been sitting around since January. What had happened was that Daan asked if the feature was there, I volunteered to implement it, sent it off, Juliusz got busy, and I forgot to tell Daan that there was a patch he could play with. So he decided to go implement it himself, and now we have two patches that do the same thing :-)
At last, ssh multiplexing.
2006-03-17
ssh control master
Made one useful bit of progress in the ssh control master stuff.
Before, I was having trouble with getting the control master running and out of the way. I didn't really know how to launch stuff in the background, so I basically forked the thing and polled the control master every 3 seconds to see if it was connected or not. But that was a really fragile setup, and sometimes, if I didn't type my password fast enough, I wouldn't be able to get a connection.
Tonight I have found a much simpler way to get the CM running: I just use the -f flag to make it go to background right before running the command, that is, only after it has completed the connection. This way, I don't need wait around polling, to see if the CM is running. This is terribly embarrasing how much mysterious all this process stuff is to -- seems shameful to call myself a computer scientist and not at least have some basic notions of how operating systems work. I built a toy OS for school once, but that was a really long time ago. Anyway, it does seem to work. All I know is that the exec function is a piece of darcs-internal code that makes some FFI call to a thing called smart_wait. And I guess smart_wait is happy to return if the thing goes to background or something like that.
Anyway, I was scratching my head for a while as to why I could get darcs put to work, but not darcs get. Turns out that the -S flag to scp means something else than it does for ssh. But no fear, we can use -o ControlMaster instead. Ooh tired. Will have to save this for tomorrow. Something to look forward to. Killing this project at last.
Before, I was having trouble with getting the control master running and out of the way. I didn't really know how to launch stuff in the background, so I basically forked the thing and polled the control master every 3 seconds to see if it was connected or not. But that was a really fragile setup, and sometimes, if I didn't type my password fast enough, I wouldn't be able to get a connection.
Tonight I have found a much simpler way to get the CM running: I just use the -f flag to make it go to background right before running the command, that is, only after it has completed the connection. This way, I don't need wait around polling, to see if the CM is running. This is terribly embarrasing how much mysterious all this process stuff is to -- seems shameful to call myself a computer scientist and not at least have some basic notions of how operating systems work. I built a toy OS for school once, but that was a really long time ago. Anyway, it does seem to work. All I know is that the exec function is a piece of darcs-internal code that makes some FFI call to a thing called smart_wait. And I guess smart_wait is happy to return if the thing goes to background or something like that.
Anyway, I was scratching my head for a while as to why I could get darcs put to work, but not darcs get. Turns out that the -S flag to scp means something else than it does for ssh. But no fear, we can use -o ControlMaster instead. Ooh tired. Will have to save this for tomorrow. Something to look forward to. Killing this project at last.
cvs keywords
A self-described newbie posted a message on darcs-users asking if there was any CVS keyword type functionality. Not something I care very much about, but I did find it kind of useful back in the dark days of CVS. Maybe it could also be useful to have in darcs. Of course, there are reasons why this kind of thing doesn't make any sense for us -- we don't do versions -- but maybe something approximative might be good enough for everyday needs.
Made one useful bit of progress in the ssh control master stuff.
Before, I was having trouble with getting the control master running and out of the way. I didn't really know how to launch stuff in the background, so I basically forked the thing and polled the control master every 3 seconds to see if it was connected or not. But that was a really fragile setup, and sometimes, if I didn't type my password fast enough, I wouldn't be able to get a connection.
Tonight I have found a much simpler way to get the CM running: I just use the -f flag to make it go to background right before running the command, that is, only after it has completed the connection. This way, I don't need wait around polling, to see if the CM is running. This is terribly embarrasing how much mysterious all this process stuff is to -- seems shameful to call myself a computer scientist and not at least have some basic notions of how operating systems work. I built a toy OS for school once, but that was a really long time ago. Anyway, it does seem to work. All I know is that the exec function is a piece of darcs-internal code that makes some FFI call to a thing called smart_wait. And I guess smart_wait is happy to return if the thing goes to background or something like that.
Anyway, I was scratching my head for a while as to why I could get darcs put to work, but not darcs get. Turns out that the -S flag to scp means something else than it does for ssh. But no fear, we can use -o ControlMaster instead. Ooh tired. Will have to save this for tomorrow. Something to look forward to. Killing this project at last.
Before, I was having trouble with getting the control master running and out of the way. I didn't really know how to launch stuff in the background, so I basically forked the thing and polled the control master every 3 seconds to see if it was connected or not. But that was a really fragile setup, and sometimes, if I didn't type my password fast enough, I wouldn't be able to get a connection.
Tonight I have found a much simpler way to get the CM running: I just use the -f flag to make it go to background right before running the command, that is, only after it has completed the connection. This way, I don't need wait around polling, to see if the CM is running. This is terribly embarrasing how much mysterious all this process stuff is to -- seems shameful to call myself a computer scientist and not at least have some basic notions of how operating systems work. I built a toy OS for school once, but that was a really long time ago. Anyway, it does seem to work. All I know is that the exec function is a piece of darcs-internal code that makes some FFI call to a thing called smart_wait. And I guess smart_wait is happy to return if the thing goes to background or something like that.
Anyway, I was scratching my head for a while as to why I could get darcs put to work, but not darcs get. Turns out that the -S flag to scp means something else than it does for ssh. But no fear, we can use -o ControlMaster instead. Ooh tired. Will have to save this for tomorrow. Something to look forward to. Killing this project at last.
cvs keywords
A self-described newbie posted a message on darcs-users asking if there was any CVS keyword type functionality. Not something I care very much about, but I did find it kind of useful back in the dark days of CVS. Maybe it could also be useful to have in darcs. Of course, there are reasons why this kind of thing doesn't make any sense for us -- we don't do versions -- but maybe something approximative might be good enough for everyday needs.
ssh control master
2006-03-16
back to darcs life
Have finished watching Firefly. Enjoyed it very much, but I am quite happy to be free of the shackles of mindless albeit high quality entertainment. So, what's on the plate?
Understanding darcs
Arjan had some bug fixes for the diagrams I made, basically a label being on the wrong transition, which makes things just wrong (I was rather uneasy about that, glad he picked up on that too). He'd also prefer a more constructive approach to explaining things. At first, I was rather hesitant, because I thought this would be mean backing away from the focus-on-a-concrete-story and explain-things-as-you-need-them approach, but then he showed me that the story could easily be extended with some concrete, uncontrived examples for the simple stuff. That is, you can at times want to commute patches outside of a merge situation. So I was happier with that.TracOnDarcs
Met a happy customer of the TracOnDarcs howto on #darcs. That was gratifying. Not the thanks, of course, besides, Lele deserves the lion's share of that, but it's always a big boost to your ego to see that something you made was genuinely useful to somebody, even if that consists only of an instruction manual. That's the biggest compliment you can pay anybody in the free-content/free-software universe: use their stuff.
Have finished watching Firefly. Enjoyed it very much, but I am quite happy to be free of the shackles of mindless albeit high quality entertainment. So, what's on the plate?
Understanding darcs
Arjan had some bug fixes for the diagrams I made, basically a label being on the wrong transition, which makes things just wrong (I was rather uneasy about that, glad he picked up on that too). He'd also prefer a more constructive approach to explaining things. At first, I was rather hesitant, because I thought this would be mean backing away from the focus-on-a-concrete-story and explain-things-as-you-need-them approach, but then he showed me that the story could easily be extended with some concrete, uncontrived examples for the simple stuff. That is, you can at times want to commute patches outside of a merge situation. So I was happier with that.TracOnDarcs
Met a happy customer of the TracOnDarcs howto on #darcs. That was gratifying. Not the thanks, of course, besides, Lele deserves the lion's share of that, but it's always a big boost to your ego to see that something you made was genuinely useful to somebody, even if that consists only of an instruction manual. That's the biggest compliment you can pay anybody in the free-content/free-software universe: use their stuff.
back to darcs life
Subscribe to:
Comments (Atom)
