code logs -> 2015 -> Sat, 11 Apr 2015< code.20150410.log - code.20150412.log >
--- 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
code logs -> 2015 -> Sat, 11 Apr 2015< code.20150410.log - code.20150412.log >

[ Latest log file ]