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.
 
  • Locked thread
prefect
Sep 11, 2001

No one, Woodhouse.
No one.




Dead Man’s Band

Citizen Tayne posted:

As I understand it from posters here in YOSPOS, healthcare information management is actually a "solved problem" and "boring poo poo for old people." We need to apply those bright minds to solving war and world hunger!

managing the information is kinda-sorta mostly solved, isn't it? it seems like the hard part would be getting organizations to do the right processes, especially if they're new processes. or upgrades; nobody wants to upgrade

then again, that could probably describe most anything :downs:

Adbot
ADBOT LOVES YOU

Pittsburgh Fentanyl Cloud
Apr 7, 2003


prefect posted:

managing the information is kinda-sorta mostly solved, isn't it? it seems like the hard part would be getting organizations to do the right processes, especially if they're new processes. or upgrades; nobody wants to upgrade

then again, that could probably describe most anything :downs:

People upgrading to the latest and the greatest is half the problem. People want to roll out the newest, fanciest, most complicated poo poo for simple problems because it looks good on their resume, but much of it can be a hindrance for simple processes.

A lot of money has been pissed away by "software engineers" talking about how cool it would be to do something <x> to solve <y> without asking if <x> is the most cost-effective and appropriate tool for the situation.

Valeyard
Mar 30, 2012


Grimey Drawer
looks like for my final year project im going to get to either work on the 3rd year webdev django project i done and enhance it, or work on another django web app. either way its good news, becasuse i really need an A on this project

Notorious b.s.d.
Jan 25, 2003

by Reene

Citizen Tayne posted:

People upgrading to the latest and the greatest is half the problem. People want to roll out the newest, fanciest, most complicated poo poo for simple problems because it looks good on their resume, but much of it can be a hindrance for simple processes.

A lot of money has been pissed away by "software engineers" talking about how cool it would be to do something <x> to solve <y> without asking if <x> is the most cost-effective and appropriate tool for the situation.

see also: every "big data" project, ever, anywhere

Valeyard
Mar 30, 2012


Grimey Drawer
unless youre at a bank, where change is the last thing on they mind and they pump more and more money into not only upkeep of legacy code but actually trying to create new features and upgrades for it

Nomnom Cookie
Aug 30, 2009



and all txns are processed overnight. i imagine they call it The Batch and its guarded by a 4-person change control board whose sole responsibility is to get fired if The Batch ever breaks

unsanitary
Dec 14, 2007

don't sweat the technique
terrible programmer ?: if you are a terrible programmer and are starting a new job probably w/ good programmers how do you avoid getting poo poo on while you're trying to become better at it but are still bad

Valeyard
Mar 30, 2012


Grimey Drawer

Kevin Mitnick P.E. posted:

and all txns are processed overnight. i imagine they call it The Batch and its guarded by a 4-person change control board whose sole responsibility is to get fired if The Batch ever breaks

id imagine aswell as having the overnight big batch there will be a lot of other poo poo that runs afterwards that depends on that iovernight one, and there should be some leeway for delay after the overnight

Brain Candy
May 18, 2006

unsanitary posted:

terrible programmer ? : if you are a terrible programmer and are starting a new job probably w/ good programmers how do you avoid getting poo poo on while you're trying to become better at it but are still bad

lol, as if anyone ever stops being terrible

also, negate that predicate, ugggg

tef
May 30, 2004

-> some l-system crap ->

unsanitary posted:

terrible programmer ?: if you are a terrible programmer and are starting a new job probably w/ good programmers how do you avoid getting poo poo on while you're trying to become better at it but are still bad

this won't happen because you will be working with bad programmers, or to use the shortened term "programmers". you will meet people who

- write tests with sleep(n) in them which pass 'on their machine' and break months later mysteriously
- will write code over the weekend and push it into production/commit it without review before monday
- will tell you that they are older and are thus better informed as to what good code is

the only coders worth working with are ones who admit they are terrible, and they make mistakes. you can't mentor anyone unless you're willing to learn something along the way too. if you meet someone who tells your code is bad and theirs is good, i can only assume that they are only smart enough to see the problems in other people's work, not their own.

