--- Log opened Fri May 16 00:00:25 2008 |
00:00 | < Vornicus> | We get signal! |
00:00 | < Vornicus> | er |
00:00 | < Vornicus> | We get envelope! |
00:01 | < Doctor_Nick> | what! |
00:01 | < Doctor_Nick> | letter opener turn on |
00:01 | < Vornicus> | er |
00:01 | < Vornicus> | wrong channel |
00:01 | < Doctor_Nick> | heh |
00:08 | <@gnolam> | Doctor_Nick: I have no idea. |
00:10 | < Doctor_Nick> | k |
00:24 | | You're now known as TheWatcher[T-2] |
00:27 | | You're now known as TheWatcher[zZzZ] |
00:29 | | gnolam [lenin@Nightstar-10613.8.5.253.static.se.wasadata.net] has quit [Quit: I have head explody?] |
01:10 | | McMartin [~mcmartin@Nightstar-7072.dsl.pltn13.sbcglobal.net] has quit [Quit: Leaving] |
02:21 | | Vornicus is now known as Vornicus-Latens |
02:26 | | McMartin [~mcmartin@Nightstar-2079.dsl.snfc21.pacbell.net] has joined #code |
02:26 | | mode/#code [+o McMartin] by ChanServ |
02:57 | | Doctor_N1ck [~nick@Nightstar-25013.hsd1.fl.comcast.net] has joined #code |
02:59 | | Doctor_N1ck [~nick@Nightstar-25013.hsd1.fl.comcast.net] has quit [Quit: leaving] |
04:04 | | McMartin [~mcmartin@Nightstar-2079.dsl.snfc21.pacbell.net] has quit [Connection reset by peer] |
04:06 | | McMartin [~mcmartin@Nightstar-6968.googlewifi.com] has joined #code |
04:06 | | mode/#code [+o McMartin] by ChanServ |
04:06 | < Doctor_Nick> | mc martiiiiiinnn |
05:18 | <@McMartin> | Yes? |
05:32 | < Doctor_Nick> | sorry |
05:33 | < Doctor_Nick> | just recalling the wb series ;) |
05:42 | | McMartin [~mcmartin@Nightstar-6968.googlewifi.com] has quit [Quit: home] |
05:45 | | Doctor_Nick [~nick@Nightstar-25013.hsd1.fl.comcast.net] has quit [Quit: leaving] |
05:53 | | Doctor_Nick [~nick@Nightstar-25013.hsd1.fl.comcast.net] has joined #code |
05:54 | | Doctor_Nick is now known as NSGuest-6523 |
06:06 | | AnnoDomini [AnnoDomini@Nightstar-29058.neoplus.adsl.tpnet.pl] has joined #Code |
06:06 | | mode/#code [+o AnnoDomini] by ChanServ |
07:49 | | You're now known as TheWatcher |
11:26 | | Mojo1978 [~Mojo1978@Nightstar-14878.hsi.ish.de] has joined #code |
13:22 | | gnolam [lenin@Nightstar-10613.8.5.253.static.se.wasadata.net] has joined #Code |
13:22 | | mode/#code [+o gnolam] by ChanServ |
13:24 | | GeekSoldier [~Rob@Nightstar-8249.dip.t-dialin.net] has quit [Ping Timeout] |
14:17 | | Vornicus-Latens is now known as Vornicus |
15:39 | | Mojo1978 [~Mojo1978@Nightstar-14878.hsi.ish.de] has quit [Connection reset by peer] |
16:06 | <@ToxicFrog> | Hmm. |
16:06 | <@ToxicFrog> | So if I were to completely ignore the lua aspect, and write this as a C library, how would it work? |
16:08 | | GeekSoldier [~Rob@Nightstar-8224.dip.t-dialin.net] has joined #code |
16:08 | | mode/#code [+o GeekSoldier] by ChanServ |
16:11 | < NSGuest-6523> | terribly! |
16:11 | <@ToxicFrog> | I can't use SGOS-style SRR; I need some means of synchronizing the threads for the actual message pass and releasing them when it's finished. |
16:11 | <@ToxicFrog> | Alternately, I could just go "screw it, this is too much work" and leave it tightly coupled to lua. |
16:32 | | * ToxicFrog attempts to eliminate race conditions from the thread shutdown code |
16:32 | <@ToxicFrog> | I think I need another mutex >.< |
16:34 | <@ToxicFrog> | Actually, no, I can use the existing one. |
16:34 | <@ToxicFrog> | Sender: lock mutex, check thread status; if status is dead, unlock mutex and raise error, otherwise add self to list, unlock mutex, and sleep. |
16:35 | <@ToxicFrog> | Shutdown: lock mutex, change status to dead, clean up all blocked threads, free subobjects, decrement reference count |
16:35 | <@ToxicFrog> | And unlock mmutex. |
16:36 | <@ToxicFrog> | This ensures that when the thread starts shutting down, all previous threads will have finished adding themselves to the list, and all subsequent threads will see it as dead and raise an error. |
16:42 | < NSGuest-6523> | ok |
17:01 | <@ToxicFrog> | ...oh, goddamnit. |
17:02 | <@ToxicFrog> | The way my synchronization code works, it's possible for invalid arguments in send() to not be detected until it's received |
17:02 | <@ToxicFrog> | At which point the sender raises an error and the receiver is in limbo, having just received a message that doesn't actually exist |
17:02 | <@ToxicFrog> | I need to fix this. |
17:15 | | You're now known as TheWatcher[afk] |
18:06 | | AnnoDomini is now known as Lance |
18:41 | | You're now known as TheWatcher |
18:47 | | gnolam [lenin@Nightstar-10613.8.5.253.static.se.wasadata.net] has quit [Quit: Reboot] |
18:58 | | gnolam [lenin@Nightstar-10613.8.5.253.static.se.wasadata.net] has joined #Code |
18:58 | | mode/#code [+o gnolam] by ChanServ |
19:09 | | NSGuest-6523 is now known as Doctor_Nick |
19:10 | | Doctor_Nick is now known as NSGuest-6528 |
19:25 | | Brother_Willibald [lenin@Nightstar-10613.8.5.253.static.se.wasadata.net] has joined #Code |
19:25 | | gnolam is now known as NSGuest-6530 |
19:25 | | Brother_Willibald is now known as gnolam |
19:25 | | NSGuest-6530 [lenin@Nightstar-10613.8.5.253.static.se.wasadata.net] has quit [Ping Timeout] |
20:20 | | NSGuest-6528 is now known as Doctor_Nick |
20:21 | | Doctor_Nick is now known as NSGuest-6532 |
20:23 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Operation timed out] |
20:32 | | ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code |
20:32 | | mode/#code [+o ToxicFrog] by ChanServ |
20:34 | | NSGuest-6532 is now known as Doctor_Nick |
21:32 | <@ToxicFrog> | Gnar. |
21:32 | <@ToxicFrog> | I don't want to drop the mask feature, because it can't be easily implemented outside the library. |
21:32 | <@ToxicFrog> | But it's a pain in the ass. |
21:43 | < Doctor_Nick> | ganbatte, ToxicFrog-san~ |
21:44 | <@ToxicFrog> | On the other hand, I can omit it for now, and adding it later won't break existing code~ |
21:50 | < Vornicus> | okay. Hand-writing concat statements in Excel is liquid pain |
21:51 | | Lance is now known as AnnoDomini |
21:51 | < Vornicus> | Not that it's much nicer in any other language... |
21:52 | < Doctor_Nick> | welp |
21:53 | <@ToxicFrog> | Concatenation of what? |
21:53 | < Vornicus> | strings. |
21:54 | < Vornicus> | When you're building a string that can be eval'd from a dozen or so inputs. |
21:54 | < Vornicus> | what with all the quotes and escaping. |
21:55 | < Vornicus> | well, okay. % work would be cool about now |
22:00 | <@ToxicFrog> | Aah. |
22:00 | <@ToxicFrog> | %? |
22:00 | < Vornicus> | % formatting |
22:01 | <@jerith> | Python's string formatting operator. |
22:01 | <@C_tiger> | printf |
22:01 | <@ToxicFrog> | As in, "%X" % 10 as equivalent to sprintf("%X", 10)? |
22:01 | < Vornicus> | yes |
22:01 | <@ToxicFrog> | That reminds me. |
22:01 | <@ToxicFrog> | I keep meaning to port that to lua, because it's a totally sweet idea. |
22:01 | <@jerith> | "foo %s bar %2f" % ("str", 23.5) |
22:01 | < Vornicus> | TF: I'd also look at python 3.0's format function; it's a bit more awesome. |
22:02 | | * jerith should look at that. |
22:02 | <@ToxicFrog> | Well, we already have a format function |
22:02 | <@ToxicFrog> | I mean the % operator applied to strings specifically |
22:05 | <@ToxicFrog> | That was surprisingly easy. |
22:05 | <@ToxicFrog> | getmetatable("").__mod = function(fmt, data) return fmt:format(unpack(data)) end |
22:06 | < Vornicus> | THat was surprisingly easy. |
22:07 | < Doctor_Nick> | That was surpisingly easy. |
22:09 | <@ToxicFrog> | getmetatable("").__mod = function(fmt, data) return fmt:format(unpack(type(data) == "table" and data or {data})) end |
22:09 | <@ToxicFrog> | A more forgiving version that lets you drop the {} when there's only a single substitution to be made. |
22:13 | <@ToxicFrog> | bkelly@b-kelly:~/devel$ env LUA_PATH='./?.lua;./?/init.lua' lua -lutil -e 'print( "foo %s bar %d" % { "baz", 10 } )' |
22:13 | <@ToxicFrog> | foo baz bar 10 |
22:13 | <@ToxicFrog> | yaye |
22:14 | <@ToxicFrog> | aaand commmitted to git |
22:15 | < Doctor_Nick> | how do you like git compared to other VCSs? |
22:16 | <@ToxicFrog> | It's my favorite so far. |
22:16 | < Doctor_Nick> | hmm |
22:17 | <@ToxicFrog> | *way* easier to set up and use than SVN or CVS, and I like the semantics more than SVN or Perforce. |
22:17 | < Doctor_Nick> | have you used DARCS? |
22:17 | <@ToxicFrog> | I haven't tried Mercurial, which I understand is very similar. |
22:17 | <@ToxicFrog> | I don't know anything about DARCS. |
22:17 | < Doctor_Nick> | ok |
22:17 | <@ToxicFrog> | Distributed ??? Revision Control System? |
22:17 | < Doctor_Nick> | i'm starting a project soon and i need to set up a vcs |
22:17 | < Doctor_Nick> | I dunno |
22:17 | <@jerith> | Darcs, git and mercurial seem to be fairly similar in featureset and general philosophy. |
22:18 | < Doctor_Nick> | my friend was all up ons about it |
22:18 | < Doctor_Nick> | but he's that way about anything haskell |
22:18 | <@ToxicFrog> | git (and distributd VCSes in general) tend to be very easy to set up because they don't require a central server |
22:18 | <@jerith> | I've used darcs and hg a bit. |
22:18 | <@ToxicFrog> | And git at least will talk over SSH, so even if you're keeping your code on a remote server you don't need to run gitd. |
22:18 | < Doctor_Nick> | oh, cool |
22:19 | <@jerith> | That's a win over darcs. I think. |
22:19 | < Doctor_Nick> | almost all my coding is going to be through ssh so |
22:20 | <@ToxicFrog> | (let's see...man page says it talks read-write on local, rsync, and ssh repos, and read-only on http, https, and gitd) |
22:21 | <@ToxicFrog> | Nod |
22:22 | <@ToxicFrog> | It's pretty cool about cloning repos and the like - you can say "git clone ssh://user@host/repo.git" to get a local copy, and it'll remember where it was originally cloned from so that "git pull" and "git push" automatically talk to that repo by default |
22:23 | < Doctor_Nick> | cool |
22:23 | <@ToxicFrog> | All the usual DVCS features...branching, deltified storage, diffs, per-file and per-change commit staging, stashing and unstashing |
22:24 | <@ToxicFrog> | The GUI tools are kind of rough, though, from what little I've used them. |
22:26 | < Doctor_Nick> | like i said, this is all gonna be through ssh, so i dont need any gui tools ;) |
22:27 | <@ToxicFrog> | Aah yes. Will you be doing the actual development on the remote system, or developing locally (with, say, an X-capable editor) and syncing to the remote system for testing and the like? |
22:27 | < Doctor_Nick> | i think im just gonna use emacs on that system |
22:28 | <@ToxicFrog> | Nod |
22:28 | < Doctor_Nick> | i was thinking about using sshfs but I can't because I have to do an ssh into the cs shell and then to my specific computer |
22:28 | <@ToxicFrog> | And in that case you don't even need the ssh transport for your VCS, you just keep it all on the remote system |
22:28 | <@ToxicFrog> | aaah |
22:28 | <@ToxicFrog> | Yeah, I'm in a similar situation with the CS lab machines here |
22:29 | < Doctor_Nick> | hope it doesn't hard lock while im at home :) |
22:29 | <@ToxicFrog> | However, I have a world-facing SSH server |
22:29 | <@ToxicFrog> | So generally what I do is develop locally, and when I need to test it on the lab machine, I ssh to the gateway, from there to the lab machine, and from there I rsync or git-pull my changes from my home machine |
22:30 | <@ToxicFrog> | Rather than copying them to the gateway, and from there to the lab system. |
22:31 | < Doctor_Nick> | hmm |
22:32 | < Doctor_Nick> | maybe ill just do that |
22:32 | <@ToxicFrog> | I keep the master repo on my home machine, and if I end up making changes on the lab machine (either physically in the lab, or over ssh as I find a fix needs to be made while testing remotely or the like) I can push them back. |
22:34 | < Doctor_Nick> | yeah |
22:35 | < Doctor_Nick> | it's probably a good idea to store the canonical copy on the lab computer so my partners can access it, and just push any changes that i know are safe |
22:37 | <@ToxicFrog> | Nod |
22:37 | < Doctor_Nick> | I hate yum sooooo much |
22:37 | <@ToxicFrog> | Why? |
22:37 | < Doctor_Nick> | very slow and crashes on this system often |
22:37 | <@ToxicFrog> | Aah. |
22:39 | <@ToxicFrog> | Anyways, for that setup, best approach is probably to create a "bare" repo on the lab machines, and everyone does clone/push/pull on that |
22:39 | <@ToxicFrog> | simplifies synchronization |
22:40 | < Doctor_Nick> | "bare"? |
22:40 | < Vornicus> | ...and apparently Excel's concatenate only takes 30 inputs. |
22:40 | <@ToxicFrog> | (although there are other idioms you can use; such as having the master repo be your working copy, and everyone else pushes into an "incoming" branch which you then merge into the main branch) |
22:40 | < Doctor_Nick> | gg |
22:40 | <@ToxicFrog> | bare == no working copy |
22:41 | < Doctor_Nick> | ? |
22:41 | <@ToxicFrog> | A repo that holds all the project history and can be synced from and to, but is not used directly for development |
22:41 | < Doctor_Nick> | oh |
22:41 | < Doctor_Nick> | i see |
22:41 | | * Vornicus rejiggers, cuts it down a lot by turning 3 into 1 six times over. |
22:41 | <@ToxicFrog> | A normal git repo contains both the version history (in .git) and a working copy which you can edit. |
22:42 | <@ToxicFrog> | "commit" saves those edits to the version history, and push/pull/fetch/merge/etc synchronize those edits with other branches or repos. |
22:42 | < Doctor_Nick> | ok |
22:43 | <@ToxicFrog> | A bare repo is used only for synchronization; you can push to it and pull from it, but it has no working copy you can edit directly - if you cd into it, you instead find the internals of the revision history. |
22:43 | < Doctor_Nick> | would i still be able to clone it locally? |
22:43 | <@ToxicFrog> | Yep |
22:43 | < Doctor_Nick> | ok |
22:44 | <@ToxicFrog> | None of the commands care what transport you use |
22:44 | <@ToxicFrog> | (this is in fact how I do my development; bare repos are in /usr/src and are exposed to the world read-only. My working copies are cloned from them and kept in ~/devel on the same machine.) |
22:44 | < Doctor_Nick> | aah, ok |
22:45 | <@ToxicFrog> | (I *could* expose my working copies to the world, and sync to/from them directly from my other systems, but there are potential complications involved with pushing to a branch that is *also* the currently checked out working copy) |
22:46 | <@ToxicFrog> | (using a bare repo completely avoids these complications, since it never has anything checked out, at the cost of having to keep a second repo around) |
22:47 | < Doctor_Nick> | how does it handle patching two versions of the same file pushed to it? |
23:34 | | AnnoDomini [AnnoDomini@Nightstar-29058.neoplus.adsl.tpnet.pl] has quit [Quit: ...and when Mr. Bigglesworth gets upset, people die!] |
23:49 | <@ToxicFrog> | As in, person A commits, then person B commits changes to the same files? |
23:49 | <@ToxicFrog> | It'll tell person B that they need to re-pull and merge the changes |
23:50 | <@ToxicFrog> | And once they've done that it'll accept it. |
23:50 | <@ToxicFrog> | It can auto-merge if the changes are nonconflicting, or you can do it manually whether they conflict or not. |
23:54 | < Doctor_Nick> | yeah |
23:55 | < Doctor_Nick> | ok |
--- Log closed Sat May 17 00:00:31 2008 |