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
elcannon
Jun 24, 2009
Does anyone have any terrible programmer opinions/experiences on serverless stuff? I'm currently doing work for a small startup and the overall setup for our webapp is 6 or so aspnetcore apps running in docker on an ec2 instance. This has worked with minimal hiccups so far with the CI/CD pipeline just being updates to the docker-compose file, but the more I read about putting aspnetcore in lambda the more I am leaning towards ditching our current setup and going down that path. The main thing that is drawing me towards it is that I know gently caress all about maintaining linux things and I'm super paranoid that I have something misconfigured and there are logs slowly building that are going to crash things in the middle of the night 3 months from now or there is some security thing I am overlooking. The scalability options and cost benefits are nice but I don't see us getting over ~10k requests a day for a very long time so I'm mostly focused on finding a solution that is going to involve as little interaction with the infrastructure as possible.

Adbot
ADBOT LOVES YOU

abigserve
Sep 13, 2009

this is a better avatar than what I had before
Yeah dog that story makes you sound very unprofessional. You guys don't see eye to eye on design decisions but you are of equal level so that's part of working in a team.

Honestly it comes off like you are insecure - you want "peers" who you can assert authority over when they disagree with you. Ive worked with people like that both as an equal and a subordinate and it sucks

The guy might be doing poo poo wrong and bad but I'd use this opportunity to look inward my friend.

Symbolic Butt
Mar 22, 2009

(_!_)
Buglord

congrats on your new job!

most programmers I had to work in my life were a lot like the dude you're describing. imo you should care less and chill. don't waste time arguing pedantic poo poo with him, git revert his blocking busywork (perk of being a team lead?) and just report that he's useless and wasting everyone's time.

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.

elcannon posted:

Does anyone have any terrible programmer opinions/experiences on serverless stuff?

yeah so you basically just described wanting to use azure app service

Shaggar
Apr 26, 2006

elcannon posted:

Does anyone have any terrible programmer opinions/experiences on serverless stuff? I'm currently doing work for a small startup and the overall setup for our webapp is 6 or so aspnetcore apps running in docker on an ec2 instance. This has worked with minimal hiccups so far with the CI/CD pipeline just being updates to the docker-compose file, but the more I read about putting aspnetcore in lambda the more I am leaning towards ditching our current setup and going down that path. The main thing that is drawing me towards it is that I know gently caress all about maintaining linux things and I'm super paranoid that I have something misconfigured and there are logs slowly building that are going to crash things in the middle of the night 3 months from now or there is some security thing I am overlooking. The scalability options and cost benefits are nice but I don't see us getting over ~10k requests a day for a very long time so I'm mostly focused on finding a solution that is going to involve as little interaction with the infrastructure as possible.

move to azure so you don't have to deal with dumb poo poo like containers

taqueso
Mar 8, 2004


:911:
:wookie: :thermidor: :wookie:
:dehumanize:

:pirate::hf::tinfoil:

Metrics like x has more stars or y is pushed by facebook are essentially meaningless, you shouldn't be 'losing' the discussion due to those things. You need to either put your foot down as the senior dev or work on your debating skills.

Sometimes people need to get swore at a bit. But, of course, there is decorum required in a work environment. I think everyone has had moments where they lose their cool and you can hopefully look back on it and remember before it happens next time. It sounds like this whole thing could have been stopped much earlier. Why weren't they working on their restructuring in a different branch so everyone could continue on as normal? If their way is actually better, they need to prove it before they destroy everything.

We need more information on the file structure part to make a judgement. Sticking with standard practice is good, but using a structure that matches your project structure is good too. "Unconventional" could mean so many different things.

abigserve posted:

Yeah dog that story makes you sound very unprofessional. You guys don't see eye to eye on design decisions but you are of equal level so that's part of working in a team.

Honestly it comes off like you are insecure - you want "peers" who you can assert authority over when they disagree with you. Ive worked with people like that both as an equal and a subordinate and it sucks

The guy might be doing poo poo wrong and bad but I'd use this opportunity to look inward my friend.

This is a good point, do you work well with juniors because they don't question what you do?

taqueso fucked around with this message at 05:16 on Jun 2, 2019

elcannon
Jun 24, 2009

Fiedler posted:

yeah so you basically just described wanting to use azure app service