avoiding being poo poo on is not a necessary skill for working with non shitheads, because they will not poo poo on you. working with toxic people is a whole other effort post. the long and short is learning the office politics, and working out which machiavellian strategies to employ

tef
May 30, 2004

-> some l-system crap ->
programming in the industry is basically a bunch of wishful thinking in terms of project structure, and fashion and gossip in terms of architecture and code.

when they say "the right tool for the job" they don't mean it, they mean "the one i've used before or read about on hacker news"

Soricidus
Oct 21, 2010
freedom-hating statist shill

tef posted:

when they say "the right tool for the job" they mean themselves

DONT THREAD ON ME
Oct 1, 2002

by Nyc_Tattoo
Floss Finder

tef posted:

- will write code over the weekend and push it into production/commit it without review before monday

this is our deployment strategy

Valeyard
Mar 30, 2012


Grimey Drawer
part of my job while interning is being in a team of people who are the "guardians of production" and having to tell developers to gently caress off when they try to push their untested code into production

Notorious b.s.d.
Jan 25, 2003

by Reene

tef posted:

avoiding being poo poo on is not a necessary skill for working with non shitheads, because they will not poo poo on you. working with toxic people is a whole other effort post. the long and short is learning the office politics, and working out which machiavellian strategies to employ

i have found it's much easier to work with nice people who aren't all that bright than to work with sharp guys with toxic personalities

DONT THREAD ON ME
Oct 1, 2002

by Nyc_Tattoo
Floss Finder

Notorious b.s.d. posted:

i have found it's much easier to work with nice people who aren't all that bright than to work with sharp guys with toxic personalities

maybe this explains my continuing employment

tef
May 30, 2004

-> some l-system crap ->

Notorious b.s.d. posted:

i have found it's much easier to work with nice people who aren't all that bright than to work with sharp guys with toxic personalities

yeah but the interview process leans towards the latter and oh poo poo it's me i'm the sharp rear end in a top hat

z0rlandi viSSer
Nov 5, 2013

I've worked with assholes and sometimes i can be one. I have to consciously keep those behavior traits in check when i get impatient or annoyed.

Valeyard
Mar 30, 2012


Grimey Drawer
"im about a baw hair away from going up there and kicking his oval office in" is something i heard the other day, in response to an annoying colleague

Flaming June
Oct 21, 2004

tef posted:

when they say "the right tool for the job" they don't mean it, they mean "the one i've used before or read about on hacker news"

this one. i don't really read hacker news and all of a sudden we're interested in trying out unproven languages to solve all our problems???

MononcQc
May 29, 2007

unsanitary posted:

terrible programmer ?: if you are a terrible programmer and are starting a new job probably w/ good programmers how do you avoid getting poo poo on while you're trying to become better at it but are still bad

