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
NihilCredo
Jun 6, 2011

iram omni possibili modo preme:
plus una illa te diffamabit, quam multæ virtutes commendabunt

simble posted:

whatever you think it is divide by 2 and add a time unit

ie 3 weeks becomes 1.5 months

i heard that as 'add a time unit, then double the number' (3 weeks -> 6 months)

Adbot
ADBOT LOVES YOU

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

Wheany posted:

(oneliner)
15 minutes
30 minutes
1 hour
half day
1 day
3 days
1 week
2 weeks
1 month
3 months
6 months
1 year
2 years

great, millennials are ruining tshirt sizes. I used to be a medium now I’m a 2 weeks???

Wheany
Mar 17, 2006

Spinyahahahahahahahahahahahaha!

Doctor Rope
I'm not a millennial :corsair:

DELETE CASCADE
Oct 25, 2017

i haven't washed my penis since i jerked it to a phtotograph of george w. bush in 2003

Wheany posted:

(oneliner)
15 minutes
30 minutes
1 hour
10 years
10 days
3 days
1 sprint
2 weeks
1 mythical man-month
300 years
that's np-hard, sorry
1 year
2 years

the sense of time i have as a millennial programmer is so weird

Soricidus
Oct 21, 2010
freedom-hating statist shill

Wheany posted:

(oneliner)
15 minutes
idk a while
when it’s done
stop hassling me you’re just slowing me down
I quit, ask my replacement, lol good luck

Doom Mathematic
Sep 2, 2008

Oneiros posted:

can you imagine a manager ever giving a spec as well written as the typical advent of code problem?

I mean, if you can provide a spec as detailed as the typical Advent of Code problem, you probably know the answer to the problem already and you're just testing. Taking a vaguely posed problem and translating it into specific parameters for programming is a big part of this job.

duz
Jul 11, 2005

Come on Ilhan, lets go bag us a shitpost


NihilCredo posted:

i heard that as 'add a time unit, then double the number' (3 weeks -> 6 months)

https://www.youtube.com/watch?v=8xRqXYsksFg

MononcQc
May 29, 2007

mystes posted:

Today's advent of code was really easy, wow.

E: gently caress the twitter unfurl. Used awk with a friend and we came up with a tweet-sized awk solution for part 2:

seq $START $STOP | awk '/'$(for i in $(seq 0 9); do echo "([^$i]|^)$i$i([^$i]+|$)"; done | tr '\n' '|' | sed 's/.$//')'/ && !/[1-9]0|[2-9][01]|[3-9][0-2]|[4-9][0-3]|[5-9][0-4]|[6-9][0-5]|[7-9][0-6]|[89][0-7]|9[0-8]/ {print $0} | wc -l


the expanded expression for the regex is:

seq $START $STOP | awk '/([^0]|^)00([^0]+|$)|([^1]|^)11([^1]+|$)|([^2]|^)22([^2]+|$)|([^3]|^)33([^3]+|$)|([^4]|^)44([^4]+|$)|([^5]|^)55([^5]+|$)|([^6]|^)66([^6]+|$)|([^7]|^)77([^7]+|$)|([^8]|^)88([^8]+|$)|([^9]|^)99([^9]+|$)/ && !/[1-9]0|[2-9][01]|[3-9][0-2]|[4-9][0-3]|[5-9][0-4]|[6-9][0-5]|[7-9][0-6]|[89][0-7]|9[0-8]/ {print $0}' | wc -l

I'm not spoiling it because you have to really try to read the regex

MononcQc fucked around with this message at 00:25 on Dec 5, 2019

Shaman Linavi
Apr 3, 2012

back on bug team for the last two days of the sprint because leads have managers up their rear end since we've magically gained 120 bugs over the last 2 weeks

did my due diligence by taking my laptop home and throwing it in a corner

also 2 more people put in their notices and several more have already said they leaving after bonus time in february

first few sprints of next year gonna be lit af

mystes
May 31, 2006

MononcQc posted:

E: gently caress the twitter unfurl. Used awk with a friend and we came up with a tweet-sized awk solution for part 2:

seq $START $STOP | awk '/'$(for i in $(seq 0 9); do echo "([^$i]|^$i$i)[^$i]+|$)"; done | tr '\n' '|' | sed 's/.$//')'/ && !/[1-9]0|[2-9][01]|[3-9][0-2]|[4-9][0-3]|[5-9][0-4]|[6-9][0-5]|[7-9][0-6]|[89][0-7]|9[0-8]/ {print $0}' | wc -l


the expanded expression for the regex is:

seq $START $STOP | awk '/([^0]|^)00([^0]+|$)|([^1]|^)11([^1]+|$)|([^2]|^)22([^2]+|$)|([^3]|^)33([^3]+|$)|([^4]|^)44([^4]+|$)|([^5]|^)55([^5]+|$)|([^6]|^)66([^6]+|$)|([^7]|^)77([^7]+|$)|([^8]|^)88([^8]+|$)|([^9]|^)99([^9]+|$)/ && !/[1-9]0|[2-9][01]|[3-9][0-2]|[4-9][0-3]|[5-9][0-4]|[6-9][0-5]|[7-9][0-6]|[89][0-7]|9[0-8]/ {print $0}' | wc -l

I'm not spoiling it because you have to really try to read the regex
Thanks, I hate it.

TheFluff
Dec 13, 2006

FRIENDS, LISTEN TO ME
I AM A SEAGULL
OF WEALTH AND TASTE

MononcQc posted:

E: gently caress the twitter unfurl. Used awk with a friend and we came up with a tweet-sized awk solution for part 2:

seq $START $STOP | awk '/'$(for i in $(seq 0 9); do echo "([^$i]|^$i$i)[^$i]+|$)"; done | tr '\n' '|' | sed 's/.$//')'/ && !/[1-9]0|[2-9][01]|[3-9][0-2]|[4-9][0-3]|[5-9][0-4]|[6-9][0-5]|[7-9][0-6]|[89][0-7]|9[0-8]/ {print $0}' | wc -l


the expanded expression for the regex is:

seq $START $STOP | awk '/([^0]|^)00([^0]+|$)|([^1]|^)11([^1]+|$)|([^2]|^)22([^2]+|$)|([^3]|^)33([^3]+|$)|([^4]|^)44([^4]+|$)|([^5]|^)55([^5]+|$)|([^6]|^)66([^6]+|$)|([^7]|^)77([^7]+|$)|([^8]|^)88([^8]+|$)|([^9]|^)99([^9]+|$)/ && !/[1-9]0|[2-9][01]|[3-9][0-2]|[4-9][0-3]|[5-9][0-4]|[6-9][0-5]|[7-9][0-6]|[89][0-7]|9[0-8]/ {print $0}' | wc -l

I'm not spoiling it because you have to really try to read the regex

:nice:

I think perl might actually have been more readable tho :v:

MononcQc
May 29, 2007

TheFluff posted:

:nice:

I think perl might actually have been more readable tho :v:

yeah it could have possibly helped with backreferences, but awk is a bit more unusual and therefore more fun.

Blinkz0rz
May 27, 2001

MY CONTEMPT FOR MY OWN EMPLOYEES IS ONLY MATCHED BY MY LOVE FOR TOM BRADY'S SWEATY MAGA BALLS

MononcQc posted:

E: gently caress the twitter unfurl. Used awk with a friend and we came up with a tweet-sized awk solution for part 2:

seq $START $STOP | awk '/'$(for i in $(seq 0 9); do echo "([^$i]|^$i$i)[^$i]+|$)"; done | tr '\n' '|' | sed 's/.$//')'/ && !/[1-9]0|[2-9][01]|[3-9][0-2]|[4-9][0-3]|[5-9][0-4]|[6-9][0-5]|[7-9][0-6]|[89][0-7]|9[0-8]/ {print $0}' | wc -l


the expanded expression for the regex is:

seq $START $STOP | awk '/([^0]|^)00([^0]+|$)|([^1]|^)11([^1]+|$)|([^2]|^)22([^2]+|$)|([^3]|^)33([^3]+|$)|([^4]|^)44([^4]+|$)|([^5]|^)55([^5]+|$)|([^6]|^)66([^6]+|$)|([^7]|^)77([^7]+|$)|([^8]|^)88([^8]+|$)|([^9]|^)99([^9]+|$)/ && !/[1-9]0|[2-9][01]|[3-9][0-2]|[4-9][0-3]|[5-9][0-4]|[6-9][0-5]|[7-9][0-6]|[89][0-7]|9[0-8]/ {print $0}' | wc -l

