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
Jaded Burnout
Jul 10, 2004


CPColin posted:

What about if the currently common language is Groovy and the current framework varies between versions of Grails 2.x and 3.x?

Quit.

Adbot
ADBOT LOVES YOU

Jose Valasquez
Apr 8, 2005

strange posted:

I'm starting a small-mid size project and have been given the option to choose the language. We're going to be doing loads of external HTTP requests. Obviously many good options but in terms of career and sanity, what would everybody choose? We're currently using C#.

COBOL so that you can turn that into a sweet gig in the financial industry

CPColin
Sep 9, 2003

Big ol' smile.

Or should I use an even more obscure language and invent my own framework? Hmm.

Jaded Burnout
Jul 10, 2004


CPColin posted:

Or should I use an even more obscure language and invent my own framework? Hmm.

A Haskeleton framework, you might say?

raminasi
Jan 25, 2005

a last drink with no ice

strange posted:

I'm starting a small-mid size project and have been given the option to choose the language. We're going to be doing loads of external HTTP requests. Obviously many good options but in terms of career and sanity, what would everybody choose? We're currently using C#.

If I used this project as an excuse to teach myself something flies at your company, and you want to do that, do it in F#. If not, just stick with C#.

CPColin
Sep 9, 2003

Big ol' smile.

Jaded Burnout posted:

A Haskeleton framework, you might say?

I might, if I knew what that was!

geeves
Sep 16, 2004

withoutclass posted:

I'm not sure Scala is a good pick for career or sanity. SBT is some kind of hellspawn.

A true non-user of SBT will not drown when tested.

Jaded Burnout
Jul 10, 2004


CPColin posted:

I might, if I knew what that was!

A framework providing the skeleton of an app in Haskell? It was a pun, or play on words.

SAVE-LISP-AND-DIE
Nov 4, 2010

Good Will Hrunting posted:

What are you doing with the responses? I just wrote a small app (like 50 lines) to do the same in Scala to replay web traffic logs to our staging API and it took like, under a day to get it running super effectively with AsyncHttpClient library.



withoutclass posted:

Are the requests incoming or outgoing? Is your shop all .Net? Would deviating from the main way your team does things be bad for future maintenance or if you're sick and someone needs to cover you? C# is a pretty good language, especially with async/await type stuff baked in, and if you're already running the .Net stack for hosting etc, you may as well stick with it.


rt4 posted:

I'd choose Go because its concurrency system makes doing lots of outgoing HTTP requests easy and because I like programming against interfaces


Volguus posted:

The first consideration should be "Who will maintain this 10 years form now when it has grown into a huge monster?. Is it reasonable for me to ask a .NET shop to learn a different language/technology?" The answer may be yes ... or not. The answer can also be " I don't give a poo poo". But if you like your coworkers and/or your place of work don't put unnecessary maintenance burden of them if you don't need to. And this kind of project sounds like it can be done in any language.

Now, if you know that the team/company is looking to move to language X (go?) in the future, it may be a valuable learning experience for everyone to see how does the language perform and this would then be the perfect project to test it. Otherwise, stick with what everyone does and knows.


Jaded Burnout posted:

What sort of user interface does it have? Anything where you want a strong ecosystem for libraries? Any techs other than HTTP you're looking at tightly interfacing with?

Those would be my primary concerns otherwise you've not said anything so far that would make me give a poo poo about what language it was in, tech-wise. Most everything can do HTTP pretty robustly, it's not something like rabbitmq or kafka where the underlying tech is written in a certain language and thus informs the amount of support you get with client languages.


raminasi posted:

If “I used this project as an excuse to teach myself something” flies at your company, and you want to do that, do it in F#. If not, just stick with C#.

I agree with the concerns over picking something non-CLR/.NET but I've been given the explicit go-ahead to use whatever I want if I can make a technical case for it. Unfortunately my boss is leaning towards Node ("for performance" :airquote:), which I think is hot trash. I'm working with a single colleague who thinks the same. I personally love functional programming but colleague doesn't know anything about it.

We're in an exploratory phase so this is all a bit fuzzy, but it'll be an internal service providing a uniform interface to multiple larger, sprawling REST-like external APIs. We'll need a database tracking user consent over time and probably be using JWT for auth.