One person I worked with (I can't remember who) told me: you can ask me for help about anything. You can ask me for help over the same thing twice and that's gonna be fine, but don't ask me a third time, because then you're making us both lose our time.

Basically, a lot of people are fine and totally understand people are not perfect and need time to adapt and get better, but you have to actually take their time as important, and demonstrate that you're getting better.

I try to keep that in mind at every new job I get, it seemed to have helped.

tef
May 30, 2004

-> some l-system crap ->
on a side note, this last stint was the first time i got to mentor a junior programmer

- they'd been dumped on a project with a vague outline of the architecture but were finding lots of problems in the approach
- the people who were senior on the team were in crunch mode and so spent very little time working on non critical things like mentoring

anyway we spent an afternoon rather socratically asking questions about the options for designs and we came up with something ok. it turns out the junior programmer is actually pretty good at this coding thing but had no confidence and little support.

tef
May 30, 2004

-> some l-system crap ->
in happy news i've got an interview with a small company which isn't vc funded, selling software to people for money, looking to grow a bit

they're a half programmers/half librarians team, building a sort of filemaker/hypercard thing for information management

they've come through a friends recommendation and introduction so whee nepotism but gently caress me if i'm not thankful for a not-poo poo opportunity

MononcQc
May 29, 2007

Something I've found worked well for me was that for legacy code bases, my first task was to read code and write documentation.

It sounds like bitch work, but I was joining an as-of-yet understaffed team, and it helped in many ways:

- It had me check and get a good understanding of the code base
- It was easy for them to correct my misunderstanding by just reading docs
- It helped future onboarding for newer hires
- Gave me a good pressure-free environment to get accustomed with the code structure and environment before I got to modify things.

Not all people are fans of sitting down and writing READMEs, but I found it surprisingly great to get me up to speed.

tef
May 30, 2004

-> some l-system crap ->
at the bare minimum just writing down everything you did to get a working system in development, along with all the answers to questions you had to ask, makes such a lovely difference


nothing more horrifying than a repo without a readme

MononcQc
May 29, 2007

Yeah in my case that stuff turned out to be written already, so I went for the more general "how information flows in the system" :toot:

CPColin
Sep 9, 2003

Big ol' smile.

unsanitary posted:

terrible programmer ?: if you are a terrible programmer and are starting a new job probably w/ good programmers how do you avoid getting poo poo on while you're trying to become better at it but are still bad

Ask where to look to find the answer to something, instead of asking for the answer itself. "Where would you look first?" is probably my go-to question when interviewing potential interns who are looking for an exciting summer doing scutwork at Experts Exchange.

unsanitary
Dec 14, 2007

don't sweat the technique
it's sounding like:

--people are usually patient
--take the time to understand the answers when asking a question
--making the same mistake twice is bad

and it won't be a huge deal being the worst programmer in the group

the toughest thing for me is to just not be intimidated. this is babby's first software job out of college

Notorious b.s.d.
Jan 25, 2003

by Reene

unsanitary posted:

it's sounding like:

--people are usually patient
--take the time to understand the answers when asking a question
--making the same mistake twice is bad

and it won't be a huge deal being the worst programmer in the group

the toughest thing for me is to just not be intimidated. this is babby's first software job out of college

the hardest skills to develop pertain to professionalism itself. learning to keep cool under pressure. being a "team player." writing clear and concise documentation. hitting the right notes in a memo to management.

you will learn these things by working with people who do them well. and people who do them poorly.

all the tech stuff is incidental

theadder
Dec 30, 2011


Notorious b.s.d. posted:

hitting the right notes in a memo to management.

these must be fun to read lol

BONGHITZ
Jan 1, 1970

tef posted:

rather socratically

rather scrotastically

prefect
Sep 11, 2001

No one, Woodhouse.
No one.




Dead Man’s Band
i apologize in advance for inflicting my horrid code on the thread

code:
def findTarget(Object node, String targetName) {
    node.each() { key, value ->
        println "key: ${key}"
        if (value["target"]) {
            println "has target attribute"
            if (value["target"]["name"] == targetName)  {
                print "value/target/name: ${value['target']['name']}"
                return value
            }
        } else {
            return findTarget(value, targetName)
        }
    }
}
this is groovy. the goal here is to call this function, have it iterate over a data structure we've built from a json file, find json nodes that have the "target" attribute, check the "name" sub-attribute for those nodes, and if that matches the string we passed in, return that node (yes, there are a lot of print statements -- i do that when i'm trying to figure things out) if the node in question doesn't have a "target" attribute, the function calls itself, because there could be a "target" node farther down the tree

the code does successfully print out the "value/target/name" information when it finds the node i want, but it keeps running through all the json nodes instead of returning/exiting at that point. i'm sure it's obvious to people who actually know what they're doing with recursion and so forth, but what am i doing wrong? :saddowns:


edit: i spent all day friday working on this, but only now, after i've typed it out, do i wonder if the each() iterator is preventing me from exiting the function prematurely :cripes:

prefect fucked around with this message at 14:05 on Jul 7, 2014

qntm
Jun 17, 2009

prefect posted:

i apologize in advance for inflicting my horrid code on the thread