I'm not spoiling it because you have to really try to read the regex

this is violence

Presto
Nov 22, 2002

Keep calm and Harry on.

MononcQc posted:

I'm not spoiling it because you have to really try to read the regex
Or I could just not read the regex.

MononcQc
May 29, 2007

Presto posted:

Or I could just not read the regex.

Yeah that's what I meant. Not worth spoilerising it since one would really have to go through the regex to get the spoil out of it.

Soricidus
Oct 21, 2010
freedom-hating statist shill

TheFluff posted:

:nice:

I think perl might actually have been more readable tho :v:

re: terrible programming: I think perl might have been more readable tho

Ciaphas
Nov 20, 2005

> BEWARE, COWARD :ovr:


c tp s: today we had an app crashing when it navigated to certain pages. i thought it was due to some underlying thread races; i fixed those, but the problem was still happening

eventually we found the real root-cause, and realized two things that i wish i'd worked out much sooner
- recent changes added http request paths and queries* to our kernel logger
- at the bottom of it all, these were concatenated and passed to NKDbgPrintf() as a single argument

fuuuuuuuuuuuuuuuuuuuuuuck

* ' ' in the query becomes "%20"

Ciaphas fucked around with this message at 02:20 on Dec 5, 2019

The Fool
Oct 16, 2003


that's 'podcast makes car stereo crash' level

Ciaphas
Nov 20, 2005

> BEWARE, COWARD :ovr:


question regarding the fix, is changing it from NKDbgPrintf(percentRiddledString) to NKDbgPrintf("%s", percentRiddledString) good enough or would that be committing a faux pas? seems less effort than loving with special character escapes, especially when we want the raw

(NKDbgPrintf has exactly the same semantics as printf going by the scant docs i could find)

Ciaphas fucked around with this message at 03:32 on Dec 5, 2019

Carthag Tuek
Oct 15, 2005

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



weird, it seems like my time.sleep gets stuck when the computer (mac) hibernates? though according to docs it shouldnt??

see how it is stuck from 19:48 and starts back up at 3:28 when i interrupt the sleep:
code:
2019-12-04 19:49:38,760 -  WARNING - Bandwidth limit exceeded
2019-12-04 19:49:38,760 -     INFO - Waiting for 60:8 minutes before retrying (1).
^C2019-12-05 03:28:29,463 -    ERROR - Received invalid response: <Response [509]> Traceback (most recent call last):
  File "get.py", line 129, in fetch_image
    return fetch_image(url, retry_count+1)
  File "get.py", line 105, in fetch_image
    time.sleep(sleeptime)
KeyboardInterrupt

2019-12-05 03:28:29,470 -     INFO - Clearing cookies
2019-12-05 03:28:29,470 -     INFO - Attempting login
2019-12-05 03:28:31,920 -     INFO - Fetching https://....
code:
def fetch_image(url, retry_count=0):
	if retry_count > 0:
		if retry_count > args.max_retries:
			log.critical(f'Retried more than {retry_count} times. Aborting.')
			exit()
		sleeptime = 60*60*retry_count + random.uniform(5.0, 10.0)
		minutes, seconds = divmod(sleeptime, 60)
		log.info(f'Waiting for {minutes:.0f}:{seconds:.0f} minutes before retrying ({retry_count}).')
		time.sleep(sleeptime)								# line 105
	log.info(f'Fetching {url}')
	try:
		r = sess.get(
			url,
			allow_redirects=True,
		)
		log.debug(f'url: {url}')
		log.debug(f'Response headers: {r.headers}')
		log.debug(f'Response headers: {r.history}')
		log.debug(f'Response cookies: {r.cookies}')
		log.debug(f'Session cookies: {sess.cookies}')
		if r.status_code == 200 and r.headers['Content-Type'] == 'image/jpeg':
			return r.content
		elif r.status_code == 509:
			log.warning(f'Bandwidth limit exceeded')
			return fetch_image(url, retry_count+1)					# line 129
		else:
			log.error(f'Received invalid response: {r} {r.text}')
			if args.attempt_login:
				login(s, config)
				return fetch_image(url)
			else:
				return fetch_image(url, retry_count+1)
	except:
		log.error(f'Request failed: {r} {traceback.format_exc()}')
		if args.attempt_login:
			login(s, config)
			return fetch_image(url)
		else:
			return fetch_image(url, retry_count+1)
