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
rjmccall
Sep 7, 2007

no worries friend
Fun Shoe
i can understand the urge to dump it on somebody else, but picking an intern seems spectacularly stupid, since you know they're going to be gone soon. we've never had that particular problem anywhere i've worked

what i have seen repeatedly is that interns get some small, appealing project like "try to get this new build tool working" or "make a prototype that integrates with this library", and suddenly they're making hundreds of subtle changes and generalizations in the build system for the benefit of some wacky configuration that's inevitably going to start bit-rotting the second they walk out the door

Adbot
ADBOT LOVES YOU

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe

Soricidus posted:

alternative question: if this is a common problem that totally justifies embedding a scripting language in your build, how come people argued against maven for three pages without bringing it up?

because the only people willingly engaging in a build system argument are the people who aren't enlightened to the fact that they're all fucknig terrible

Notorious b.s.d.
Jan 25, 2003

by Reene

Suspicious Dish posted:

have you been arguing for 3 pages about why maven is the best and yet it doesn't attempt to solve the one big hard problem that explains nearly all the complexity of other build systems?

as I discussed at the outset, maven "alternatives" all threw the baby out with the bathwater. they fixed one problem, and they re-introduced all the other problems maven was meant to solve

it is telling that many projects prefer running sed against a maven pom to the adoption of an imperative build system in toto

Notorious b.s.d.
Jan 25, 2003

by Reene
maven is a 90% solution to the problem of project definition and compilation. the missing 10% is the huge problem of parametric builds.

gradle is a 0% solution. it is a shell script written for jvm. you could literally replace it with a makefile calling ivy for dep resolution, and your build would probably be more understandable that way.

akadajet
Sep 14, 2003


hold my beer

Brain Candy
May 18, 2006

ofc talking about maven is boring, that's the point of maven

Brain Candy
May 18, 2006

bluh bluh bluh why isn't filling out a form at the dmv interesting?

Thermopyle
Jul 1, 2003

...the stupid are cocksure while the intelligent are full of doubt. —Bertrand Russell

Brain Candy posted:

ofc talking about maven is boring, that's the point of maven

no, the point of maven is to not have any surprises

thats not the same as it being boring to talk about

qhat
Jul 6, 2015


Why the gently caress would you give an intern a project as important as maintaining a build system? Sounds like you're asking for trouble there.

redleader
Aug 18, 2005

Engage according to operational parameters
lol if your build system is any more complex than hitting f6 in visual studio

qhat
Jul 6, 2015


Lol if you cannot build your program without visual studio

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.

qhat posted:

Lol if you cannot build your program without visual studio

Nope, just msbuild.

luchadornado
Oct 7, 2004

A boombox is not a toy!

Notorious b.s.d. posted:

gradle is a 0% solution. it is a shell script written for jvm


Notorious b.s.d. posted:

it is telling that many projects prefer running sed against a maven pom

thats pretty much the same thing at that point, except id rather write a 200 line groovy script than a 200 line bash script (edit: and a groovy script that does the same thing should be much smaller). because i can at least leverage *some* guarantees and get some standard programming features with groovy. i say that as someone that thinks groovy needs a bullet in the back of its head.

is it a stretch to assume that those in favor of maven tend to work on larger, more stable codebases and the people saying gradle isnt that bad work on smaller codebases where the flexibility provides more value and the sanctity of the build process is low on the list of priorities? i cant recall build systems screwing me much in the past other than with ant and npm - but those were both at the same place, and it would have been hard to ascribe a single cause of that dumpster fire.

luchadornado fucked around with this message at 03:56 on May 11, 2018

Notorious b.s.d.
Jan 25, 2003

by Reene

Helicity posted:

is it a stretch to assume that those in favor of maven tend to work on larger, more stable codebases and the people saying gradle isnt that bad work on smaller codebases where the flexibility provides more value and the sanctity of the build process is low on the list of priorities?


you have it completely backwards. the smaller, and more rapidly changing, the codebase, the less effort you want to put into the build system.

you are writing a needlessly complicated way to solve simple problem, because.... reasons?

Notorious b.s.d.
Jan 25, 2003

by Reene

Helicity posted:

thats pretty much the same thing at that point, except id rather write a 200 line groovy script than a 200 line bash script

groovy is a better language than bash, to be sure

but i don't want to write any lines of script to build a project. and maven will spare me that chore for 90% of use cases

redleader
Aug 18, 2005

Engage according to operational parameters

qhat posted:

Lol if you cannot build your program without visual studio

why? too cheap to pay for another licence?

redleader
Aug 18, 2005

Engage according to operational parameters
at one point we were using the ms fakes framework for our awful, awful integration tests*. at the time this was available in the top two tiers of visual studio but, crucially, not in msbuild. we 'fixed' this tiny roadblock by installing vs2012 onto our build server and calling it a day. it sat like that for a while, quietly building stuff.

a few years later, ms rejigged the pricing structure for vs licenses so that ms fakes was only available in enterprise edition. we were, of course, too cheap to upgrade, but also too cheap to spend the time to rip the framework out. so there we languished for a couple of years, unable to upgrade to newer versions of c# because that would require us to upgrade vs - which we couldn't do because it would break the tests that no one really cared about