To me it feels like a natural fit for Erlang, but I suspect that's too much of a paradigm shift. Is it too much of an rear end in a top hat move to pick something like Go?

Naar
Aug 19, 2003

The Time of the Eye is now
Fun Shoe

strange posted:

To me it feels like a natural fit for Erlang, but I suspect that's too much of a paradigm shift. Is it too much of an rear end in a top hat move to pick something like Go?
Yes. Yes, it would be. If you nobody cares what language you use and you want to use something functional and Erlang-y, try Elixir which people can't seem to shut up about in my area.

withoutclass
Nov 6, 2007

Resist the siren call of rhinocerosness

College Slice

strange posted:

I agree with the concerns over picking something non-CLR/.NET but I've been given the explicit go-ahead to use whatever I want if I can make a technical case for it. Unfortunately my boss is leaning towards Node ("for performance" :airquote:), which I think is hot trash. I'm working with a single colleague who thinks the same. I personally love functional programming but colleague doesn't know anything about it.

We're in an exploratory phase so this is all a bit fuzzy, but it'll be an internal service providing a uniform interface to multiple larger, sprawling REST-like external APIs. We'll need a database tracking user consent over time and probably be using JWT for auth.

To me it feels like a natural fit for Erlang, but I suspect that's too much of a paradigm shift. Is it too much of an rear end in a top hat move to pick something like Go?

No point in node when you have a framework like Vert.x . Honestly Kotlin would be a good fit between your desire for functional programming and your coworkers' lack of exposure there. You can combine it with https://www.arrow-kt.io and get as much or as little functional programming as your team is comfortable with while sticking to a style of programming your coworker is comfortable with.

Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS
Just use Java or C# depending on your stack. It might be boring but the only thing "exciting" gets you is tech debt and/or additional onboarding time for new engineers.

Bruegels Fuckbooks
Sep 14, 2004

Now, listen - I know the two of you are very different from each other in a lot of ways, but you have to understand that as far as Grandpa's concerned, you're both pieces of shit! Yeah. I can prove it mathematically.

Blinkz0rz posted:

Just use Java or C# depending on your stack. It might be boring but the only thing "exciting" gets you is tech debt and/or additional onboarding time for new engineers.

C# is so easy that developing in it makes me feel like I'm stealing from my company.

BurntCornMuffin
Jan 9, 2009


strange posted:

Unfortunately my boss is leaning towards Node ("for performance" :airquote:)

Pick C#, Java, or literally anything that's not some dumb Silicon Valley vanity scripting language of the month for the sake of your replacement and :sever:.

Portland Sucks
Dec 21, 2004
༼ つ ◕_◕ ༽つ

BurntCornMuffin posted:

Pick C#, Java, or literally anything that's not some dumb Silicon Valley vanity scripting language of the month for the sake of your replacement and :sever:.

Or pick the trendy Silicon Valley language and then spend the rest of your career there acting smug and bitter when no one else has the time to learn it since every other software base is written in the communal normal language and still needs to be maintained and developed on.

comedyblissoption
Mar 15, 2006

Just pick c# because it's the least worst.

Node sucks.

Golang sucks.

If you "love functional programming", you will be horrified with golang.

Jaded Burnout
Jul 10, 2004


BurntCornMuffin posted:

Pick C#, Java, or literally anything that's not some dumb Silicon Valley vanity scripting language of the month for the sake of your replacement and :sever:.

Portland Sucks posted:

Or pick the trendy Silicon Valley language and then spend the rest of your career there acting smug and bitter when no one else has the time to learn it since every other software base is written in the communal normal language and still needs to be maintained and developed on.

I vote for either of these.

netcat
Apr 29, 2008
Just write it in erlang, geez

Good Will Hrunting
Oct 8, 2012

I changed my mind.
I'm not sorry.

Portland Sucks posted:

Or pick the trendy Silicon Valley language and then spend the rest of your career there acting smug and bitter when no one else has the time to learn it since every other software base is written in the communal normal language and still needs to be maintained and developed on.


hell yea, java Kicks rear end and I love it, i'm never changing (this is in earnest)

CPColin
Sep 9, 2003

Big ol' smile.
Pick Ceylon, compile it to JS, and run it on Node, for maximum "Why the gently caress did you do this?" factor.

Jose Valasquez
Apr 8, 2005

You could just write your own language in C# and then use that. That should keep everyone happy