maybe i hosed up the logic but i can't see where

Carthag Tuek fucked around with this message at 03:52 on Dec 5, 2019

Qtotonibudinibudet
Nov 7, 2011



Omich poluyobok, skazhi ty narkoman? ya prosto tozhe gde to tam zhivu, mogli by vmeste uyobyvat' narkotiki

Shaman Linavi posted:

back on bug team for the last two days of the sprint because leads have managers up their rear end since we've magically gained 120 bugs over the last 2 weeks

what is this magical world where engineering management gives a drat about fixing bugs

i scream into the jira void, waiting for us to declare tech bankruptcy and discard the current bug report project, replacing it with a new one that will meet the same fate.

elcannon
Jun 24, 2009

Ciaphas posted:

question regarding the fix, is changing it from NKDbgPrintf(percentRiddledString) to NKDbgPrintf("%s", percentRiddledString) good enough or would that be committing a faux pas? seems less effort than loving with special character escapes, especially when we want the raw

(NKDbgPrintf has exactly the same semantics as printf going by the scant docs i could find)

Wikipedia at least says you are fine:
https://en.wikipedia.org/wiki/Uncontrolled_format_string
Although at that point you really aren't using the format string at all, so if there is a different print function that doesn't use one it might be more appropriate maybe?

mystes
May 31, 2006

Ciaphas posted:

question regarding the fix, is changing it from NKDbgPrintf(percentRiddledString) to NKDbgPrintf("%s", percentRiddledString) good enough or would that be committing a faux pas? seems less effort than loving with special character escapes, especially when we want the raw

(NKDbgPrintf has exactly the same semantics as printf going by the scant docs i could find)
Jesus christ, don't pass random strings as the first argument to printf-like functions! "%s" should at least be safe.

brap
Aug 23, 2004

Grimey Drawer
yeah your compiler should be warning if the first argument to printf is not a constant

CMYK BLYAT! posted:

declare tech bankruptcy

uh this isn’t actually a thing is it?

Asleep Style
Oct 20, 2010

brap posted:

yeah your compiler should be warning if the first argument to printf is not a constant


uh this isn’t actually a thing is it?

I DECLARE TECHNICAL BANKRUPTCY

CPColin
Sep 9, 2003

Big ol' smile.

brap posted:


uh this isn’t actually a thing is it?

It just means throwing away the bug queue and starting over. It's exactly as pointless as it sounds.

Jabor
Jul 16, 2010

#1 Loser at SpaceChem
If you throw away the existing bug queue, suddenly you don't have any bugs!

This means your product is higher quality! All those bugs that people reported previously definitely aren't still issues!

TheFluff
Dec 13, 2006

FRIENDS, LISTEN TO ME
I AM A SEAGULL
OF WEALTH AND TASTE
https://twitter.com/dmofengineering/status/1007767512946077696?s=2

Ciaphas
Nov 20, 2005

> BEWARE, COWARD :ovr:


brap posted:

yeah your compiler should be warning if the first argument to printf is not a constant

My Build Environment is a Piece Of poo poo

(edit) still beats the hell out of oldjob, at least

Ciaphas fucked around with this message at 07:44 on Dec 5, 2019

Nomnom Cookie
Aug 30, 2009




ahhh second edition, the c++ of d&d. petrification kinda makes sense though. this should be a save vs breath weapon

Qtotonibudinibudet
Nov 7, 2011



Omich poluyobok, skazhi ty narkoman? ya prosto tozhe gde to tam zhivu, mogli by vmeste uyobyvat' narkotiki

brap posted:

uh this isn’t actually a thing is it?