eventually someone was told to go and remove our dependency on ms fakes. they did, and now we can use more modern features! hurrah!

i guarantee that there's still most of a vs2012 installation hanging around on the build server, and can't wait for the day when we rebuild it (i hope the new server breaks and then breaks the will of the person sent to fix it)



* ms fakes is some magic 'sub this method out at (test) runtime with another function' bullshit. the fact that we used this should tell you all you need to know about the quality of our tests and indeed our entire codebase.
why did we need this magic runtime method bullshit? well, our tests used an overridden version of object.Equals that compared stuff like created/modified dates and IDs, which were set in and retrieved from the DB. we used fakes to sub out the Equals method with one that ignored those fields, as well as ignoring microsecond differences between DateTimes created in code vs DateTimes loaded from the DB

Notorious b.s.d.
Jan 25, 2003

by Reene

redleader posted:

at one point we were using the ms fakes framework for our awful, awful integration tests*. at the time this was available in the top two tiers of visual studio but, crucially, not in msbuild. we 'fixed' this tiny roadblock by installing vs2012 onto our build server and calling it a day. it sat like that for a while, quietly building stuff.

a few years later, ms rejigged the pricing structure for vs licenses so that ms fakes was only available in enterprise edition. we were, of course, too cheap to upgrade, but also too cheap to spend the time to rip the framework out. so there we languished for a couple of years, unable to upgrade to newer versions of c# because that would require us to upgrade vs - which we couldn't do because it would break the tests that no one really cared about

eventually someone was told to go and remove our dependency on ms fakes. they did, and now we can use more modern features! hurrah!

i guarantee that there's still most of a vs2012 installation hanging around on the build server, and can't wait for the day when we rebuild it (i hope the new server breaks and then breaks the will of the person sent to fix it)



* ms fakes is some magic 'sub this method out at (test) runtime with another function' bullshit. the fact that we used this should tell you all you need to know about the quality of our tests and indeed our entire codebase.
why did we need this magic runtime method bullshit? well, our tests used an overridden version of object.Equals that compared stuff like created/modified dates and IDs, which were set in and retrieved from the DB. we used fakes to sub out the Equals method with one that ignored those fields, as well as ignoring microsecond differences between DateTimes created in code vs DateTimes loaded from the DB

lol forever at windows shops and the poor bastards who work in them

Notorious b.s.d.
Jan 25, 2003

by Reene
.net is cool but i ain't gonna bet my business on it

Sagacity
May 2, 2003
Hopefully my epitaph will be funnier than my custom title.

redleader posted:

at one point we were using the ms fakes framework for our awful, awful integration tests
ah yes, integration tests in which you still replace half of your code with stubsfakes, well done

there is a larger set of testing patterns in which people write tests that depend on a ton of implementation details. basically whenever setting up a mock takes more than 1-2 lines you end up with tests that are very good at testing what your internal class structure looks like

you've also made your code refactor-proof since every time you want to make a change all these brittle mock-heavy tests will start breaking because now method "foo" on dependency Y is only called 4 instead of 5 times

floatman
Mar 17, 2009
My workplace gets around it by making everything highly coupled and magic hidden logic in the database with db functions copied from SQL forums where the poster proudly declares, "here's my solution I believe you can never have too much dynamic SQL!" Therefore making it impossible to write meaningful integration tests in the first place.

Notorious b.s.d.
Jan 25, 2003

by Reene

Sagacity posted:

ah yes, integration tests in which you still replace half of your code with stubsfakes, well done

there is a larger set of testing patterns in which people write tests that depend on a ton of implementation details. basically whenever setting up a mock takes more than 1-2 lines you end up with tests that are very good at testing what your internal class structure looks like

you've also made your code refactor-proof since every time you want to make a change all these brittle mock-heavy tests will start breaking because now method "foo" on dependency Y is only called 4 instead of 5 times

lots of common OO patterns require mocking. most notably, dependency injection

the crime with this poster was imagining that .net has a living ecosystem beyond what they can pay microsoft to guarantee

Notorious b.s.d.
Jan 25, 2003

by Reene

floatman posted:

My workplace gets around it by making everything highly coupled and magic hidden logic in the database with db functions copied from SQL forums where the poster proudly declares, "here's my solution I believe you can never have too much dynamic SQL!" Therefore making it impossible to write meaningful integration tests in the first place.

this is not necessarily the worst model ever, it's just very old-school

people used to honestly believe that the database should be accessed by multiple applications, which created a need for DBAs to be the ones to manage interfaces, which in turn created some truly scary stored procedures

stored procedures are code sharing between applications, right? :q:

qhat
Jul 6, 2015


redleader posted:

why? too cheap to pay for another licence?

It's called cmake and it's also called not checking effectively generated project files into version control. And don't C# me lest you out yourself as the retard who uses .NET unironically.

floatman
Mar 17, 2009

Notorious b.s.d. posted:

this is not necessarily the worst model ever, it's just very old-school

people used to honestly believe that the database should be accessed by multiple applications, which created a need for DBAs to be the ones to manage interfaces, which in turn created some truly scary stored procedures