vonnegutt
Aug 7, 2006
Hobocamp.

Naar posted:

Yes. Yes, it would be. If you nobody cares what language you use and you want to use something functional and Erlang-y, try Elixir which people can't seem to shut up about in my area.

I was going to suggest Elixir :nsa:

SAVE-LISP-AND-DIE
Nov 4, 2010
So that's settled then, a DSL in Racket.

I had hoped I could play off the openness to using new tech to add a second lang/stack to my skillset. Is it not stronger to position yourself as a generalist in the job market, rather than a ".NET guy" or whatever?

BurntCornMuffin
Jan 9, 2009


Good Will Hrunting posted:

hell yea, java Kicks rear end and I love it, i'm never changing (this is in earnest)

Pssh, Java is too mainstream. The cool kids in the hipster JVM club went Groovy -> Scala - > Kotlin.

Good Will Hrunting
Oct 8, 2012

I changed my mind.
I'm not sorry.

BurntCornMuffin posted:

Groovy -> Scala - > Kotlin.

I use all 3 :smugbert: but I still have no idea how to write effective code from a unit-testable standpoint in a number of cases for at least the first two of those, Kotlin less so but still also a little. I wouldn't even say we're abusing static objects etc but like, a lot of the stuff I'm using Scala and Groovy for doesn't lend itself to easy testing very much.

lifg
Dec 4, 2000
<this tag left blank>
Muldoon

Jose Valasquez posted:

You could just write your own language in C# and then use that. That should keep everyone happy

Larry Wall wrote his own language for work. The result was Perl.

Moral of the story: don't write your own language.

JawnV6
Jul 4, 2004

So hot ...
Perl was awesome. I want first-class regex support in every language. Python's okay I guess, but it's agonizingly slow to write for the marginal benefit of "other humans can possibly read it."

BurntCornMuffin
Jan 9, 2009


Good Will Hrunting posted:

I use all 3 :smugbert: but I still have no idea how to write effective code from a unit-testable standpoint in a number of cases for at least the first two of those, Kotlin less so but still also a little. I wouldn't even say we're abusing static objects etc but like, a lot of the stuff I'm using Scala and Groovy for doesn't lend itself to easy testing very much.

Honestly, that's more a failing of this industry's culture than anything else. All too often I see teams glaze over appropriately thorough testing at worst, dragging their feet over "ticking boxes", fear of finding an annoying bug or catching hell for overrunning a deadline. Worse, a lot of organizations are either ignorant to it, tolerate it, or otherwise enable it until the app either becomes an unmaintainable mess or finds a mention in the YOSPOS Secfuck thread.

From the very beginning of my career I've found that to be a big frustration for me. I frequently get myself installed as the team repo admin and convince the team to come together on some sort of governance process that includes testing and peer review to try to mitigate it where I can, and lately I've been cultivating a pentest skillset to try to catch major flaws so I don't end up writing or signing off on a vulnerability (which, admittedly, is a fun learning project). I seem to be effective at bringing my teams together regarding code governance so far, but the state of the industry (and statistically, new projects when I land on them) regarding this is goddamned depressing.

Good Will Hrunting
Oct 8, 2012

I changed my mind.
I'm not sorry.
I've found that people don't know what to test or how/why it should be tested in a certain way, so they write a ridiculous amount of redundant mocks and tests, and begin to despise testing in general.

fantastic in plastic
Jun 15, 2007

The Socialist Workers Party's newspaper proved to be a tough sell to downtown businessmen.

Good Will Hrunting posted:

I've found that people don't know what to test or how/why it should be tested in a certain way, so they write a ridiculous amount of redundant mocks and tests, and begin to despise testing in general.

On one project I was on, the conversation around testing went something like:

PMO: "Our test code coverage doesn't look good compared to other teams, we need more tests."
ENG: "This is a front-end service that only talks to vendor-supplied APIs, what exactly should we be testing here?"
PMO: "More test coverage!"

So part of every sprint was writing a bunch of nonsense tests that boosted the code coverage. Making sensible tests wasn't important, just the number.

spiritual bypass
Feb 19, 2008

Grimey Drawer
If you prefer functional, use Racket instead of Go

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

strange posted:

So that's settled then, a DSL in Racket.