it shouldn't be, but in practice a combination of the following are true:
* people filing bugs aren't good at their jobs. they file bugs and feature requests that are functionally useless ("thing didn't work!" with no supporting data or reproduction steps and "a customer complained that thing isn't good enough" with no explanation of why or evaluation of whether the customer is just an idiot). half of these are duplicates or variations on a theme.
* PMs aren't good at their jobs. they fail to enforce ticket standards and do not reject bad tickets, determine whether good tickets will get worked on any time in the remotely near future, or even acknowledge that they've performed review of the tickets.
* engineers aren't good at their jobs in the sense that they produce bugs, but are okay at their jobs in the sense that they are continually working on improving products. systems are rearchitected, and bugs that used to exist in older implementation are cleared inadvertently. the bug tickets for these are not updated to indicate that they are fixed because neither PM nor engineering have ever looked at the ticket.

after a point you wind up with a bunch of tickets that are no longer relevant, too vague to understand (and long since gone from the memory of whoever filed them), and of unknown severity because nobody triaged them. working yourself out of this backlog is basically impossible unless you know no new tickets will come in (lol), so it's reasonable enough to just say "gently caress it, we did bad before, and we'll do better in the future, but we need a fresh start". poo poo that actually matters will presumably get filed again because users will continue to report it.

the problem is that people seldom analyze *why* they failed last time/ask other stakeholders why the process broke down and generated a gigantic mess, and instead try to tackle the issue by designing a new, improved process based on their personal preferences, on the assumption that the old process failed because its architects were incompetent (not strictly wrong, but not really the root of the problem). managers present this new process to all involved, assume that it will work perfectly and avoid past issues if followed, and blame others for not following the process properly when it inevitably fails because of shortcomings in the new process' design. the cycle begins anew.

Powerful Two-Hander
Mar 10, 2004

Mods please change my name to "Tooter Skeleton" TIA.



Powerful Two-Hander
Mar 10, 2004

Mods please change my name to "Tooter Skeleton" TIA.


^^^not joking my company has literally done this. the idea was to package applications under some sort of joint venture and then resell them but the apps they picked were poo poo and getting migrated to another company caused half the dev team to quit

assumption is that this is just gonna boomerang back on us later when we have to pay to re-license our own turd of a product back from them

meanwhile, I'm now getting poo poo for why a data conversion for a project that has no assigned resources hasn't been done. hmm let me think.

the PM actually said "well who has been managing this???", uh dude we all thought that was you.

DrPossum
May 15, 2004

i am not a surgeon

Asleep Style posted:

I DECLARE TECHNICAL BANKRUPTCY

new thread title please

Carthag Tuek
Oct 15, 2005

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



Krankenstyle posted:

weird, it seems like my time.sleep gets stuck when the computer (mac) hibernates? though according to docs it shouldnt??

(snip)

maybe i hosed up the logic but i can't see where

rewrote some of the logic, maybe thatll work better :shrug:

code:
def fetch_image(url, retry_count=0):
    if retry_count > 0:
        if retry_count > args.max_retries:
            log.critical(f'Retried more than {retry_count} times. Aborting.')
            exit()
        sleeptime = 60*60*retry_count + random.uniform(5.0, 10.0)
        minutes, seconds = divmod(sleeptime, 60)
        log.info(f'Waiting for {minutes:.0f}:{seconds:.0f} minutes before retrying ({retry_count}).')
        time.sleep(sleeptime)
    log.info(f'Fetching {url}')
    try:
        r = sess.get(
            url,
            allow_redirects=True,
        )
        if r.ok and r.headers['Content-Type'] == 'image/jpeg':
            return r.content
        elif r.status_code in (429, 509): # request/bandwidth throttling
            log.warning(r.reason)
            retry_count += 1
        else:
            log.error(f'Received invalid response: {r.headers} {r.text}')
            if args.attempt_login:
                login(s, config)
                retry_count = 0
            else:
                retry_count += 1
    except:
        log.error(f'Request failed: {r} {traceback.format_exc()}')
        if args.attempt_login:
            login(s, config)
            retry_count = 0
        else:
            retry_count += 1
    return fetch_image(url, retry_count)

Xarn
Jun 26, 2015

Ciaphas posted:

question regarding the fix, is changing it from NKDbgPrintf(percentRiddledString) to NKDbgPrintf("%s", percentRiddledString) good enough or would that be committing a faux pas? seems less effort than loving with special character escapes, especially when we want the raw