poo poo the more I think about it the more I think this is probably the way to go. We have a ton of aws credit so I've been mostly stuck in that world but this seems like it is definitely worth it to ditch all the infrastructure janitoring. We're already using azure devops for all the CI/CD stuff so this is probably an easy sell. I've been getting pressure to look into some type of kubernetes solution (we ran a sort of pilot with a company that wanted our app run in their kubernetes environment which is what prompted moving everything into containers in the first place) but I feel like it is adding a huge amount of complexity for little gain in our case.

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.
you might qualify for free poo poo:

https://azure.microsoft.com/en-us/free/free-account-faq/

Symbolic Butt
Mar 22, 2009

(_!_)
Buglord

abigserve posted:

Honestly it comes off like you are insecure - you want "peers" who you can assert authority over when they disagree with you. Ive worked with people like that both as an equal and a subordinate and it sucks

adding another perspective to this. as someone who teaches programming for a living I found easier to teach newbies than people with a couple of years of programming experience. not because I need to assert authority over them, nor because I don't like being questioned. it's just because they tend to be waaay more close minded.

for example, teaching a newbie to use a for-each loop is not that hard. it's seriously challenging though when the person is already used to looping over indices, it's hard to convince people to concede and try another approach to something that they consider trivial and part of their core style.

so yeah, I can totally see that happening here. instead of spending a few minutes trying to understand the idiosyncratic file organization (like the juniors probably did) the intermediate dude decides to refactor everything his way. it's the oldest story.

even assuming that pk's file organization is complete dogshit bad, I still think the guy shouldn't start refactoring it willy-nilly. it goes both ways, it's bad teamwork on his part.


fake edit: btw I'm betting this is a javascript app. almost every js dev has their own bespoke way of organizing projects.

4lokos basilisk
Jul 17, 2008


gonadic io posted:

this is a compile error, java stack traces are at runtime. in java you'd get a compile error too, not an exception stack trace.

turns out that hoogle now has an option to search individual packages: https://hoogle.haskell.org/?hoogle=scale&scope=package%3Atidal
i'm glad they improved it, it was pretty embarrassing that fp complete had a much better version than the official one

anyway that scale doesn't do what you want, it involves musical scales. Looking at old versions I found the old scale: https://hackage.haskell.org/package/tidal-0.9.10/docs/Sound-Tidal-Strategies.html#v:scale

and the looking at the changelog I found:


so you now want: https://hackage.haskell.org/package/tidal-1.0.13/docs/Sound-Tidal-UI.html#v:range

hey thanks this clears up a lot of stuff for me. trying to set vscode up with haskelly now to maybe get "find definition" working

Beamed
Nov 26, 2010

Then you have a responsibility that no man has ever faced. You have your fear which could become reality, and you have Godzilla, which is reality.


elcannon posted:

Does anyone have any terrible programmer opinions/experiences on serverless stuff? I'm currently doing work for a small startup and the overall setup for our webapp is 6 or so aspnetcore apps running in docker on an ec2 instance. This has worked with minimal hiccups so far with the CI/CD pipeline just being updates to the docker-compose file, but the more I read about putting aspnetcore in lambda the more I am leaning towards ditching our current setup and going down that path. The main thing that is drawing me towards it is that I know gently caress all about maintaining linux things and I'm super paranoid that I have something misconfigured and there are logs slowly building that are going to crash things in the middle of the night 3 months from now or there is some security thing I am overlooking. The scalability options and cost benefits are nice but I don't see us getting over ~10k requests a day for a very long time so I'm mostly focused on finding a solution that is going to involve as little interaction with the infrastructure as possible.

don't do it using lambdas in aws tbh if you're intent on aspnetcore. the warmup times when it needs to become more parallel are genuinely impactful, unless your api is only being used by other apis asynchronously. it's just too much a pain in the rear end.

throw it into a docker container run it in eks or whatever your favorite choice here is and be done with it. throw an elb and apigw in front.

Aramoro
Jun 1, 2012




PleasureKevin posted:

I have an unconventional way of organizing files and folders (which nearly every junior loves because it's good)

Lol terrible programmer identified. Junior developers love what you do because it's lazy and it means they can be lazy. They'll never disagree with anything you say seriously because you'll go tattle tale to your good chum the CTO and try to get them fired.

cinci zoo sniper
Mar 15, 2013




CRIP EATIN BREAD posted:

if i couldnt swear at work my head would explode

there is a rather stark difference between swearing at your computer, which no one should give a poo poo about unless you're calling your computer a gently caress at 120 dB in your open space office, and slinging personal insults at other people for whatever reason

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.
if you get mad enough to yell at a coworker over a disagreement about how to organize files then you are definitely caring about the wrong thing. why give a gently caress about the code? it's just some terrible code that will ultimately serve no purpose. no matter what you do, it will be rewritten and replaced with some other terrible, terrible code soon enough. gently caress the code. no, you should care about your coworkers, who are your allies in your collective endeavor to extract as many figgies as possible from your employer.

Progressive JPEG
Feb 19, 2003

if it gets to where youre swearing at a coworker, that's your own failing and not theirs. i did that myself once, and they deserved it, but it still wasnt worth it, and it'd have been much more productive to just find a way to work with them than to make myself feel better by yelling at them. even if you think they're completely irredeemable, you should think of them as a force to be harnessed that can do great things given the right project

programming is like any other aspect of business and has more to do with people than it does technical requirements. it doesnt matter if something is technically "perfect" if it doesnt fulfill a real need

redleader
Aug 18, 2005

Engage according to operational parameters
not caring is basically why i autoapprove all prs

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slćgt skal fřlge slćgters gang



redleader posted:

not caring is basically why i autoapprove all prs

that is obvious, you approved that post

Zlodo
Nov 25, 2006

in my experience that's a common downside of juniors: they are more often ego driven and unwilling to listen whereas seniors with 15-20 years experience are usually more laid back bc they don't feel like they have anything to prove anymore

(I know I was kind of a piece of poo poo when I was a junior)

then again at my job we have a lot more juniors than in the past (we couldn't grow enough by just hiring seniors anymore) and we don't have these kind of issues, they listen to us and we listen to them and it works, but our middle management is pretty good too, which helps

but one thing is that we are very very careful not to react angrily and throw blame around and create resentment when a problem arises. If someone really fucks up repeatedly they get a stern talking to by their manager, in private.

then again we are also very careful not to hire shitheads in the first place, because we are a sufficiently large company to afford to be picky

cinci zoo sniper
Mar 15, 2013




Zlodo posted:

in my experience that's a common downside of juniors: they are more often ego driven and unwilling to listen whereas seniors with 15-20 years experience are usually more laid back bc they don't feel like they have anything to prove anymore

(I know I was kind of a piece of poo poo when I was a junior)

then again at my job we have a lot more juniors than in the past (we couldn't grow enough by just hiring seniors anymore) and we don't have these kind of issues, they listen to us and we listen to them and it works, but our middle management is pretty good too, which helps

but one thing is that we are very very careful not to react angrily and throw blame around and create resentment when a problem arises. If someone really fucks up repeatedly they get a stern talking to by their manager, in private.

then again we are also very careful not to hire shitheads in the first place, because we are a sufficiently large company to afford to be picky

bah i started to write a long rear end vent post about my company when i read this. instead, i'll share my latest discovery

let table foo have a json field bar
let table baz have a varchar field latest_bar

the process, as implied, is that a baz can have any number of sequential foos, wherein each foo has a bar. to make business strategy as a company we cluster these foos on a monthly basis, and analyse bars on per-cluster basis.

bar itself is a json document that was up until now thought to work like this - each foo passes a sequential process that has multiple steps where it can get assigned a step-specific bar, and each triggered step will thus write its thing into bar, in natural order (don't ask why natural order is even relevant here, and why not having explicit numbers of any sort on things). then bar gets written into foo.bar, and foo.bar gets copied into baz.latest_bar subsequently.

for the aforementioned analysis we then take first bar of each foo.

what happens in reality:
- one process writes only one bar regardless of the execution details. unless it's a foo with two attributes, then its {"foo1":"attr1.value", "foo2":"attr2.value"}.
- write operation consists of reading baz.latest_bar, appending the current bar to it, and writing the result back to baz.latest_bar.
- then baz.latest_bar is read by a different part of backend, cast into json, and inserted into foo.bar. this cast operation enforces some weird sorting, that is neither alphabetically ascending nor descending (we're talking about keys in english, and hopefully not (or maybe??) values).
- if the specific bar is present in latest_bar already, it only gets its value updated (plenty of possible bars are boolean).

in other words, each foo.bar has turned out to be an illogically and pseudo-randomly sorted collection of the first bar of each set of bars ever assigned to baz up until the current foo, inclusive, that does not include assignments with identical values. so you can have a history of bars like this:

D
B - BD
C - BCD
F - FBCD
F - FBCD # entire 25% chance to guess which bar happened here and where you must put your money :)

on the other hand, i'm soon going to become latvia's foremost expert on optimisation of dictionary diffing performance in python

cinci zoo sniper fucked around with this message at 15:07 on Jun 2, 2019

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slćgt skal fřlge slćgters gang



difflib.SequenceMatcher in the std library is p good for add/remove/replace diffs but afaik there's no good way in any language to do move diffs in less than like n^m time

best I got so far is tagging stuff and then comparing all a with all b while removing matches = these are the moves, the rest are whatever diff they were

cinci zoo sniper
Mar 15, 2013




Krankenstyle posted:

difflib.SequenceMatcher in the std library is p good for add/remove/replace diffs but afaik there's no good way in any language to do move diffs in less than like n^m time

best I got so far is tagging stuff and then comparing all a with all b while removing matches = these are the moves, the rest are whatever diff they were

hm, the second part sounds like a plan. assign whatever index to master-list of dicts, discard the ones matching with i-1, then diff the rest. which is still a lot, it's 10^7 times a tinyint worth of not the smallest dictionaries

for diffs the plan so far is to use dictionary view objects, e.g.

structural_difference = current_dict.keys() - previous_dict
value_difference = {key for key in previous_dict.keys() & current_dict if previous_dict[key] != current_dict[key]}

people also appear to like using sets for this purpose, but that approach is strictly less performant (unless there's some obscure edge case)

Carthag Tuek
Oct 15, 2005

Tider skal komme,
tider skal henrulle,
slćgt skal fřlge slćgters gang



maybe bloom filter on dict keys (or vals if that's more suitable for your case) can cut down time??? I've only really diffed strings but afaik any seq should work

cinci zoo sniper
Mar 15, 2013




eh, within a single baz i must do a sequential diff of each bar that is different from the previous one so i think the only real speedup, other than adding an index so i can just split the redundant ones out and merge them back in en-bulk - which is easy and fast to do as is, would be to improve upon the cython dict implementation. which is ways ways out from anything i'm remotely capable of conceiving (and i have the saving grace that i, to think of it, can easily chunk this process on baz level and, ergo, parallelise it)

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.
that's really difficult to follow with 'baz', 'foo', and 'bar'

does baz have a latest_bar or a latest_foo? you mention both but i think you mean latest_bar?

cinci zoo sniper
Mar 15, 2013




Fiedler posted:

that's really difficult to follow with 'baz', 'foo', and 'bar'

does baz have a latest_bar or a latest_foo? you mention both but i think you mean latest_bar?

my bad, latest_bar indeed. unfortunately i can't discuss this in terms of actual logic, so i have to use mock names.

tl;dr:

BAZ entity sequentially spawns FOO entities
each FOO is consumed once by a BAR generating process
output of the process is stored with each FOO
parent BAZ is updated each time to store the copy of this output for the most recent FOO

well, that was what it should've been at least :v:

cinci zoo sniper
Mar 15, 2013




c tp s: started toying around with mssql express on windows container docker and its pretty chill. a bit restricted, sure, but thus far i only wish that express had ssis available.

cinci zoo sniper
Mar 15, 2013




im not even sure why i'm doing that mssql stuff, but tbh t-sql seems cool and so seem all the batteries in it, and it's something i can actually use meaningfully without touching my budget or oracle

i mus say though that ssms is not exactly straightfoward and [table].[field] is weird/unnecessarily verbose i feel?

simble
May 11, 2004

cinci zoo sniper posted:

i mus say though that ssms is not exactly straightfoward and [table].[field] is weird/unnecessarily verbose i feel?

bracket escaping is almost never required. also using fully qualified columns is also almost never required if you’re referencing 1 table. if you’re referencing more than 1 table alias it

select a.* from tablea a join tableb b on a.fk=b.pk

cinci zoo sniper
Mar 15, 2013




simble posted:

bracket escaping is almost never required. also using fully qualified columns is also almost never required if you’re referencing 1 table. if you’re referencing more than 1 table alias it

select a.* from tablea a join tableb b on a.fk=b.pk

yeah im okay-ish enough with sql, for a ds guy, and found out rather quickly that square bracketing is not required - just an ssms default that i've not ecountered before. in other words i'm lazily curious as to what is the history behind that

simble
May 11, 2004

bracket escaping is required if your db table or schema has a space in it iirc

cinci zoo sniper
Mar 15, 2013




simble posted:

bracket escaping is required if your db table or schema has a space in it iirc

well, that's... sensibly underwhelming, i'm not sure what i expected :v:

Wheany
Mar 17, 2006

Spinyahahahahahahahahahahahaha!

Doctor Rope

cinci zoo sniper posted:

my bad, latest_bar indeed. unfortunately i can't discuss this in terms of actual logic, so i have to use mock names.

i believe the yospos way is to use butts, farts, poops etc as placeholders.

Sagebrush
Feb 26, 2012

Wheany posted:

i believe the yospos way is to use butts, farts, poops etc as placeholders.

chome, mome, lo, marf, tayne, etc

please

DONT THREAD ON ME
Oct 1, 2002

by Nyc_Tattoo
Floss Finder
i call them megastinktastic variables

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.

cinci zoo sniper posted:

my bad, latest_bar indeed. unfortunately i can't discuss this in terms of actual logic, so i have to use mock names.

tl;dr:

BUTT entity sequentially spawns POOP entities
each POOP is consumed once by a TURD generating process
output of the TURD process is stored with each POOP
parent BUTT is updated each time to store the copy of this TURD output for the most recent POOP

well, that was what it should've been at least :v:

updated to meet yospos standard naming conventions

Symbolic Butt
Mar 22, 2009

(_!_)
Buglord
I'm not sure if I understood the problem but I feel like you should store the diff steps as a trie (or like partial hash entries?)

if you can, try to make it more concrete with some code, like

Python code:
def baz():
    while True:
        yield foo

baz_entity = baz()

for foo in baz_entity:
    bar_output = bar_process.consume(foo)
    baz_entity.update(bar_output)

eschaton
Mar 7, 2007

Don't you just hate when you wind up in a store with people who are in a socioeconomic class that is pretty obviously about two levels lower than your own?

DONT THREAD ON ME posted:

i call them megastinktastic variables

redleader
Aug 18, 2005

Engage according to operational parameters

Sagebrush posted:

chome, mome, lo, marf, tayne, etc

please

now tayne i can get into


cinci zoo sniper posted:

im not even sure why i'm doing that mssql stuff, but tbh t-sql seems cool and so seem all the batteries in it, and it's something i can actually use meaningfully without touching my budget or oracle

i mus say though that ssms is not exactly straightfoward and [table].[field] is weird/unnecessarily verbose i feel?

yeah, as mentioned, square brackets are for escaping table names (funny characters, reserved keywords etc). it's equivalent to " in postgres

also i don't know if you're including the schema name in your queries (FROM schema.table etc), but using the schema name is often not needed, especially if everything's in the default dbo schema. this is nice for ad hoc queries

Fiedler
Jun 29, 2002

I, for one, welcome our new mouse overlords.

cinci zoo sniper posted:

well, that's... sensibly underwhelming, i'm not sure what i expected :v:

sql server has alarmingly few restrictions on object names. dots are allowed in object names. brackets are allowed in object names. you can have a column literally named "[dbo].[table1].[column1]":
create table dbo.table1 ([[dbo]].[table1]].[column1]]] int)

which naturally you would query like so:
select [dbo].[table1].[[dbo]].[table1]].[column1]]] from dbo.table1

Adbot
ADBOT LOVES YOU

Chopstick Dystopia
Jun 16, 2010


lowest high and highest low loser of: WEED WEE
k

Fiedler posted:

sql server has alarmingly few restrictions on object names. dots are allowed in object names. brackets are allowed in object names. you can have a column literally named "[dbo].[table1].[column1]":
create table dbo.table1 ([[dbo]].[table1]].[column1]]] int)

which naturally you would query like so:
select [dbo].[table1].[[dbo]].[table1]].[column1]]] from dbo.table1

this is violence

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