code logs -> 2010 -> Tue, 27 Apr 2010< code.20100426.log - code.20100428.log >
--- Log opened Tue Apr 27 00:00:11 2010
--- Day changed Tue Apr 27 2010
00:00 SmithKurosaki [Smith@Nightstar-85fffd27.dsl.teksavvy.com] has quit [Ping timeout: 121 seconds]
00:00 SmithKurosaki [Smith@Nightstar-85fffd27.dsl.teksavvy.com] has joined #code
00:02 Serah is now known as Gamerrah
00:11 You're now known as TheWatcher[T-2]
00:14 You're now known as TheWatcher[zZzZ]
00:56 cpux [Moo@Nightstar-20a84089.dyn.optonline.net] has quit [Ping timeout: 121 seconds]
01:06 GeekSoldier_ is now known as GeekSoldier
01:20 GeekSoldier [Rob@Nightstar-e86e3e0d.ip.cablemo.net] has quit [Connection reset by peer]
01:34 GeekSoldier [Rob@Nightstar-e86e3e0d.ip.cablemo.net] has joined #code
02:21 gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: Z?]
02:48 Zed [Zed@Nightstar-d7ade99d.or.comcast.net] has joined #code
02:52 shade_of_cpux [Moo@Nightstar-20a84089.dyn.optonline.net] has joined #code
02:52 shade_of_cpux is now known as cpux
03:50
<@McMartin>
Ubuntu 10.04: Pretty slick looking
04:20
<@Kazriko>
True. I'm still working out all of the little issues with it though.
04:22
<@Kazriko>
it breaks Folding@Home, for instance... but that seems to be a coding problem at FAH.
04:39 celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: *hums* Can't stay now!]
04:52 Reiv [NSwebIRC@Nightstar-1055e8af.waikato.ac.nz] has joined #code
05:04
<@McMartin>
I had some issues running it in VBox, but my version of VBox is out of date.
05:06
<@Kazriko>
heh, I just upgraded my existing systems straight over to it.
05:06
<@Kazriko>
they've fixed most of the largest problems already. Such as the virtual-manager not working properly.
05:45 Gamerrah [Z@26ECB6.A4B64C.298B52.D80DA0] has quit [Ping timeout: 121 seconds]
06:02 Reiv [NSwebIRC@Nightstar-1055e8af.waikato.ac.nz] has quit [Ping timeout: 121 seconds]
06:09 AnnoDomini [annodomini@Nightstar-3524a6bf.adsl.tpnet.pl] has joined #code
06:09 mode/#code [+o AnnoDomini] by Reiver
06:19 Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has joined #code
06:37 Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has quit [Ping timeout: 121 seconds]
06:37 Vornicus is now known as Vornicus-Latens
06:56 cpux is now known as shade_of_cpux
08:09 Zed [Zed@Nightstar-d7ade99d.or.comcast.net] has quit [Ping timeout: 121 seconds]
08:43 AnnoDomini [annodomini@Nightstar-3524a6bf.adsl.tpnet.pl] has quit [Ping timeout: 121 seconds]
08:43 AnnoDomini [annodomini@Nightstar-3524a6bf.adsl.tpnet.pl] has joined #code
08:43 mode/#code [+o AnnoDomini] by Reiver
08:55 Zed [Zed@Nightstar-e4835f03.or.comcast.net] has joined #code
09:00 You're now known as TheWatcher
09:25 AnnoDomini [annodomini@Nightstar-3524a6bf.adsl.tpnet.pl] has quit [Ping timeout: 121 seconds]
09:27 AnnoDomini [annodomini@Nightstar-bbbe50d9.adsl.tpnet.pl] has joined #code
09:27 mode/#code [+o AnnoDomini] by Reiver
10:28 Rhamphoryncus [rhamph@Nightstar-8931f88f.abhsia.telus.net] has quit [Client exited]
10:33 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has quit [Connection closed]
11:12
< Namegduf>
What do people here think of Django?
11:13 gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has joined #code
11:26
<@AnnoDomini>
He lurks in #DnD.
11:26
<@AnnoDomini>
He very rarely speaks.
11:26
<@AnnoDomini>
I have no opinion, due that.
11:27
< Namegduf>
I didn't realise that Python web app frameworks liked D&D
11:27
<@AnnoDomini>
Oh, I though you meant Django_Kagato. :p
11:27
< Namegduf>
XD
11:28
<@AnnoDomini>
If Python likes DnD, what RPGs do the other programming languages like?
11:31
< Namegduf>
XD
11:31
< Namegduf>
Hmm.
11:31
< Namegduf>
Ruby might like Exalted.
11:51
< Namegduf>
"Programmers are too stupid to understand anything but OO, so Django translates for you." ~Django guy, lecturing
11:51
< Namegduf>
Not an exact quote, just a summary.
11:51
< Namegduf>
"Personally, I hate SQL." is an actual quote, however.
11:53
<@AnnoDomini>
These strike me as silly.
11:53
< Namegduf>
Me too.
11:53 Attilla [Attilla@FBC920.398CA6.FC4697.2D0785] has joined #code
11:53 mode/#code [+o Attilla] by Reiver
11:59
< Namegduf>
It's an ORM-meets-web-framework, I think.
12:04
< Tarinaky>
AnnoDomini: C++ likes either 2e Shadowrun or AD&D2e I think.
12:04
< Tarinaky>
AnnoDomini: C would then, obviously, like Papyrus Edition Shadowrun or D&D
12:05
< Tarinaky>
Assembly is a diehard wargamer who just doesn't get RPGs.
12:06
< Tarinaky>
Something like that anyway ~
12:09 Zed [Zed@Nightstar-e4835f03.or.comcast.net] has quit [Connection reset by peer]
12:10
< Tarinaky>
I suspect I may have already invested too much thought into this but... Lua doesn't care what game she plays as long as it's with C/C++ - she never knows what's happening anyway.
12:11
< Tarinaky>
Please, somebody stop me before I make myself look any nerdier >.>
12:15
< Namegduf>
I just got back to the lecture after a break. Walked in with a four pack of energy drink.
12:17 * Namegduf deals with being tired in an awesome way.
12:17
< Tarinaky>
Breaks in lectures?
12:18
< Tarinaky>
Interesting. Also: Won't the ring-pulls be disruptive?
12:18
< Namegduf>
We have two hour lectures.
12:18
< Tarinaky>
Ah. Yeah. Fair enough there.
12:18
< Namegduf>
Sometimes, anyway.
12:18
< Tarinaky>
Still... I'd imagine the lecturer would get annoyed by the ring-pulls >.>
12:18
< Namegduf>
The university is scheduled for 50 minute lectures, plus ten minute travel time between each.
12:18
< Tarinaky>
At least, I would.
12:19
< Namegduf>
Someone was passing around food last lecture-and a sandwich in front of me this time.
12:19
< Namegduf>
I should have grabbed one, I guess.
12:22
< Namegduf>
Anyways, probably no, they're loud, food is quiet and generally normal.
12:24
< Tarinaky>
I guess I'm just overly sensitive - one of the lecturers here had a go at a friend for typing notes on a laptop.
12:27
< Namegduf>
That is very odd.
12:27
< Namegduf>
Notes on a laptop are 4-5 people a lecture here, and they're normally the only people making notes.
12:29
< Tarinaky>
This is undergrad physics so those numbers a little bit different here.
12:29
< Namegduf>
Ah.
12:29
< Tarinaky>
Lecture theaters are, very often, packed.
12:29
< Namegduf>
Yeah.
12:29
< Tarinaky>
And most people are making notes deadtree.
12:29
< Namegduf>
Ours are either sparse, or near empty, the latter only happening when deadlines hit.
12:31
< Tarinaky>
Plus it's a proven fact that the more Maths you know the crazier you become
12:31
< Tarinaky>
Based on the state of the Physics Department, I assume that the Maths department must be full of people claiming to be Napoleon.
12:32
< Namegduf>
Ah.
12:33
< Tarinaky>
(One of my best friends honestly doesn't know the day of the week unless I make her write it on the back of her hand)
12:33
< Tarinaky>
(Not making this up >.>)
12:33
< Namegduf>
Ah.
12:33
< Namegduf>
I don't know my timetable except very vaguely.
12:33
< Namegduf>
I check their online one.
12:43
< Tarinaky>
Eugh.
12:43
< Tarinaky>
I have exams so soon. It's terrifying.
14:17 celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code
14:24 shade_of_cpux [Moo@Nightstar-20a84089.dyn.optonline.net] has quit [Ping timeout: 121 seconds]
14:53 Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has joined #code
17:40 Vornicus-Latens is now known as Vornicus
18:42 Derakon [Derakon@Nightstar-1ffd02e6.ucsf.edu] has joined #code
18:42 mode/#code [+o Derakon] by Reiver
18:42 * Derakon mutters at scipy's affine_transform function.
18:42
<@Derakon>
I want to rotate an array about its center! This should be doable with a standard transformation matrix! Why is it so hard?
18:43
<@Derakon>
Yes, I could use your rotate() function, but then I'm doing a needless extra transform!
18:43
<@Derakon>
(Since I also need to scale the matrix)
18:58
< Vornicus>
Der: have you been trying to rotate it about its center, which is not necessarily the origin?
18:58
<@Derakon>
Yes, I want to rotate the array about its center; thus a 10x10 array should be rotated about the point at [4, 4] or thereabouts.
18:59
<@Derakon>
affine_transform has an "offset" parameter which seems to affect the locus for transformations, but its behavior seems to be inconsistent...
18:59
< Vornicus>
4.5, 4.5
19:00
<@Derakon>
For example, if I want to rotate the 10x10 matrix by 90?, then offset should be (0, 9). If I want to rotate it by 45?, then offset should be about (-2, 4.5).
19:00
<@Derakon>
(This is determined empirically on the REPL)
19:00
< Vornicus>
whut
19:01
<@Derakon>
Exactly.
19:01
< celticminstrel>
...matrices don't have real-valued coordinates!
19:02
< Vornicus>
It does interpolation.
19:02
<@Derakon>
Celticminstrel: you can interpolate between points in the matrix.
19:02
< Vornicus>
Or something.
19:06
<@Derakon>
Here, a demonstration: http://pastebin.starforge.co.uk/278
19:11
< Vornicus>
wtf
19:25
<@Derakon>
Here's the documentation for affine_transform, for what it's worth: http://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.interpolation. affine_transform.html
19:41 Rhamphoryncus [rhamph@Nightstar-8931f88f.abhsia.telus.net] has joined #code
19:57 Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has quit [[NS] Quit: If the world didn't suck, we'd all fall off.]
20:18
< Tarinaky>
I need a statistical function approximating a particular curve :/ Does anyone have sugestions on how I can quickly and easily tackle this?
20:21
<@Derakon>
Sample the curve at set intervals and use that as the input data?
20:21
< Tarinaky>
Problem is I don't have a hard set of data.
20:21
<@Derakon>
Oh, wait, you need the function as input, sorry.
20:21
<@Derakon>
Er, as output.
20:21
< Tarinaky>
What I know is the lowest value is 15. The highest value should be about 70.
20:22
< Tarinaky>
The median point needs to lie close to 20.
20:22
< gnolam>
Google "curve fitting".
20:22
< Tarinaky>
(As an aside: This is to randomly generate an age)
20:23
<@Derakon>
http://www.censusscope.org/us/chart_age.html
20:23
<@Derakon>
(Off to lunch...)
20:24
< Tarinaky>
Derakon: The problem is that's not the shape of the graph I want. It's for a generic fantasy setting so it needs more of a pyramid shape than an hourglass.
20:24
< Tarinaky>
Median point needs to be at 20 because that's the age I want to come out of the system most the time :/
20:26 * gnolam blarghs at point sprites.
20:27
< Tarinaky>
If I could figure out a polynomial that'd fit the requirement I could come up with a way of mapping it to a random number generator.
20:28
< Tarinaky>
Or at least approximate the requirement.
20:29 Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has joined #code
21:00
<@Derakon>
Well, you can start with a -x^2 function to get you the basic peak, then start playing with it.
21:05
<@Derakon>
Or use a Gaussian curve.
21:09
<@Derakon>
Try this out: y = 50e^(-.0008(x - 20)^2) - .1x
21:09
<@Derakon>
Peaks at 20, hits zero at 70.
21:13
< gnolam>
[22:11] <Chousuke> There's a Clojure developer called "Brian Hurt" and my brain seems to refuse to accept that's his actual name.
21:15
< Tarinaky>
Blargh. It'd be easier if I had a plotter >.<
21:15
< Tarinaky>
Meh. Doesn't matter.
21:16
< Tarinaky>
gnolam: Sounds like someone had a sense of humour during labour~
21:16
<@Derakon>
Tarinaky: OS?
21:17
< Tarinaky>
Linux.
21:17
< Tarinaky>
Anyway. I'm putting this to bed for a while.
21:17
< Tarinaky>
I should be revising anyway.
21:17
<@Derakon>
Ah, well.
21:17
< Tarinaky>
Please don't feed the little Troll in my brain >.>
21:17
<@Derakon>
GraphCalc supposedly works on Linux. http://www.graphcalc.com/download.shtml
21:17
< Tarinaky>
GNANAAAGGAH!
21:18
< Tarinaky>
I said don't.
21:18
<@Derakon>
:p
21:18 * Tarinaky /clears
21:31
< gnolam>
Otherwise, today's name is "Annie Jump Cannon".
21:32 * McMartin works out what the VirtualBox/Ubuntu problem was.
21:32
<@McMartin>
To wit, I was running a pathetically ancient version because I was too lazy to upgrade.
21:32
< gnolam>
(I decided to make my night sky correct enough to navigate by, and came across her while reading up on astrometrics)
21:33
<@Derakon>
Hey look, you can write unreadable code in Python too!
21:33
<@Derakon>
points = [tuple([int(x) for x in set.split(' ') if x and ';' not in x]) for set in points]
21:33
<@Derakon>
(This is my own fault, not Sebastian's)
21:33
<@McMartin>
Comprehension abuse \o/
21:34
<@Derakon>
I could have made it worse by replacing the second instance of "points" with lines[line].split('|')[1:-2]
21:34
<@Derakon>
(This is code to read in a file containing points and convert them into lists of tuples of ints)
21:35
<@Derakon>
(And yes, I'm reading the entire file into memory so I can easily skip over lines I don't care about)
21:35
<@McMartin>
If it fits, no reason not to
21:37
<@Derakon>
The sample file I'm working with is 1084 lines, or 50KB.
21:38
<@McMartin>
Yeeeeah.
21:40
< Tarinaky>
While I wait for dinner before going to bed. Does anyone have any advice for coding collaboratively?
21:41
< Tarinaky>
Remembering that you're talking to me - the worst coder in the channel ^^
21:42
<@Derakon>
Define "collaboratively".
21:42
<@Derakon>
It could mean anything from "two guys working on a personal project together" to "massive enterprise project spanning dozens of teams".
21:43
< Tarinaky>
Two people atm.
21:43
< Tarinaky>
Possibly a third.
21:43
<@Derakon>
Talk over your designs and reach an agreement before you start coding. Keep out of each others' way. Decide on a coding style and naming convention, then stick to it.
21:44
<@Derakon>
Give each person a separate section to work on, and put those sections in different files.
21:44
<@McMartin>
If there's a bottleneck, such that "keep out of each others' way" is not possible, hotseat programming with the other guy as backseat auditor can be more effective than you'd think.
21:44
<@McMartin>
There's some buzzword for that, but I forget what it is.
21:44
<@Derakon>
Paired programming.
21:45
< Tarinaky>
We don't live close enough for irl. :x
21:45
<@McMartin>
Webex and skype~
21:45
< Tarinaky>
What's Webex?
21:45
<@McMartin>
A desktop-sharing thing.
21:45
<@Derakon>
Install Mercurial on everyones' computers, and use it. Get a Google Code site for the project's main repo.
21:45
< gnolam>
Agree on acceptable code commit procedures.
21:45
< gnolam>
And enforce them with a clue-by-four if necessary.
21:46
<@Derakon>
Gnolam's somewhat adversarial approach to project management should, with luck, not be needed in such a small group. :)
21:46
<@McMartin>
With exactly two developers you can get away with "being the VCS" by hand, but it doesn't scale well.
21:46
< gnolam>
Err. It's needed in any group > 1.
21:47
< gnolam>
I speak from experience. :P
21:47
<@McMartin>
You do, of course, realize, that the person we're nominally helping here has no idea what any of us are talking about.
21:47
<@jerith>
It's often needed in groups <= 1 as well.
21:47
<@McMartin>
We've basically told him "take a year and a half of general source management training and maybe you can team up with someone".
21:50
< Tarinaky>
The other team-mate has a CS background. So hopefully he'll be applying more clue-by-4s to me than the other way around.
21:52
< Tarinaky>
Also: is doxygen any good for documentation?
21:53
< Tarinaky>
The other guy suggested it on the grounds that it's the one he's had to use for homework.
21:53
<@McMartin>
It's no substitute for a proper design document, but it's at least as good as any other widely used inline code doc comment system.
21:54
<@McMartin>
Well.
21:54
<@McMartin>
What's the project language?
21:54
< Tarinaky>
Well... My understanding of what a DesignDoc is the two things are very different beasts...
21:54
<@McMartin>
Yes, they are. That's why it's no substitute for it.
21:54
<@Derakon>
A design doc is a statement of what you plan to do.
21:55
<@Derakon>
Doxygen is for documenting what your code actually does.
21:55
< Tarinaky>
We've not had this argument yet.
21:55
<@McMartin>
OK
21:55
< Tarinaky>
As an aside: we can't start the project till just before the start ofJune
21:55
<@Derakon>
For example, here's the Doxygen-generated documentation for Jetblade: https://jetblade.googlecode.com/hg/html/index.html
21:55
< Tarinaky>
Due to things like exams ~
21:55
<@Derakon>
Jetblade's written in Python, but Doxygen is fairly language-agnostic, as I understand it.
21:56
<@McMartin>
Right.
21:56
< Tarinaky>
On the subject of design doc - is possible to make it... managed by Doxygen?
21:56
<@McMartin>
K-kk-k-k-k-kinda.
21:56
<@McMartin>
You can have files that are basically All Comment and that are hyperlinked to each other
21:56
<@Derakon>
You can stick files in where Doxygen can see them and write anything you want into them.
21:56
<@Derakon>
It's a pretty hackish way to do things though.
21:57
<@McMartin>
Also, if you're writing in Java or Python, you may want to at least consider just using the language's own doc comment features (javadoc, pydoc).
21:57
<@McMartin>
It looks like Doxygen is reading the pydoc info and making it more awesome, though.
21:57
< Tarinaky>
It seems less hackish than keeping them totally separate :x
21:57
<@Derakon>
Doxygen can read Pythonic docstrings, but it doesn't do full parsing on them, last I checked.
21:57
<@Derakon>
It will include them in generated documentation basically in plaintext, though.
21:58
<@Derakon>
Tarinaky: that really depends on if you expect your design document to link heavily to the documentation of your actual code (or vice-versa).
21:58
< Tarinaky>
Well... It just seems kinda... like it should go with the rest of the documentation.
21:59
< Tarinaky>
Sort of thing :/
21:59
<@McMartin>
You can upload it to roughly the same place
21:59
< Tarinaky>
I mean. Maybe I'm just making a problem needlessly.
21:59
<@McMartin>
But the phone book doesn't include wiring diagrams for telephones.
21:59
<@Derakon>
Tarinaky: well, so stick the text of your design document into the "docs" directory, and put the Doxygen documentation in the "docs" directory too.
21:59
<@McMartin>
Basically, if your design document is actually naming classes, by name, extensively, you're probably doing your text-based design at the wrong level
21:59
<@Derakon>
And then have your source control manage them both.
22:00
< Tarinaky>
That sounds fair.
22:01
<@jerith>
I tend to use a wiki for design docs and link to the doxygen or whatever from that.
22:02
<@McMartin>
I use either Wiki or LaTeX.
22:02
< Tarinaky>
That makes sense.
22:02
<@jerith>
I also write things like API docs in wikitext, and generate the bits I can generate into wikitext.
22:04
< Tarinaky>
As for Mercurial - is that going to be a headache to use considering I've only ever used git?
22:04
<@jerith>
Why not use git, then?
22:05
< Tarinaky>
We were going to assuming he could get it to work :x
22:05
<@Derakon>
I named Mercurial simply because I considered it to be easy to get started using if you have no prior knowledge of source control.
22:05
<@jerith>
Whichever one you decide to use, learn the hell out of it.
22:05
< Tarinaky>
Someone else said mercurial.
22:05
<@Derakon>
If you have prior experience, then by all means use what you're familiar with.
22:05
< Tarinaky>
Right.
22:05
<@McMartin>
Tarinaky: My own experiences in getting git set up were actually quite smooth.
22:05
< Tarinaky>
Well, the problem is his primary machine is Windows.
22:06
<@jerith>
I like bzr and darcs, but I'm familiar with svn and can use hg and git to get someone else's code.
22:06
< Tarinaky>
Which is going to be all kinds of fun.
22:06
<@McMartin>
Tarinaky: That was my baseline assumption
22:06
< Tarinaky>
My machine is not.
22:06
<@Derakon>
So?
22:06
<@Derakon>
The protocol you use to communicate is the same.
22:06
<@McMartin>
MSYSGit is fine.
22:06
< Tarinaky>
I was of the opinion that Windows support for git was flakey.
22:06
< Tarinaky>
Fair enough then.
22:06
< Tarinaky>
s/opinion/understanding
22:07
<@McMartin>
So was mine, but I just set up the latest MSYSGit a couple weeks ago, and that version worked without a hitch.
22:07
< Tarinaky>
f MSYSGit works there's no issue.
22:07
<@McMartin>
Well
22:07
<@McMartin>
Without any hitches that weren't "I don't understand how git works yet" or "This application does stupid things", neither of which are Git's fault and the latter of which Git handled far better than Subversion
22:08
< Tarinaky>
By far better I assume you mean nothing was over-written with nul and then immediately backed up over all backups ~
22:08
<@McMartin>
I think it was maybe five hours from absolute ground zero to "I have a git repo that has my old SVN history in it, and that repo is the master for a Windows, a Mac, and a Linux machine"
22:08
<@McMartin>
Interaction with Mac app/data bundles, actually, which have a tendency to trash SVN metadata in the checkout.
22:09
<@jerith>
McMartin: Were you here for the Great Git Versus Everything Debate starring me, Namegduf and some other people?
22:09
< Tarinaky>
Is there anything I should be aware of going from single-developer to multi-developer wrt Git?
22:10
< Tarinaky>
Or will everything just sort itself out automagically?
22:10
<@McMartin>
I started it, because I announced I wanted to learn a DVCS and wanted suggestions.
22:10
<@jerith>
Ah, right.
22:10 * Derakon sighs at the scope room.
22:10
<@McMartin>
Tarinaky: You need to remember to push your commits and pull the other guy's.
22:10
<@McMartin>
That's about it.
22:10
<@jerith>
Then you've heard my opinions. :-)
22:10
<@Derakon>
We have a decrepit old computer that's giving network timeouts when we try to talk to it.
22:10
<@McMartin>
"commit" goes only to your local copy.
22:10
< Tarinaky>
Oh I got that. I meant more if two people are working on the project at once.
22:10
<@McMartin>
Oh.
22:10
<@Derakon>
Both computers are physically connected to a switch.
22:10
<@McMartin>
Sometimes when you pull there might be a conflict.
22:10
< Tarinaky>
Push/Pull I familiarised myself when I started working across two machines >.>
22:11
<@Derakon>
(We have the old computer because we need a computer with ISA slots to talk to a specific bit of hardware...)
22:11
<@jerith>
Tarinaky: I prefer a pseudo-central repo setup.
22:11
< Tarinaky>
jerith: I had a central repo.
22:11
<@jerith>
Everyone pulls from and pushes to "trunk", which is the canonical source of current bits.
22:11
<@McMartin>
In that case, it's just like working across two machines, except that you can have conflicting edits if you're both hacking the same file.
22:12
< Tarinaky>
So short answer is don't cross the streams^W^W^Wedit the same file.
22:12
<@Derakon>
Tarinaky: basically how this works is, you work on your copy of the repo, you check in to your copy of the repo, etc. Everything works fine. Then you want to send your results to the other devs. So first you pull the most recent copy of the remote repo down, in case it's changed since you last tried it. And you get that working with your code. Then you push your code back up to the main repo.
22:12
<@McMartin>
Which is why communication to minimize hacking the same file simultaneously is handy.
22:12
<@jerith>
It's very importnant that you make sure you merge from the central repo before pushing back to it.
22:12
< Tarinaky>
Right. I hadn't thought to merge first.
22:13
<@McMartin>
My preferred technique is actually to regularly pull at breathing points, but I'm used to devteam sizes of more like 8-10.
22:13
<@McMartin>
jerith: Wait, doesn't pull automerge?
22:13
<@McMartin>
Or am I confusing pull and fetch?
22:13
<@jerith>
This is a lesson I need to beat into the American office with a sledgehammer.
22:13
<@jerith>
McMartin: Depends on which DVCS and stuff.
22:13
<@McMartin>
Got it
22:13
<@McMartin>
So, uh, say it's git, which I'm still learning >_>
22:14
< Tarinaky>
" git-pull - Fetch from and merge with another repository or a local branch"
22:14
< Tarinaky>
It merges.
22:14
<@jerith>
I specified "merge", because you need to run tests and stuff as well, not just munge the code.
22:14
<@McMartin>
Ah. Yes.
22:14
<@McMartin>
This is why I like to do it incrementally instead of "once I'm done".
22:15
<@Derakon>
One handy trick I found with Jetblade was, before pushing my code to the remote repo, I made a clone of my local repo and tested *that*.
22:15
<@jerith>
If I remember bzr correctly, "pull" fails if there are local changes. "merge" does what one would expect.
22:15
<@Derakon>
That way, if I had local files that were needed that I hadn't added, the clone would fail.
22:15
<@Derakon>
This can happen easily with game projects, or any project that has lots of assets. But it's good practice in general, just so you don't push nonworking code to the main repo.
22:15
<@jerith>
Incrementally is The Right Thing To Do, as long as you can trust that the bits from trunk aren't broken.
22:16
<@jerith>
Derakon: "svn stat" or the equivalent is quite handy. :-)
22:16
<@McMartin>
jerith: You can still be burned by overly general .svnignores and friends
22:17
<@jerith>
True, but I excise those viciously.
22:17
<@Derakon>
Well, the clone approach is pretty reliable, so IMO it's still to be preferred.
22:17
<@jerith>
In particular, I don't ignore build/ and dist/ in my projects.
22:18
<@jerith>
I run the equivalent of "make distclean" before merging, to make sure I'm not including .pyc files and stuff.
22:19
< Tarinaky>
How should the directory be... organised? And what do we need to argue about wrt Makefiles and stuff?
22:19
<@McMartin>
I like small incremental commits while I have other things boiling, so git's approach to commits and adds meshes pretty well with me
22:19 * Tarinaky foresees his current monolithic-copied-and-pasted-bits-out-of-the-manual Makefile being not fit for purpose >.>
22:19
<@jerith>
Of course, my system works for me and I'm somewhat atypical. YMMV.
22:19
<@Derakon>
Tarinaky: as a general rule, you start out by just tossing all of your source code and Makefiles etc. into one flat directory.
22:20
<@Derakon>
Reorganize at the time that this becomes unwieldy, which it won't for small-to-medium-sized projects.
22:20
<@McMartin>
I tend to have my root be projectname/src, projectname/include, and then have Makefiles in src/ and at the top level. Final binaries go in the root.
22:20
< Tarinaky>
For an idea of scope the project is a complete 2D game.
22:20
<@McMartin>
src, include, and content, then.
22:20
<@Derakon>
I tend to call it "data" instead of "content", but both work.
22:21
<@Derakon>
I take it this is C++?
22:21
< Tarinaky>
It'll -probably- be C++.
22:21
<@McMartin>
You may also want a "prebuilt", come to think of it
22:21
< Tarinaky>
Since it's a language I know we both share in common.
22:21
<@jerith>
I use "resources" for data, content, configs, etc.
22:21
<@Derakon>
(Python! Python!)
22:21
<@McMartin>
For your copies of SDL/Qt/Lua/etc.
22:21
<@Derakon>
Jerith: that implies writing to that directory at runtime.
22:21
< Tarinaky>
If we go C++ what do we need for source portability?
22:22
<@jerith>
I also use "libs" or "deps" for stuff that needs to be installed that isn't part of the project.
22:22
<@McMartin>
Tarinaky: Will he be using MinGW/Code::Blocks/etc.?
22:22
<@jerith>
Derakon: Nothing in this directory structure gets written to at runtime.
22:22
< Tarinaky>
Don't know.
22:22
<@jerith>
Default configs and such.
22:22
<@Derakon>
Jerith: so configs aren't editable in-game?
22:23
<@Derakon>
Ahh.
22:23
<@jerith>
Stuff that gets packaged.
22:23
< Tarinaky>
When I next see him if he says VC++ I will beat him with a stick until he bleeds.
22:23
<@jerith>
Also, in many cases, various test configs and things.
22:23
<@McMartin>
If he is, you don't need anything special, as you'll both be using GCC and you can probably code with an aim towards single-source, multi-platform results.
22:23
<@Derakon>
To a certain extent, I'm tempted to say that his build problems are his business.
22:23
<@Derakon>
You can be in charge of Linux compatibility and he in charge of Windows compatibility.
22:23
<@Derakon>
As long as they both work, who cares?
22:24
< Tarinaky>
Well, if there're offtheshelf foss fixes that're good then it's best to just start there...
22:24
<@McMartin>
If he is using VC++ - and there are plausible reasons that he might, because MinGW has some rather dumb blind spots for system integration sometimes - then you should consider SCons, which can autogenerate Makefiles and .sln/.vcproj files and go from there.
22:24
< Tarinaky>
Rather than rewriting them.
22:24
<@McMartin>
But use the bleeding edge SCons, as the latest stable SCons is totally unusable
22:25
<@McMartin>
(Unless it was recently released while I wasn't looking)
22:25
<@McMartin>
(In particular, if you're intending native 64-bit support for some reason, you're more or less stuck with VC++ on Windows)
22:25
<@McMartin>
(MinGW64 isn't really there yet IME)
22:28
<@McMartin>
Tarinaky: If you don't have single-source as a project goal, you'll need src/linux and src/win32 subdirectories, and the makefile should have appropriate targets that include each.
22:28
<@Derakon>
(Must...resist...urge...to...suggest...Python...)
22:28
<@McMartin>
You can then have a build.sh and build.bat that passes the right arguments to Make to do the right thing on each system.
22:28
<@McMartin>
(They want it to be easily distributable when they're done~)
22:28
< Tarinaky>
Wouldn't not having single-source make life too much work?
22:29
<@jerith>
Python isn't best language for /everything/, Derakon.~
22:29
<@McMartin>
It makes it more work.
22:29
<@McMartin>
It doesn't necessarily make it too much
22:29
<@Derakon>
McM: py2app, py2exe.
22:29
<@Derakon>
Kinda hosed when it comes to Linux though.
22:29
<@McMartin>
I've used both, I stand by my statement~
22:29
<@Derakon>
Bah!
22:29
<@jerith>
(I can think of maybe two or three things it doesn't do well.)
22:29
< Tarinaky>
This was a party political broadcast by the Python Party./
22:29
<@McMartin>
Tarinaky: It depends on what, precisely, your model is.
22:29
< Tarinaky>
Model?
22:29
<@jerith>
py2app was a massive pain in the nethers when I last used it.
22:30
<@Derakon>
I last used it on Monday.
22:30
<@McMartin>
So, say you're doing an SDL-style game, where there's one window or full screen and it's full of stuff
22:30
<@Derakon>
Where I ran into a couple of difficulties that were ultimately resolvable.
22:30
< Tarinaky>
Ah. Yes. SDL-style.
22:30
<@McMartin>
That's fine, you can do that single-source since SDL is cross-platform.
22:30
<@jerith>
I last used it about 3 months ago.
22:31
< Tarinaky>
Aye. But file I/O is the other big problem for Linux/Windows.
22:31
<@Derakon>
I've also used py2app (and py2exe) for Fusillade, where they worked just fine once I figured out how to use them (which is significantly harder for py2exe than for py2app).
22:31
<@jerith>
I copied and modified the py2exe stuff someone else wrote to make my py2app stuff.
22:36
< Tarinaky>
Anyway. You've all been very helpful.
22:36 * jerith is helpful like that.
22:54 AnnoDomini [annodomini@Nightstar-bbbe50d9.adsl.tpnet.pl] has quit [[NS] Quit: Gnargh.]
22:55 * McMartin was called away before he could finish his statement
22:56
<@McMartin>
If you later on want to add to your SDL app some OS-specific alert mechanisms (like, say, MessageBox on Windows, and some X thing for Linux, or maybe just a stdout warning on Linux instead), then you'd have one small file in src/linux and src/win32 that implemented alertUser() or something, and set up the Makefiles appropriately
22:56
<@McMartin>
It's not really so bad
22:56
<@McMartin>
But you don't want to use it as a crutch.
23:04 * gnolam flails at OpenGL.
23:05
< Tarinaky>
Right.
23:06
< Tarinaky>
Since the recommendation is to split everything into project/ project/src/, project/include/ and project/data/ ... How do I make the makefile compile into project/executable?
23:06 * Tarinaky never got this to work right in the past >.<
23:06
< Tarinaky>
*compile project/executable
23:07 Attilla [Attilla@FBC920.398CA6.FC4697.2D0785] has quit [Client closed the connection]
23:09
<@Derakon>
Tarinaky: make one of the things done by the compile rule be to move the generated executable into the appropriate directory.
23:19
<@McMartin>
If there's a *bunch* of output - if, for instance, you're also going to be zipping up the data into a content pack or something, you may also want a project/out or project/dist to put all the material-to-release in.
23:20
< Tarinaky>
>.> quite frankly if we get as far as having a completed project that's suitable for distributing I will be shocked and amazed/
23:20
< Tarinaky>
Quite possibly inspired to seek religion.
23:20
< Tarinaky>
:p
23:24
<@jerith>
The Cult of the Distributable Binary.
23:25 * jerith was terribly surprised that Operation Fox Assault was playable.
23:25
<@jerith>
foxassault.org if you're interested. :-)
23:25
<@jerith>
But for now, I must sleep.
23:27
<@McMartin>
Heh. I should reupload Sable somewhere.
23:29 * Derakon mutters at wx and timer events.
23:29
<@Derakon>
I'm just trying to make a simple status dialog! This shouldn't be complicated!
23:29
<@Derakon>
But the timer event isn't arriving. >.<
23:37
< Rhamphoryncus>
Doh! Testing the problem you just fixed, when you only applied the fix in one of three places, tends to waste your time
23:38
<@jerith>
Quite.
23:38
<@jerith>
So does trying to repro when you've forgotten that you actually fixed the bug.
23:39
< Rhamphoryncus>
heh
23:39 * jerith did that last week.
23:39
< Rhamphoryncus>
It wouldn't be so bad if this wasn't the only place that I originally put an assertion in, rather than just silently doing the wrong thing
23:40
<@jerith>
Silently doing the wrong thing is my forte.
23:40
<@jerith>
But I need to be asleep an hour ago.
23:41
<@jerith>
G'nightforrealznow.
23:41
< Rhamphoryncus>
g'night
23:42
<@McMartin>
Augh, wx
23:44 cpux [Moo@Nightstar-20a84089.dyn.optonline.net] has joined #code
23:49
< Tarinaky>
Is a bugtracker needed for a 2-man project?
23:50
<@McMartin>
Yes, but probably not specialized software for it.
23:50
<@McMartin>
A wiki or even a shared TODO textfile will cover it.
23:50
< Tarinaky>
Right.
23:51
<@Derakon>
Doxygen has a \todo tag that will automatically collate items into a todo list for you.
23:52
<@Derakon>
E.g. https://jetblade.googlecode.com/hg/html/todo.html
23:52
< Tarinaky>
Neat.
23:52
<@McMartin>
That's different from "Note: X Doesn't Work" kind of things
23:52
<@Derakon>
So I have a comment in my baseattack.py file that says "\todo Attacks can get pushed around by terrain. This shouldn't happen."
23:53
< Tarinaky>
\todo This doesn'tIDONTEVENIAIANYALETHOTEPFHTAGNHECOMES
23:54
< Tarinaky>
Because everyone knows it compiles better if there're praises to an elder thing in the comments ~
23:55 celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has left #code []
23:56 You're now known as TheWatcher[T-2]
23:56
<@Derakon>
Night, TW.
23:57
<@Derakon>
McM: fair point.
23:57
<@Derakon>
A wiki would probably be better so you can do incremental updates to it as you figure out *why* something is wrong.
23:57
<@Derakon>
Without having to e.g. check in changes to the documentation.
23:57
< Rhamphoryncus>
.. or a bug tracker?
23:57
<@Derakon>
Or that, yes.
23:58
<@Derakon>
Both come free with Google Code.
23:58
<@Derakon>
(Incidentally, I strongly suggest using Google Code or Sourceforge or something similar for this, assuming it's open-source)
23:58
< Rhamphoryncus>
Although IMO bug trackers are too inconvenient for random changes
23:58
< Rhamphoryncus>
I've used both. I don't.
23:59
< Rhamphoryncus>
Well, google code isn't bad, but since they have license restrictions I can't use it
23:59
<@Derakon>
Free automated remote backups are a godsend, and not having to dick about with managing your own webserver is also very nice.
23:59
<@McMartin>
If you don't own a server, collaboration does get harder.
23:59
<@McMartin>
And yeah, meteor-proofing also requires work
23:59
< Rhamphoryncus>
I'm currently pushing things to launchpad
23:59 * TheWatcher[T-2] actually looks at channel
--- Log closed Wed Apr 28 00:00:06 2010
code logs -> 2010 -> Tue, 27 Apr 2010< code.20100426.log - code.20100428.log >