I had hoped I could play off the openness to using new tech to add a second lang/stack to my skillset. Is it not stronger to position yourself as a generalist in the job market, rather than a ".NET guy" or whatever?

Trying to get work to pay for learning new things is always good. But there's a balance between doing that and making the one-off unmaintainable project that will have your name cursed forevermore by your successor.

Maybe scale down the "new tech" bit. Instead of introducing new language into your org, maybe pick a new coding style/paradigm/framework/whatever to try. Itll let you learn something new while keeping hope alive for future maintenance. You might even be able to pawn it off as beneficial to the company, a lil pilot project to see just what is that reactive programming thing and is it useful on the main product.

As for positioning, I dunno. Some people hear generalist and think "master of nothing". Probably depends how you sell it in a conversation or an interview.

Cirofren
Jun 13, 2005


Pillbug
The vast majority of jobs advertised in my region are .Net, JavaScript, Java, Python, PHP in roughly that order. Most of them senior.

What I'm saying is take your bosses suggestion and write it in node :v:

kitten emergency
Jan 13, 2008

get meow this wack-ass crystal prison
write it in c# on netcore2

kitten emergency
Jan 13, 2008

get meow this wack-ass crystal prison
this will assist in weeding out the bad .net devs who burn when they touch an actual shell

redleader
Aug 18, 2005

Engage according to operational parameters

uncurable mlady posted:

this will assist in weeding out the bad .net devs who burn when they touch an actual shell

but where will you get .net devs once you alienate the windows users

SAVE-LISP-AND-DIE
Nov 4, 2010

pokeyman posted:

Trying to get work to pay for learning new things is always good. But there's a balance between doing that and making the one-off unmaintainable project that will have your name cursed forevermore by your successor.

Maybe scale down the "new tech" bit. Instead of introducing new language into your org, maybe pick a new coding style/paradigm/framework/whatever to try. Itll let you learn something new while keeping hope alive for future maintenance. You might even be able to pawn it off as beneficial to the company, a lil pilot project to see just what is that reactive programming thing and is it useful on the main product.

As for positioning, I dunno. Some people hear generalist and think "master of nothing". Probably depends how you sell it in a conversation or an interview.

That seems balanced, and makes sense.

rt4 posted:

If you prefer functional, use Racket instead of Go

How do you find Racket? I imagine the domain specific language rabbit hole is difficult to get to grips with. (I think it was you who replied when I asked about CL/Clojure/Racket in the old Functional thread. If not - nevermind!)


Cirofren posted:

The vast majority of jobs advertised in my region are .Net, JavaScript, Java, Python, PHP in roughly that order. Most of them senior.

What I'm saying is take your bosses suggestion and write it in node :v:

This is what ended up happening. It turns out when my boss said "any tech", he really meant "use node". One upside is the local jobmarket loves Node for some reason!!!!!!!

spiritual bypass
Feb 19, 2008

Grimey Drawer

strange posted:

How do you find Racket? I imagine the domain specific language rabbit hole is difficult to get to grips with. (I think it was you who replied when I asked about CL/Clojure/Racket in the old Functional thread. If not - nevermind!)

It probably was me, although I'm not the only person on that thread to advocate it. I'm personally a fan of Lisps, and among those Racket has decent performance, sane tooling (unlike Common Lisp and Clojure imo), highly readable documentation, and a robust standard library. If you want to build something that makes lots of outside HTTP calls, it certainly has support for that. The Typed Racket variant has a superb static type checking system that can save you (or sometimes cause) some headaches. I don't actually have much use for the DSL features myself.

OCaml is another good functional language that's often overlooked in these discussions, but its toolchain and runtime performance are superb.

raminasi
Jan 25, 2005

a last drink with no ice
Its really wild that a greenfield project with a supposed open mandate to use any new tech ended up going forward with node. I know its not your decision, but goddamn.

Adbot
ADBOT LOVES YOU

fantastic in plastic
Jun 15, 2007

The Socialist Workers Party's newspaper proved to be a tough sell to downtown businessmen.

raminasi posted:

Its really wild that a greenfield project with a supposed open mandate to use any new tech ended up going forward with node. I know its not your decision, but goddamn.

A few years ago the consulting company I worked for had a client whose CTO insisted we use Node and some weird cloud-based database for a greenfield project. A month or so after we started, the client fired the CTO.

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