--- Log opened Mon Jan 14 00:00:47 2013 |
00:13 | | You're now known as TheWatcher[T-2] |
00:21 | | You're now known as TheWatcher[zZzZ] |
00:45 | <&ToxicFrog> | Reiv: because most people who play space sims use Real Joysticks anyways. |
00:46 | <&ToxicFrog> | And because space sims in general are perceived as a dead genre. |
00:46 | <&McMartin> | Speaking of, I oughta hook up my never-unpacked Real Joystick and fire up WC1 again |
00:46 | <&McMartin> | Heh |
00:46 | <&McMartin> | I like to say Freespace 2 was so good it killed the genre~ |
00:46 | <&ToxicFrog> | That said, I've heard that the 360 controller kicks a whole mess of ass in I-War 2. |
00:49 | <&ToxicFrog> | McMartin: that would be pretty unheamy given that it ended on a cliffhanger~ |
00:49 | <@Reiv> | I-War 2 being? |
00:50 | <@Reiv> | And I don't have a Real Joystick, nor have I ever found one I liked, so... |
00:50 | <&ToxicFrog> | Independence War 2: Edge of Chaos. |
00:50 | <@Reiv> | Also the joystick ends up giving a bias towards Fighter WWII shooting systems. |
00:50 | <@Reiv> | Though Freespace got a pretty decent compromise. |
00:50 | <&ToxicFrog> | A space sim in which you pilot a corvette (in the HW sense, ie, a bigger-than-strike-craft-but-smaller-than-everything-else ship with a crew of 3-6) with newtonian physics. |
00:51 | <@Reiv> | That could be fun. Is it actually fun? |
00:52 | <&McMartin> | Freespace is basically TIE Fighter II, so. |
00:52 | | * Reiv notes interestingly that he uses the term 'corvette' for /exactly the same kind of ship/. |
00:52 | <@Reiv> | McMartin: Er, whoops |
00:52 | <&ToxicFrog> | Ok, more ordered thoughts on this: sims in general, like RTSes, are generally seen as a PC genre. This may have something to do with the overall trend towards modeling control systems in greater and greater detail that ultimately culminates in stuff like Steel Battalion (which was a console game, but also required a huge custom controller with a thousand switches) or Falcon 4.0 (which has a manual that is basically the actual Falcon |
00:52 | <&ToxicFrog> | operations manual with install instructions prepended). |
00:52 | <@Reiv> | Not Freespace, that /is/ WWII shooting |
00:52 | <@Reiv> | Free/lancer/. |
00:52 | <@Reiv> | That system worked kind of OK. |
00:53 | <@Reiv> | But retained the old issue of being unable to shoot in a different direction to where you were steering. |
00:53 | <@Reiv> | This is what I want to do. |
00:53 | <&McMartin> | Then there was MANTIS, an inertial spaceflight game that was carefully worked out and unplayably shitty |
00:53 | <@Reiv> | Of course, on a joystick this is difficult unless you, I don't know, use the hat to steer your ship or something. |
00:53 | <&ToxicFrog> | On the console, you pretty much only get Ace Combat and its descendants, which aren't at all simmy; they're wholly on the "arcade" end of the sim<->arcade axis. |
00:54 | <&ToxicFrog> | Hybrids like Wing Commander (sim mechanics, arcade controls) are pretty much dead, AFAICT. |
00:54 | <&ToxicFrog> | Also, I cannot think of a single space sim from the past, oh, ten years that would be at all playable on a console without a complete control redesign; even I-War 2 requires you to go to the keyboard for some stuff. |
00:54 | <@Reiv> | Isn't that what Star Citizen was hoping to solve? |
00:55 | <&ToxicFrog> | (also, how is Freelancer not WW2 shooting, the mechanics are eqv. to Freespace except you have a quick-heal button and some gimbaling on the weapons) |
00:57 | <@Reiv> | It's the gimbaling, combined with the ability to point your mouse at something and shoot at it without nessisarily aligning the ship or requiring the ship head in that direction. |
00:58 | <&ToxicFrog> | Er |
00:58 | <@Reiv> | OK: You could shoot left while flying straight, or you could shoot left while flying left (chase-the-cursor movement) |
00:58 | <&ToxicFrog> | You couldn't do that in Freelancer, though. The control scheme is identical to Freespace's (or Wing Commander's) "mouse joystick emulation" mode, except that your guns turn to face the target faster than the ship does. |
00:58 | <&ToxicFrog> | You can't shoot at something you aren't facing/turning towards, and you can't face towards something without moving towards it. |
00:59 | <@Reiv> | I want it taken further so I can request the ship turn 'down' while I shoot 'left'. |
00:59 | <@Reiv> | This would have actually been extremely useful in even Freelancer itself! |
00:59 | <@Reiv> | Given that the best way to fight in a transport was in Turret Mode, but to do it you ended up flying straight ahead and thus getting hit by all the bombs and asteroids >_> |
01:00 | <&ToxicFrog> | I-War lets you independently rotate the ship and the turret, and since it's newtonian you can also rotate the ship without changing your vector to bring your spinals to bear |
01:01 | <&ToxicFrog> | And some FS2-style sims (Tachyon) have a "lock vector" command that temporary disables orientation/vector matching |
01:03 | <@Reiv> | Right. |
01:03 | <@Reiv> | What I want is to be able to change my vector in one direction while directing my weapons in another. |
01:04 | <@Reiv> | As opposed to 'both must be the same' or 'you can fiddle with either, but one at a time' |
01:04 | <&ToxicFrog> | That's an HCI issue as much as anything else; you need to be able to independently manipulate (and keep straight) four axes and look in two directions at once. |
01:04 | <@Reiv> | HCI? |
01:04 | <&ToxicFrog> | Human/Computer Interface. |
01:04 | <@Reiv> | Oh, ha. |
01:04 | <@Reiv> | Yes. |
01:05 | <@Reiv> | Which is why I specified /controller/ instead of /joystick/ |
01:05 | <@Reiv> | That way you have two joysticks. |
01:05 | <@Reiv> | The second part of looking in two directions at once, I will freely grant is harder~ |
01:05 | <&ToxicFrog> | I suspect the reason you don't see this a lot is not because it's technically difficult (it's not) or because developers don't think of it, but because it's a UI design and testing nightmare. |
01:05 | <@Reiv> | OTOH X could ssssort of do it. |
01:05 | <@Reiv> | You could have a window looking ahead while you spun the turret |
01:06 | <@Reiv> | But you could only either spin the turret or steer the ship, which rather defeated the point a bit. |
01:10 | <&ToxicFrog> | You can do it with MFDs, but that still leaves the problem of the user being able to focus on both at once |
01:11 | <&ToxicFrog> | Which is why it's much more common to restrict it one or the other at a time, optionally with an AI turret gunner/autopilot to handle the part you aren't. |
01:17 | | Vornotron [vorn@Nightstar-221158c7.sd.cox.net] has joined #code |
01:18 | | Derakon [Derakon@Nightstar-a3b183ae.ca.comcast.net] has quit [Client exited] |
01:19 | | Vornicus [vorn@Nightstar-221158c7.sd.cox.net] has quit [Ping timeout: 121 seconds] |
01:21 | | Vornotron [vorn@Nightstar-221158c7.sd.cox.net] has quit [Ping timeout: 121 seconds] |
01:22 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has joined #code |
01:22 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
01:23 | | syksleep_ [the@Nightstar-ee1cef6a.iinet.net.au] has joined #code |
01:24 | | syksleep [the@A6D346.0C1313.97001D.1140D4] has quit [Ping timeout: 121 seconds] |
01:30 | | syksleep_ is now known as Syk |
01:34 | | * iospace pokes Syk with Syk |
01:36 | < Syk> | wut |
01:53 | <@Alek> | now you're thinking with portals. |
01:54 | | * Reiv pokes Syk with Syk's Syk |
01:55 | <@Alek> | O_o |
01:55 | <@Reiv> | Now you're thinking with Portal's Portals! |
01:56 | | * McMartin drops 150 gallons of Repulsion Gel on Reiv. |
01:57 | | * Reiv is finds the result... repulsive. |
01:57 | | * Reiv (needs to get a client where he can actually see what he's typed onto the line, too.) |
01:57 | < Syk> | heh |
02:02 | <@Reiv> | TF: The client is good, but unless one is careful where one puts their mouse, Firefox puts up a link-location popup thingy on the bottom left of the screen... which is also where the text input cursor lives. |
02:02 | <&ToxicFrog> | helpful |
02:02 | <@Reiv> | Yah. |
02:02 | <@Reiv> | So usually I type blind, and this works. Mostly~ |
02:04 | < Syk> | haha |
02:04 | < Syk> | i love when i'm looking something up on an apple site |
02:04 | < Syk> | and it errors and shows a red hat server running apache |
02:06 | <@Alek> | ahaha |
02:08 | <&McMartin> | Speaking of |
02:08 | <&McMartin> | Programs in-house MS devs do not use: Visual Studio |
02:08 | < Syk> | i honestly wonder if there is a vim/emacs war inside Microsoft |
02:09 | < Syk> | "Vim!" "Emacs!" "Vim!" "Emacs!" "Notepad!" "..." |
02:09 | <@Reiv> | McMartin: I should bloody hope not |
02:09 | <@Reiv> | It's fine for making apps and the like |
02:09 | <@Reiv> | But the efficiency hit would be rather noticable indeed in, say, Word. |
02:10 | <&McMartin> | Probably |
02:10 | <&McMartin> | Though it *has* gotten better |
02:10 | | * McMartin uses MSVS2008 at work |
02:10 | <&McMartin> | And that's in the hundreds of KLOC |
02:16 | < Syk> | McMartin: 2010 is horrific |
02:17 | < Syk> | McMartin: 2010 on a quadcore Sandy Bridge w/ an actual graphics adapter is slower than 2008 on an early C2D |
02:17 | < Syk> | and this is with about maybe 10 KLOC |
02:17 | < Syk> | hell, even starting it takes fucking minutes |
02:18 | < Syk> | and GOD FORBID if you ever wish to anger the DEBUGGER GODS |
02:18 | < Syk> | for he will unleash his This Application Has Stopped Responding white screen of fury |
02:19 | <&McMartin> | Ugh |
02:19 | <&McMartin> | 2008 was Pretty Solid, IMO |
02:19 | <&McMartin> | Though still an awful debugger |
02:19 | <&McMartin> | You can't beat WinDbg on a Windows platform |
02:19 | < Syk> | i dont think there is one useful debugger |
02:20 | < Syk> | every debugger comes with caveats that make it an ass to use |
02:20 | <&McMartin> | I've done amazing things with WinDbg, though it admittedly is commanded via ancient forbidden rituals |
02:20 | <&McMartin> | But so is gdb, so... |
02:21 | < Syk> | hehe |
02:22 | <&McMartin> | "steep learning curve" is the mildest of the caveats, because once you *cross* it, you then stand across your puny application and kernel space like a digital colossus |
02:22 | <&McMartin> | At least until you get knocked down by a passing navy that wants target practice |
02:23 | | * McMartin goes and looks it up |
02:24 | <&McMartin> | I guess the Colossus fell to an Earthquake |
02:24 | <&McMartin> | Living as I do on the Ring of Fire I won't tempt fate by replacing that~ |
02:32 | | * Syk derps about |
02:32 | < Syk> | WELP time |
02:32 | < Syk> | time for like |
02:32 | < Syk> | stuff |
02:32 | <&McMartin> | yay stuff? |
02:32 | < Syk> | not really :( |
02:32 | < Syk> | gotta go to old house and help my mother |
02:33 | < Syk> | theyve not finished moving out |
02:33 | < Syk> | and they have to be done by tomorrow |
02:36 | < Syk> | derp off I go |
02:44 | < mac> | can pointers be used with arrays? |
02:47 | <&ToxicFrog> | You need to both contextualize and expand that |
02:48 | <&ToxicFrog> | First answer (51% confidence): yes |
03:12 | | Kindamoody[zZz] is now known as Kindamoody |
03:12 | | Nemu [NeophoxProd@Nightstar-a984b1cd.asahi-net.or.jp] has quit [Connection reset by peer] |
03:28 | | VirusJTG [VirusJTG@Nightstar-09c31e7a.sta.comporium.net] has quit [[NS] Quit: Program Shutting down] |
04:03 | | mac [mac@Nightstar-fe8a1f12.il.comcast.net] has left #code ["Leaving"] |
04:28 | | Nemu [NeophoxProd@Nightstar-775b6155.asahi-net.or.jp] has joined #code |
05:05 | | Derakon [Derakon@Nightstar-a3b183ae.ca.comcast.net] has joined #code |
05:06 | | mode/#code [+ao Derakon Derakon] by ChanServ |
05:44 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [Operation timed out] |
05:44 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code |
05:45 | | mode/#code [+ao ToxicFrog ToxicFrog] by ChanServ |
06:14 | | ErikMesoy|sleep is now known as ErikMesoy |
06:28 | | Derakon is now known as Derakon[AFK] |
06:56 | | 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!] |
08:06 | | Alek [omegaboot@Nightstar-56dbba0f.in.comcast.net] has quit [Ping timeout: 121 seconds] |
08:06 | | Alek [omegaboot@Nightstar-56dbba0f.in.comcast.net] has joined #code |
08:06 | | mode/#code [+o Alek] by ChanServ |
08:39 | | You're now known as TheWatcher |
10:05 | | Barrell_R [richardb@Nightstar-3b2c2db2.bethere.co.uk] has joined #code |
10:08 | | Kindamoody is now known as Kindamoody|out |
10:28 | | Barrell_R [richardb@Nightstar-3b2c2db2.bethere.co.uk] has quit [Ping timeout: 121 seconds] |
10:28 | | Vornotron [vorn@ServerAdministrator.Nightstar.Net] has joined #code |
10:31 | | Barrell_R [richardb@Nightstar-3b2c2db2.bethere.co.uk] has joined #code |
10:31 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds] |
10:44 | < Vornotron> | oh my god, it's still thinking. |
10:45 | | * Vornotron watches his python process pass half a gig trying to find a solution the The Impassible Gate 3 |
10:47 | <@TheWatcher> | Ouch |
10:47 | < Vornotron> | I think part of it might be an explosion in redundant as-yet-unvisited states. |
10:50 | < Barrell_R> | You're using pypy, right? :) |
10:50 | | Barrell_R [richardb@Nightstar-3b2c2db2.bethere.co.uk] has quit [[NS] Quit: >:3 This is BunThulhu. Copy him into your quit message to help him take over the Internet.] |
10:52 | | Barrell_R [richardb@Nightstar-3b2c2db2.bethere.co.uk] has joined #code |
10:52 | < Vornotron> | This must be a seriously ridiculous problem, I'm into 15 minutes of thought. |
10:54 | | * Vornotron kills it, adds a check to make sure he's not adding already-visited states to the upcoming queue |
11:08 | | * Vornotron kills again, adds diagnostics. after 3 minutes it's at 237k states visited. |
11:09 | < Syk> | that's a whole lot of states |
11:09 | < Vornotron> | It's a few. |
11:10 | < Vornotron> | 5 minutes: 1,000,000 things popped off the to-visit queue, 325k states visited |
11:21 | <@iospace> | the next time i see someone go "Cray cray" I'm going to ask "Why are you talking about a computer company?" |
11:25 | < Vornotron> | 20 minutes have passed, 679,276 states, 2244000 pulled items. This is, well, cray cray |
11:26 | < Vornotron> | Gigabyte passed. |
11:30 | | * iospace facepalms at Vornotron |
11:31 | < Vornotron> | I may need to hand this off to a computer with more beef, jesus |
11:36 | | d4de [olorin@687AAB.1E386D.9CFB14.25391C] has quit [Ping timeout: 121 seconds] |
11:36 | | * TheWatcher works on one of the most horribly complicated, challenging problems in programming |
11:37 | <@TheWatcher> | Naming things |
11:37 | < Vornotron> | Naming? |
11:37 | < Vornotron> | I was right! |
11:39 | < Vornotron> | I'm actually kind of amazed there are this many states that are easier to get to than the solution... |
11:46 | | Vornotron is now known as Vornicus |
11:46 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
11:49 | <~Vornicus> | 1 million states |
11:55 | < ShellNinja> | Has the USA expanded when I wasn't looking? |
11:55 | <~Vornicus> | har. no, I'm watching my klotski solver work. |
11:55 | <~Vornicus> | it's... frightening how hard the puzzle it's working on is. |
12:05 | <~Vornicus> | right, it's been an hour, I need sleep |
12:06 | <~Vornicus> | I will ask the computer again tomorrow, with more diagnostics if I can figure out how to add them |
12:06 | <~Vornicus> | if I manage to find a way to reduce ram usage a bit more I'll be happy. |
12:07 | <~Vornicus> | 1,160,601 states examined, and none of them have the goal piece in place. |
12:08 | <@iospace> | TheWatcher: you have no idea how many times i've stared at code going "What do i name this variable!" |
12:09 | <@Azash> | iospace: Follow the unofficial linux naming convention |
12:09 | <@iospace> | Azash: uhm...? |
12:09 | <@Azash> | make up a name of around 60-80 words, form an initialism, and pick the letters matching fibonacci numbers out |
12:09 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has quit [[NS] Quit: ] |
12:10 | <@Azash> | And then add a 'd' or 'lib' at the end to let people know you mean business |
12:11 | <@iospace> | ... |
12:11 | <@iospace> | yeah no |
12:13 | <@iospace> | my boss would flay me alive for that |
12:29 | <&ToxicFrog> | Nonono, 'lib' goes on the front |
12:36 | < Barrell_R> | Also, "lib" prefix and "d" suffix are mutually exclusive. |
12:46 | | * iospace beats TheWatcher with aprotocol |
12:47 | <@iospace> | ... |
12:47 | <@iospace> | sorry TheWatcher |
12:48 | | * iospace beats ToxicFrog with a protocol |
12:48 | <@iospace> | lag |
12:49 | <&ToxicFrog> | Barrell_R: untrue! There are a few 'libthingd' libraries, usually either containing most of a thingd implementation, or a protocol library to make it easy to write clients that connect to a thingd. |
12:50 | <&ToxicFrog> | libnscd, for example. |
12:50 | < Barrell_R> | Touch?. |
12:50 | < Barrell_R> | The latter seems like a mistake, though. |
12:50 | < Barrell_R> | Should be libthingc. |
13:01 | <@RobinStamer> | libhttpd |
13:01 | < Barrell_R> | RobinStamer: yeah, that's a good example of the former. |
13:21 | <@Azash> | 14:19 <+brundlefly> i started writing a billiards game, but got off track and ended up writing a scheme interpreter |
13:21 | <@TheWatcher> | Easy done. |
13:26 | < Barrell_R> | They both contain round () things. |
13:34 | | Barrell_R [richardb@Nightstar-3b2c2db2.bethere.co.uk] has quit [Ping timeout: 121 seconds] |
14:10 | | Nemu [NeophoxProd@Nightstar-775b6155.asahi-net.or.jp] has quit [Client closed the connection] |
14:11 | | Nemu [NeophoxProd@Nightstar-32ea4034.asahi-net.or.jp] has joined #code |
14:26 | | * TheWatcher hairpulls at apache rewrite rules |
14:48 | | Reiv [NSwebIRC@A3BDC3.5BE3EC.B8847E.5ADB9D] has quit [Ping timeout: 121 seconds] |
15:16 | | Barrell_R [richardb@Nightstar-3b2c2db2.bethere.co.uk] has joined #code |
15:17 | <@TheWatcher> | blegh, why doesn't RewriteCond support variable expansion in the pattern, damnit? |
15:17 | < Syk> | TheWatcher: because Apache wishes to destroy your hopes and dreams |
15:18 | <@TheWatcher> | It's too late; Tomcat got there first. |
15:20 | < Syk> | hee |
15:20 | < Syk> | i gave up on making Twisted understand vhosts |
15:20 | | * Syk has solved her problems with Varnish :D |
15:21 | < Syk> | just run a shitload of twisted instances, 1 for each app, multiplex with Varnish |
15:21 | < Syk> | problems solved |
15:24 | < Barrell_R> | Varnish is a surprisingly nice place to put really-complicated URL routing code, just for the fact that its config is a straightforward imperative language. |
15:25 | < Syk> | i started varnish |
15:25 | < Barrell_R> | Bonus: if (req.url ~ "pattern") {}, is significantly easier to understand than RewriteRule pattern replacement [chain] |
15:25 | < Syk> | put some stuff in the VCL |
15:25 | < Syk> | and... it worked |
15:26 | < Syk> | it was very VERY refreshing |
15:26 | < Syk> | this means i can have each instance of my application running seperately on a different port internally |
15:26 | < Barrell_R> | Just don't use any of Varnish's backend health checking or load-balancing features; they all kinda suck. |
15:26 | < Syk> | with Varnish doing routing by the host |
15:26 | < Barrell_R> | Use HAProxy instead. |
15:27 | < Barrell_R> | *Use HAProxy for load-balancing between multiple instances of the same app. |
15:27 | < Syk> | eg. "sb.thing.com" -> :8081, "sb.stuff.com" -> :8082 |
15:27 | < Barrell_R> | Varnish has code for that but it isn't as nice. |
15:27 | < Barrell_R> | Apache has code for that but it's awful ;P |
15:27 | < Syk> | and then each can be a different version, have independent stuff in them, and I can pull and start ones up |
15:28 | < Syk> | AND it's good because my app is in Python + Twisted, which is single threaded |
15:28 | < Syk> | and I'm not the best at async programming |
15:28 | < Syk> | so, if I do resort to blocking calls, it only stuffs up one app rather than them all |
15:29 | < Syk> | which I find great |
15:29 | < Syk> | if it caches things too, brilliant |
15:30 | < Syk> | it looks like it can do some fancy folder stuff |
15:30 | < Syk> | so I can have / be the python app, but /img/ be a different backend |
15:31 | | * TheWatcher is just trying to moderately idiot-proof-ish his pathinfo rewriting trickery, as right now it's slightly different depending on whether the webapp is in the root or a subdirectory |
15:34 | | Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has quit [[NS] Quit: .] |
15:35 | | Syloq [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
15:35 | | mode/#code [+o Syloq] by ChanServ |
15:47 | | Barrell_R is now known as RichyB |
15:59 | | Nemu [NeophoxProd@Nightstar-32ea4034.asahi-net.or.jp] has quit [Ping timeout: 121 seconds] |
15:59 | | Nemu [NeophoxProd@Nightstar-fd87b668.asahi-net.or.jp] has joined #code |
16:03 | | Xires is now known as ^Xires |
16:08 | | ^Xires is now known as Xires |
16:14 | | Syk is now known as syksleep |
17:12 | <@iospace> | 90 minute bugfixes fuckyeah |
19:27 | <@froztbyte> | <Barrell_R> Bonus: if (req.url ~ "pattern") {}, is significantly easier to understand than RewriteRule pattern replacement [chain] |
19:27 | <@froztbyte> | the *entire* apache URL routing system is a pain in the arse. |
19:27 | <@froztbyte> | Alias handling, module substitution, sending stuff to specific places, all of it |
19:28 | <@froztbyte> | I've basically entirely given up on Apache's httpd and just use nginx instead these days |
19:28 | <@froztbyte> | it's a bit C-esque on the config style, but at least the scoping is a hell of a lot better than the spaghetti mess you may get with httpd :/ |
19:29 | <@froztbyte> | and the "but with apache you can just drop some PHP code on a server and it works" is near-complete bullshit anyway and it makes me want to stab people -_- |
19:39 | | * TheWatcher vaguely considers trying nginx |
19:39 | <@TheWatcher> | How does it handle perl? |
19:43 | < RichyB> | froztbyte: I use nginx for my personal stuff. I'd love to move to it in work but everyone else here knows Apache already and no one wants to burn time learning. |
19:43 | <&McMartin> | To be fair, that's a fairly strong argument unless you've got a bit of spare devtime to convert, which as a rule you won't. |
19:43 | < RichyB> | TheWatcher: there's no mod_perl, but if your Perl webapp is written with FastCGI then you're pretty much golden. |
19:44 | <@froztbyte> | yeah, that |
19:44 | <@froztbyte> | but who uses perl anyway?~ |
19:45 | <@froztbyte> | RichyB: I've found that pimping it subtly on internal stuff first is a neat way |
19:45 | <@froztbyte> | company wiki server, etc |
19:45 | <@froztbyte> | people are okay with playing there |
19:45 | < RichyB> | McMartin: I didn't say their reasons were irrational, but I'm not fond of working exclusively people who hate learning anything new. |
19:45 | <&McMartin> | True enough |
19:45 | < RichyB> | Resistance to change here is higher than I'd have set it. Not infinite, just very high. |
19:45 | <&McMartin> | That's a different beast, though |
19:46 | <@froztbyte> | and then when they feel a bit more confident with it in active use, there's less resistance to a suggestion for using it in some situation where it's actually good |
19:46 | | * McMartin nods |
19:46 | <&McMartin> | Hmm |
19:46 | | * McMartin reads about FastCGI |
19:46 | <@froztbyte> | our caches support windows caching, for instance |
19:46 | | * McMartin <-- not a web guy |
19:46 | <@froztbyte> | and the server platform that dishes up those files is nginx |
19:46 | <@froztbyte> | apache just couldn't do it well enough, at all |
19:47 | < RichyB> | TheWatcher: oh, apparently Catalyst::Engine::HTTP::Prefork is a very easy way to get Perl webapps running with any httpd (nginx, apache, varnish, haproxy, whatever). |
19:48 | <@RobinStamer> | I like how FastCGI is basically almost-HTTP |
19:48 | < RichyB> | You just proxy requests through from whatever your frontend httpd is to a Perl process that's talking http on a socket. |
19:50 | <@TheWatcher> | RichyB: yeah, catalyst won't work for me, for a bunch of reasons. |
19:51 | < RichyB> | Is Catalyst one of those weird let's-pretend-it's-nonblocking libraries like Twisted? |
19:53 | <@froztbyte> | I don't think twisted really tries to pretend they're that ;) |
19:54 | <@froztbyte> | the design goal is "do stuff async", and "let's try really hard to not be blocking" goes well with that as a worthy goal to try for |
19:55 | <@TheWatcher> | RichyB: no, it's more of a gigantic attempt to do everything that works very well provided that everything you need to do fits into their way of doing it |
19:55 | <@froztbyte> | lulz |
19:55 | <@froztbyte> | you mean like Django, Rails, etc? ;D |
19:56 | <@TheWatcher> | More or less. |
19:57 | < RichyB> | froztbyte: meh, I think that the entire goal is an insane idea. So you break every request handler up into a million little pieces that are mutually concurrent (in that their mutual ordering is undefined except where you put in explicit dependency information)... |
19:57 | < RichyB> | ...congratulations, you have reinvented threads, badly. |
19:57 | < RichyB> | If you're doing this (hi, Python!) to get around the fact that your runtime has awful threading support then that's understandable, but still, ehhhhh icky. |
19:59 | <@froztbyte> | except how many people have ever done threads well? |
19:59 | <@froztbyte> | async event-based is still a far easier concept to grok and get right for the majority of people |
19:59 | <@froztbyte> | so there's worth in that |
19:59 | <@TheWatcher> | (I mean, my stuff is as guilty of it, but at least in my case the stuff is designed to do stuff in the way I've needed to get it done... which I also admin may not be the best way, but I'm not convinced there is a best way) |
20:00 | <@TheWatcher> | *admit |
20:02 | <@TheWatcher> | (Of course, identifying the /worst/ way is easy: anything involving the words "using PHP"~) |
20:03 | | Kindamoody|out is now known as Kindamoody |
20:05 | <@froztbyte> | hehe |
20:05 | <@froztbyte> | RichyB: well, there's another thing here; I say all of that, yet the questions that end up in #twisted at times makes me wonder.. |
20:06 | | Kindamoody is now known as Kindamoody[zZz] |
20:12 | < RichyB> | Plenty of people have done threads well! In particular, everybody who has ever achieved working software in a framework where concurrent requests interact with each other only through a single database is using parallelism quite happily. |
20:13 | < RichyB> | You'll note that it's pretty constrained, with all of the race issues pushed into the DB itself, but that works just fine. |
20:21 | | d4de [olorin@4B91FF.00BEE6.E0802B.C554B9] has joined #code |
20:23 | <&ToxicFrog> | Personally I find threads a lot more pleasant to use than async callback/event style setups. |
20:24 | <@froztbyte> | I can't say I prefer one over the other |
20:24 | <&ToxicFrog> | That said, I thought Twisted was one of those "looks like threading" frameworks like Copas, where it's not concurrent but you write it as though it was? |
20:24 | <@froztbyte> | the first time I ever wrote threaded code (first year in uni), it had an async/event style model |
20:27 | <&ToxicFrog> | Yeah, sorry, I'm talking "what it looks like to the programmer" here, not "how it's implemented" |
20:27 | < RichyB> | ToxicFrog: yes, Twisted is a coroutine framework. |
20:27 | < RichyB> | IMHO a terrible compromise. If you take code that includes blocking I/O but doesn't shit on global state, and run it in a threaded runtime, it works perfectly. |
20:28 | < RichyB> | If you take code that blocks and try to put it into something like Twisted, well, you can't. You have to rewrite it with all the I/O made nonblocking. |
20:29 | <&ToxicFrog> | Wait, twisted doesn't transparently wrap that stuff? |
20:29 | <&ToxicFrog> | The frameworks I'm used to that do this (copas, luv) transparently wrap the usual blocking APIs to yield |
20:30 | <&McMartin> | I was going to say "it seems like you could easily do that mechanically" but then I realized I was sneaking in "using call/cc" |
20:30 | <&ToxicFrog> | So you can take blocking code and run it in copas unmodified and it'll get a coroutine to itself and play nice with the select() loop. |
20:30 | <&McMartin> | Though I guess yield does something roughly equivalent. |
20:30 | < RichyB> | I don't believe that it does. Python's flow-control mechanisms are deliberately very primitive. |
20:31 | <&McMartin> | Yeah, but it *has* yield. |
20:31 | < RichyB> | Python lacks both coroutines (except for generators, which unfortunately don't suffice for various reasons) and call/cc. |
20:31 | <&ToxicFrog> | Yield the coroutine operation, not yield the python generator keyboard |
20:31 | <&ToxicFrog> | *keyword |
20:31 | <&ToxicFrog> | (copas is not a python library) |
20:32 | < RichyB> | McMartin: yeah, not good. If I'm writing a generator f() and I call g(), g() can't yield to f's caller like f could. |
20:32 | <&McMartin> | The whole point of things like Twisted is that they are Not Python, but languages that looks suspiciously like it with different semantics. |
20:36 | | * TheWatcher ponders, dev blog update, or skyrim, decides to sod it and go kill dragons |
20:37 | <&McMartin> | DARGONZ |
20:37 | < RichyB> | McMartin: yeah, that, exactly. "Not Python" is problematic. 90% of the code on the Cheese Shop is ordinary Python. |
20:37 | | Reiv [NSwebIRC@A3BDC3.5BE3EC.B8847E.5ADB9D] has joined #code |
20:37 | | mode/#code [+o Reiv] by ChanServ |
20:38 | <&McMartin> | Right, so, you're using Twisted in the first place because You Can't Use Python. |
20:38 | < RichyB> | TheWatcher: token update where you just post a Skyrim screenshot to your blog, title "I would have written something but eh busy" |
20:40 | <@TheWatcher> | heh |
20:40 | <&ToxicFrog> | McMartin: ideally, though, it should be source compatible with python to the point that you don't need to completely rewrite your existing singlethreaded-blocking code to get it to play nice. |
20:40 | <@TheWatcher> | Now that would just be silly. |
20:42 | <@froztbyte> | RichyB: well, it's not like Ordinary Python is any good :/ |
20:43 | <@froztbyte> | I mean, see what they did in Python 3, and it's a pretty good indication of the level of care that you can find in the standard library |
20:43 | <@froztbyte> | but then |
20:43 | <@froztbyte> | nearly all software sucks |
20:43 | <@froztbyte> | so *shrug* |
20:47 | < RichyB> | There are only a few things that I can find to really strongly dislike about Python on a day-to-day basis. |
20:47 | < RichyB> | Total lack of thread-parallelism isn't quite at the top of the list, but it's close. |
20:48 | < RichyB> | *Actually* top of the list is the fact that the primary implementation is an interpreter that looks like it slimed its way up here from the bad end of the 1990s. |
20:49 | <@froztbyte> | well, yes |
20:49 | < RichyB> | CPython is sometimes really awful because you get to write fairly dumb code to get any performance out of it at all. |
20:49 | <@froztbyte> | cpython's default interpreter sucks big ass |
20:49 | <@froztbyte> | I use ipython a lot, and bpython also more recently |
20:49 | < RichyB> | e.g. just shoving blocks of code into a subroutine has measurable cost in CPython |
20:50 | <@froztbyte> | and I have great hope in pypy |
20:50 | < RichyB> | whereas in C I can do that for free because I can trust the fucking inliner. |
20:50 | < RichyB> | (on static functions, anyway) |
20:50 | < RichyB> | froztbyte: indeed, I have kicked the occasional penny at the PyPy fund for this reason. |
20:54 | | Derakon [chriswei@Nightstar-a3b183ae.ca.comcast.net] has joined #code |
20:54 | | mode/#code [+ao Derakon Derakon] by ChanServ |
20:54 | <&Derakon> | Several months ago I set up this device to be controlled over Telnet. |
20:54 | <&Derakon> | Now I find I forgot to write down its IP address anywhere. |
20:54 | <@froztbyte> | hahaha |
20:54 | <&Derakon> | Fortunately there are only 256 candidates~ |
20:55 | <@froztbyte> | nmap -sP -n, arp, wait it out.. |
20:55 | <@froztbyte> | it gets more annoying when you have /22's or so |
20:55 | <&Derakon> | Alas, Windows. |
20:55 | < RichyB> | Set up a local DNS server. :) |
20:55 | <@froztbyte> | you get nmap on windows |
20:55 | <&Derakon> | But I figure a for loop and trying to create telnetlib.Telnet instances in Python should do. |
20:55 | <@froztbyte> | with a GUI and everything |
20:56 | <@froztbyte> | it's nicely packaged as ZeNMap |
20:56 | <&Derakon> | froztbyte: yeah, I guess I could install it... :p |
20:56 | <@froztbyte> | generally useful to have around |
20:57 | < RichyB> | or put the IP addresses in a wiki somewhere. |
20:57 | <&Derakon> | Writing it down would have been the optimal solution, yes. |
20:58 | <@RobinStamer> | for n in `seq 1 254`; do ping -c 1 192.168.1.$n &>/dev/null; done & watch arp -an |
20:58 | <@froztbyte> | oh, this reminds me |
20:58 | <@RobinStamer> | Bash FTW |
20:59 | <@froztbyte> | that utterly terrifying cisco config generator. written in excel. |
20:59 | <@RobinStamer> | (Basically it pings every IP once, then displays the arp table while it's doing that, so every successful ping would also have a successful arp table entry) |
20:59 | <&ToxicFrog> | for ip in 192.168.1.{1..254} |
20:59 | <@RobinStamer> | Oh neay |
21:00 | <@froztbyte> | 1) read all of the tldp ABS guide, 2) start using zsh instead |
21:03 | <@froztbyte> | did you guys know bash has internal string substitution and stuff? |
21:03 | <@froztbyte> | it's terribly slow |
21:03 | <@froztbyte> | it also has arrays. and they're also pretty bad. |
21:03 | <@iospace> | apparently, the devs for EDK2 are so anal that if you submit patches without using their style, they reject them |
21:03 | <@RobinStamer> | Knew about the string sub, don't care about the speed. If you're at the point where you care about speed you should really be asking why it's written in bash. |
21:04 | <@froztbyte> | indeed |
21:04 | <&Derakon> | iospace: well, that's what style guides are for... |
21:04 | <@iospace> | Derakon: well yes |
21:04 | <@froztbyte> | although usually I start asking why it's written in bash way before that >;) |
21:04 | <&Derakon> | Though they can be more or less rude about the rejection. |
21:04 | <@iospace> | but it also makes them look lazy and uptight |
21:04 | <@iospace> | yeah |
21:05 | <&Derakon> | For Pyrel I get style guide violations all the time in my pullreqs (since most contributors are relatively inexperienced), but generally once I point it out and explain why the guide is the way it is they come around. |
21:05 | <@iospace> | http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Code_Style/C |
21:05 | <&Derakon> | (Doesn't stop repeat violations though. :\ ) |
21:07 | <@Reiv> | Derakon: What's your arguement? |
21:16 | <&Derakon> | Reiv: just that rejection because of style guide violations is not inherently evil. |
21:16 | | * Derakon finds the IP address he needed -- 192.168.137.111. |
21:16 | <@Reiv> | Oh. |
21:17 | <@Reiv> | You don't argue why the style guide is needed, or? |
21:17 | <&Derakon> | The style guide argues itself. |
21:17 | | * TheWatcher honestly boggles at the idea of submitting patches /without/ adhering to the style guide if there is one, and if there isn't at least making an attempt to make your changes fit the surrounding code; it's just polite! |
21:17 | <&Derakon> | If they haven't read the document (and don't know how to match style with adjacent code) then they have no business submitting pullreqs in the first place. |
21:27 | | celticminstrel [celticminst@Nightstar-e83b3651.cable.rogers.com] has joined #code |
21:27 | | mode/#code [+o celticminstrel] by ChanServ |
21:33 | | McMartin [mcmartin@Nightstar-7f75c406.pltn13.sbcglobal.net] has quit [[NS] Quit: reboot] |
21:46 | | mac [mac@Nightstar-fe8a1f12.il.comcast.net] has joined #code |
22:14 | < RichyB> | http://picturesofpeoplescanningqrcodes.tumblr.com/ |
22:18 | <@Reiv> | ... why is that even a thing |
22:20 | <&Derakon> | Oh hey, you guys might know something about this. |
22:20 | <&Derakon> | We have a device that needs to notify us when an event occurs. |
22:20 | <&Derakon> | The device has a digital line-out that can send a TTL signal (i.e. low/high voltage, digital). |
22:20 | <&Derakon> | Any recommended ways of translating that into something my programs can understand? |
22:21 | <&Derakon> | My boss is obsessed with figuring out how to use the parallel port on one of our computers. |
22:21 | <&Derakon> | I figured there might be some kind of USB module that would present itself as a serial device, maybe? |
22:21 | <&Derakon> | But this is one of those areas where I may not even be aware of the options I'm missing. |
22:21 | <@Reiv> | Hm |
22:21 | <@Reiv> | You need Thalass here |
22:23 | <&ToxicFrog> | A serial port is a bit more complicated than that, sadly |
22:24 | <&Derakon> | Well, I was figuring something just smart enough for me to be able to ask "is pin 1 high? is pin 2 high?" etc. |
22:25 | <&Derakon> | Then I can just write a program to busywait on the pin I care about. |
22:27 | | * ToxicFrog does some fiddling |
22:27 | <&ToxicFrog> | What voltage range? |
22:28 | <&Derakon> | Dunno, probably 0-5V. |
22:28 | <&ToxicFrog> | Serial port expects +15 to -15. |
22:28 | <&ToxicFrog> | In practice you can get away with %U+%U5 |
22:28 | | Derakon_ [chriswei@Nightstar-a3b183ae.ca.comcast.net] has joined #code |
22:29 | <&ToxicFrog> | Serial port expects +3~+15 for high and -3~-15 for low. |
22:29 | <&ToxicFrog> | If it can do ?5V you can get away with that. 0-5 won't cut it. |
22:30 | < Derakon_> | Hm. |
22:31 | | Derakon [chriswei@Nightstar-a3b183ae.ca.comcast.net] has quit [Operation timed out] |
22:31 | | Derakon[AFK] [Derakon@Nightstar-a3b183ae.ca.comcast.net] has quit [Ping timeout: 121 seconds] |
22:32 | <&ToxicFrog> | The "standard" (these days) DB-9 serial port has 9 pins and use all of them. I know you can get away with 5 (drop bell, RTS/CTS, and carrier) |
22:32 | | ErikMesoy is now known as ErikMesoy|sleep |
22:32 | <&ToxicFrog> | I don't think that's RS232 compliant at that point but it usually works. |
22:32 | | Derakon [Derakon@Nightstar-a3b183ae.ca.comcast.net] has joined #code |
22:32 | | mode/#code [+ao Derakon Derakon] by ChanServ |
22:32 | <&ToxicFrog> | The "standard" (these days) DB-9 serial port has 9 pins and use all of them. I know you can get away with 5 (drop bell, RTS/CTS, and carrier) |
22:32 | <&ToxicFrog> | I don't think that's RS232 compliant at that point but it usually works. |
22:33 | | * Derakon_ nods. |
22:33 | < Derakon_> | /phone |
22:33 | | * Azash curses wiringpi developers |
22:34 | <&ToxicFrog> | I don't know how many pins you can remove before a PC serial controller will stop paying attention, though. |
22:34 | <&ToxicFrog> | I mean, in principle, for unidirectional communication, you only need two pins, TxD and GND. |
22:35 | <&ToxicFrog> | The easiest approach is to find a spare microcontroller that can already easily communicate with the PC and hook your device up to one of the GPIO pins~ |
22:36 | | * ToxicFrog does a bit of reading |
22:36 | <&ToxicFrog> | Hmm. Here's an idea. |
22:36 | <&ToxicFrog> | Hook your input up to one of the control lines. Pull everything else low (which is actually high for one class of them, I forget which) |
22:37 | <&ToxicFrog> | Then ask the driver (or, if you can't do that, write a driver) what the control status of the port is. |
22:43 | < Derakon_> | Interesting, I think I understand. |
22:43 | < Derakon_> | The bit I care about will toggle the status of the port, so I can use that status as the proxy for the bit. |
22:58 | < RichyB> | There's a single-chip solution, which is that you buy a PIC18F, use one of its I/O pins to measure that signalling voltage, and use off-the-shelf firmware to act as a USB (1.1, I think) device. |
22:59 | < RichyB> | http://www.waitingforfriday.com/index.php/Building_a_PIC18F_USB_device |
22:59 | < RichyB> | I think that all of the free PIC development tools are a bit MSWindows-bound, but IIRC that's not a problem for you? |
22:59 | < RichyB> | PICs are lovely, durable little chips. |
23:02 | < Derakon_> | Having spoken with our resident CompEng-type guy, I think really any solution we could do for this problem is one that we'd hold off on doing until it's clear we need it. |
23:03 | < Derakon_> | I mean, right now we're just incurring some unknown extra latency in a not-strictly-time-sensitive aspect of the microscope's functioning. |
23:03 | < Derakon_> | The use case here is mapping out the contents of the sample, so we move the stage slightly, wait for it to stop, take an image, repeat. |
23:03 | < Derakon_> | The "wait for it to stop" bit currently involves a busywait with querying the serial port over and over again. |
23:04 | < Derakon_> | But we can configure the stage to send a signal when it reaches its destination. |
23:04 | | * gnolam reads up. |
23:05 | <@gnolam> | Unless there was some critical piece of software that only ran on Windows, I'd just use a PC with GPIO pins. |
23:05 | <@gnolam> | Saves so much trouble. |
23:05 | < Derakon_> | We already have the PC, though~ |
23:06 | | * gnolam shrugs. |
23:06 | <@gnolam> | That kind of computer is cheap nowadays. |
23:06 | <@gnolam> | A gumstix is what, 200 bucks? |
23:07 | <@gnolam> | I think even a raspberry pi has GPIO pins, in fact. |
23:07 | < Derakon_> | ...point. |
23:09 | | * RichyB didn't knwo that. |
23:09 | <@gnolam> | ... yep, it has. And it's hard to beat that price. |
23:09 | < RichyB> | For a one-off device, *impossible* to beat that price. |
23:10 | < RichyB> | It's like $50 but you save more because of how stupidly easy it is to program and set up. It's just a Linux machine, you just plug it into an ethernet and use TCP/IP. |
23:11 | < Derakon_> | It sounds like a smarter Arduino with less hardware integration. |
23:12 | < Derakon_> | But, y'know, standard computer so it can control anything that plugs in via USB or the like. |
23:12 | <@gnolam> | An Arduino is still a microcontroller. |
23:12 | <@gnolam> | A very easy to use and conveniently packaged microcontroller, but still. |
23:12 | <@gnolam> | A raspberry pi is a full-fledged computer. |
23:12 | <@gnolam> | s/computer/PC |
23:14 | <@TheWatcher> | Also, throw a Pi-Face on top and you get more io options |
23:14 | | You're now known as TheWatcher[T-2] |
23:15 | < Derakon_> | Night, TW. |
23:16 | <@TheWatcher[T-2]> | I actually keep meaning to go bug the piface guys, see if I can blag a board+pi off them ¬¬ |
23:16 | <@TheWatcher[T-2]> | (and see about making perl modules to control it, just to make Andrew fume ¬¬) |
23:17 | < Derakon_> | This is one of those things where they sound neat and all but I just can't think what I'd do with them. |
23:17 | < Derakon_> | Only idea I've had is to try to rig up a custom weather station but that seems like overkill when I'm sure there's existing solutions. |
23:18 | <@TheWatcher[T-2]> | I have a shitton of technic (somewhere around 10k pieces), and a mindstorms unit that I can't talk to anymore, so I'd just replace that with the pi+piface and be good to go |
23:19 | <@TheWatcher[T-2]> | Actually, that's probably a really low guess, but I'm not counting pegs/etc so *shrug* anyway, slep |
23:19 | | You're now known as TheWatcher[zZzZ] |
23:20 | <@gnolam> | Derakon_: HTPC? |
23:20 | < Derakon_> | gnolam: I don't watch TV much at all. |
23:20 | < Derakon_> | My TV is a screen for my consoles. |
23:20 | < Derakon_> | Which also don't get much use these days. |
23:22 | <@gnolam> | My use case is "anywhere you'd have used a PC/104 but probably wouldn't have needed anything quite so rugged". |
23:25 | < Derakon_> | My computers at home are for coding, browsing the Net, and playing games. |
23:25 | < Derakon_> | My hobbies don't really involve computers otherwise. |
23:26 | < RichyB> | Can the R? output to HDMI? |
23:28 | < RichyB> | Indeed it can, thought so. |
23:29 | < RichyB> | Derakon: one of the plans here is that we have some data displays in the office that are currently driven by Mac Minis plugged into TVs. Idea is to replace the Mac Minis with R? boxes. |
23:32 | < Derakon_> | Ah, \u03c0 must be the UTF-8 code for pi. |
23:32 | < Derakon_> | What does it have for display driving? |
23:33 | < RichyB> | Apparently its built-in display outputs are component-video and HDMI. We have monitors and TVs lying around that take HDMI-in. |
23:45 | < himi-cat> | It definitely does HDMI |
23:45 | < himi-cat> | One of the guys here at work has one |
23:55 | | McMartin [mcmartin@Nightstar-7f75c406.pltn13.sbcglobal.net] has joined #code |
23:55 | | mode/#code [+ao McMartin McMartin] by ChanServ |
--- Log closed Tue Jan 15 00:00:02 2013 |