Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

Yoozer posted:

Hey, if you have perpendicular harddisks, you could try perpendicular database tables, right? :downs:

What, didn't you know joins take a long time? gently caress that noise.

Adbot
ADBOT LOVES YOU

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

fidel sarcastro posted:

I prefer Mercurial, personally. It'll do the same things as Git, but does a better job of hiding the dangerous stuff unless you really need it.

Mercurial's userland is a lot better, but it really runs like poo poo on large repos. I don't know how some of the claimed users tolerate it. I'm moving on this Friday from a job where the main legacy source code repository is in Mercurial, has a 7GB .hg directory and a 5GB working copy over about 210,000 changesets, and holy poo poo it is mercilessly slow. Granted that most people are not likely to be working on repos this large, but between these performance problems, a couple of instances where devs were able to push corrupt changesets to the central repo that required some serious surgery to correct, and a constant tendency to allow the working copy to silently drift out of sync, I have not been left with a positive impression of Mercurial.

Also this same repo is mirrored as a Git repository via hg-git so that devs can break off pieces of the legacy repo into their own Git repos while preserving history, and operations on the Git version are comically faster. Once the engineering teams got used to using Git instead of Mercurial, there's been near-100% unanimity on wanting to get things moved from Mercurial to Git as quickly as possible.

chutwig fucked around with this message at 01:46 on Mar 25, 2015

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

Subjunctive posted:

We're moving the FB megarepos from git to mercurial, and I think we've upstreamed all our changes. You might check out your configuration, and try the file-watching stuff?

I'd look at it more but I have 3 days left at this job and I can't bring myself to give a millionth of a microfuck now.

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

Pavlov posted:

I'm just finishing the CS track at my college (a middle-of-the-road one) and even in the programming 101 course that half the campus took, you were required to submit your homework through a terminal command on one of the linux lab machines. One of the first things they taught was how to SSH into one remotely.

When I was at Rutgers 14 years ago, the CS111 homework was auto-graded by a program on one of the CS department's servers. To submit, you also had to be able to SSH in and scp your homework over (or copy and paste it into vi/emacs if you just couldn't figure that part out). I never looked at Rutgers as being an even remotely progressive institution in any way, but the idea that a decade and a half later there are still CS departments that manually grade homework using TAs is a bit surprising to me.

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

Volmarias posted:

