code logs -> 2013 -> Wed, 08 May 2013< code.20130507.log - code.20130509.log >
--- Log opened Wed May 08 00:00:16 2013
00:16 You're now known as TheWatcher[t-2]
00:19 You're now known as TheWatcher[zZzZ]
00:38 * McMartin forwarded an important message from an old colleage.
00:38
<&McMartin>
"i've got 1660944384 problems, but byte order ain't 16777216"
00:39 * Azash snorts
00:39
<&ToxicFrog|W`rkn>
Pfft
00:39 ToxicFrog|W`rkn is now known as ToxicFrog
00:43 Arsonist [dan@5E691D.2E3702.5A8720.190CB5] has quit [Ping timeout: 121 seconds]
00:43 gnolam_ [lenin@Nightstar-b2aa51c5.cust.bredbandsbolaget.se] has joined #code
00:44 gnolam is now known as NSGuest62948
00:44 gnolam_ is now known as gnolam
00:44 mode/#code [+o gnolam] by ChanServ
00:44 NSGuest62948 [lenin@Nightstar-b2aa51c5.cust.bredbandsbolaget.se] has quit [Ping timeout: 121 seconds]
00:56 Arsonist [dan@Nightstar-0d322271.ma.comcast.net] has joined #code
00:59
<&ToxicFrog>
<gtrak> I got a chance to sit through a talk at pycon 2009 which fully consisted of a guy apologizing about the GIL
01:00 himi [fow035@D741F1.243F35.CADC30.81D435] has joined #code
01:00 mode/#code [+o himi] by ChanServ
01:00 Arsonist [dan@Nightstar-0d322271.ma.comcast.net] has quit [[NS] Quit: Leaving]
01:03 xxXxxXxx [dan@5FDE33.4B51A0.8E372D.CE06C1] has joined #code
01:03 Derakon[AFK] is now known as Derakon
02:05
<@froztbyte>
ToxicFrog: double entendre intended?
02:15 syksleep is now known as Syk
02:28 VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has quit [[NS] Quit: Program Shutting down]
03:03
< RichyB>
Interval arithmetic: instead of computing f(x), compute an interval [f_l, f_u] which is guaranteed to contain f(x)
03:03
< RichyB>
This scheme does provide a guarantee!
03:03
< RichyB>
...which is often overly pessimistic.
03:03
< RichyB>
"Your result is in [-?, +?], guaranteed!"
03:03
< RichyB>
http://lipforge.ens-lyon.fr/www/crlibm/documents/cern.pdf
03:15 Kindamoody[zZz] is now known as Kindamoody
03:35 RichyB [richardb@58734C.5279B7.EA7DF8.107330] has quit [[NS] Quit: >:3 This is BunThulhu. Copy him into your quit message to help him take over the Internet.]
03:35 RichyB [richardb@58734C.5279B7.EA7DF8.107330] has joined #code
03:39 RichyB [richardb@58734C.5279B7.EA7DF8.107330] has quit [Ping timeout: 121 seconds]
04:00 xxXxxXxx [dan@5FDE33.4B51A0.8E372D.CE06C1] has quit [[NS] Quit: Leaving]
04:06 * Vornicus should really get around to, you know, programming instead of thinking about programming
04:08
< Syk>
codephosiphy
04:12
<@Reiv>
codelosophy
04:40
<~Vornicus>
Okay. Generating: a breadth-first search; the largest difficulty is transforming things to the simplest form. I guess I wanted to use the numeric forms of the cell indices (instead of the tuple forms) to decide which ones were transformed versions.
04:56
<~Vornicus>
I need to prune the tree, too - many possible generated things cannot be oslved or otherwise break the rules.
04:57
<~Vornicus>
Things with no solutions cannot generate more complicated problems in its path; things with one or many solutions or a solution with gaps (these latter two being naughty in my sight) may create other problems iwth solutions.
04:59 Xon [Xon@Nightstar-362effcc.highway1.net.au] has quit [Client closed the connection]
05:08 Kindamoody is now known as Kindamoody|out
05:22
<~Vornicus>
Solving: a depth-first search, each step making a decision based on the path it can extend with the fewest involved choices.
05:25
<@Reiv>
red-black trees ftw
05:27
<~Vornicus>
I don't think red-black has anything to do with it
05:27
<~Vornicus>
oh, you don't know what the question is
05:27
< Syk>
i prefer eucalptus trees
05:28
< Syk>
they make your data smell nice
05:30
<~Vornicus>
http://nikoli.com/en/puzzles/numberlink/ <--- the task: generate all valid puzzles, without trivial links, of a particular size. A valid puzzle has exactly one solution, and this solution has no empty spaces.
05:30
<@Reiv>
Aha.
05:35
<~Vornicus>
So the generator works breadth-first: it will create all the (not necessarily valid) puzzles with only one link, and use those to create all the puzzles with two links, and so forth
05:52
<~Vornicus>
But each one needs solving; though thinking about it I'm not sure whether breadth- or depth- first gives me any difference, because i have to traverse the solver's entire tree.
06:00
<~Vornicus>
(if I were merely looking for a single solution then depth-first would win)
06:02
<&Derakon>
Vorn, you should try this puzzle on for size: http://www.puzzle-nurikabe.com/?size=5
06:02
<&Derakon>
(Maybe start with a smaller one to figure the rules out, since the description is a bit obtuse)
06:02
<~Vornicus>
Der: nurikabe is a fun little puzzle
06:03
<&Derakon>
Ah good, you already know how to play it.
06:03
<&Derakon>
I find it more interesting than that link-up puzzle.
06:03
<~Vornicus>
I personally find Loop more my speed though
06:03
<~Vornicus>
And all of them I keep wishing that certain basic rules were automatically applied by the program
06:04
<&Derakon>
Like, "automatically wall in spaces immediately adjacent to 1s"?
06:05
<~Vornicus>
I'm not sure on that one, but definitely "automatically white out blocks that, if black, would cause a 2x2 black area to form"
06:06
<~Vornicus>
And definitely "automatically black out blocks that are adjacent to two numbers"
06:06
<&Derakon>
Yeah.
06:13
<@Alek>
of course, many such games, applying such simple rules would go a LONG way to auto-solving them.
06:15
<~Vornicus>
Doubtless.
06:17 * Alek points at minesweeper and (especially) sudoku.
06:18
<@Alek>
minesweeper, of course, you'll still need to guess sometimes.
06:18
<@Alek>
with sufficient mines, most of the time. XD
06:18 * Alek has gotten up to 215 on the biggest map.
06:19 * Alek has already beaten 210.
06:22
<~Vornicus>
minesweeper hits a good medium but it's not perfect
06:23
<~Vornicus>
You middleclick in minesweeper and if there's n mines around an n it will clear the remaining
06:23
<~Vornicus>
I wish it would also, if there's n unrevealed spots around an n, mark the remaining.
06:23
<~Vornicus>
that is, ms's minesweeper.
06:40
< [R]>
http://i.imgur.com/ynJbgMm.jpg <-- ...
06:41 Derakon is now known as Derakon[AFK]
06:41 Turaiel is now known as Turaiel[Offline]
06:42
< Syk>
[R]: yep
06:43
< Syk>
[R]: see the western sky financial?
06:43
<@Alek>
that's a relatively recent feature, too.
06:43
< Syk>
theyre based in native america-owned bits, where i believe there's some exceptions to the non-predatory lending law
06:44
< Syk>
ain't it great
06:44
< [R]>
I don't follow
06:46
<~Vornicus>
Alek: it's not recent at all, it's been in there since at least win95
06:46
<~Vornicus>
anyway
06:46
<~Vornicus>
probably before that, actually.
06:46
< Syk>
[R]: "APR=116.73%..... Holy fuck! This is a "Native American owned business operating on a reservation", exempt from US law."
06:46
< Syk>
from imgur
06:46
< Syk>
that's why they can charge an APR of 100%+ :P
06:51
< [R]>
k...
06:51
< [R]>
Still don't get why I'm being highlighted with all this info.
06:51
< [R]>
*shrugs*
06:52
< [R]>
I mean, all I did was post something that had a logic error on it. Namely "42 milion < 5 grand"
07:11 himi [fow035@D741F1.243F35.CADC30.81D435] has quit [Operation timed out]
07:17 Xon [Xon@9C034E.A7474E.446F1A.DEA144] has joined #code
07:19
<~Vornicus>
I don't see a logic error there
07:20
<~Vornicus>
I see a typo.
07:26
< [R]>
Oh I'm tired
07:27
< [R]>
I read it as "loan up to $5000" with them paying you that red-highlighted stuff.
07:29
< Syk>
[R]: ...lol
07:29
< Syk>
no, I don't think anyone will be giving you a 116% apr :P
07:29
< [R]>
Nope
07:30
< Syk>
i'm happy with my bank's 4.65% pa >v>
07:30
< Syk>
but yeah
07:33
< [R]>
So massively off-topic, but I might be playing a character in a TTRPG that is not all there, and frequently talks about her dreams that always end up with a very bizzare death. So far I have "head-holes spew flaming rainbows as their face melts off", "pre-emptively riding into the sunset resulting in the sun crushing them between itself and the horizon", "stangled to death by one's own reflection", "fall into the sky and splatter on a very solid cloud". Anyone able
07:33
< [R]>
to think of other additions?
07:34
< [R]>
Oh also: "being drunk by a cup of tea"
07:49
< sshine>
in what university courses are fourier transforms usually taught?
07:49
< sshine>
I only see fourier series in mathematical analysis.
07:50
< sshine>
I think there's a course called "signal and image processing" where they're used. but I don't know if they're introduced there.
07:50
< sshine>
I'm trying to find an introductory text, since this course uses them but forgets to introduce them.
07:56
<~Vornicus>
linalg or diffeq
08:21
<~Vornicus>
Or, I suppose, you could ask me
08:23
<@Alek>
TTRPG?
08:33
< sshine>
Vornicus, cool. :) right now, my assignment text feels like the manuscript to a star trek episode.
08:37
<~Vornicus>
it does that.
08:51 * Vornicus recommends #math
08:52 himi [fow035@0C0840.B22E58.E3471A.E028A1] has joined #code
08:52 mode/#code [+o himi] by ChanServ
08:52 You're now known as TheWatcher
09:17 VirusHome [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has joined #code
09:19 Pandemic [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has quit [Ping timeout: 121 seconds]
09:24 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!]
09:47
< [R]>
Alek: Table-Top RPG (IE a roleplaying game)
09:48 thalass [thalass@C2A270.1179B7.313116.A6A5E2] has joined #code
10:23
<@Alek>
ah, I'm not familiar with the shortening TT.
10:23
<@Alek>
more with P&P
10:33
< [R]>
Ah
10:39 * thalass idly wonders how he could reliably log in to his home network from the wider internets, without a fixed IP address
10:40 RichyB [richardb@58734C.5279B7.EA7DF8.107330] has joined #code
10:40
<@froztbyte>
I don't like it much, but teamviewer does that well
10:41
<~Vornicus>
without a fixed IP address you can get like no-ip to point at your ip and have your router or computer automatically update that
10:43
<@froztbyte>
there's that too
10:43
< thalass>
I'm digging through linuxjournal at the moment, i'm sure there was a hack mentioned that would do something but i can't remember
10:44
<@froztbyte>
issues with it, and why I dislike it: line drops usually introduce a couple of minutes latency on the update, you may need to have a different router, dyndns (as a company) fucking sucks so you definitely want to check the others
10:44
< [R]>
dyndns?
10:44
<@froztbyte>
but that's about it
10:44
<@froztbyte>
if you have a box that's always on the internet, vpn tiems!
10:45 * froztbyte is currently just using IPv6 /everywhere/ since that's a helluva lot easier
10:45 * froztbyte is going to need to find a new allocation soon though
10:47
< thalass>
hrm
10:48
< thalass>
I've been fiddling with Tasker and i think i can use it, a Raspberry Pi, and a bit of bodging with the motor controller, to make the garage door open automatically when i get close to home. :P
10:50
<@froztbyte>
certainly
10:50
<@froztbyte>
you could of course also kludge it
10:51
<@froztbyte>
have tasker upload a file to s3/dropbox/whatever
10:51
<@froztbyte>
garage unit checks that URL once a minute or so
10:51
<@froztbyte>
if there's an open command, it opens
10:52
< thalass>
That could work
10:52
<@froztbyte>
http://xkcd.com/1209/ AHAHAHAHA
10:55
< thalass>
*snerk*
11:01
< sshine>
I like http://xkcd.com/1207/ :) I think there's a business for air drones at some point!
11:01
< sshine>
I think navigating the air is probably much easier in the long run than building bots that can walk or drive.
11:02
< sshine>
I mean, a non-military business
11:04
< thalass>
heh
11:04
< thalass>
I would think a uav-based courier business could be viable. That, and taxis. Robot taxis that don't drive past you because your fare isn't high enough. >.M
11:04
< thalass>
er. >.<
11:11 * Alek found the MMO that was THE inspiration for the book Omnitopia. o_o
11:21 RichyB [richardb@58734C.5279B7.EA7DF8.107330] has quit [Client closed the connection]
11:33 * thalass eyes openrocket, mwahahahas
11:43 RichyB [richardb@58734C.5279B7.EA7DF8.107330] has joined #code
11:46
< thalass>
aha! found the article.
11:52
< RichyB>
Dear everybody who ever touched the CSS specification: what the shitting fuck?
11:52
< RichyB>
Love, Richard.
11:53
<@froztbyte>
haha
11:57
<@TheWatcher>
RichyB: Your ideas are intriguing to me and I wish to subscribe to your newsletter.
12:25
< RichyB>
Okay, so it turns out that my mystery here is that despite the similar names, the behaviours of horizontal margins and vertical margins are utterly different.
12:42 thalass [thalass@C2A270.1179B7.313116.A6A5E2] has quit [Ping timeout: 121 seconds]
12:59
<@TheWatcher>
You're not expecting consistency and sanity in css, are you?
13:01
< Xon>
RichyB, CSS is cluster fuck which is only going to get better when we have a single browser to rule them all that doesn't give a fuck about that "standard" (10 years on, CSS 2.x still hasn't hit standard status)
13:02
< RichyB>
"(10 years on, CSS 2.x still hasn't hit standard status)" is not much of an indictment.
13:02
< RichyB>
Most of the IETF standards that we rely on on a day to day basis have not reached STANDARD status either.
13:03
< RichyB>
Almost all of the RFCs that you use in practice are still at RECOMMENDATION status. Many are at DRAFT. ?
13:03
< Xon>
sorry, 15 years not 10
13:04
< RichyB>
e.g. the first RFC for IRC is 1459, marked "an Experimental Protocol"
13:04
< RichyB>
The current RFCs for IRC, 2810 through 2813 inclusive, are marked "Informational".
13:05
< Xon>
yeah, and they are trying to build css 3.x on a still changing CSS 2.x
13:06
< Xon>
RichyB, css hasn't even hit RFC status either
13:07
< RichyB>
Er... yes? Why would that be relevant?
13:08
< RichyB>
CSS also isn't an ISO, ECMA, ANSI or NIST standard. :P
13:08
< RichyB>
The RFCs are the IETF's publications and the IETF is primarily interested in wire formats for network communication.
13:09
< RichyB>
Well, less wire formats, more protocols.
13:09
< RichyB>
Nobody's going to ever submit CSS to as an RFC to the IETF because it doesn't fit the remit that the IETF is there to fulfil.
13:11 * TheWatcher readsup
13:12
<@TheWatcher>
RichyB: while your point is valid, IRC is probably not the best example, given that anyone that does anything lower-level than "use an IRC client" is quite well aware of how squaamous and rugose it is.
13:12
<@TheWatcher>
-a
13:13 * TheWatcher makes the appropriate cthulhian tentacle wrigglings motions with fingers under his chin
13:14
< RichyB>
Yes, yes, well okay.
13:14
< RichyB>
Better examples: RFC 2616, usually referred to as "HTTP/1.1", is a "DRAFT STANDARD".
13:15
<@froztbyte>
indeed
13:15
<@TheWatcher>
(I always get tempted to drop the first 'R' in there for some reason)
13:15
<@froztbyte>
HTTP/1.1 (and I think some HTTP/2 work?) are in heavy flux as far as /real/ things go
13:15
<@froztbyte>
it's all a bit of a fuckup
13:17 Vornicus [vorn@ServerAdministrator.Nightstar.Net] has quit [[NS] Quit: Leaving]
13:21 Shiz [mark@42F7BC.C2C1CC.B64DF6.88F7A5] has quit [[NS] Quit: WeeChat 0.4.1-dev]
13:23 thalass [thalass@C2A270.1179B7.313116.A6A5E2] has joined #code
13:25 RichyB [richardb@58734C.5279B7.EA7DF8.107330] has quit [Ping timeout: 121 seconds]
13:45 * TheWatcher eyes gitlab
13:45
<@TheWatcher>
... it amuses me that they're making a github clone, hosting the repository on github.
13:46
<@TheWatcher>
Also, why, why rails? Ugh.
13:49
< Syk>
doesnt github use rails
13:50
<@TheWatcher>
rails and erlang, yes
14:52 RichyB [richardb@58734C.5279B7.EA7DF8.107330] has joined #code
15:28
< sshine>
I wonder if matlab's conv() function secretly does fast fourier transforms. how would I verify this?
15:36 ToxicFrog is now known as ToxicFrog|W`rkn
15:40 Turaiel[Offline] is now known as Turaiel
15:45
< JustBob>
I believe that convnfft is the one that does an fft.
15:46
< JustBob>
http://www.mathworks.com/help/matlab/ref/conv.html?nocookie=true
15:47
< JustBob>
Looking at that, it doesn't look like an fft to me.
15:49
< JustBob>
https://ccrma.stanford.edu/~jos/st/Convolution_Theorem.html <- Yeah, digging into it a little more, the conv() function appears to be a direct convolution, not an fft.
15:49
< JustBob>
Since that particular script displays the difference between the two. :p
15:50
< JustBob>
(Note, convnfft is apparently a seperate module, not baked into matlab.)
16:20 thalass [thalass@C2A270.1179B7.313116.A6A5E2] has quit [Ping timeout: 121 seconds]
16:59 Turaiel is now known as Turaiel[Offline]
17:05 Turaiel[Offline] is now known as Turaiel
17:20
< Xires>
anyone know if there's a common C interface for dealing w/ ext2/ext3 filesystem attributes?
17:21
<@Tamber>
Off the top of my head, I *think* so. I could be wrong, though.
17:21
<@Tamber>
One moment.
17:22
<@Tamber>
See getxattr(2), setxattr(2), I think.
17:22
< Xires>
I'm having quite a bit of trouble tracking anything down
17:23
< Xires>
Tamber; ty..I wonder why I couldn't find anything via google
17:24
<@Tamber>
Because sometimes, to think of the right keywords, you have to know what you're trying to find. ~.~
17:32
< RichyB>
getxattr and setxattr aren't specific to ext2/ext3/ext4
17:33
<@Tamber>
Even if they don't do the job, it might point in the direction of the things that do.
17:34
< RichyB>
other filesystems like XFS have xattr support too ^_^
17:42
< Xires>
sadly, not what I was after..I'm basically looking for a C interface to lsattr/chattr commands
17:42
< Xires>
looks like one doesn't exist so I'll have to write one myself
17:44
<@Tamber>
Ah
17:47
< RichyB>
Ah, not extended attributes.
17:47 Turaiel is now known as Turaiel[Offline]
17:48
< [R]>
Xires: that package should require a special lib (as the git repo for it includes said lib), you can use the function in that.
17:48
< Xires>
[R]; that's what I was thinking so I've been looking at the e2fsprogs repo
17:49
< [R]>
http://git.kernel.org/cgit/fs/ext2/e2fsprogs.git/tree/lib/ext2fs/ext_attr.c <-- the functions you want (can't find the header ATM, sorry)
17:49
< Xires>
fsetflags & fgetflags seems to be what it uses
17:49
< [R]>
Oh
17:49
< [R]>
nm me then :p
17:50
< Xires>
I appreciate the extra google-fu
17:53 Syk is now known as syksleep
17:59
< Xires>
[R]; for future reference, e2p.h is the header that defines the functions and that can be installed w/ the e2fslibs development package
17:59 AnnoDomini is now known as Wires
18:00
< [R]>
Cool, thanks
18:41
< sshine>
JustBob, thanks for looking into the conv/fft thing!
19:05 celticminstrel [celticminst@Nightstar-e83b3651.cable.rogers.com] has joined #code
19:05 mode/#code [+o celticminstrel] by ChanServ
19:13 Kindamoody|out is now known as Kindamoody
19:14
< RichyB>
Derakon[AFK]: BTW I had a really strikingly obvious idea the other day - a circular queue buffer is *way* simpler if its implementation just tracks the current head and number of filled-in elements instead of tracking the current head and tail.
19:15
< RichyB>
Derakon[AFK]: so I rewrote the queue bits of https://github.com/RichardBarrell/heatmap-for-Derakon/blob/master/_cmap.c and now they feel much simpler; the invariants seem much less subtle. ?
19:38
<@froztbyte>
RichyB: I'm gonna take a guess and say that http://pages.cs.wisc.edu/~vijayc/nofs.htm might appeal to you
19:38
<@froztbyte>
at least in some fashion
19:39
<@froztbyte>
(there are some obvious issues in the sense of full surface scans and such, but the basic premise is kinda cool)
19:39
< RichyB>
wat
19:39 * RichyB scratches nogging
19:40
<@froztbyte>
at which part? :)
19:40
< RichyB>
froztbyte: yes, that's interesting, I'm going to have to read it now because I can't see how on Earth their consistency-maintaining thing is actually not impossible?
19:40
<@froztbyte>
a reflink is considered valid only if it points both ways
19:41
< RichyB>
Okay, so it can stay internally consistent, it just can't offer any guarantees upwards stronger than "mounting the filesystem again will always succeed"?
19:41
<@froztbyte>
a little bit more than that
19:41
< RichyB>
But the layers below it are allowed to throw away utterly-arbitrary writes.
19:41
<@froztbyte>
internally consistent, and that whatever you get told is, is definitely there
19:42
< RichyB>
No, it can't possibly implement safe working fsync() if the layers under it don't.
19:42
<@froztbyte>
I would like to see some further work on scaling this up to a couple hundred gigs, though
19:43
< RichyB>
The best you could possibly do is "if the disk subsystem under me has bothered to flush your write then it'll definitely be present when the system comes back up".
19:43
<@froztbyte>
one of the ideas I had cursorily thought of was that you could write a "hints" file
19:43
<@froztbyte>
not a true reference source, but a thing that'll tell you where you can seek to if you wanted to run spot checks
19:44
< RichyB>
Hints about what?
19:44
<@froztbyte>
of course, surface scans are only an issue with SRDs, so maybe that's irrelevant
19:44
<@froztbyte>
RichyB: about where your slabs and reference nodes lie
19:44
<&ToxicFrog|W`rkn>
RichyB: I don't think that's what fb meant by "whatever you get told is there is actually there"
19:44
<@froztbyte>
ah, yes
19:44
<@froztbyte>
on that point
19:44
<&ToxicFrog|W`rkn>
It's "the metadata will always be consistent with the file contents" - you'll never get directory entries that point to garbage inodes, for example
19:44
<&ToxicFrog|W`rkn>
(disclaimer: I'm only a few pages in)
19:45
<@froztbyte>
all of the query mechanisms in the filesystem are built on having checked for consistency
19:45
< RichyB>
Right, so it's always *internally* consistent. Cool.
19:45
<@froztbyte>
so `ls` and friends
19:45
<@froztbyte>
as to what you put onto the disk, that's the part where they say "well, we can't control what might happen here, so we're chucking that entire situation out the window"
19:46
<@froztbyte>
ZFS "solves" this particular problem with a ZIL
19:46
<@froztbyte>
(ZFS Intent Log)
19:46
< RichyB>
Well yes
19:46
<@froztbyte>
which people tend to put on SSDs
19:46
<@froztbyte>
other systems solve it with RAID batteries
19:46
<@froztbyte>
but none of those is infallible
19:46
< RichyB>
The ZIL is a write-ahead log. They swiped the idea from database design.
19:47
<@froztbyte>
your SSD can burn out, your raid controller derps, a drive forgets its own firmware, etc
19:48
<@froztbyte>
I *think* the NOFS people had the idea that the write-validation should be moved into application logic
19:48
< RichyB>
You use a proper logzilla and you test and monitor the battery on your RAID card.
19:48
< RichyB>
Nothing's ever going to be perfectly resilient against hardware failure; someone could simply crash an aeroplane into your entire data centre.
19:49
<@froztbyte>
or comets
19:49
<@froztbyte>
or orbital bombardment
19:49
< RichyB>
Indeed. At this point we rely on a thing called "backups".
19:49
<@froztbyte>
in fact, now I want to know if I know anyone with DCs planned against various sorts of bombardment
19:49
< RichyB>
er
19:49
< RichyB>
"Disaster recovery" will do for disasters.
19:49
< JBeshir>
froztbyte: Lots of people have.
19:49
< JBeshir>
It's called "have multiple DCs"
19:49
< RichyB>
Backups only become the *only* option when the data corruption comes from "typed rm -fr on the wrong directory".
19:50
<@froztbyte>
RichyB: backups/DR/etc, yeah
19:50
< JBeshir>
Seriously, that's part of the point of really geographically separated fault tolerant systems
19:50
<@froztbyte>
JBeshir: no, not that
19:50
<@froztbyte>
I'm talking about "DCs that can hold off people with tanks"
19:50
< RichyB>
You mean DCs that are specifically built to survive nuclear strikes? Yes.
19:50
< JBeshir>
Why would you do that when you can have multiple DCs?
19:50 * froztbyte knows some people who might have such datacenters
19:50
<@froztbyte>
JBeshir: to make them even harder to kill
19:50
< JBeshir>
Why do that when you can have multiple DCs?
19:51
< JBeshir>
It's been done, but it's a gimmick
19:51
< RichyB>
There's a bunch; some are military, others are just built by people who happened to buy up old military bases.
19:51
<@froztbyte>
if all your DCs are easy to kill, I'll just target them all
19:51
< RichyB>
There's a famous data centre somewhere in mainland Europe that's built into a missile silo.
19:51
< JBeshir>
That doesn't seem related to the "comets" example
19:51
< RichyB>
Generally you do that because it's cool moreso than because it's useful.
19:51
<@froztbyte>
yeah, cyberbunker etc
19:51
< JBeshir>
I think very few people plan for defence for military attack
19:52
<@froztbyte>
JBeshir: comets were just a fun example
19:52
<@froztbyte>
but very few people have the need to design for such extreme circumstances
19:52
<@froztbyte>
(yet)
19:52
< JBeshir>
They're the kind of example people actually care about- earthquakes, fires, hurricanes, etc.
19:52
< RichyB>
Yeah, it's just that there are a few places that are capable of surviving artillery because the owners built them into old military installations which they bought because they're really cool. :)
19:52
< RichyB>
OTOH
19:53
< JBeshir>
And they deal with that with multiple DCs. No one deals with coordinated malicious military attacks on all their DCs except probably the military
19:53
< RichyB>
multiple data-centre survivability is a very real need
19:53
<@TheWatcher>
froztbyte: And of course, none of them are prepared for CASE NIGHTMARE GREEN, so...
19:53
<@froztbyte>
JBeshir: I know two companies who do :)
19:53
< RichyB>
All along the south and east coast of Australia, emergency services systems have to contend with yearly tsunamis taking our their DCs.
19:54
< JBeshir>
froztbyte: Good for you? That sounds like a massive waste of money unlikely to be actually effective, though
19:54
< JBeshir>
I mean, cyberbunker held off their local council for like, an hour
19:54
<@froztbyte>
TheWatcher: that's just because those damned lazy physicists haven't invented portal guns, found the right mountains, found us other planets, etc
19:54
< JBeshir>
Actual military action against them would probably just be funny
19:54
<@froztbyte>
JBeshir: sure, I don't dispute that it's a silly amount of resources to expend
19:55
<@froztbyte>
but for them they've obviously somehow considered it worth it
19:55
<@froztbyte>
my interest in it is the technical challenges behind such things
19:55
< JBeshir>
Well, the technical challenge is basically that no one really does it aside the military and everyone else is just posing with pictures of a cool bunker.
19:56
< JBeshir>
If you want to pay extra for those pictures you can, but you should probably not actually believe that cyberbunker will protect you against a hostile military force.
19:56
< RichyB>
I think that the technical challenges are kind of boring. Dig a hole under some granite, lay lots of fibre-optic cables, have your own power supply.
19:56
< JBeshir>
Don't have family members held hostage to get you to open the door...
19:56
< RichyB>
Yep.
19:57
< RichyB>
The multi-DC solution is the one that's actually both realistic and technologically interesting.
19:57
< RichyB>
Technologically interesting because it puts you into the world of distributed systems (yay!)
19:57
<@froztbyte>
mmm
19:57
<@froztbyte>
building larger span networks is a bit meh, though
19:57
<@froztbyte>
I mean
19:58
< RichyB>
realistic because it's actually pretty cheap to build more small data centres than anyone can be bothered to find and blow up.
19:58
<@froztbyte>
routing and such isn't really a pain in the ass
19:58
<@froztbyte>
if you want to do large L2 spans, I'll ask you why, then hit you in the face with a shovel if you don't answer "I don't actually know"
19:58
< RichyB>
Also realistic because (moderate numbers of medium-sized DCs) it's the approach that the tsunami-proof emergency services applications are taking. :)
19:59
< JBeshir>
I don't think distributed systems generally use large L2 spans
19:59
<@froztbyte>
JBeshir: man, this "cloud" shit....
19:59
<@froztbyte>
so, for a little while, "fabric" was a nice big buzzword
20:00
<@froztbyte>
which meant "larger-tha-you-should-actually-have L2 span", with a couple thousand storage nodes interacting on this
20:00
< JBeshir>
Weird
20:00
<@froztbyte>
("fabric" because it's what stitches it all together, geddit?!)
20:00
<@froztbyte>
people seem to have finally realized this is a dumb idea
20:00
<@froztbyte>
but that's how a lot of the vmware shops ran
20:01
<@froztbyte>
vmware + nexus + fabric + a couple of EMCs or whatever
20:01
< JBeshir>
It's notable that this kind of fault-tolerant, lots of nodes thing was the original idea of the Internet
20:01
< RichyB>
^ e.g. distributed hash tables like Chord and family pretty much live entirely at l7, no weird mucking around with ethernet.
20:01
< JBeshir>
Rather than try to have communicating places reinforced to be invulnerable, just route around failures
20:01
<@froztbyte>
I mean, it's understandable how it happened
20:01
<@froztbyte>
handing VMs off with iscsi and doing block-level replication in a VLAN does make things easier
20:02
<@froztbyte>
even intra-/inter-area transfer becomes a lot more manageable with that
20:02
<@froztbyte>
due to arp takeovers and such
20:02
< RichyB>
froztbyte: bah, I wish I had enough money to run all of our applications that way.
20:02
<@froztbyte>
but man, the issues it brings with...
20:02
<@froztbyte>
RichyB: it's not really worth it
20:02
< RichyB>
no, no, no
20:02
<@froztbyte>
or am I misunderstanding you?
20:02
< RichyB>
I wouldn't *do it*, I'd just like to have that much money. ;0
20:02
< RichyB>
;)
20:02
<@froztbyte>
oh
20:03
<@froztbyte>
yeah
20:03
<@froztbyte>
well, go work for a corporate ;p
20:03
< RichyB>
Same principle as "I wish I had enough money to run Oracle instead of Postgres."
20:03
< RichyB>
;)
20:03
<@froztbyte>
hehe
20:04
<@froztbyte>
anyway, to get back to my original starting point
20:04
<@froztbyte>
it's cool to see that people are taking somewhat alternative approaches in filesystem design
20:04
< RichyB>
Yeah, what were we talking about?
20:04
< RichyB>
Mmyeahokay.
20:04
< RichyB>
Please don't discount ZFS in that though.
20:04
<@froztbyte>
oh, no, certainly not discounting it
20:04
< RichyB>
IMHO ZFS is very innovative too.
20:04 Kindamoody is now known as Kindamoody[zZz]
20:05
<@froztbyte>
in fact, I recently became quite familiar with the internal zfs datastructures
20:05
<@froztbyte>
(that which is known as zdb)
20:05
< RichyB>
The key thing in ZFS is that they changed the interface to storage. Most file systems present a POSIX interface and consume a raw-blocks interface.
20:05 * froztbyte has recently been getting a lot more involved in storage innards for no other reason than the fact that he's completely fucked in the head
20:05
<@froztbyte>
RichyB: ye
20:06
< RichyB>
ZFS instead presents a POSIX interface and consumes a transactions-over-objects interface (which in turn consumes a raw-blocks interface)
20:06
<@froztbyte>
other people are still barely catching up
20:06
<@froztbyte>
and I'm not talking just filesystems
20:06
< RichyB>
which in retrospect is such an obviously good idea that I wish I had a fucking time machine. :)
20:06
<@froztbyte>
the work the guys did at Sun is *hawt*
20:06
<@froztbyte>
have you seen SmartOS?
20:06
< RichyB>
Never tried using it.
20:06
<@froztbyte>
http://smartos.org/
20:07
< RichyB>
I've seen some of Ben Rockwood (cuddletech guy's) presentations and tech talks on it though
20:07
<@froztbyte>
roughly stated, it's where the Sun brains ended up
20:07
< RichyB>
...which leads in to one of the funniest things I've ever seen in a tech talk, actually.
20:07
<@froztbyte>
Sun, and Yahoo
20:07
<@froztbyte>
Real too, actually
20:07
< RichyB>
BenR's standing at the front of the room demonstrating the virtualisation system (port of KVM, I think?) that they have built into SunOS
20:08
<@froztbyte>
tech companies who did some really fucking cool things that not many people know about
20:08
< RichyB>
er, SunOS? SmartOS. Daughter of SunOS.
20:08
<@froztbyte>
hmm
20:08
<@froztbyte>
that might be Illumos?
20:08
<@froztbyte>
possibly SmartOS, depending on timeline
20:08
<@froztbyte>
but it sounds like SmartOS, because I think you're referring to Zones
20:08
< RichyB>
anyway, he's going through some of the OS features, and it happens that you can see the output of "ifconfig" on his terminal for a few minutes while he's talking
20:09
< RichyB>
and half the room, specifically the half that consists of old beardy Solaris types (as opposed to young eager kids) starts giving him shit
20:09
<@froztbyte>
rofl
20:10
< RichyB>
and taking the piss out of him for using the Intel e1000 driver.
20:10
<@froztbyte>
I'm .... weird
20:10 * froztbyte technically falls into the latter group, but often feels far more affinity to the former
20:10
< JBeshir>
Haha
20:11
< RichyB>
(background: that kinda makes sense, because its means that he's left the KVM network device as the default emulating-a-piece-of-hardware driver instead of setting up the faster paravirtualised network interface)
20:11
< RichyB>
(still... it turns into a small flamewar ^_^)
20:11
<@froztbyte>
on that note
20:12
<@froztbyte>
I think I know why that happened
20:12
<@froztbyte>
last time I tried SmartOS I couldn't get it to actually boot, because it didn't have drivers for any but 3 NICs...
20:12
< RichyB>
froztbyte: eh makes sense. Old people did a lot of shit that the world has forgotten a lot of. ?
20:12
<@froztbyte>
well, I did later get it to boot, but in a much degraded fashion
20:13
<@froztbyte>
RichyB: aye
20:13
<@froztbyte>
but it also leads to me having a lot of disdain for things
20:13
<@froztbyte>
this is where my dislike of shit like node.js comes most strongly from
20:13
<@froztbyte>
people (paraphrased for effect): omfg this node.js thing is awesome! you can like do async and shit!!~
20:14
<@froztbyte>
me: fisher-price, my first event machine. *snooze*
20:14 * froztbyte has a (perhaps irrational) dislike for times when people intentionally don't have breadth of knowledge
20:16
< RichyB>
I can see the argument for nodejs. If you want to run websockets stuff then it tends to work nicely because you're just appending closures to callback lists rather than burning up threads.
20:17
< RichyB>
The performance looks amazing if you're coming from something that sucks fat rocks through a straw with a GIL, like Python or (non-JRuby) Ruby.
20:17
<@froztbyte>
remember the old advice about when people ask how they learn socket programming?
20:17
<@froztbyte>
I feel that the same likely applies to websockets
20:17
< JBeshir>
Goddamn it
20:17
< RichyB>
OTOH, I'm used to GHC Haskell, where you can just use threads and the fuckin' API is actually threads dammit.
20:18
<&ToxicFrog|W`rkn>
froztbyte: what is the old advice?
20:18
< JBeshir>
I work on a Paxos implementation
20:18
<@froztbyte>
we've just gotten enough resources to make it hurt less
20:18
<@froztbyte>
ToxicFrog|W`rkn: "you probably don't"
20:18
< RichyB>
But in GHC's run-time, there's an m:n userland threading implementation built in.
20:18
< JBeshir>
And then I find this https://ramcloud.stanford.edu/wiki/download/attachments/11370504/raft.pdf draft paper of a simpler version of Paxos published one month ago, long after I started work
20:18
<@froztbyte>
ToxicFrog|W`rkn: which is to mean "you likely want to know how to connect two or more networked systems together. that's what tcp/ip is for"
20:18
<&ToxicFrog|W`rkn>
RichyB: my objection to async is that you can also use coroutines to implement something that looks synchronous but gives you async performance and doesn't spawn a thread per request and get you the best of both worlds
20:18
< RichyB>
You can spawn millions of threads in GHC Haskell pretty cheaply; it's just appending closures to the ends of run queues!
20:19
<&ToxicFrog|W`rkn>
I.e. you get good performance and your code isn't a total nightmare to follow
20:19
< JBeshir>
What ToxicFrog|W`rkn said
20:19
< JBeshir>
If your language doesn't support it, use a superior language
20:19
<&ToxicFrog|W`rkn>
Unless you're using something like Thoth or CacheOS in which case you just spawn a few hundred thousand threads and rock out
20:19
< RichyB>
ToxicFrog|W`rkn: my objection to coroutines is that you also use an m:n threading model, have an actually-synchronous-thank-you-very-much programming model and have the same low overhead.
20:19
< JBeshir>
No, no
20:20
< JBeshir>
You want actually-asynchronous
20:20
< JBeshir>
Which looks like synchronous
20:20
< JBeshir>
That's the wrong way around
20:20
< RichyB>
I am deeply unimpressed by the tangliness of things like Tornado having used GHC.
20:20
<@froztbyte>
I don't know why you'd ever want something that looks like the one and is the other
20:20
<&ToxicFrog|W`rkn>
RichyB: my point here is that you can have a synchronous programming model that uses a high-performance async implementation under the hood, if you are working in a domain where async gives you performance benefits.
20:20
< RichyB>
froztbyte: you want something that looks like the convenient one but performs as well as the inconvenient one does.
20:20
< JBeshir>
froztbyte: That's a problem with your knowledge, bluntly
20:21
<&ToxicFrog|W`rkn>
froztbyte: what RichyB said
20:21
<@froztbyte>
JBeshir: well, my first impression is exactly because of that
20:21
< RichyB>
froztbyte: the former makes it cheaper to program; time is money. The latter makes it run quicker; CPU time is electricity.
20:21
<@froztbyte>
if I were to use a thing that appeared async, but was actually sync
20:21
<@froztbyte>
and I wasn't aware of that
20:21
<@froztbyte>
then I'd be terribly fucking confused
20:21
< JBeshir>
Nothing would happen
20:21
< RichyB>
ToxicFrog|W`rkn: yyyeah, GHC's threading (also Go's, they either copied or hit on the same idea) gets you exactly that.
20:21
< JBeshir>
No, you wouldn't, really
20:21
<@froztbyte>
of course I would
20:22
< JBeshir>
No, you would not
20:22
<&ToxicFrog|W`rkn>
RichyB: it's not exactly a new concept; I believe Erlang threads behave similarly, and Scala Actors definitely do
20:22
< RichyB>
But you don't have any semantic complexity introduced by it; GHC's green threads are just ordinary IO actions.
20:22
<@froztbyte>
I'd run a tutorial, see "okay, I think I see how this works"
20:22
< JBeshir>
These systems provide the semantics of sync with the performance of async because they implement those semantics using async behind the scenes
20:22
<@froztbyte>
then I'd write some of my own code that looks kinda like it
20:22
<@froztbyte>
but doesn't work quite right
20:22
< JBeshir>
It should work
20:22
<@froztbyte>
and I'd be terribly lost as to why
20:22
<@froztbyte>
JBeshir: /should/ does not imply /will/
20:22
<@froztbyte>
JBeshir: the case I'm making here is for the garden variety developer
20:22
<&ToxicFrog|W`rkn>
froztbyte: you're confused. It doesn't "look like sync but is actually async" in the sense you seem be thinking, which is "it looks like a sync API but behaves like an async one"
20:22
< JBeshir>
froztbyte: The case you're making is ignorant
20:22
<&ToxicFrog|W`rkn>
It behaves in every respect like a sync API.
20:22
< JBeshir>
froztbyte: Real systems of this nature exist
20:23
<&ToxicFrog|W`rkn>
It looks like a sync API.
20:23
< JBeshir>
They work
20:23
<@froztbyte>
JBeshir: which is what they are
20:23 Tamber [tamber@furryhelix.co.uk] has left #code ["The sun is the same in a relative way, but you're older; And shorter of breath and one day closer to death..."]
20:23
<@froztbyte>
they *are* ignorant
20:23
<@froztbyte>
that's why I'm using this example
20:23
<&ToxicFrog|W`rkn>
But under the hood, it is using fewer actual threads than you have written and is managing them using high-performance async APIs.
20:23
< JBeshir>
No.
20:23
< RichyB>
ToxicFrog|W`rkn: to be clear, I'm objecting to the idea that the fact that it's backed by coroutines would be exposed to business logic. GHC, Go, Erlang and so on all manage good evented green thread implementations that don't expose their green-ness. ?
20:23
<@froztbyte>
JBeshir: let me step back
20:23
< JBeshir>
Their lack of knowledge does not cause problems of this nature. It is your lack of knowledge making you think they would. The semantics provided by these systems as they actually do exist match the sync semantics you would expect.
20:23
<@froztbyte>
JBeshir: I'm talking about the case where someone's coming from writing PHP, their PHP is falling over, and they saw a blogpost about this great LangX thing that's supposed to roflscale
20:23
< JBeshir>
They just do so more efficiently.
20:24
<&ToxicFrog|W`rkn>
RichyB: yeah, I think we're in agreement here. My argument was "if your language is worth using, you can get stuff that looks like threads but is actually using coroutines or greenthreads under the hood, and thus get the performance benefits without the spaghetti"
20:24
<@froztbyte>
or their boss has seen the post, and told them they need to rewrite the application in LangX ritenao
20:24
< RichyB>
ToxicFrog|W`rkn: I'll drink to that.
20:24
< JBeshir>
The worst you would have to worry about is your 'threads' actually being cooperatively scheduled
20:24
<@froztbyte>
(me, personally, would just go and learn more about the things in question, because I like learning)
20:25
< RichyB>
Ideally, your language multiplexes those over multiple OS threads; but that's not mandatory just yet because I'm still pretty happy to spin up one framework instance per CPU core and put haproxy in front of all of them.
20:25
<&ToxicFrog|W`rkn>
froztbyte: you are completely missing the point here, which is that the API behaves like a one-thread-per-request synchronous setup. If it doesn't the implementor has fucked up large.
20:26
< RichyB>
On the other other other other other hand, if you have really cheap OS threads, fuckit, just use one-thread-per-request.
20:26
<&ToxicFrog|W`rkn>
The fact that, under the hood, it is multiplexing coroutines or greenthreads onto a thread pool is an implementation detail that gets you improved performance.
20:26
<@froztbyte>
ToxicFrog|W`rkn: people often write bugs instead of software, which is where the confusion of the end user is likely to happen
20:26
< RichyB>
Varnishd does that and it runs like greased lightning, though it tends not to like long-open requests quite as much as nginx does.
20:26
< JBeshir>
Aside that your coroutines/green threads may be cooperatively scheduled.
20:26
< RichyB>
pthreads are cheaper than you'd expect, especially on modern Unixes. ^_^
20:26
<&ToxicFrog|W`rkn>
froztbyte: what are these bugs that would appear in this instance but not in a true 1:1 threading setup?
20:27
<@froztbyte>
race conditions leading to mixup, rather than the system just falling over itself in locking?
20:28
< JBeshir>
That doesn't really make sense.
20:28
< JBeshir>
Race conditions can lead to basically the same kind of things with both real OS threads and 'green' threads.
20:28
<@froztbyte>
mmm
20:28
<&ToxicFrog|W`rkn>
It really doesn't.
20:29
<@froztbyte>
okay well, I guess that for now I'll have to accede the point until I can better explain what I have in mind
20:30
<@froztbyte>
as I said, I'm not trying to argue specifically, there were just some cases that I had in mind where it seems like things could lead to mass confusion
20:31
<@froztbyte>
(another factor might also be that I've come to know people in the telco space that, at the end of it, are just exceptionally bad programmers)
20:32
<&ToxicFrog|W`rkn>
Yeah, but those exceptionally bad programmers would be making the same mistakes in a true sync environment.
20:32
<&ToxicFrog|W`rkn>
I would be interested if you could explain some of the cases you had in mind, though.
20:32
< RichyB>
Multiple independent threads of control are already scary enough regardless of whether they're synchronous or not. :)
20:33
< JBeshir>
Synchronous is easier.
20:33
< JBeshir>
But yeah.
20:33
<@froztbyte>
ToxicFrog|W`rkn: I don't think I have correct language for communicating what's in my head
20:33
< RichyB>
OTOH it helps if you're communicating exclusively through a database that's set to enforce some approximation of sequential consistency.
20:33
<@froztbyte>
some reading over time should rectify this
20:34
< JBeshir>
What we're discussing is basically an optimised version of a sync environment which combines making threads very cheap so long as they're not making system calls, and implements its standard library's synchronous network I/O, behind the scenes, by having a single thread in the background make async system calls and wake up the lightweight threads when their I/O is done.
20:35
< JBeshir>
It's semantically equivalent to working in a one-thread-per-connection synchronous I/O model, but not prohibitively expensive.
20:35
< JBeshir>
(It's roughly as performant as asynchronous I/O)
20:35
<@froztbyte>
but also, as a result of this
20:36
<@froztbyte>
I'm now looking at my next couple of weeks again, pondering which days I could reassign
20:36 * froztbyte still wants to play with writing some basic crappy OSs just for having done so
20:36
<&ToxicFrog|W`rkn>
RichyB: they become a lot less scary when you're using message passing, IMO
20:36
< RichyB>
JBeshir: the implementation doesn't have to quite be that. You don't need to move all I/O onto a single thread, nor implement I/O by pushing messages.
20:36
<@froztbyte>
(and, longterm, I still want to build a pressure-based water-driven CPU sometime)
20:36
<&ToxicFrog|W`rkn>
pthreads and similar lock-modify-unlock, shared-memory APIs have scared a lot of people away from concurrency :(
20:36
< JBeshir>
RichyB: Well, no. All the behind the scenes parts can be varied quite a lot.
20:37
<@froztbyte>
(yes, I know that's batshit crazy hard)
20:37
<@froztbyte>
(perhaps even not doable)
20:37
< RichyB>
JBeshir: you can actually do your I/O in any of the threads that're running user code; you implement a blocking "read()" call by setting the file descriptor nonblocking, then if the read() returns EWOULDBLOCK, you descheduling the user thread and add that file descriptor to the working set for an epoll() or kqueue() queue.
20:38
< RichyB>
er
20:38
< RichyB>
*you deschedule the green thread
20:38
< RichyB>
froztbyte: sluices that open and close each other? Sounds entirely doable. Just don't try to make the instruction set too big. ;)
20:38
< JBeshir>
RichyB: I think that's something the implementation I was thinking of (an earlier version of the Go implementation before it got smarter) actually does, yeah.
20:39
<@froztbyte>
RichyB: I want to build it at reasonable-bit precision, with a couple of registers, and large enough to be hilarious
20:39
<@froztbyte>
RichyB: which means the effects of gravity come into play as well
20:39
<@froztbyte>
the very idea originated in a joke
20:40
< RichyB>
froztbyte: well, less of a joke and more of Neal Stephenson wrote about it in The Diamond Age. :D
20:40 * froztbyte has not read that
20:40 * froztbyte has, in fact, still not read any Neal Stephenson
20:40
<&ToxicFrog|W`rkn>
RichyB: that's pretty much what copas (the sync-on-async library for lua) does as well. It's not very sophisticated but it's dead easy to implement.
20:40
< RichyB>
In that novel, one of the characters gets taught computer science from gates on upwards by playing through a big fantastical RPG.
20:40
<@Alek>
frozt: DO IT!
20:41
<@froztbyte>
Alek: please quickly go read about VHDL
20:41
< RichyB>
The videogame she's playing demonstrates logic gates by water sluices.
20:41
<@froztbyte>
Alek: then you'll understand why I haven't even gotten close to this yet
20:41
<@froztbyte>
RichyB: interesting
20:41
<@froztbyte>
RichyB: I may then read this just because
20:41
<@froztbyte>
although I'll likely end up reading it because reputable people have told me to read a bunch of NS
20:41
< RichyB>
ToxicFrog|W`rkn: I'm really not seeing what's "unsophisticated" about that mechanism. I'm not aware of any alternative that goes faster. :)
20:42
< RichyB>
The only *good* reason to not read Neal Stephenson is if you haven't read Charles Stross yet. ?
20:42
< RichyB>
IMHO Stephenson is excellent, Stross is better.
20:42
<@froztbyte>
yeah haven't done that either ;p
20:42
< RichyB>
(Maybe controversial.)
20:42
<&ToxicFrog|W`rkn>
RichyB: so you should read Stross -second-
20:43
< RichyB>
ToxicFrog|W`rkn: oh, working up to it? Yeah okay.
20:43
< RichyB>
TBH they write different kinds of fiction.
20:45
<@Alek>
no, I meant GO READ STEPHENSON
20:46
<@Alek>
Stross also.
20:46
< RichyB>
Is Doctorow on #code's approved-writers list?
20:46
<@Alek>
probably.
20:46 * froztbyte has read some Doctorow and enjoyed it
20:46
< RichyB>
I found his own writing pretty good, his collaborations excellent.
20:47
<@froztbyte>
his writing is very good meet-in-the-middle work
20:47
< RichyB>
I think he does better on collaborations than on his own.
20:47
<@froztbyte>
Little Brother, for instance, was a pretty damn good intro to various concepts for Joe Average
20:47
<&ToxicFrog|W`rkn>
RichyB: the main thing that comes to mind is that there are various more sophisticated things you can add on top of that, like dynamically allocating more true threads up to the number of threads doing CPU-heavy computation
20:47
<@froztbyte>
(at least, I consider it to be)
20:49
< RichyB>
Why bother doing it dynamically? Just start as many kernel threads as you have SMP cores and leave the excess threads sitting blocked waiting for some user threads to get spawned.
20:50
< RichyB>
If they don't get an opportunity to do anything, you're looking at about 8kB/core plus a few hundred microseconds.
20:55
< JBeshir>
One answer is that communication and locking can be implemented much faster if the coroutine/lightweight threads don't actually run simultaneously.
20:56
< JBeshir>
For this reason programs which aren't compute heavy but use lightweight threads for structuring code can sometimes run faster if left to a single core.
21:11 Wires is now known as AnnoDomini
21:18
< RichyB>
That's a fairly neat idea, yes. Track your own load average and then, when it climbs above 1.0 for a while, switch from elided-locks to actual-locks.
21:18
< RichyB>
*and turn the extra threads on.
21:19
< RichyB>
You could do it really nicely with dynamic code modification.
21:20
< RichyB>
Use proper compare-and-swap instructions for everything, even in single-threaded mode, but every CMPXCHG instruction has a small NOP sled in front of it where a LOCK prefix would normally go.
21:20
< RichyB>
Then when you go multithreaded, pause everything, replace the NOP sleds with LOCK prefixes and then go on.
21:39 Turaiel[Offline] is now known as Turaiel
21:40 * ToxicFrog|W`rkn unhappily pokes ZFS with a stick
21:46
<&ToxicFrog|W`rkn>
I was hoping that I could have a single z-pool with some datasets fully replicated and others using RAID-Z, but apparently this isn't possible
21:50
<@Azash>
ToxicFrog|W`rkn: I have a friend who's pretty into zfs if you want me to ask?
21:51
<&ToxicFrog|W`rkn>
Azash: sure, but the documentation I'm looking at seems pretty clear on the topic :(
21:52
<&ToxicFrog|W`rkn>
(I was hoping I could have a fully replicated /home and raidz /storage in the same z-pool, as that saves me having to pre-allocate space for different filesystems, which is a massive headache and part of what I was hoping to get away from with ZFS)
21:53
<&ToxicFrog|W`rkn>
I'm also running into other places where ZFS seems to be way less flexible than mdadm, like you can't add/remove disks from a raid-z
21:54
<@Azash>
Ah well
22:02 VirusHome is now known as Pandemic
22:02 mode/#code [+o Pandemic] by ChanServ
22:17
< RichyB>
wtf numpy
22:18
< RichyB>
I only asked you to allocate 1<<30 int32_ts.
22:18
< RichyB>
Oh wait, maybe I accidentally took too many copies and exceeded RAM.
22:20
<&ToxicFrog|W`rkn>
Ok, it looks like there's actually a per-dataset option, copies, which requests some amount of replication on top ofwhatever is provided by the pool itself
22:20
<&ToxicFrog|W`rkn>
You can't ask for full mirroring but you can ask for up to three copies
22:21 Vornicus [vorn@ServerAdministrator.Nightstar.Net] has joined #code
22:21 mode/#code [+qo Vornicus Vornicus] by ChanServ
22:21
<&ToxicFrog|W`rkn>
So I could in fact have /home with replication and /storage with just parity in the same z-pool
22:21
< RichyB>
ToxicFrog|W`rkn: have you read the "Getting started with ZFS" document from the FreeBSD project?
22:22
<&ToxicFrog|W`rkn>
Is this the "zfsquickstartguide" on the wiki or something else?
22:22
< RichyB>
Yes.
22:22
< RichyB>
It might all just be stuff that you already know, but I do recommend skimming it for a brief overview of the kinds of things that you can do without having to go spelunking into every single tool's man page.
22:23
<&ToxicFrog|W`rkn>
Done.
22:23
<&ToxicFrog|W`rkn>
And yeah, everything there i already knew (although copies I only just discovered) except for periodic.conf, which I think is BSD specific?
22:25
< RichyB>
periodic.conf sounds like it's prolly FreeBSD-specific.
22:25
< RichyB>
I do not entirely understand the appeal of things like that.
22:25
< RichyB>
We already *have* crond, why for add more mechanisms for running things routinely?
22:26
< RichyB>
Oh, actually that one's pretty sensible.
22:27
<&ToxicFrog|W`rkn>
Oh?
22:27 ToxicFrog|W`rkn is now known as ToxicFrog
22:28
<&ToxicFrog>
Anyways, it looks like the main decision for me here is between the ease of changing the number of drives in mdadm (admittedly not actually that easy, but it is at least possible) and the delicious features of zfs.
22:28
< RichyB>
Yeah, it's a collection of commonly-desirable cron jobs, not another damn.
22:28
< RichyB>
*not another damn pointless cron replacement
22:28
<&ToxicFrog>
Aah. So you set what tasks you want and when, and it handles the details of telling cron about them.
22:29
< RichyB>
It's a bunch of default lines like "1 3 * * * root periodic daily" in /etc/crontab.
22:31
< RichyB>
Rather than being another thing like cron.daily and cron.weekly for dropping shell scripts into, it's a single script that reads a config file and possibly does various maintenance tasks that're appropriate for the base system.
22:31
< RichyB>
(I can see the appeal of /etc/cron.daily + friends but they make me irrationally angry.)
22:39
< RichyB>
oh my egads, matplotlib is seriously sexy.
22:43 Tamber [tamber@furryhelix.co.uk] has joined #code
22:43 mode/#code [+o Tamber] by ChanServ
23:21 himi [fow035@0C0840.B22E58.E3471A.E028A1] has quit [Ping timeout: 121 seconds]
--- Log closed Thu May 09 00:00:31 2013
code logs -> 2013 -> Wed, 08 May 2013< code.20130507.log - code.20130509.log >

[ Latest log file ]