code:
def findTarget(Object node, String targetName) {
    node.each() { key, value ->
        println "key: ${key}"
        if (value["target"]) {
            println "has target attribute"
            if (value["target"]["name"] == targetName)  {
                print "value/target/name: ${value['target']['name']}"
                return value
            }
        } else {
            return findTarget(value, targetName)
        }
    }
}
this is groovy. the goal here is to call this function, have it iterate over a data structure we've built from a json file, find json nodes that have the "target" attribute, check the "name" sub-attribute for those nodes, and if that matches the string we passed in, return that node (yes, there are a lot of print statements -- i do that when i'm trying to figure things out) if the node in question doesn't have a "target" attribute, the function calls itself, because there could be a "target" node farther down the tree

the code does successfully print out the "value/target/name" information when it finds the node i want, but it keeps running through all the json nodes instead of returning/exiting at that point. i'm sure it's obvious to people who actually know what they're doing with recursion and so forth, but what am i doing wrong? :saddowns:


edit: i spent all day friday working on this, but only now, after i've typed it out, do i wonder if the each() iterator is preventing me from exiting the function prematurely :cripes:

took me a while to realise that when you said "this is groovy" you were referring to the groovy programming language, but if groovy is anything like javascript then that each() iterator (1) provides a different function scope for its interior, so you're not returning to where you think you're returning, and (2) cannot be terminated early

Symbolic Butt
Mar 22, 2009

(_!_)
Buglord
depth-first search isn't a trivial algorithm imo and every time I need it in an unfamiliar place I try to do it in the most straightforward way first. I mean, I do it with a stack and a while loop.

if you can't do that in groovy then welp

Symbolic Butt
Mar 22, 2009

(_!_)
Buglord
someone redtext prefect with "THIS IS GROOVY" thanks in advance

Shaggar
Apr 26, 2006
code:
def findTarget(Object node, String targetName) 
{
	println "Examining key: ${node.key}"

	//if this node is the target then return it
	if(node.value["target"] && node.value["target"]["name"] == targetName)
	{
		print "value/target/name: ${value['target']['name']}"
		return value
	}

	node.each() 
	{
		key, value ->
		Object result = findTarget(value,targetName)
		
		//if the result isn't null it means we found it, so break out of the loop by returning the value
		if(result!=null)
		{
			return result
		}
	}

	//not found! 
	return null

}
I think this would work maybe. idk. personally I would just use the appropriate library to select the first node instead of writing my own search

prefect
Sep 11, 2001

No one, Woodhouse.
No one.




Dead Man’s Band

qntm posted:

took me a while to realise that when you said "this is groovy" you were referring to the groovy programming language, but if groovy is anything like javascript then that each() iterator (1) provides a different function scope for its interior, so you're not returning to where you think you're returning, and (2) cannot be terminated early

Symbolic Butt posted:

someone redtext prefect with "THIS IS GROOVY" thanks in advance

sorry :blush:

Shaggar posted:

code:
...
I think this would work maybe. idk. personally I would just use the appropriate library to select the first node instead of writing my own search

thanks; i'll try this, or look into this "appropriate library" if i can find it

Shaggar
Apr 26, 2006
The first thing to ask is: "is this search even necessary?" If you can use a static schema for the json then the value you want will always either be where its supposed to be or not and you don't have to search for it. at that point you could also deserialize it into a proper object that you could pass around everywhere instead of doing a bunch of tree lookup crap.

if you have no schema for the json then you need to search. you are using groovy which means you are using java which means Jackson is pretty much the go to lib. I think it has tree search functions, but tbh I've mostly used json in c# which has JSON.net and linq.

prefect
Sep 11, 2001

No one, Woodhouse.
No one.




Dead Man’s Band

Shaggar posted:

The first thing to ask is: "is this search even necessary?" If you can use a static schema for the json then the value you want will always either be where its supposed to be or not and you don't have to search for it. at that point you could also deserialize it into a proper object that you could pass around everywhere instead of doing a bunch of tree lookup crap.

if you have no schema for the json then you need to search. you are using groovy which means you are using java which means Jackson is pretty much the go to lib. I think it has tree search functions, but tbh I've mostly used json in c# which has JSON.net and linq.

yes, there's no static schema -- the elements i'm looking for could be at any depth, even within each other somewhat

i'll look into that jackson thing; thanks again :tipshat:

Adbot
ADBOT LOVES YOU

Shaggar
Apr 26, 2006
ugh, json. :barf:

  • Locked thread