Same here. Hello from the class of `05

Sup fellow '05er. :cool: I only did CS111 and CS112 since I wasted 4 years in the linguistics program.

Re: academia being insular, I've worked at both Rutgers and UPenn. At Rutgers I was pretty far removed from the worst of the academic stuff and mostly just had to deal with the occasional stereotype physics professor trundling over to my department's offices to inform us that his Sun pizzabox was unable to open the EPS file we had generated from an Illustrator document because pine wiped out the attachment or some crap. It was really bad at Penn, though, and very negatively influenced operational activities, because people who had been in the echo chamber for 15+ years would go on lengthy tangents about, among other things:
  • why virtualization is the devil and an unproven technology (I worked at Penn from 2009-2013)
  • SPARC is a better ISA than x86 and so we should order more poo poo from Sun rather than buying Dells that cost a quarter as much
  • nobody knows Git and we need to keep using RCS, or CVS if you're really daring
  • no host should be connected at gigabit ever and everything should run at 100/half
Basically people who lectured were also in charge of making decisions about ops stuff and it was a nightmarish disaster. Last I checked, most people evacuated the department about when I did and the VP was fired for having allowed such a pile of poo poo to fester.

chutwig fucked around with this message at 23:22 on Mar 25, 2015

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

QuarkJets posted:

also is the coding interview bar really that low at most places?

When one of my co-workers suggested we start our screen-share coding sessions off with Fizzbuzz, I scoffed. Who's going to gently caress that up?, I wondered to myself.

Three weeks later, about 75% of our candidates have failed to write it in a language of their choosing, and most of them could not even explain the algorithm in pseudocode. I'm not asking you solve Project Euler matrix problems, just show me you can do a loop and a few if statements.

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

Fergus Mac Roich posted:

When you say failed, what are we talking here? Their implementation prints the number as well as the appropriate string for multiples of 3 and 5, or they can't figure out for loop syntax, or what?

The failures usually fell into one of these categories (the default language is Python but they are explicitly told they can write it any language supported by the codepair system, so they can choose e.g. Ruby, Java, C++):
  • could not do it at all, even in pseudocode
  • did not write a for loop
  • wrote a for loop in Python but insisted on using C syntax, which won't work (I always reminded them at this point that they can use another language if they want)
  • wrote for loops inside every if statement (???)
  • did not know about % and wrote things like something = i / 3; if something * 3 == i: print "fizz" (technically correct but shows lack of fluency)

Many people could eventually stagger their way to the end, but it would frequently take 20-30 minutes instead of the <5 it should take.

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

Dex posted:

what if i can't? do you want your solution or a solution?

code:
numbers = list(range(101))
numbers[3::3] = ['Fizz'] * len(numbers[3::3])
numbers[5::5] = ['Buzz'] * len(numbers[5::5])
numbers[15::15] = ['FizzBuzz'] * len(numbers[15::15])
print(numbers[1:])
ask me stuff that shows you how i think and act, if you want coding exercises then send them in advance and leave me google poo poo because i'm going to do that at work anyway

Slow down there, Captain Confrontation. If they write something that passes the unit tests, that's good enough and we move on to other problems. If somebody provided that as a solution, I would view it as being pretty novel.

That being said, nobody has supplied a novel solution, and if they don't have a pre-canned solution ready basically immediately, it is likely that they will fail all subsequent problems even if they eventually brute force a solution to Fizzbuzz.

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

Dex posted:

i'm not trying to be confrontational, i just threw out something that fits on your list of failures but solves the problem :v:

I was listing out things that people had done wrong. The function prototype is fizzbuzz(n), where n is the end of the range. A few people wrote if/elif/else stuff but didn't have any sort of loop construct or other way of processing a range of numbers, and then they'd stumble around for several minutes not seeing that that was why the unit tests kept failing.

I was not trying to suggest that I'm just looking for a for loop and some ifs and will fail people if they don't have those things - I'm not trying to be prescriptive about their solutions. I do note if they're doing something unidiomatic for the language they're working in, but everyone has to learn somewhere, and the positions I'm interviewing for are not pure dev positions (more like SRE-type stuff), so there's more leeway than if I were interviewing somebody for a senior dev position. That being said, if you can't solve Fizzbuzz, I might be a little scared of the kind of Ansible playbooks you'd write.

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

hyphz posted:

Humans is undefined.

I thought the joke was it's one = instead of two in the if statement. So not really a typing joke, a C joke!

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

SupSuper posted:

Nobody actually understands how git works.

I hope Junio Hamano does!

The explanation of Git that really clicked for me is one that emphasized that it's a content-addressable file system. This helped me to stop thinking of it less as a VCS and more in the abstract, where my branch pointers are soft links pointing to particular inodes/blobs inside Git. Combining that knowledge with the reflog was what really helped me to feel comfortable with Git and get away from the mentality of going straight to git clone this/thing/all/over/again as the first solution to any problem. (Now it is the second, after git reset --hard HEAD@{somereflogreference}.)

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

What are you people doing with Git that makes you feel like you need an army of shell scripts to manage it? Nearly all of my Git usage can be distilled down to 10 commands:
  • git pull
  • git push
  • git log
  • git diff
  • git commit -a
  • git checkout -b feature/some-branch
  • git rebase -i some/other/branch
  • git push -u origin feature/some-branch
  • git branch -d feature/some-branch
  • git reset --hard some-branch-pointer

Am I missing something in this discussion? The Mercurial CLI suite isn't any friendlier for the commands I just listed, and the second you start using Mercurial for actual things you run into the buzzsaw of annoying error messages like abort: cannot rebase immutable changeset because Mercurial knows best about history rewriting and abort: abandoned transaction found - run hg recover! because Mercurial is a fragile flower when it comes to repo integrity. It lost versus Git for a reason, and it's not just because it's like an order of magnitude slower.

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

TooMuchAbstraction posted:

When you think about it, the real horror is trusting computers with anything important, considering how often we find software to be such a shitshow.

I agree. Working in tech and writing software makes me trust this stuff less, not more, because I know how janky it probably all is under the hood. I probably have some built-in luddite tendencies as well - my co-workers all talk about the latest IoT stuff they’ve installed in their house, but I still set the temperature by hand on my Honeywell thermostat and buy paper bus tickets. I’m sure eventually I’ll add some sort of home automation stuff or a Nest or whatever, but the threshold at which I will consider such things is pretty high.

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

PhantomOfTheCopier posted:

I'd expect it to throw a compiler parsing error for missing parentheses and a warning about superfluous spaces. :shrug:

Go will yell at you for putting the parentheses in.

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

Eela6 posted:

Go is infuriating because it's not too hard to see a world where it's actually good, rather than 'fine, I guess'.

The #1 thing requested on the user survey is "generics", so if Rob Pike can get over himself in time for Go 2.0, maybe there's some hope? Personally, not having generics hasn't honestly bothered me. If I were given a choice between generics or better package management/richer ways of dealing with slices/better error handling, I would pick any one of those three as a bigger priority. My primary gripe is the amount of boilerplate that Go mandates, to the point where it feels like the language actively encourages copypasta.
code:
if someShit, err := doAThing(toAThing); err == nil {
    // you win
} else {
    // world is on fire
}
REPEAT FOUR HUNDRED TIMES

Adbot
ADBOT LOVES YOU

chutwig
May 28, 2001

BURLAP SATCHEL OF CRACKERJACKS

Athas posted:

So is Docker mostly used to isolate/reproduce the build environment, and not really the runtime environment?

If so, Nix sounds like a good choice as well.

It's for both. I have multi-stage builds where the build is containerized using some given base container that contains the build toolchain, and then the result of the build (static binary or Python wheel or whatever) is transferred to a stripped-down container.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply