--- Log opened Sat Apr 11 00:00:14 2015 |
00:36 | | Derakon [chriswei@Nightstar-5fqf0m.ca.comcast.net] has quit [NickServ (RECOVER command used by Derakon[AFK])] |
00:36 | | Derakon[AFK] is now known as Derakon |
00:36 | <&Derakon> | Got to end the day today with trying to convince my boss that git is an improvement over svn. |
00:37 | <&Derakon> | He really liked the simplicity of "svn commit" and "svn update" and didn't see how git could possibly be better with having to rebase and deal with branches and pull requests and all this irrelevant crap. |
00:50 | <&McMartin> | I linked http://bitquabit.com/post/unorthodocs-abandon-your-dvcs-and-return-to-sanity/ before right~ |
00:50 | <&McMartin> | (SVN has a single advantage at this point, which is that as a centralized system it handles binary blobs in a way that isn't excruciating) |
00:51 | <&Derakon> | SVN is easier to use so long as you don't have to work with other people often and you don't care about branches~ |
00:51 | <&Derakon> | This is basically my boss. |
00:51 | <&Derakon> | He shut up a bit when I pointed out a few specific other projects that would have collaborated with us if we'd been on GitHub before. |
00:52 | <&McMartin> | "The actual reason is because GitHub let coders cleanly publish code portfolios, and GitHub happened to use Git as the underlying technology to enable that, but thatās a blog post for another time, so letās instead pretend that this was purely due to technical reasons" |
00:53 | | * McMartin has been using Git recently so that he can provide a series of revisions in a convenient form. |
00:53 | <&McMartin> | "Here's a bare git repo, check its logs, clone and check out as you need it" |
00:53 | <&McMartin> | If you literally aren't collaborating with anyone ever, Git is also nicer than SVN because you don't need a server machine or a loopback pretending to be one. |
00:54 | <@Namegduf> | That's why I like git so much, myself. |
00:54 | <@Namegduf> | "git init", bang. |
00:54 | <&McMartin> | Though you probably still should have somewhere else you put to |
00:54 | <&McMartin> | Berzerk wildcards can find their way into .git/, after all~ |
00:54 | <&McMartin> | *push |
00:55 | <@Namegduf> | I just lean on my system-wide backup stuff. |
00:55 | <&Derakon> | Still remember the day my college roommate removed all of his Emacs backup files via "rm -rf * ~" |
00:58 | <@Namegduf> | I also like it because subversion was always kind of pig slow. |
00:58 | <&McMartin> | Most people who hate subversion abandoned it over 10 years ago and pretend it hasn't had a single update since |
00:58 | <@Namegduf> | I get what they're saying about blobs, but I disagree with the claim that Subversion works tolerably. |
00:58 | <@Namegduf> | Maybe a year for me? |
00:58 | <&McMartin> | Subversion actually works better with blobs than it does with many thousands of tiny files |
00:59 | <@Namegduf> | That's sensible, but they're saying to use it for the many thousands of tiny files because it's "acceptable" for that, rather than use a non-git-like thing for blobs and git for the rest. |
00:59 | <@Namegduf> | And I don't agree that it's acceptable. XD |
01:00 | <&McMartin> | Well, git isn't great at that level either |
01:00 | <&McMartin> | This thing I've been using git to version-control it's taking upwards of three minutes to execute checkout, stash, or stash apply. |
01:00 | <&McMartin> | Granted, checkout doesn't require hitting the network, which is nice |
01:01 | <&McMartin> | But stash should really not be taking that long |
01:01 | <@Namegduf> | This is kinda going in circles. For the usage I've made, Subversion has been absurdly slow and git very fast, which may be in part because subversion is having to keep hitting the network and may be because the implementation is poor, but is probably not part of the considerations ehre. |
01:01 | <&Derakon> | McM: good gravy. |
01:01 | <&Derakon> | Use an SSD, maybe? |
01:01 | <&McMartin> | This is *on* an SSD.] |
01:01 | <&Derakon> | Wow. |
01:01 | <&McMartin> | It's a late-model MBP |
01:02 | <&McMartin> | (What I think I may be saying is, actually, nothing acceptably handles many thousands of files) |
01:02 | | himi [fow035@Nightstar-v37cpe.internode.on.net] has quit [Ping timeout: 121 seconds] |
01:02 | <&Derakon> | Also re: that blog post, the killer app of DVCS, for me, is that I have a local repo I can commit to without upfucking anyone else. |
01:03 | <&McMartin> | SVN branching *is* good enough to handle that, but it's a different workflow. |
01:03 | <&Derakon> | So I can commit tiny little changes, I can commit bugs, I can decide that the last 20 commits were a bad idea, etc. and nobody has to see that. |
01:03 | <&McMartin> | I'm going to have to phrase this next part carefully |
01:03 | <&McMartin> | There does not seem to be a consensus as to whether or not editing history pre-commit is a feature or not. |
01:03 | <&Derakon> | Heh. |
01:04 | <@Namegduf> | I also, uh, I think their stuff about how pull requests are secretly harder is ridiculous. |
01:06 | <@Namegduf> | Their steps in the second series are "press one button" or "enter one command" level actions whereas the first list includes such things as "get a copy of the source code". |
01:06 | <~Vornicus> | I think it's a feature to be able to edit commit history pre-push |
01:06 | <@Namegduf> | Which is more or less equivalent to 1 to 3 of the second list. |
01:06 | <&McMartin> | That's also "press one button" or "enter one command" |
01:06 | <&McMartin> | But yes, managing pull requests via Github is pretty easy |
01:06 | <&McMartin> | Doing them by hand sucks, ime |
01:07 | <~Vornicus> | I wish I were much more fluent in git. |
01:07 | <@Namegduf> | They're talking about GitHub in particular, though. |
01:07 | <@Namegduf> | Which is what makes it kinda ridiculous. |
01:07 | <&McMartin> | Well |
01:07 | <&McMartin> | Actually |
01:07 | <&McMartin> | The Github equivalent of the first set is |
01:07 | <&McMartin> | 1. Clone the real repo on Github |
01:08 | <&McMartin> | 2. Make the changes and patch |
01:08 | <&McMartin> | 3. Pipe git diff somewhere |
01:08 | <&McMartin> | 4. Post on issue tracker |
01:08 | <&McMartin> | 5. Watch it get ignored |
01:08 | <&McMartin> | And people actually do do that and when they do it's often been easier for me to integrate it with my own projects because I have never once received a pull request that didn't require subsequent tweaks. |
01:09 | <@celticminstrel> | I seem to have missed what that's the equivalent of... |
01:09 | <@Namegduf> | I use PRs for internal code review purposes at work. |
01:09 | <&McMartin> | "Prior to GitHub, to send a patch to a project, you needed to..." |
01:09 | <@Namegduf> | Using raw diffs in email would be eurgh. |
01:09 | <&Derakon> | Namegduf: yeah, I'll PR my own commits. |
01:09 | <&Derakon> | And then approve the PR. |
01:10 | <&McMartin> | There are a fairly wide number of code review mechanism |
01:10 | <&Derakon> | The only problem with that approach being that it creates a merge commit that isn't otherwise needed (since I could just rebase my commits and push directly) |
01:10 | <@celticminstrel> | Oh, it was from the link, okay. |
01:10 | <&McMartin> | Most of them can speak the various VCS systems directly, and they also let you upload patch results |
01:10 | <@celticminstrel> | I hadn't gotten that far yet. |
01:10 | <@Namegduf> | Yes, but this one requires exactly zero additional steps. |
01:10 | <@Namegduf> | Because it's already *in* the GitHub workflow. |
01:11 | | Turaiel[Offline] is now known as Turaiel |
01:11 | <@Namegduf> | And merging is clicking a button, not copying and pasting from an email into a file and then piping the file into patch. |
01:11 | <&McMartin> | Don't C&P patchfiles, it ends poorly |
01:11 | <@Namegduf> | Even worse. |
01:11 | <&McMartin> | Vornicus: "Itās so transparent that developers routinely tell me that the easiest way to learn Git is to start with its file formats and work up to the commands." <-- this is in fact how I learned it |
01:12 | <@Namegduf> | I learned it just by starting with "git init" and "git add" and "git commit" and learning everything else on demand. |
01:12 | <@Namegduf> | Wasn't too tricky. |
01:12 | <&McMartin> | Your use case, as you noted, was collaborating with zero people. |
01:12 | <@Namegduf> | That was *a* use case. |
01:13 | <&McMartin> | Getting branches to work properly and actually show up in other people's systems when you want them to was, IME, pretty nontrivial. |
01:13 | <&McMartin> | If you got it right the first time, hooray, but maybe don't write the tutorials |
01:13 | <&McMartin> | (These have at least gotten better) |
01:13 | <@Namegduf> | I picked up git branch and git push and git pull on demand, although that would not have been long after the first time I learned it on a local-only repo. |
01:14 | <&McMartin> | (When I first tried to use Git it took me three days to figure out how to do 'I have a master code repository that is the hub, everyone else pushes to it and pulls from it") |
01:14 | <&McMartin> | (Becuase the examples were all based on Linux Kernel development, where this is no master copy and everyone trusts only commits from disjoint sets of contributors all of whom are maintaining their own copies of the sources) |
01:14 | <@Namegduf> | Huh. |
01:14 | <@Namegduf> | Yeah, I didn't use any examples like that. |
01:15 | <&McMartin> | Its idea of git pull was that you were yoinking changes from someone else's repo and that someone else had no idea who you even were. |
01:15 | <&McMartin> | Basically the anti-PR |
01:15 | <@Namegduf> | I've done that from time to time. |
01:15 | <@Namegduf> | Occasionally I've needed stuff that was in other people's forks of stuff. |
01:16 | <@Namegduf> | It's a bit fiddly and a "look up how to do" thing. |
01:16 | <@Namegduf> | Just because I don't remember things I use infrequently. |
01:16 | <&Derakon> | Isn't that cherry-pick? |
01:16 | <@Namegduf> | Cherry-pick is if I want a single commit. |
01:16 | <@Namegduf> | Which is the other thing I've wanted, yeah. |
01:16 | <&Derakon> | It can't do ranges of commits? |
01:16 | <&Derakon> | I never tried. |
01:16 | <@Namegduf> | Me neither. |
01:17 | <&McMartin> | Is "range" even a sensible metric? Things don't have unique parents/children |
01:17 | <@Namegduf> | But, yeah, this author seems to be very confused if they think the only reason people might prefer a slick, fast GUI-based PR system with a merge button and standard layout email notifications in a standard format to anyone listening is stockholm syndrome. |
01:17 | <&Derakon> | It can be sensible if the history is linear in that area. |
01:18 | <@Namegduf> | This is "why is anyone using GUIs" level stuff. |
01:18 | <&McMartin> | It's a rant |
01:18 | <&McMartin> | He's an old smalltalk hand |
01:18 | <&Derakon> | And by this point that's pretty old~ |
01:19 | <&McMartin> | That's so far into GUI-land he's earned the right to call *the concept of filesystems* bullshit |
01:19 | <&McMartin> | (it uses persistent-object-store organization principles) |
01:21 | | Kindamoody[zZz] [Kindamoody@Nightstar-180u8i.tbcn.telia.com] has quit [Connection closed] |
01:22 | | Kindamoody|autojoin [Kindamoody@Nightstar-180u8i.tbcn.telia.com] has joined #code |
01:22 | | mode/#code [+o Kindamoody|autojoin] by ChanServ |
01:44 | | himi [fow035@Nightstar-rc2.bi8.150.1.IP] has joined #code |
01:44 | | mode/#code [+o himi] by ChanServ |
01:54 | | Turaiel is now known as Turaiel[Offline] |
01:58 | | Turaiel[Offline] is now known as Turaiel |
02:11 | | Meatyhandbag [sebastianfe@Nightstar-dk0.5eb.224.136.IP] has quit [Client exited] |
02:16 | | [R] [rstamer@genoce.org] has quit [Ping timeout: 121 seconds] |
02:27 | | Checkmate [Z@Nightstar-ev6.6um.94.83.IP] has quit [Ping timeout: 121 seconds] |
02:50 | | thalass [thalass@Nightstar-h1qmno.eastlink.ca] has quit [Connection closed] |
03:11 | | Checkmate [Z@Nightstar-484uip.cust.comxnet.dk] has joined #code |
03:11 | | mode/#code [+o Checkmate] by ChanServ |
03:20 | | [R] [rstamer@Nightstar-d7h8ki.org] has joined #code |
03:53 | | Meatyhandbag [sebastianfe@Nightstar-dk0.5eb.224.136.IP] has joined #code |
04:33 | | himi [fow035@Nightstar-rc2.bi8.150.1.IP] has quit [Ping timeout: 121 seconds] |
04:52 | | Checkmate [Z@Nightstar-484uip.cust.comxnet.dk] has quit [Ping timeout: 121 seconds] |
04:55 | | JustLurk [justbob@ServerAdministrator.Nightstar.Net] has joined #code |
04:55 | | JustBob [justbob@Nightstar.Customer.Dissatisfaction.Administrator] has quit [NickServ (RECOVER command used by JustLurk)] |
04:55 | | JustLurk is now known as JustBob |
04:55 | | mode/#code [+o JustBob] by ChanServ |
04:56 | | Netsplit *.net <-> *.split quits: Meatyhandbag, [R], Shiz |
04:58 | | Netsplit over, joins: Shiz, [R], Meatyhandbag |
05:09 | | JustBob [justbob@Nightstar.Customer.Dissatisfaction.Administrator] has quit [Ping timeout: 121 seconds] |
05:12 | | JustBob [justbob@ServerAdministrator.Nightstar.Net] has joined #code |
05:12 | | mode/#code [+o JustBob] by ChanServ |
05:29 | | Meatyhandbag [sebastianfe@Nightstar-dk0.5eb.224.136.IP] has quit [Client exited] |
05:36 | | Derakon is now known as Derakon[AFK] |
06:15 | | Kindamoody|autojoin [Kindamoody@Nightstar-180u8i.tbcn.telia.com] has quit [Connection closed] |
06:16 | | Kindamoody|autojoin [Kindamoody@Nightstar-180u8i.tbcn.telia.com] has joined #code |
06:16 | | mode/#code [+o Kindamoody|autojoin] by ChanServ |
06:19 | | celticminstrel [celticminst@Nightstar-ad92nc.dsl.bell.ca] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
06:31 | | himi [fow035@Nightstar-v37cpe.internode.on.net] has joined #code |
06:31 | | mode/#code [+o himi] by ChanServ |
07:06 | | Turaiel is now known as Turaiel[Offline] |
07:13 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has quit [[NS] Quit: Leaving] |
07:30 | | Kindamoody|autojoin is now known as Kindamoody |
07:44 | | Vash [Vash@Nightstar-uhn82m.ct.comcast.net] has quit [[NS] Quit: Quit] |
08:53 | | Kindamoody is now known as Kindamoody|afk |
10:41 | | * McMartin tries to translate his Rust-based Klotski solver into C++98 without pulling in Boost or any other third-party libraries |
10:41 | <&McMartin> | This is ugly on toast |
10:41 | <&McMartin> | C++11 would let me use std::shared_ptr, at least. |
11:46 | <&McMartin> | Did it. |
11:46 | <&McMartin> | It's about 40% slower than the Rust version, probably due to using treesets instead of hashsets and loads of spurious copies that Rust's move semantics were designed to eliminate. |
13:08 | | Kindamoody|afk [Kindamoody@Nightstar-180u8i.tbcn.telia.com] has quit [Ping timeout: 121 seconds] |
13:13 | | Kindamoody|afk [Kindamoody@Nightstar-180u8i.tbcn.telia.com] has joined #code |
13:13 | | mode/#code [+o Kindamoody|afk] by ChanServ |
13:21 | | Checkmate [Z@Nightstar-484uip.cust.comxnet.dk] has joined #code |
13:21 | | mode/#code [+o Checkmate] by ChanServ |
13:25 | < abudhabi> | This autoplay feature of YT is one of the few innovations they've done that's actually good. |
13:25 | < abudhabi> | It rather easily approximates a radio with much, much less advertising and silly people talking. |
13:41 | < Shiz> | i wanna play with rust |
13:47 | <&McMartin> | Now's a good time to, really |
13:47 | <&McMartin> | http://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html was just posted, and it's a fun read, with only one howling error in it~ |
14:24 | | Checkmate [Z@Nightstar-484uip.cust.comxnet.dk] has quit [Ping timeout: 121 seconds] |
14:33 | < abudhabi> | Hmm. Anyone know how to send an SMS to a foreign shortcode? |
14:35 | <@Tamber> | Prefix it, as normal, and hope? |
14:45 | <@froztbyte> | that won't be very reliable, I'd imagine |
14:46 | <@froztbyte> | but there aren't really good options |
14:46 | < [R]> | Aren't all short-codes "preffered 'services'" (read: telco-supported complete-fucking-scams)? |
14:46 | <@froztbyte> | look for webservices in that country that allow text sending |
14:46 | <@froztbyte> | alternatively find someone in that country |
14:49 | < [R]> | Ah, Premium Texting "Service" |
14:49 | < abudhabi> | I want to send an SMS to 2105 in Norway. |
14:49 | < abudhabi> | I'm in Poland. |
14:49 | < abudhabi> | Prefixing did not work. |
14:50 | < Shiz> | McMartin: whi is? |
14:56 | | Checkmate [Z@Nightstar-ev6.6um.94.83.IP] has joined #code |
14:56 | | mode/#code [+o Checkmate] by ChanServ |
14:57 | <&McMartin> | The howling error is about its definition of data races |
14:58 | <&McMartin> | The condition it states is neither necessary nor sufficient there |
15:00 | < Shiz> | i'd shorten the definition to "involving at least one write" |
15:00 | < Shiz> | aside from that, how is it wrong? |
15:01 | <&McMartin> | Basically |
15:02 | <&McMartin> | READ_LOCK; x = len; READ_UNLOCK; ... READ_LOCK; array[x-1]; READ_UNLOCK; |
15:02 | <&McMartin> | And then something else does the write in ... while holding the lock and changes the length of the array |
15:02 | <&McMartin> | Bam, out of bounds |
15:02 | < Shiz> | but that's not a data race |
15:02 | < Shiz> | that's just a race condition |
15:02 | < Shiz> | of which data races are a subset |
15:03 | <&McMartin> | Yeah, that's not a level of humility they are showing |
15:03 | <&McMartin> | This is the same attitude that led Sun to say "it's fine, every method is synchronized" |
15:03 | <&McMartin> | And it totally wasn't - the race condition I quoted was in StringBuffer back in 1.4 |
15:04 | < Shiz> | right, so their definition wasn't wrong, but their usage of it can be |
15:04 | < Shiz> | :P |
15:05 | | Meatyhandbag [sebastianfe@Nightstar-dk0.5eb.224.136.IP] has joined #code |
15:05 | <@Tarinaky> | I'm... not 100% clear what Rust offers over C++11 though. |
15:05 | <&McMartin> | In what sense? |
15:05 | < Shiz> | a sane language |
15:05 | <&McMartin> | Yeah, uh, every single thing in that article is something where C++ will compile with no errors or warnings |
15:05 | <&McMartin> | And segfaults at runtime |
15:05 | <&McMartin> | So it has a type system that captures that |
15:06 | <@Tarinaky> | Oh, missed the article. |
15:06 | <&McMartin> | A SUFFICIENTLY WIZARDLY PROGRAMMER NEVER MAKES MEMORY ERRORS and thus gains nothing from this, sure |
15:06 | <&McMartin> | But we're dealing with planet Earth |
15:06 | <&McMartin> | What I think remains to be proven is whether mere mortals can write code that Rust will deign to compile at all~ |
15:06 | < Shiz> | we don't have enough sufficiently wizard programmers on earth |
15:06 | <@Tarinaky> | I retract my question because I clearly missed the conversation. |
15:06 | <&McMartin> | http://blog.rust-lang.org/2015/04/10/Fearless-Concurrency.html |
15:07 | <&McMartin> | The short answer is that Rust's unique property is a type system that encodes the lifetime of objects, which is a *significantly* more complex affair than C++'s (which is basically syntactic) |
15:07 | <&McMartin> | It also fits an ownership discipline in |
15:07 | <&McMartin> | And gets away with it, which is kind of a big deal |
15:08 | < Shiz> | there's also the part where it doesn't have to deal with the insanity of C++ because it doesn't have to derive from it |
15:08 | < Shiz> | ;p |
15:09 | <&McMartin> | It has its share as it is |
15:10 | <&McMartin> | "We are trying to cross Haskell and C here" is a recipe for clear-quill madness |
15:10 | <&McMartin> | And that's the easiest summary of Rust |
15:10 | < Shiz> | well, still a better concept than "we are trying to cross C and classes and everything we can bolt onto it" |
15:11 | <&McMartin> | Yeah |
15:11 | <&McMartin> | (Rust doesn't do classes in the traditional sense, really) |
15:12 | < Shiz> | i like rust's approach |
15:12 | < Shiz> | it reminds me of go a bit |
15:12 | <&McMartin> | I think Rust did the things Go aimed for better than Go did |
15:12 | <&McMartin> | Except, maybe, coroutines |
15:12 | < Shiz> | yeah |
15:13 | < Shiz> | especially in syntax :V |
15:13 | <&McMartin> | Go's object model is pretty much Java's under the hood |
15:13 | <&McMartin> | Dynamic downcasting, etc |
15:13 | <&McMartin> | Rust does fully static, inferrable, non-conflicitng multiple inheritance, which it swipes from Haskell's typeclasses and which is the only form of MI I won't immediately claim is heinously broken |
15:13 | < Shiz> | i dunno about rust enough to figure if it has something roughly equivalent to interfaces |
15:14 | <&McMartin> | Traits serve that purpose |
15:14 | <&McMartin> | But traits are purely adjectives |
15:14 | <&McMartin> | You can't return a trait as part of a signature, much like you can't return an instance of an interface directly in Go |
15:15 | <&McMartin> | But in Go this is more confining, or I felt it to be so. I think it's due to its weaker type inference |
15:15 | < Shiz> | that's kind of a shame |
15:23 | < Shiz> | ah, seems returning traits is part of post-1.0 |
15:23 | < Shiz> | but on the agenda |
15:47 | | Vornicus [vorn@ServerAdministrator.Nightstar.Net] has joined #code |
15:47 | | mode/#code [+qo Vornicus Vornicus] by ChanServ |
15:55 | | Turaiel[Offline] is now known as Turaiel |
16:03 | | Vash [Vash@Nightstar-uhn82m.ct.comcast.net] has joined #code |
16:03 | | mode/#code [+o Vash] by ChanServ |
16:30 | | Turaiel is now known as Turaiel[Offline] |
16:35 | | Vash [Vash@Nightstar-uhn82m.ct.comcast.net] has quit [Connection closed] |
17:57 | | Turaiel[Offline] is now known as Turaiel |
18:36 | | celticminstrel [celticminst@Nightstar-ad92nc.dsl.bell.ca] has joined #code |
18:37 | | mode/#code [+o celticminstrel] by ChanServ |
19:17 | | Kindamoody|afk is now known as Kindamoody |
19:20 | | Meatyhandbag [sebastianfe@Nightstar-dk0.5eb.224.136.IP] has quit [Client exited] |
19:20 | | Meatyhandbag [sebastianfe@Nightstar-dk0.5eb.224.136.IP] has joined #code |
19:53 | | gnolam_ [lenin@Nightstar-t1tbf0.cust.bahnhof.se] has joined #code |
19:56 | | gnolam [lenin@Nightstar-t1tbf0.cust.bahnhof.se] has quit [Ping timeout: 121 seconds] |
21:16 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [The TLS connection was non-properly terminated.] |
21:36 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code |
21:36 | | mode/#code [+ao ToxicFrog ToxicFrog] by ChanServ |
21:41 | | Kindamoody is now known as Kindamoody[zZz] |
22:11 | | Derakon[AFK] is now known as Derakon |
23:11 | <@Wizard> | 17:06 < Shiz> we don't have enough sufficiently wizard programmers on earth |
23:11 | | * Wizard clears throat |
23:12 | <@Tamber> | :) |
23:40 | | gnolam_ is now known as gnolam |
23:40 | | mode/#code [+o gnolam] by ChanServ |
--- Log closed Sun Apr 12 00:00:31 2015 |