stored procedures are code sharing between applications, right? :q:

The old school model has DBAs, stored procedures and db functions. These, in a way, serve as abstractions that contribute to the maintainability of the application as a whole.
We don't have those things for simple, basic day to day tasks like getting data. Everybody writes their own bespoke hell using the ORM.
What we do have is hell poo poo I just described.

It is a clown circus on fire. I would love to tell you guys more but apparently I have to fix a pull request where I need to put all closing tags on the same line as opening tags in an XML file "for consistency".
An XML file, that's read by machines. I hope Johnny XMl parser appreciates the effort I've put into making this file look readable.

champagne posting
Apr 5, 2006

YOU ARE A BRAIN
IN A BUNKER


Notorious b.s.d. posted:

.net is cool but i ain't gonna bet my business on it

i feel that at the moment the new and cool microsoft is making it a less bad idea, but who knows how long it'll last and what they'll pivot to next. More phones maybe?

floatman
Mar 17, 2009
Now fixing up my methods by putting phpdoc annotations like @throws everywhere.
The last time phpdoc was generated was 4 years ago, and nobody knows how to generate it now.

Also putting @covers on all lovely tests, so that when I can go to Jenkins and see the code coverage report that's only run once a month and nobody cares about it because I was the first guy that said that if you go to the code coverage page there's a http 500 error and nobody knows what's wrong

Sagacity
May 2, 2003
Hopefully my epitaph will be funnier than my custom title.

Notorious b.s.d. posted:

lots of common OO patterns require mocking. most notably, dependency injection
yes, so you mock the outer layer (you know, the one that INTEGRATES with other systems), not override object.equals

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slægt skal følge slægters gang



imo the best build script is

A=`pwd`; cd ..; rm -rf $A

Phobeste
Apr 9, 2006

never, like, count out Touchdown Tom, man

Krankenstyle posted:

imo the best build script is

A=/; rm -rf --no-preserve-root $A

redleader
Aug 18, 2005

Engage according to operational parameters
are there good dbas

because we could really do with a good dba, as opposed to a bunch of developers occasionally moonlighting as a database person

TimWinter
Mar 30, 2015

https://timsthebomb.com

Krankenstyle posted:

imo the best build script is

A=`pwd`; cd ..; rm -rf $A

Need to submit this as a PR to a couple of repos...

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.

qhat posted:

It's called cmake and it's also called not checking effectively generated project files into version control. And don't C# me lest you out yourself as the retard who uses .NET unironically.

What are you on about? VS natively supports your inferior build tool and language, so continue making terrible decisions without fear.

prisoner of waffles
May 8, 2007

Ah! well a-day! what evil looks
Had I from old and young!
Instead of the cross, the fishmech
About my neck was hung.

Notorious b.s.d. posted:

lol forever at windows shops and the poor bastards who work in them

Notorious b.s.d. posted:

.net is cool but i ain't gonna bet my business on it

Boiled Water posted:

i feel that at the moment the new and cool microsoft is making it a less bad idea, but who knows how long it'll last and what they'll pivot to next. More phones maybe?

stooooppp it huuuurtts because it's true

qhat
Jul 6, 2015


Fiedler posted:

What are you on about? VS natively supports your inferior build tool and language, so continue making terrible decisions without fear.

another reason never to create persistent visual studio solutions

Vanadium
Jan 8, 2005

hey so with people making GBS threads on modern cpu architectures for instruction-level parallelism and nontrivial cache protocols and whatever, what would a better world be like? manual application-level cache janitoring? langs with async memory operations?? itanium??? everything just really slow????

ynohtna
Feb 16, 2007

backwoods compatible
Illegal Hen
valves, lamps and tape reels

Themage
Jul 21, 2010

by Nyc_Tattoo

ynohtna posted:

valves, lamps and tape reels

he asked for a better world

Thermopyle
Jul 1, 2003

...the stupid are cocksure while the intelligent are full of doubt. —Bertrand Russell

a modern VM on a modern CPU runs stuff pretty close to native speed...I assume this is mostly due to the VM CPU extensions available

does the webass VM in browsers at least have the potential for that or is it more like VMs from the olden days where everything was virtualized and there was no VT-d and the like?


(its entirely possible that this question is Not Even Wrong)


(this is me being ignorant)

Adbot
ADBOT LOVES YOU

Suspicious Dish
Sep 24, 2011

2020 is the year of linux on the desktop, bro
Fun Shoe
VT-d and the "VM extensions" have very little to do with "language VMs". VT-d is mostly about setting up a context that can pretend to be ring 0, have interrupts, do I/O, run all those fancy privileged instructions. Some of them can be trapped and go into "ring -1" which is where another process handles them (the "hypervisor").

WASM runs fast because it's a very simple language without the complexity (some would say featureset) of JavaScript. You get A Linear Memory that can grow and not shrink, you get Read/Write, you get No GC, etc. So the translation to machine code x86 can be very simple. I expect that when people stand up non-trivial things on WASM (like host bindings, GCs, threads, atomics, SIMD), we'll see the VM performance start to buckle a bit.

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