(NKDbgPrintf has exactly the same semantics as printf going by the scant docs i could find)

I would check if there is some sort of "just write this" function first, but otherwise I think it is perfectly kosher.

NihilCredo
Jun 6, 2011

iram omni possibili modo preme:
plus una illa te diffamabit, quam multæ virtutes commendabunt

brap posted:

yeah your compiler should be warning if the first argument to printf is not a constant

> printfn "This is totally a random string";;
This is totally a random string
val it : unit = ()

> printfn "This is totally a random %string";;
val it : (string -> unit) = <fun:it@2>

quote:

uh this isn’t actually a thing is it?

í'm doing something similar which is basically the tech version of 'starve the beast'. i try to get as few developers as possible assigned to work on the legacy projects, by finding an important non-legacy project for them to work on as soon as they are available. this increases the time to deliver of any legacy change request, and makes bugs in the legacy project slower to get fixed, discouraging the salesling and consultants from relying on the legacy projects at all, and pushing them towards suggesting new projects which are more fun to write

pokeyman
Nov 26, 2006

That elephant ate my entire platoon.

CMYK BLYAT! posted:

it shouldn't be, but in practice a combination of the following are true:
* people filing bugs aren't good at their jobs. they file bugs and feature requests that are functionally useless ("thing didn't work!" with no supporting data or reproduction steps and "a customer complained that thing isn't good enough" with no explanation of why or evaluation of whether the customer is just an idiot). half of these are duplicates or variations on a theme.
* PMs aren't good at their jobs. they fail to enforce ticket standards and do not reject bad tickets, determine whether good tickets will get worked on any time in the remotely near future, or even acknowledge that they've performed review of the tickets.
* engineers aren't good at their jobs in the sense that they produce bugs, but are okay at their jobs in the sense that they are continually working on improving products. systems are rearchitected, and bugs that used to exist in older implementation are cleared inadvertently. the bug tickets for these are not updated to indicate that they are fixed because neither PM nor engineering have ever looked at the ticket.

after a point you wind up with a bunch of tickets that are no longer relevant, too vague to understand (and long since gone from the memory of whoever filed them), and of unknown severity because nobody triaged them. working yourself out of this backlog is basically impossible unless you know no new tickets will come in (lol), so it's reasonable enough to just say "gently caress it, we did bad before, and we'll do better in the future, but we need a fresh start". poo poo that actually matters will presumably get filed again because users will continue to report it.

the problem is that people seldom analyze *why* they failed last time/ask other stakeholders why the process broke down and generated a gigantic mess, and instead try to tackle the issue by designing a new, improved process based on their personal preferences, on the assumption that the old process failed because its architects were incompetent (not strictly wrong, but not really the root of the problem). managers present this new process to all involved, assume that it will work perfectly and avoid past issues if followed, and blame others for not following the process properly when it inevitably fails because of shortcomings in the new process' design. the cycle begins anew.



no it’s not reasonable

1. triage your bugs
2. if you’ve got a huge untriaged backlog, add a few old bugs to the weekly triage meeting alongside the new ones. you get caught up surprisingly soon
3. closed as wontfix or "too old" is a gently caress you to users. why would I refile tickets after you just took a poo poo on my old ones

if your incoming bug rate exceeds the rate at which you fix bugs, bankruptcy will never help you. you’re resetting position without changing speed and you’ll be swamped again in no time

Ciaphas
Nov 20, 2005

> BEWARE, COWARD :ovr:


Xarn posted:

I would check if there is some sort of "just write this" function first, but otherwise I think it is perfectly kosher.

If there is I haven't found it this morning either, save NKDbgPrintfW for wchars

winCE is terribad, folks

Adbot
ADBOT LOVES YOU

CPColin
Sep 9, 2003

Big ol' smile.
A prior job of mine tried enforcing a maximum age for bugs to sit in Triage before they had to be advanced and I enjoyed abusing the hell out of that to ram stuff I filed for other teams' mistakes through the queue. I was 50-50 between "See how dumb a policy this is because people like me can abuse it?" and "Hell yeah we can finally fix that missing space that's making us look stupid."

I should get in touch with the PM that used to work there and started that policy, to see if they did it against their own better judgment, hoping somebody like me would ruin it.

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