code logs -> 2013 -> Thu, 21 Feb 2013< code.20130220.log - code.20130222.log >
--- Log opened Thu Feb 21 00:00:49 2013
00:09
<@Reiv>
Haeroe: Is that a generalised bubble sort?
00:10
<@Haeroe>
Reiv: Well, not really, I mean, you need some extra trickery, like let's say slot 0,0 has 1 in it as it should be
00:10
<@Haeroe>
And you're trying to put 2 and 3 into 1,0 and 2,0
00:10
<@Haeroe>
Then you still need to put 3 and 2 into 1,1 and 2,1 respectively before twisting twice
00:11
<@Haeroe>
It's not an impossible problem by any means but it's more than there was in my iteration
00:12
<@Haeroe>
If I was actually making this I would probably just do a rainbow table-like solution as cacheing the next move for any board situation should only take a couple of megabytes in total, but the tests do have time limits that do not allow for preparation
00:20
<@Reiv>
Geez, this is a test?
00:20
<@Reiv>
I could probably answer this eventually, but the hard part would be solving the thing at all, never mind the algorathm
00:23
<@Haeroe>
Nah
00:23
<@Haeroe>
It's one of 6 questions in the weekly practical assignment
00:23
<@Haeroe>
:b
00:23
<@Haeroe>
Nevermind the theoretical ones
00:25
<@Reiv>
Jeebus. This is 1st year programming?
00:26
<&McMartin>
I'd say Sudoku-solver is feasible for a 1st year if it's later in the course, orm aybe the middle, depending.
00:26
<&McMartin>
I mean, SICP's final project is an interpreted language. =P
00:28 ErikMesoy|sleep [Erik@A08927.B4421D.FE7332.A86588] has quit [Connection reset by peer]
00:28 AD [NSflashIRC@A08927.B4421D.FE7332.A86588] has quit [Connection reset by peer]
00:29 ErikMesoy [Erik@A08927.B4421D.FE7332.A86588] has joined #code
00:29 AD [NSflashIRC@A08927.B4421D.FE7332.A86588] has joined #code
00:30
<@Reiv>
Hm, yeah, if it was in the later part of the year that's fairly legit
00:30
<@Reiv>
When I think 'freshman' I think 'utter newbie'
00:30
<@Reiv>
Because we don't have the term here~
00:32 You're now known as TheWatcher[T-2]
00:34 You're now known as TheWatcher[zZzZ]
00:37
<@Haeroe>
Reiv: First spring data structures and algos
00:38
<@Haeroe>
Cormen 101
00:40
<&McMartin>
First spring is second semester, right?
00:41
<@Haeroe>
Yeah
00:42
<&McMartin>
Yeah, that's well in-scope for a CS-major program
00:44
<@Haeroe>
Hmm, must've been a bad year I started
00:44
<&McMartin>
Well, when was that~
00:44 * McMartin 's 1st-year class was in '96
00:45
<@Haeroe>
Spring '10 here
00:46
<&McMartin>
Note also that there is a difference between an intro *programming* class and an intro *CS* class
00:46
<@Haeroe>
Sure
00:46
<@Haeroe>
This is CS
00:46
<&McMartin>
The former is going to involve corner cases in how to express weird things, the latter is going to involve staying in the grounds of stuff that's easy to express *once you can organize and characterize the problem*
00:46
<&McMartin>
There is not a consistent strategy within universities of which one you teach first.
00:48
<@celticminstrel>
I seem to recall writing a very basic shellscript interpreter in second year...
00:48
<@celticminstrel>
Well. In a second year course. >_>
00:48
<&McMartin>
SICP ends with Scheme-in-Scheme, which is about the easiest thing in the universe to parse
00:49 * celticminstrel 's course order is all over the map.
00:49
<@celticminstrel>
This was the C/POSIX course.
00:49
<&McMartin>
My lecturer was one of the people largely responsible for Berkeley Logo, though, so the final project was to take the Scheme-in-Scheme from the book and turn it into a LOGO terp.
00:50
<@celticminstrel>
I think that was my introduction to programming.
00:50
<@celticminstrel>
It might've been Hypertalk, but more likely UCBLogo.
00:51
<@celticminstrel>
At one point I contemplated writing interactive fiction with it. That never really went anywhere.
00:51
<&McMartin>
It's pretty good at it; I remember a little adventure game in Terrapin logo that we had at school
00:54
< RichyB>
http://www.youtube.com/watch?v=OkG82oKlg8k there are a shocking number of Turing award winners whom I know practically nothing about. Here's one mostly at random.
00:58
<@Reiv>
Turing award?
01:08 Pandemic [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has quit [Ping timeout: 121 seconds]
01:08 VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has quit [Ping timeout: 121 seconds]
01:16 VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has joined #code
01:16 Pandemic [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has joined #code
01:16 mode/#code [+o Pandemic] by ChanServ
01:42 Vornicus [vorn@ServerAdministrator.Nightstar.Net] has joined #code
01:42 mode/#code [+qo Vornicus Vornicus] by ChanServ
01:43
<@Haeroe>
Reiv: The Nobel of computing, basically
01:44
<@Reiv>
I see.
01:53 AD [NSflashIRC@A08927.B4421D.FE7332.A86588] has quit [Ping timeout: 121 seconds]
02:12 JustLurk is now known as JustBob
02:19 Attilla [chatzilla@Nightstar-aced750e.range86-184.btcentralplus.com] has quit [Ping timeout: 121 seconds]
02:23
< RichyB>
I love it when one unit test leaves crud behind in the environment that breaks every test coming after it.
02:25
<@Reiv>
Did you have a unit test for testing if there was crud left behind?
02:31
< RichyB>
No. Kind of the whole point is to not have to worry about shit like that.
02:32
< RichyB>
I'm not going to write unit-tests for the unit-tests except in that some of them have self-tests. That's a rabbit-hole of madness. ;P
02:32
< RichyB>
https://twitter.com/jkottke/status/304356070132957184 This is such a genius idea.
02:32
< RichyB>
<@jkottke> Will you be able to sidle up next to a Google Glass wearer and say "ok glass, show me midget porn" or are they tied to wearer's voice?
02:39
< Shiz>
moq
02:56
<@Reiv>
I'm a little troubled by the Google Glass stuff
02:57
<@Reiv>
Their voice recognition is good, but not /that/ good
02:57
<&McMartin>
"Assuming you meant to search for 'midget porn'"
02:57
<@Reiv>
And RichyB: If they've half a brain they've done the same trick as high-end bluetooth headsets
02:57
<@Reiv>
That read vibration in the skull to differentiate/amplify the speakers voice.
02:57
<@Reiv>
From background noise, I mean.
02:58
<@Reiv>
If the skull ain't humming to the tune, it ain't no speakin'.
02:58
<&McMartin>
Mmm, subvocalization mics
02:59
<@Reiv>
Similar tech, yes
02:59
<@Reiv>
It's pretty handy, and I suspect near de facto required for 'voice recognition, always on'
02:59
<@Reiv>
What I wonder is just how much hardware those glasses pack.
03:02 Nemu_ [NeophoxProd@Nightstar-887ff271.asahi-net.or.jp] has quit [Connection reset by peer]
03:03 Nemu [NeophoxProd@Nightstar-92a3fb09.asahi-net.or.jp] has joined #code
03:04
< RichyB>
so
03:04
< RichyB>
Press a vibrator into the side of someone's head while shouting "GLASS! DISPLAY MIDGET PORN, NOW!"
03:05
<@Reiv>
RichyB: A voice activated vibrator
03:05
<@Reiv>
That pulses according to the timbre of your voice.
03:05
<@Reiv>
It's not just "Is the head vibrating", oh no
03:06
<@Reiv>
It's "We're picking up half the audio feed through your /skull/"
03:06
<@Reiv>
"This is how we tell it apart from the loudmouth beside you on the train."
03:07
< RichyB>
Damn.
03:08
< RichyB>
Meh, making a Hitachi Magic Wand play into a speaker is just a question of amplitude modulation.
03:08
< RichyB>
Solution becomes "press humorously-shaped loudspeaker against side of prank victim's head"? :)
03:10
<@Reiv>
And now we're bordering on Assault, as opposed to Prank~
03:11 syksleep is now known as Syk
03:16
< RichyB>
No, I think I passed "assault" a while back.
03:16
< RichyB>
"Prank" is not a subset of "legal".
03:18 Kindamoody[zZz] is now known as Kindamoody
03:28 Nemu_ [NeophoxProd@Nightstar-af6fbd0e.asahi-net.or.jp] has joined #code
03:30 Nemu [NeophoxProd@Nightstar-92a3fb09.asahi-net.or.jp] has quit [Ping timeout: 121 seconds]
03:33 Nemu [NeophoxProd@Nightstar-d0e419d9.asahi-net.or.jp] has joined #code
03:34 mac [mac@Nightstar-fe8a1f12.il.comcast.net] has joined #code
03:34 Nemu_ [NeophoxProd@Nightstar-af6fbd0e.asahi-net.or.jp] has quit [Ping timeout: 121 seconds]
03:35
< mac>
Does anyone know if you can add drives to a raid array after the array has been created?
03:35
< RichyB>
Generally, no.
03:36
< mac>
What raid setup would support such an idea
03:36 Nemu [NeophoxProd@Nightstar-d0e419d9.asahi-net.or.jp] has quit [Client closed the connection]
03:38
< RichyB>
Oh, I'm wrong. "RAID migration" is a common feature.
03:38
< Syk>
mac: it's uh
03:38 Nemu [NeophoxProd@Nightstar-edb1d355.asahi-net.or.jp] has joined #code
03:38
< Syk>
mac: not so much the RAID, but the FS
03:38
< mac>
oh
03:39
< Syk>
it doesn't matter if the RAID can expand if the filesystem running on top is a pile of crap
03:39
< RichyB>
You're going to have to involve renumber all of the blocks on the existing disks, which is fun|slow.
03:39
< Syk>
yes
03:39
< Syk>
it's much easier just to cry and wait until you need to migrate a lot
03:39
< RichyB>
Some filesystems support online re-sizing. I think ext4 does.
03:39
< RichyB>
resize2fs :)
03:40
< mac>
do you recommend a raid controller if I'm thinking about doing that, or just using built in raid on my machine
03:41
< RichyB>
Oh! Apparently mdadm does do on-line RAID migrations under Linux. Nice.
03:42
< RichyB>
Neither, I'd use a really well-tested software RAID setup like mdadm+LVM on Linux.
03:42
< RichyB>
The "built-in RAID" on your machine is probably a shitty fake-RAID controller. I would not use that as anything but a dumb disk controller.
03:43
< mac>
k
03:43
< RichyB>
Real hardware RAID cards might be able to do live migrations but I have no idea which.
03:43
< mac>
I'm thinking about going raid 10, because we need speed an redundancy, but we want to start with 2 disks? so i don't know if thats possible, ill have to check
03:44
< RichyB>
http://www.tomshardware.com/reviews/RAID-MIGRATION-ADVENTURE,1640-2.html Tom's Hardware tried a survey of this a while back?
03:44
< RichyB>
No, you can't have RAID 10 on two disks.
03:45
< mac>
crap so ill need to run raid 1 and then later migrate to raid 10
03:45
< mac>
if thats even possible.
03:45
< RichyB>
RAID "10" means RAID 1+0, i.e. a RAID-0 where the child devices are RAID-1s.
03:46
< RichyB>
What are you trying to achieve and on what kind of budget?
03:46 Nemu [NeophoxProd@Nightstar-edb1d355.asahi-net.or.jp] has quit [Client closed the connection]
03:47 Nemu [NeophoxProd@Nightstar-07fd422d.asahi-net.or.jp] has joined #code
03:48
< mac>
well i could just go buy all the drives outright
03:48
< mac>
kinda, we don't want to have to spend more money than we have to
03:49
< mac>
redundancy and speed are both important, so that points towards raid 10
03:51
<@Reiv>
Which is the one with the "I have seven drives containing five drives data, with any two able to fail"?
03:51 VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has quit [[NS] Quit: Program Shutting down]
03:51
< RichyB>
Reiv: RAID 6.
03:51
<@Reiv>
Remind me, does that one enjoy speed too?
03:52
< RichyB>
RAID 5 is the one with "I have seven drives containing six drives data. I think I'm safe because I can survive any one drive failure, but because I have so many drives the failure probability of my whole array is actually higher than the failure probability for any one drive in it. Also, my disk performance is not great."
03:52
<@Reiv>
Raid 5 and Raid 6 are distinguished only by the number of spare drives?
03:53
< RichyB>
AIUI RAID 5 and RAID 6 are both slow as balls for writing (fine for reading) because every time you write one block on one drive, you have to read the blocks at the same index on all the other drives in order to calculate what the parity/Reed-Solomon blocks should contain.
03:53 d4de [olorin@687AAB.E04ECC.D09C3D.5FB5B2] has joined #code
03:54
< mac>
can i do raid 10 with 6 drives 2 by 2 by 2?
03:54
< RichyB>
Pretty much. RAID 5 uses one parity drive. RAID 6 uses a slightly cleverer scheme called "Reed-Solomon codes".
03:54
< RichyB>
mac: yeah, either way around. You can have a 3-mirror of stripe-pairs, a 3-stripe of mirror-pairs, or vice-versa.
03:55
< RichyB>
(or a 2-mirror of 3-stripes, or a 2-stripe of 3-mirrors)
03:55 Nemu [NeophoxProd@Nightstar-07fd422d.asahi-net.or.jp] has quit [Connection reset by peer]
03:55
< mac>
ok so 10 can be pretty secure
03:55
< mac>
is it easy to add more mirrors?
03:55
< RichyB>
Both RAID 1 and RAID 0 schemes admit arbitrary numbers of drives. RAID 1 admits adding as many drives as you want at runtime without any disruption.
03:56
<@Reiv>
Those would be better than RAID 6? Or is the write speed the key?
03:56
< RichyB>
Those should be much quicker than RAID6 at writing.
03:57 Nemu [NeophoxProd@Nightstar-4ab41aff.asahi-net.or.jp] has joined #code
03:57
< RichyB>
Please be aware that RAID is actually for high-availability, not data-integrity.
03:58
< RichyB>
The actual purpose of mirror sets is to let you continue using the machine after a disk has died without having to stop and wait for a backup to restore onto it.
03:58
< RichyB>
Only separate backups can get you data-integrity. A mirror will quite happily replicate software errors such as an accidental "rm -r".
03:59
<@Reiv>
Ha, truth.
03:59
< RichyB>
Are you sure you really need high-availability and your task wouldn't be accomplished more cheaply with a big disk and an SSD cache, possibly an SSD journal?
04:00
< RichyB>
+spend the money left over on removable media to do *real* backups onto. :)
04:00
<@Reiv>
SSD journal?
04:01
< RichyB>
Journalling is where a filesystem writes its intentions into a small circular buffer, called the "journal", before writing to the main trees/tables on disk.
04:02
< RichyB>
If you turn full block journalling on then every byte you write gets written to the journal before being applied to the main body of the filesystem.
04:04
< RichyB>
Adding a journal has surprisingly low cost on spinning disks because it's always physically small and in the same place, and writes to it are always contiguous. It makes some operations much faster, because you can consider them to be "completed" as soon as they're written to the journal rather than waiting for them to finish being written to the many locations that they might touch all over disk.
04:04
< RichyB>
(the actual writes still need to be done, but that can be done in the background by the filesystem later, just as a matter of reclaiming journal space)
04:05
< RichyB>
Anyway, reason I brought that up is that you can sometimes make filesystems go Hell of faster by moving the journal to a separate device.
04:07 Nemu [NeophoxProd@Nightstar-4ab41aff.asahi-net.or.jp] has quit [Client closed the connection]
04:09 Nemu [NeophoxProd@Nightstar-436a9c9b.asahi-net.or.jp] has joined #code
04:18 Nemu_ [NeophoxProd@Nightstar-5603ecbb.asahi-net.or.jp] has joined #code
04:19 Nemu [NeophoxProd@Nightstar-436a9c9b.asahi-net.or.jp] has quit [Ping timeout: 121 seconds]
04:20 celticminstrel [celticminst@Nightstar-e83b3651.cable.rogers.com] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!]
04:26 AD [NSflashIRC@A08927.B4421D.FE7332.A86588] has joined #code
04:29 Nemu_ [NeophoxProd@Nightstar-5603ecbb.asahi-net.or.jp] has quit [Client closed the connection]
04:31 Nemu [NeophoxProd@Nightstar-5603ecbb.asahi-net.or.jp] has joined #code
04:32 Nemu [NeophoxProd@Nightstar-5603ecbb.asahi-net.or.jp] has quit [Connection reset by peer]
04:33 Nemu [NeophoxProd@Nightstar-d161aa7e.asahi-net.or.jp] has joined #code
04:38
<@Rhamphoryncus>
Strictly speaking a journal is only to maintain data integrity against power failure
04:40
<@Rhamphoryncus>
But in practice it's a matter of degrees. Not having to restore from backup after a power failure is a huge boost to availability
04:55 Janus [NSwebIRC@Nightstar-193c8645.res.rr.com] has joined #code
04:57 * Janus is doing a thing that doesn't seem right, again. Also Hi!
05:07
< Janus>
I was typing the question, and then I seen the solution as I typed it. Thanks!
05:15 himi [fow035@D741F1.243F35.CADC30.81D435] has quit [Operation timed out]
05:36
< Xon>
<RichyB> No, you can't have RAID 10 on two disks.
05:36
< Xon>
Technically true, but in practice wrong. Most systems which do RAID10 actually implement it mirrored stripes *not* a true layered RAID setup. This allows them to distribute the strips across the two drives ensuring a mirror is maintained. This even works down to 1 drive, but obviously you lose any device redundancy
05:38
< RichyB>
What the fuck would be the point of that?
05:39
< Xon>
flexibility in disk numbering?
05:40
< RichyB>
Makes sense.
05:40
< Xon>
you can actually have an odd-number of disks and still ensure you have sufficient number of copies of the stripes to recover from a drive failure
05:40
< RichyB>
No, the "WTF?" was why you'd ever try a single-disk RAID or 2-disk supposedly-nested setup.
05:42
< Xon>
I use single-disk raid0 on a few servers due to raid controller limitations
05:45
< Xon>
also, breaking the nesting layering for RAID10 lets you do layout optimizations based on the distance of the chunks. Sure it has the same write performance as 1 disk, but you can still scale up the read formance by letting the raid device select the least-used disk to read from
05:45
< Xon>
read performance*
05:45
< RichyB>
That makes sense. What kit does that?
05:46
< Xon>
Windows Storage spaces, Linux MD driver actually do that
05:46
< RichyB>
Cool.
05:46
< Xon>
(Storage spaces isn't actually very /good/ at it)
05:49
< Xon>
(Storage spaces by default turns of disk-write cache and requires opt-in powershell to turn it back on so it kinda makes write performance shit)
05:49
< RichyB>
Traditionally one guesses that from it having the word "Windows" in front of it. ;P
05:49
< Xon>
at least for some types the storages spaces
05:50 RichyB [richardb@Nightstar-228a334c.plus.com] has quit [[NS] Quit: >:3 This is BunThulhu. Copy him into your quit message to help him take over the Internet.]
06:04 guest92 [Guest73@Nightstar-d39f391b.wi.charter.com] has joined #code
06:04 guest92 is now known as [_-S1L3NC3-_]
06:06 [_-S1L3NC3-_] [Guest73@Nightstar-d39f391b.wi.charter.com] has quit [[NS] Quit: ]
06:06 harlow [mac@Nightstar-fe8a1f12.il.comcast.net] has joined #code
06:08 mac [mac@Nightstar-fe8a1f12.il.comcast.net] has quit [Ping timeout: 121 seconds]
06:13 VirusHome [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has joined #code
06:14 Netsplit *.net <-> *.split quits: ErikMesoy, Typherix, JustBob, @Tamber, d4de, @Haeroe, @Pandemic, Syk, @Courage, jeroud, (+2 more, use /NETSPLIT to show all of them)
06:15 JustLurk [justbob@ServerAdministrator.Nightstar.Net] has joined #code
06:15 Netsplit over, joins: Courage
06:15 mode/#code [+o Courage] by ChanServ
06:16 PinkFreud [WhyNot@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
06:18 ErikMesoy [Erik@Nightstar-be32adc8.80-203-17.nextgentel.com] has joined #code
06:19 Tamber [tamber@furryhelix.co.uk] has joined #code
06:19 mode/#code [+o Tamber] by ChanServ
06:21 Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
06:21 mode/#code [+o Syloq] by ChanServ
06:24 Haeroe [ap@297948.F70DAA.120876.F7563D] has joined #code
06:24 mode/#code [+o Haeroe] by ChanServ
06:24 Syk [the@Nightstar-59eeca2c.iinet.net.au] has joined #code
06:25 Typherix [Typherix@Nightstar-7dc8031d.mi.comcast.net] has joined #code
06:29 JustLurk is now known as JustBob
06:30 d4de [olorin@687AAB.E04ECC.D09C3D.5FB5B2] has joined #code
06:30 Shiz [mark@42F7BC.C2C1CC.B64DF6.88F7A5] has joined #code
06:32 harlow [mac@Nightstar-fe8a1f12.il.comcast.net] has quit [Ping timeout: 121 seconds]
06:35 JustBob [justbob@ServerAdministrator.Nightstar.Net] has quit [[NS] Quit: ]
06:36 harlow [mac@Nightstar-fe8a1f12.il.comcast.net] has joined #code
06:37 JustBob [justbob@ServerAdministrator.Nightstar.Net] has joined #code
07:05 Kindamoody is now known as Kindamoody|out
07:11
<@froztbyte>
<git rant/>
07:11
<@froztbyte>
(just read last night's scrollback)
07:12
<@froztbyte>
-*- Janus is doing a thing that doesn't seem right, again. Also Hi!
07:12
<@froztbyte>
<Janus> I was typing the question, and then I seen the solution as I typed it. Thanks!
07:12
<@froztbyte>
#code == rubberduck
07:18 harlow [mac@Nightstar-fe8a1f12.il.comcast.net] has quit [Ping timeout: 121 seconds]
07:41 Janus [NSwebIRC@Nightstar-193c8645.res.rr.com] has quit [[NS] Quit: Page closed]
08:11 jeroud [uid10043@Nightstar-7fd75919.irccloud.com] has joined #code
08:28
<&McMartin>
"I don't want you to pray to #code. I want you to ASK #code YOUR QUESTION."
08:34 himi [fow035@Nightstar-5d05bada.internode.on.net] has joined #code
08:34 mode/#code [+o himi] by ChanServ
08:34
<@Tarinaky>
So. How come nobody has ever packaged vim with plugins and configs?
08:35
<@Tarinaky>
You see cool screenshots of other people's vim generally being better than my own.
08:35
<&McMartin>
Because (a) BOO HISS THAT WOULD BE LIKE THE HATED EMACS and (b) vim is not remotely as modular as emacs and attempting to do this would prove emacs's superiority in this department, another thing which cannot be borne
08:36
<@Tarinaky>
I see.
08:36
<&McMartin>
But, uh, really? Is there not some site like the various emacs wikis where people post awesome config snippets?
08:37
<@Tarinaky>
No idea.
08:37
<@Tarinaky>
But I spotted this on reddit: http://statico.github.com/vim.html?utm_source=feedburner&utm_medium=twitter&utm_ campaign=Feed%3A+hnycombinator+(HN+-+hnycombinator)
08:37
< Xon>
rm -f /usr/bin/vim sounds like a great idea to me
08:37
< Xon>
s/vim/emacs/ as required
08:38
<&McMartin>
mv /usr/bin/pico $TARGET if you're in a really bad mood
08:38
<@Tarinaky>
You're all awful people.
08:38
<@Tarinaky>
I hope you realise that.
08:39
<@Tarinaky>
In other news: I think I'm going to have to refactor my program to use json to specify gui layouts, if only so my code isn't so damn cluttered with literals :/
08:39
<&McMartin>
=(
08:39
< Xon>
magic numbers are bad for you =p
08:39
<~Vornicus>
When I had to choose between them, I preferred vim, though that might be because i had a cheat sheet.
08:40
<@Tarinaky>
Sometimes magic numbers are magic.
08:40
<&McMartin>
Magic numbers are how you recognize file types
08:41
<@Tarinaky>
Yeah, but if you're doing that you'll have some list of #define directives.
08:41
<@Tarinaky>
Or an enum or something.
08:41 * McMartin is making a weak joke, as those too are "magic numbers"
08:41
<@Tarinaky>
I think they're magic numbers in the same sense.
08:41
<&McMartin>
That said, hardcoding dialog-box widget layouts is not necessarily bad
08:42
<@Tarinaky>
McMartin: It does make the code look ugly. And these aren't, strictly, dialog boxes - they're drawn in OpenGL.
08:42
<@Tarinaky>
Well, an OpenGL framework.
08:43
<&McMartin>
Mmm
08:43
<@Tarinaky>
There's a couple more refactors to do first.
08:43
<@Tarinaky>
I'm currently working on the "Do it." then "Do it right." then "Do it better."
08:44
<&McMartin>
Yeah
08:44
<&McMartin>
If this were a full desktop app I'd say "consider breaking out Glade or Qt Designer, both of which use XML to this end *already*"
08:45
<@Tarinaky>
This then has the issue that there's no nice way to create those XML files.
08:45
<&McMartin>
Er
08:46
<&McMartin>
That nice way would be Glade itself, and Qt Designer itself, which are graphical form designers.
08:46
<&McMartin>
XML is just how they save it out.
08:46
<&McMartin>
(And, for Glade, read it in later; QtD generally feeds a code generator as an automated build step)
08:46
<@Tarinaky>
I really don't like these programs.
08:46
<&McMartin>
The point being that specifying UIs by hand is *intrinsically* full of spider.
08:47
<@Tarinaky>
And Qt Designer is bloody hard to find on the website last time I tried it.
08:47
<@Tarinaky>
I ended up downloading the wrong thing last time.
08:47
< Syk>
you know what's fun
08:47
< Syk>
microsoft forms
08:47
< Syk>
visual studio 2010 had this great habit of choking on penii and throwing up all over your forms
08:48
<&McMartin>
"penes". The singular is "penis", not "penius".
08:48
< Syk>
once it got big enough, my app would take a minute to load in the designer, and it would be a coin flip if it didn't deem the top bar invalid and remove it
08:48
< Syk>
McMartin: this is a plural of penes, it's that bad
08:49
<@Tarinaky>
Or would be if we weren't speaking English where the plural is Penises.
08:49
<&McMartin>
That too, but even if we weren't it still isn't that
08:49
< Syk>
whatever, penises, penii
08:49
<&McMartin>
The phrase you actually want is "chokes on a bag of salted dicks", but this is a thing you traditionally wish on your enemies
08:50
< Syk>
needless to say there was a lot of man-on-compiler action
08:50 * Tarinaky chokes on his bag of salted dicks.
08:50
<@Tarinaky>
Really?
08:50
< Syk>
oh dear not again
08:50
<&McMartin>
Or you're in Seattle and are eating hamburgers.
08:50 * Syk revives Tarinaky, wonders why they still sell these things
08:50
<@Tarinaky>
Nose-cola is the worst thing ever.
08:51
< Syk>
eeeehhh
08:51
< Syk>
i think nose-iced-water is worse
08:51
<&McMartin>
(There is, in fact, a burger place in Seattle named Dick's, with a big sign that says "enjoy a bag of Dick's today!")
08:52
<&McMartin>
(I am told that this is where the phrase comes from but do not have independent confirmation)
08:53
<@Tarinaky>
I think it comes from being 1 worse than chocking on a singular dick.
08:53
< Syk>
are we discussing the origin of cock-choking
08:53
<@Tarinaky>
Apparently.
08:53
<@Tarinaky>
import cock
08:53
<@Tarinaky>
cock.choke(self)
08:54
< Syk>
cock not found; try instantiating the self class with the 'male' parameter
08:54
<&McMartin>
Syk: We're in "where does this sentence come from" now, and it's not my fault someone decided "Dick" makes a good short form of "Richard"
08:54
<&McMartin>
... OR IS IT?
08:54 * McMartin hides the TIME MACHINE
08:55
< Syk>
well aren't you a bit of a richard
08:55
<~Vornicus>
there's a restaurant on the columbia river named Tad's Chick Dump
08:55
<~Vornicus>
it used to say Tad's Chicken & Dumplings but half of the neon lights went out.
08:56
< Syk>
theres a place here called the pumphouse
08:56
< Syk>
ironically, there's no pumps in it, and it's not a house
08:58
<~Vornicus>
in new haven there's a pizza restaurant and brewery named "bar"
09:06
< Syk>
Vornicus: is there a 'foo' nearby
09:07
<~Vornicus>
Syk: not that I'm aware of
09:07
< Syk>
well
09:08
< Syk>
i suppose you could get foo at bar?
09:08
< Syk>
foo-d, that is
09:08
<~Vornicus>
They're renowned for their pizza.
09:08
<~Vornicus>
There's Ruby Foo's in NYC apparently
09:14
< JustBob>
http://tailhunter.mx/fubarcantina.htm <- I cite the Fubar Cantina.
09:16 Attilla [chatzilla@Nightstar-aced750e.range86-184.btcentralplus.com] has joined #code
09:18
<~Vornicus>
There's a FooBar in Nashville
09:18
< JustBob>
And we have a Crow Bar here in Corvallis.
09:19
< JustBob>
Sorry, Crowbar.
09:20
< JustBob>
Which, while relatively geeky, is not a foobar.
09:23
< JustBob>
...
09:23
< JustBob>
Okay.
09:23
< JustBob>
I need to bite the bullet and just make that a function to call or something.
09:23
< JustBob>
I keep having to rewrite a linear interpolator because I always forget to actually /save/ it.
09:27
<@froztbyte>
so what you guys are saying is that if I ever open a club, it should be called Baz or Quux?
09:29 gnolam_ [lenin@Nightstar-fe1ac75d.cust.bredbandsbolaget.se] has joined #code
09:29 gnolam is now known as NSGuest19290
09:29 gnolam_ is now known as gnolam
09:29 mode/#code [+o gnolam] by ChanServ
09:32 NSGuest19290 [lenin@Nightstar-fe1ac75d.cust.bredbandsbolaget.se] has quit [Ping timeout: 121 seconds]
09:58 You're now known as TheWatcher
09:59 AD [NSflashIRC@A08927.B4421D.FE7332.A86588] has quit [Client closed the connection]
10:29
<@Tarinaky>
Ummm... any vim wizards?
10:29
<@Tarinaky>
I'm trying to steal that gentleman's .vim directory.
10:29
<@Tarinaky>
But I'm not seeing any change in vim. :/
10:33
<@froztbyte>
who's vim dir?
10:33
<@Tarinaky>
http://statico.github.com/vim.html?utm_source=feedburner&utm_medium=twitter&utm_ campaign=Feed%3A+hnycombinator+(HN+-+hnycombinator)
10:34
<@Tarinaky>
He has his dotfiles in a git repo.
10:34
<@Tarinaky>
So I cloned them and copied out the .vim directory...
10:34
<@Tarinaky>
But apparently man vim doesn't list ~/.vim/vimrc as one of its files.
10:34
<@Tarinaky>
So I'm confused how his vimrc gets invoked.
10:34
<@Tarinaky>
>.<
10:34
<@froztbyte>
~/.vimrc
10:35
<@froztbyte>
also start with this post, and then read the series: http://jonathan.jsphere.com/post/9227739351/taming-vim-1-introduction
10:36
<@Tarinaky>
I think he's symlinking .vimrc to point to .vim/vimrc...
10:36
<@Tarinaky>
Would I be right or am I leaping into madness?
10:37
<@froztbyte>
"Customizing Vim is two parts: editing rc files and installing plugins. You should already have a .vim/ directory with a vimrc and possibly a gvimrc"
10:37
<@froztbyte>
the way he writes it is a bit funny
10:37
<@Tarinaky>
I had a .vimrc
10:37
<@froztbyte>
but yeah, he probably symlinks it
10:37
<@Tarinaky>
As I said, man vim lists ~/.vimrc but not ~/.vim/vimrc
10:38
<@froztbyte>
yes, the ~/.vim/vimrc is probably just so that he can run the whole ~/.vim as a single SCM-controlled directory
10:38
<@froztbyte>
and split it off by itself
10:38
<@Tarinaky>
Makes sense.
10:38
<@froztbyte>
anyway, make .vimrc appear in ~ and your problem is solved
10:39
<@froztbyte>
urgh, DNS tickets
10:39
<@Tarinaky>
I will probably throw out most of it and start again though. I don't really want most of this :/
10:39
<@froztbyte>
killmenao
10:39
<@froztbyte>
Tarinaky: yeah, usually that's best
10:39
<@froztbyte>
it's nice to see what someone else has done, to take ideas and adapt for your own environment
10:40
<@Tarinaky>
Fun fact: copying a file onto a link copies said file onto the actual file and not the link/name/alias >.>
10:40
<@Tarinaky>
TIL!
10:40
<@Tarinaky>
Minor whoops.
10:41
<@froztbyte>
depends how you copy ;)
10:41
<@froztbyte>
vandali% cp --help | wc -l
10:41
<@froztbyte>
76
10:42
<@Tarinaky>
>.<
10:42
<@froztbyte>
fun idea: how many `ls` parameters do you know? :)
10:42
<@Tarinaky>
ls -a... --color...
10:42
<@Tarinaky>
There are others?
10:42
<@Tarinaky>
:p
10:42
<@froztbyte>
vandali% ls --help | wc -l
10:42
<@froztbyte>
117
10:42
<@Tarinaky>
So much for the UNIX philosophy of do one thing well~
10:43
<@froztbyte>
oh, it does one thing excellently
10:43
<@Tarinaky>
Then why does it have 117 functions :p
10:43
<@Tarinaky>
(To say nothing of the permutations)
10:43
<@froztbyte>
lines, not functions
10:44
<@froztbyte>
because you have different ways of interacting with a complex system
10:45
<@froztbyte>
do you want to see file sizes? only directories? do you want to see the last modification time? do you want to see those in human-friendly values? do you want to recurse the tree? do you want to recurse only a few levels? do you want to only match files with starting with zxoogabooga?
10:45
<@froztbyte>
etc
10:45
<@Tarinaky>
It was a joke.
10:45
<@froztbyte>
that said
10:45
<@froztbyte>
I highly recommend looking into /bin one day, and finding out what each binary does
10:46
<@Tarinaky>
I know enough to use it.
10:46
<@Tarinaky>
Honestly... I don't really need to know all 117 ls options.
10:46
<@Tarinaky>
-a and --color cover three 9s of my useage.
10:46
<@Tarinaky>
If I need anything else I'll use google or man as and when it happens >.>
11:04 * Tarinaky what the fucks.
11:07 himi [fow035@Nightstar-5d05bada.internode.on.net] has quit [Ping timeout: 121 seconds]
11:08 * TheWatcher readsup
11:08
<@TheWatcher>
"Customising Vim is two parts: utter madness and screaming drooling madness"~
11:13
<@Tarinaky>
Trying to make vim replace eclipse on my laptop due to eclipse running poorly on anything ever.
11:18
<@Tarinaky>
The documentation /says/ that this plugin should be showing my my current branch.
11:18
<@Tarinaky>
It is not.
11:20 himi [fow035@Nightstar-5d05bada.internode.on.net] has joined #code
11:21 mode/#code [+o himi] by ChanServ
11:23
<@Tarinaky>
Ahah!
11:28
<@froztbyte>
which?
11:28
<@Tarinaky>
Apparently there was a dependancy that wasn't mentioned.
11:29
<@Tarinaky>
But Powerline + Fugitive.
11:29
<@Tarinaky>
Fugitive being git integration in vim.
11:29
<@froztbyte>
ah
11:29
<@froztbyte>
it's pretty unfortunate that the whole world is going git-mad
11:29
<@Tarinaky>
Powerline is a pretty status line, and if Fugitive is installed first it'll configure itself to use it.
11:29
<@Tarinaky>
Git was the first vcs I learned.
11:29
<@Tarinaky>
And it meets most my needs.
11:30
<@froztbyte>
yes, that's fine
11:30
<@froztbyte>
but it's a separate rant and I need to figure out this NM config syntax first
12:06
<@Tarinaky>
Am I doing something really stupid here?
12:07
<@Tarinaky>
If I perform :nmap <F8> :TagbarToggle<CR> inside a running vim then F8 opens and closes the Tagbar correctly.
12:07
<@Tarinaky>
If, however, I put nmap <F8> :TagbarToggle<CR> as a line in my .vimrc...
12:07
<@Tarinaky>
Nothing happens when I hit F8.
12:07
<@Tarinaky>
W.T.F?
12:07
<@Tarinaky>
Is there some whitespace I'm missing or what?
12:08
<@Tarinaky>
Oh yeah, obviously, I'm restarting vim after editing vimrc.
12:08
<@froztbyte>
hehe
12:13
<@Tarinaky>
Found the...
12:13
<@Tarinaky>
What?
12:18
<@Tarinaky>
ls -l shows what file a link points to right?
12:18
<@Tarinaky>
Apparently not.
12:19
<@Tarinaky>
Anyway, lectures.
12:31 Vornicus [vorn@ServerAdministrator.Nightstar.Net] has quit [[NS] Quit: Leaving]
12:42
<@froztbyte>
yes, it does
12:42
<@froztbyte>
also stat
12:47
<@Tarinaky>
Git checkout breaks hard links.
12:47
<@Tarinaky>
Which is surprising.
12:48
<@RStamer>
Also readlink.
12:52
< ErikMesoy>
How strict should I be about other objects going via an object's __call__() method (with appropriate parameteres about what is to be done) as opposed to other objects directly calling the methods of the object in question?
12:52
< ErikMesoy>
I'm pretty sure I can do it both ways, but there may be pitfalls I'm not seeing.
12:53
<@Tarinaky>
Call can be ugly and it may not be entirely clear what __call__()'s purpose is.
12:54
<@Tarinaky>
As opposed to do_that_thing() which self-comments that it does that thing.
12:54
<@Tarinaky>
It's just a sugar though so it's no big deal either way.
12:59
< JustBob>
And for my current moment of fun... Trying to reconcile MatLab and RefProp. Because god hates me.
13:02
<@gnolam>
RefProp?
13:03
<@gnolam>
Also, have you ever had to use MCNP?
13:06 Kindamoody|out is now known as Kindamoody
13:35 Vornicus [vorn@ServerAdministrator.Nightstar.Net] has joined #code
13:35 mode/#code [+qo Vornicus Vornicus] by ChanServ
13:42 Nemu [NeophoxProd@Nightstar-d161aa7e.asahi-net.or.jp] has quit [Ping timeout: 121 seconds]
13:47
<@RStamer>
http://www.theverge.com/2013/2/21/4012138/playstation-4-wont-block-used-games-sa ys-sony <-- totally looking forward to that feature lasting the entire lifespan of the PS4.
13:48
<@TheWatcher>
What, like PS2 backwards compatibility did for the PS3? ¬¬
14:08
<@Tarinaky>
PS4 won't block used games. Capcom on the other hand~
14:36
<@Tarinaky>
Help.
14:36
<@Tarinaky>
Vim seems to have frozen.
14:36
<@Tarinaky>
I accidentally pressed Ctrl+S instead of escape,:w out of habit...
14:36
<@Tarinaky>
What did I do >.,
14:37
<@TheWatcher>
Ctrl+Q
14:37
<@TheWatcher>
you'd turned off output on the terminal
14:38
<@Tarinaky>
I figured I'd done something like that.
14:41
<@TheWatcher>
(Ctrl+S is XOFF, Ctrl+Q is XON. Can be useful if you need to stop scrolling for some reason, otherwise it's a pain in the arse~)
14:45
<@TheWatcher>
I would really love to work out why VirtualBox starts off nice and responsive and sane-CPU-usage, and by 20 hours of uptime it is lagging like a bitch, using 100% processor time on both host cores for no sane and tracable reason.
14:47
< Syk>
because virtualbox got comfy
14:48
<@Namegduf>
TheWatcher: That is very weird.
14:48
<@TheWatcher>
Yeah, yeah it is.
14:49
< ErikMesoy>
Python appears to be behaving as though None can have attributes. o_O
14:51
< ErikMesoy>
I have a function that's supposed to clear and set my current target by going "Target = None; Target = RelevantClass(); Target.labels.append("foo"), Target.labels.append("bar"). Calling this function [with semicolon -> newline, naturally] twice results in a Target object with 4 labels.
14:52
<&ToxicFrog>
...why bother setting it to None first in the first place?
14:53
< ErikMesoy>
Because it wasn't resetting properly and this was one of the measures I tried
14:54
<@Tarinaky>
What version of Python is this?
14:54
< ErikMesoy>
I'm not sure exactly what is going on, but it acts like Target's sub-attributes are persisting regardless of what the target itself is
14:54
<@Tarinaky>
Because I'm pretty sure None isn't an object in Python2.
14:54
< ErikMesoy>
2.7
14:56
< ErikMesoy>
I suppose setting it to None may be a dead chicken, but the issue remains that creating a new object for Target to point to doesn't clear out Target.labels. >_>
14:58
< ErikMesoy>
Well, if there are no obvious common mistakes that you see, I guess I'll work on reducing it to a minimal case and hopefully discovering the issue along the way.
15:01
<&ToxicFrog>
Are you sure RelevantClass() is returning a different object each time?
15:01
<@RStamer>
TheWatcher: that was my point
15:01
<&ToxicFrog>
Alternately, are you sure that target.labels is different for each instance of that class rather than all of them referencing the same value?
15:03
<~Vornicus>
None is an object
15:03
< ErikMesoy>
ToxicFrog: I expect RelevantClass.__init__ to return a new object each time. Is this wrong?
15:04 VirusHome is now known as Pandemic
15:04 mode/#code [+o Pandemic] by ChanServ
15:08
<&ToxicFrog>
I don't think so, but clearly there is something weird going on here
15:12
<@Tarinaky>
ErikMesoy: Write a test case?
15:13
<~Vornicus>
ErikMesoy: Show Me Your Code
15:25 * TheWatcher eyes this code, has one of those What Was I Thinking moments
15:25
<~Vornicus>
I get those a lot.
15:34
< JustBob>
gnolam - Belatedly, RefProp is the NIST reference properties database code, and it fucking sucks to integrate into anything unless you know exactly what you're doing.
15:34
< JustBob>
And I've used MCNP before. Once. By watching over someone's shoulder as they used it.
15:34
<@gnolam>
Everything in your previous sentence is true for it as well. >_>
15:35
<@gnolam>
Dammit
15:35
< JustBob>
There is, in theory, a recompiled matlab .m file that calls the refprop.dll for data.
15:35
< JustBob>
It does not seem to work well.
15:35
<@gnolam>
*Everything after the comma
15:35
< JustBob>
(By that, I mean, "at all.")
15:35
< JustBob>
Anyway, as I said...
15:35
< JustBob>
Run screaming to class trailing printouts.
15:35
< JustBob>
Only 356 pages today!
15:36
<@TheWatcher>
...
15:36
<@TheWatcher>
Those poor trees
15:38
< JustBob>
We get 1k pages free printing a term.
15:38
< JustBob>
I use about 2k.
15:38
< JustBob>
Now, claaaassssss
15:39
<@gnolam>
And "know exactly what you're doing" in its case means "you're one of its developers".
15:39
<@gnolam>
Mmm, lying documentation...
15:39
<@TheWatcher>
At least we now know the name of the Death of Trees.
15:40
<@TheWatcher>
He is Bob, and he walks amongst us.
15:51
<&ToxicFrog>
Tarinaky: you never use ls -h, -tr, or -l? o.O
15:51
<@Tarinaky>
ToxicFrog: He asked me how many I knew. And I forgot -l at the time.
15:51
<~Vornicus>
Erik: when you get around showing me your code, the most important thing is RelevantClass.__init__
15:52 Nemu [NeophoxProd@Nightstar-d161aa7e.asahi-net.or.jp] has joined #code
15:56
< ErikMesoy>
Vornicus: http://pastebin.com/jz2NXwae
15:57
< ErikMesoy>
That last print statement results in "Sidelist has ['left', 'right', 'left', 'right']" for me.
15:59 Kindamoody is now known as Kindamoody|out
16:02
<&ToxicFrog>
Woop woop woop
16:02
<&ToxicFrog>
Danger will robinson
16:02
<&ToxicFrog>
def __init__(self, labels=[]):
16:02
<&ToxicFrog>
That default value expression is evaluated when the function is closed, not when it's called.
16:02
<&ToxicFrog>
Every call to SideList.__init__ gets the same list for labels.
16:03
< ErikMesoy>
Oooooh. Interesting.
16:03
< ErikMesoy>
Now, my first response is to change "self.labels = labels" by adding "[:]" on the end, but that's an ad hoc hack.
16:03 Nemu_ [NeophoxProd@Nightstar-19c092df.asahi-net.or.jp] has joined #code
16:04
< ErikMesoy>
Hmmmm. When is init closed, anyway?
16:04
< ErikMesoy>
When the object is no longer in use?
16:04
<&ToxicFrog>
Er
16:04 Nemu [NeophoxProd@Nightstar-d161aa7e.asahi-net.or.jp] has quit [Ping timeout: 121 seconds]
16:04
<&ToxicFrog>
By "closed" I mean "when the function is fully instantiated as something you can call"
16:04
< ErikMesoy>
oh
16:04
<&ToxicFrog>
I'm not sure exactly when this happens but it'll be sometime around when the class definition is processed by the interpreter
16:05
<&ToxicFrog>
The default value is computed when that definition is processed and baked into the function, rather than being re-evaluated on each call.
16:05 * TheWatcher eyes
16:05
< ErikMesoy>
And the default value is editable?
16:06
<@TheWatcher>
... I'm just going to be over here, with my "madness inducing" perl~
16:06
<&ToxicFrog>
ErikMesoy: er. Python lists are mutable, yes.
16:07
< ErikMesoy>
and tuples aren't, right, but I didn't expect default parameters to be editable (as a function of use/position, not type)
16:07
<&ToxicFrog>
Default parameters are not magical in any way. If you have a mutable value as a default parameter it's still mutable.
16:08
<&ToxicFrog>
And since they're evaluated once at function creation time, each call that uses the default value gets the same default value.
16:08
<&ToxicFrog>
Including any mutations made to it.
16:09
< ErikMesoy>
And it isn't so much a value as a point
16:09
< ErikMesoy>
*pointer
16:09
<&ToxicFrog>
Off the top of my head, the way around this would be something like:
16:09
<&ToxicFrog>
def __init__(self, labels=None): self.labels = labels or []
16:09
<&ToxicFrog>
Unless you want to copy labels if they pass their own in
16:09
<&ToxicFrog>
That's kind of lua-y and may not be idiomatic Python, though; consult the Vornicus
16:10
< ErikMesoy>
So, basically, Python is even more reference-passing and not-copying than I thought?
16:10
<~Vornicus>
oh oh god
16:10
<&ToxicFrog>
...maybe? Personally the bit that surprises me about this behaviour is the only-evaluated-once part, nothing to do with copy/reference semantics.
16:11
<&jerith>
Python passes everything by reference.
16:11
<~Vornicus>
yeah, the only-evaluated-once part is the surprise to me as well. It's often cited as the worst part of Python
16:12 Nemu_ [NeophoxProd@Nightstar-19c092df.asahi-net.or.jp] has quit [Ping timeout: 121 seconds]
16:12
<&jerith>
It's just that you don't really notice it with immutable types.
16:13
<&jerith>
I've never heard of only-evaluated-once being the worst part of Python, though.
16:13
< ErikMesoy>
And most default parameters (strings, numbers) are immutable. I see.
16:14
<&jerith>
You can quite safely use [] and {} as default args if you make sure you never mutate them.
16:14
< Syk>
i very much enjoy python's reference passing
16:14
<&jerith>
Same as class attributes.
16:14
< Syk>
because it lets me pass a twisted request down functions
16:15
< Syk>
i dunno if it's Best Practice, but I like having functions that can call request.write() directly
16:15
<&jerith>
Syk: Is this for twisted.web?
16:15
< Syk>
yes
16:16
< Syk>
I've not a chance to do much with other protocols in twisted
16:16
< ErikMesoy>
I like the reference passing too, such as when I can store a bunch of functions in a dictionary and then call something like dictionary[element]()
16:16
<&jerith>
You have to do it that way unless you can get your entire response body in one go without any I/O.
16:17
<&jerith>
Anyway, you're not actually passing "references". You're passing objects.
16:17
<&ToxicFrog>
ErikMesoy: what does that have to do with reference passing?
16:17
< Syk>
well you're passing an object by reference, right?
16:17
< ErikMesoy>
fine, object passing.
16:17
< ErikMesoy>
being able to pass anything and everything around
16:17
<&ToxicFrog>
jerith: well, you're passing objects by reference rather than by value; x = Object(); y = x; results in two references to the same object, not two identical but distinct objects.
16:18
< ErikMesoy>
ToxicFrog: I couldn't store functions like that in other languages I've worked in
16:18
<&jerith>
ToxicFrog: "reference" doesn't really have any meaning in Python.
16:18
<&ToxicFrog>
Vornicus: it may be the most surprising, but personally there's a bunch of stuff I'd class as "worse"
16:18
< ErikMesoy>
functions in Python are well-behaved objects that I can store and pass
16:18
<&ToxicFrog>
jerith: this is "reference" in the computer science sense, not the C++ language feature sense
16:18
< ErikMesoy>
So. Am I likely to get myself in trouble if I use self.labels = labels[:] for cheap copying?
16:18
<&ToxicFrog>
ErikMesoy: yeah, that has nothing do with pass-by-reference vs. pass-by-value and everything to do with functions being first class values in the first place, which is a common feature of HLLs
16:19
<&ToxicFrog>
Although in practice I don't know of anything that does first-class pass-by-value functions~
16:21
<&jerith>
ToxicFrog: "reference" in the computer science sense is only really meaningful at low levels.
16:21
<&ToxicFrog>
jerith: erwhat
16:22
<&ToxicFrog>
Unless Everything Is Immutable, "assignment copies the value" and "assignment creates a new reference to the same value" is in fact a meaningful distinction even at high levels of abstraction
16:22
<&ToxicFrog>
replace "assignment" with argument/RV passing as needed
16:23
<&jerith>
In that case, everything in Python is references.
16:23
<&jerith>
Since assignment never copies.
16:24
<&ToxicFrog>
Yes.
16:27
<~Vornicus>
ErikMesoy: beeter might be to use self.labels = list(labels)
16:27
<~Vornicus>
(to say nothing about what is turniper.)
16:29
<&jerith>
somelist[:] is the idiomatic way to copy a list in Python.
16:29
<&jerith>
somedict.copy() does the same dicts.
16:29
<~Vornicus>
I always hated that, actually
16:30
<&jerith>
I'm not a huge fan of it myself.
16:30
<@Tarinaky>
Doesn't list have a copy method as well?
16:30
<@Tarinaky>
If not, that's silly.
16:30
<&jerith>
Nope.
16:30
<~Vornicus>
It means if I'm pulling in things that for some reason are tuples or otherwise not a list, but I need a thing that acts like a list, I'm stuck
16:30
<@Tarinaky>
That's silly.
16:31
<&jerith>
Vornicus: sometuple[:] works as well.
16:31
<&jerith>
Although it's basically a NOP, since tuples are immutable.
16:32
<~Vornicus>
"works" in that it creates another tuple. If I need it to act like a list that doesn't help me.
16:33
<&jerith>
Actually, list(somelist) does copy the list.
16:33
<@Tarinaky>
Umm... Tuples aren't lists? Asking one to behave like a list is silly?
16:33
<&jerith>
Shallow copy, of course.
16:33
<&ToxicFrog>
Tarinaky: tuples are immutable, for starters
16:33
<~Vornicus>
jerith: that's what I'm aiming at
16:34
<@Tarinaky>
ToxicFrog: Well, yeah... That's like the main difference between a tuple and a list in Python.
16:34
<@Tarinaky>
A mutable tuple is a list. >.>
16:34
<&jerith>
Vornicus: list(not-a-list-or-tuple) can do strange things, though.
16:35
<&jerith>
list(somedict) returns a list of the dict's keys.
16:36
<&jerith>
If you want a straight copy, foo[:] is guaranteed to return a shallow copy of anything that supports slicing and throw an exception on anything else.
16:38
<&ToxicFrog>
Tarinaky: yeah, that was my point - no, tuples aren't lists, and whether asking one to behave like a list is silly depends on what parts of "behave like a list" you need.
16:38
<@Tarinaky>
As far as I am aware, the only differences in the language is mutability and indexing.
16:39
<@Tarinaky>
You can pack and unpack lists in later versions of python2.
16:39
<&jerith>
Indexing's the same for both.
16:39
<&jerith>
Mutability and hashability are the only real differences.
16:40
<&jerith>
The only time I've ever had a problem with the difference was trying to concatenate lists and tuples.
16:56
<@Tarinaky>
There's something wrong when intro to probability lectures don't cover anything you haven't picked up from playing Dungeons and Dragons (or other RPGs of choice)
16:57
< ErikMesoy>
No there's not.
16:58
< ErikMesoy>
Intro to probability lectures are, I presume, also supposed to explain the material for the benefit of jocks.
16:58
<@Tarinaky>
CS students.
16:58
<@Tarinaky>
It's part of the second AI module.
16:59
<@Tarinaky>
I mean, what kind of a CS student are you if you can't calculate DPS in your favourite game :/
16:59
< ErikMesoy>
Oh.
17:21
<@Haeroe>
No true computer scientist
17:27 * Vornicus has secretly replaces Haeroe with a scotsman. Let's see if anyone notices.
17:41 Attilla [chatzilla@Nightstar-aced750e.range86-184.btcentralplus.com] has quit [Ping timeout: 121 seconds]
17:42 Attilla [chatzilla@Nightstar-8c2dcf13.range86-177.btcentralplus.com] has joined #code
17:45 Attilla [chatzilla@Nightstar-8c2dcf13.range86-177.btcentralplus.com] has quit [NickServ (GHOST command used by Attilla_)]
17:46 Attilla [chatzilla@Nightstar-14bf3d91.range109-151.btcentralplus.com] has joined #code
17:48 celticminstrel [celticminst@Nightstar-e83b3651.cable.rogers.com] has joined #code
17:48 mode/#code [+o celticminstrel] by ChanServ
17:48 Kindamoody|out is now known as Kindamoody
17:54
<@Tarinaky>
http://www.codecrap.com/content/best/
17:57 Syk is now known as syksleep
17:57
<~Vornicus>
I like the "dear maintainer" one
17:58
<~Vornicus>
I'm not even sure what the try/finally thing there does, that looks, um
17:58
<@Tarinaky>
# define true (rand() > 10)
17:58
<~Vornicus>
I've got nothing.
18:03
<&jerith>
I quite like the implications of $hash = sha1(crc32(md5($_POST['password'])));
18:04
<~Vornicus>
that's really, really hashed.
18:04
<&jerith>
There is absolutely nothing right about that line.
18:05
<@Haeroe>
What language is that?
18:06
<&jerith>
PHP.
18:06
<@Haeroe>
Wait, doesn't crc32 return.. an int?
18:07
<&jerith>
In PHP, I'd expect it to return spiders.
18:07
<&jerith>
Or maybe a giraffe, but only on alternate Thursdays.
18:07
<@Haeroe>
Which means that there are 2^32 different hashes
18:08
<&jerith>
Firtly, any normal hash function is a really poor fit for password storage.
18:09
<&jerith>
Secondly, multiple hashes like that actually increase the chance of collisions.
18:10
<&jerith>
Thirdly, the password has obviously just been sent over the intertubes in plaintext.
18:10
<@Tarinaky>
Lets be fair, maybe it hasn't and he's hasing it some more?
18:11
<@Tarinaky>
I mean, that'd probably manage to be worse.
18:11
<&jerith>
(It's *possible* that they're using SSL. Given that line of code, I doubt it.)
18:11
<@Tarinaky>
Also: you could say he's... Making a hash of it.
18:11 * jerith stabs Tarinaky in the face with a pair of sunglasses.
18:11
<@Tarinaky>
jerith: The code snippit came to light, that implies there was someone capable of inflicting violence on him for it.
18:19
<~Vornicus>
wat http://www.codecrap.com/content/219/
18:20
<@Tarinaky>
Heh.
18:28
<@Tarinaky>
What would you call a point on a graph that doesn't have a derivative, but is defined?
18:29
<@Tarinaky>
Or rather, is finite at least.
18:29
<~Vornicus>
like (0,0) in |x|?
18:30
<@Tarinaky>
Actually... Never mind, I'm being thick.
18:31
<@Tarinaky>
I have a graph/plot of a shape on a graph, but one of the x-coordinates has two y-coordinates.
18:31
<@Tarinaky>
s/shape/polygon/
18:31
<@Tarinaky>
Obviously this means it's not a function at all.
18:32
<~Vornicus>
depending on how it acts: that's a "corner"; the floor function has a "jump"; the kronecker delta has a "misplacement", and the cube root function has a "vertical"
18:39 Attilla [chatzilla@Nightstar-14bf3d91.range109-151.btcentralplus.com] has quit [Ping timeout: 121 seconds]
18:40
<@Tarinaky>
Weapons grade muppetry.
18:42 Attilla [chatzilla@Nightstar-87646183.range86-143.btcentralplus.com] has joined #code
19:40
<@Tarinaky>
http://www.dadhacker.com/blog/?p=1911
19:41 Kindamoody is now known as Kindamoody[zZz]
19:46
<&ToxicFrog>
"2. When you do that, get management buy-in at the right time. Like, when you have things largely working and you've dealt with (or at least can enumerate) most of the risk."
19:47
<&ToxicFrog>
That sounds like a really great way to get things largely working and then have it all thrown out and be bitched out for working on that rather than what you've been assigned.
19:50
<@Tamber>
And then bitched at *again* when the project flies like a Pb balloon due to the stupidity you were trying to replace. :p
19:50 Vornicus [vorn@ServerAdministrator.Nightstar.Net] has quit [[NS] Quit: Leaving]
19:52
<@Tarinaky>
Never said it was good advice.
19:53
<@Tarinaky>
It is, however, a good story.
20:08
<@Tarinaky>
http://i.imgur.com/S9arY2q.png Nearly finished the visual mock-up of the first screen.
20:09
<@Tamber>
:o
20:09
< ErikMesoy>
Nice.
20:10
<@Tarinaky>
Need to refactor some of those elements to be... well... reuseable 'groups'.
20:10
<@Tarinaky>
Well, need to get the Corporation Name entering thing working first.
20:10
<@Tarinaky>
That's going to be the real nightmare.
20:10 Derakon [chriswei@Nightstar-a3b183ae.ca.comcast.net] has joined #code
20:10 mode/#code [+ao Derakon Derakon] by ChanServ
20:10 * Derakon winces quietly at the problem his boss wants him to work on.
20:11
<@TheWatcher>
uhoh
20:11
<&Derakon>
I wrote a program awhile back that does 5D data visualization.
20:11
<&Derakon>
The wavelengths are color, time, Z, Y, and X.
20:11
<@Tarinaky>
If I can get away with it, without it being too much work for the sake of it, I might see if I can do the actual game rendering (when I get to it), in C.
20:11
<@Tarinaky>
Just so I have some C in my Github account :/
20:11
<@TheWatcher>
Let me guess, he wants you to add an extra dimension: spicyness?
20:11
<&Derakon>
Obviously you can only display three of these dimensions at a time on a computer display.
20:12
<@TheWatcher>
Well, unless you want to fuck with people's brains by projecting 5 dimensional space into 2D ¬¬
20:12
<&Derakon>
So I added a system to let you do a max-intensity projection through one of the orthogonal axes, which basically gives you the highlights of one of the other axes.
20:12
<&Derakon>
But that leaves one axis hidden.
20:12
<&Derakon>
This is apparently Not Good Enough.
20:13
<&Derakon>
Where we get into trouble is that the program is primarily not so much for visualization as it is for transformation.
20:13
<&Derakon>
That is, the different wavelengths (colors) of a dataset tend to be misaligned, so the program can do the necessary transformations to align them properly.
20:14
<&Derakon>
This is pretty hairy math to do efficiently.
20:14
< JustBob>
Let's see here... I have 24:55 before homework is due and 25:55 before midterm is due. Time to start drinking.
20:14
<&Derakon>
It gets a lot worse when you do one projection.
20:14
<&Derakon>
But when you want to do two projections, you are automatically considering the entire dataset.
20:14
<&Derakon>
It is functionally impossible to double-project a transformed dataset with any kind of efficiency.
20:15
<&Derakon>
So either I have a horribly slow system or I don't allow projecting of transformed data; either way the program sucks.
20:15
<&Derakon>
(Also double-projecting transformed data is a bear to program)
20:15
<@Tarinaky>
I'd go with the suckiness that's less work.
20:16
<&Derakon>
You assume I have a choice in the matter.
20:16 celticminstrel is now known as celmin|busy
20:16
<@Tarinaky>
You did imply you had one, yes.
20:20
<@TheWatcher>
This has to be done in realtime, you can't cache the transformed data and then visualise that?
20:20
<@TheWatcher>
(to me, it sounds like it should be two separate tools, in fact)
20:20
<&Derakon>
It's an interactive program. You can drag wavelengths around to change their transformations.
20:21
<@TheWatcher>
Wait
20:21
<&Derakon>
And yeah, the main problem here is that my boss is way more interested in the visualization aspect than the transformation aspect.
20:21
<&Derakon>
(And the only thing the program is actually used for is transformation, since somehow all other existing tools get this important task very, very wrong)
20:21
<@TheWatcher>
Interactively transforming in 5D space, great fun
20:22
<&Derakon>
Well, two of the axes are never transformed.
20:22
<&Derakon>
Those being color (wavelength of light) and time.
20:22
<&Derakon>
The transformation is an XYZ translation, a rotation, and an XY scaling.
20:23
<@TheWatcher>
hm. How much data is this, anyway?
20:24
<&Derakon>
Highly variable, but for the stuff my boss is interested in we're talking hundreds of MB.
20:24
<@TheWatcher>
I kinda guessed you were going to say that
20:29
<&Derakon>
Ehh, I think I'll just disable multi-projections on transformed data.
20:29
<&Derakon>
In all likelihood nobody will even notice.
20:29
<&jerith>
Derakon: I know a couple of companies in your area that are hiring... *hides*
20:29
<@TheWatcher>
I'd also suggest trying to find places it can be massively parallelised if possible.
20:30
<&Derakon>
TW: most of the heavy lifting is being done by single Numpy operations.
20:30
<@TheWatcher>
Then tell him you need a 64/128 core rig~
20:30
<@TheWatcher>
Ah, egh
20:30
<&Derakon>
...hm, but there is a piecewise bit in transformArray. I could parallelize that.
20:31
<&Derakon>
Good call~
20:31
<&jerith>
Derakon: Just use numpypy.
20:31
<&jerith>
And shout at fijal if it doesn't work for your code.
20:31
<@TheWatcher>
... do pything people try to make things better just by adding more 'py's to the end or something~
20:31
<@TheWatcher>
*python
20:32
<&ToxicFrog>
Apprently
20:32 * TheWatcher needs more tea, damnit. Why is my mug not refilling?
20:32 * Derakon AFKs for a bit.
20:32
<&jerith>
TheWatcher: numpypy is a rewrite of certain core bits of numpy in a combination of pure Python and RPython.
20:33
<&jerith>
This means pypy's JIT can make it fast.
22:02 celmin|busy is now known as celticminstrel
22:05 ErikMesoy is now known as ErikMesoy|sleep
22:09
<&McMartin>
[MacOS] zarf says, "oo, textwrangler update"
22:09
<&McMartin>
[MacOS] zarf | (Side note: "If you don't, I'll poison your dinner" is a compelling argument for a feature request, but can typically only be used once.)
22:19
<&Derakon>
ISTR you said that earlier...
22:20
<&Derakon>
Maybe not in this channel though.
22:21
<&McMartin>
... yes, but you aren't logged into that network.
22:22
<&Derakon>
Hm, my logs only show it once. How curious. I'm positive I saw it before, somewhere.
22:23
<&McMartin>
You also aren't logged in to the place where zarf typed it, like ten minutes ago
22:23
<&McMartin>
Either a hash collision or you yourself were reading textwrangler update notes?
22:23
<&Derakon>
Well, then he must have gotten it from somewhere else.
22:24
<&Derakon>
Either that or I'm suffering unusually coherent deja vu.
22:27
<&ToxicFrog>
It shows up in the wild last year, if not earlier
23:05 Derakon [chriswei@Nightstar-a3b183ae.ca.comcast.net] has quit [[NS] Quit: leaving]
23:33 VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has joined #code
--- Log closed Fri Feb 22 00:00:03 2013
code logs -> 2013 -> Thu, 21 Feb 2013< code.20130220.log - code.20130222.log >

[ Latest log file ]