DocScrutinizer05 has quit [Ping timeout: 245 seconds]
<rqou>
welcome to the "C++ is bad" club
<rqou>
let's all gang up on azonenberg :P
<Zorix>
c++ is your mother and your father
<rqou>
my father actually just uses C most of the time :P
<Zorix>
hehe.. OO is for damn millennials
DocScrutinizer05 has joined ##openfpga
<rqou>
my disagreements with azonenberg regarding coding style is actually more than just language though
<rqou>
we seem to have completely different ideas of how to structure programs
<Zorix>
not necessarily a bad thing
<rqou>
causes tons of "impedance mismatch" :P
<rqou>
Zorix: basically azonenberg seems to use a somewhat "classical Java/C++ OO style" with classes everywhere and methods that manipulate a small bundle of state
<Zorix>
ah
<rqou>
i tend to prefer a "functional-influenced" style with dumb objects that have relatively little behavior and the functions that just convert objects into other types of objects
<Zorix>
sure i can understand both ways
<rqou>
e.g. xc2par has multiple points in it where it's possible to actually checkpoint the entire state into a file
<rqou>
and you can actually completely restart from that point
<rqou>
some specific "impedance mismatches":
<rqou>
azonenberg really likes inheritance for making "hook points" available
<rqou>
i either just expose a data structure or use higher-order-functions
<rqou>
azonenberg really likes methods to enforce invariants
<rqou>
i occasionally do that, but i usually prefer "you just can't violate invariants because the data structure can't encode that" or "tough, you screwed it up and hit an assert"
<azonenberg_work>
on my networks, broad/multicast traffic is such a small amount of bandwidth it's not really worth optimizing for
<awygle>
wait multicast _frames_ or multicast _packets_?
<pie_>
qu1j0t3, :O
<azonenberg_work>
awygle: Both
<azonenberg_work>
there's a weird relationship between IPv4 multicast addresses and 802.3 multi/broadcast addresses
<azonenberg_work>
iirc 32 consecutive multicast IPv4 addresses map to a single broadcast address
<awygle>
what is layers :p
<azonenberg_work>
lol exactly
mumptai has joined ##openfpga
Zorix has quit [Ping timeout: 245 seconds]
digshadow has joined ##openfpga
<rqou>
azonenberg_work you don't run IPTV using IGMP? :P
<azonenberg_work>
No
<azonenberg_work>
I run my security cameras using unicast RTP
Zorix has joined ##openfpga
<azonenberg_work>
and youtube et al are all TCP unicasts
<rqou>
also, azonenberg_work would you actually veto any of the project names mentioned above? :P
<azonenberg_work>
They're your projects
<azonenberg_work>
as long as you don't name it, idk... "Project Creepy Lolli" or something
<rqou>
even if i end up sticking them in openfpga?
<azonenberg_work>
how about project tortellini? :P
<rqou>
lol too far from the original reference
<azonenberg_work>
rqou: fwiw i am not enough of a weeb to get most of your references
* azonenberg_work
watches as rqou starts working on max10 and calls it "Project Keijo"
<rqou>
it's just reference to a stupid meme
<azonenberg_work>
(THAT i would probably veto, lol)
<rqou>
lol
<rqou>
how about Project Vore :P
<awygle>
Project Amiibo Corner
<awygle>
"tortellini" is a good example of how i name projects. thing->obscure reference to thing->reference to obscure reference to thing that won't mean anything to anyone but me
<azonenberg_work>
awygle: I used to do that, then i switched to full random
<azonenberg_work>
and just iterated until it sounded good
<azonenberg_work>
The only exception is if a really good name just jumps out at me like STARSHIPRAIDER
<awygle>
if i ever write malware it will be named "walken"
<azonenberg_work>
i'd probably use a leaked nsa codename just to make attribution more of a pain in the butt
<azonenberg_work>
go full misdirection... building in a VM that uses a real NSA employee's name as the userid, "forget" to scrub the PDB
<azonenberg_work>
leave a project name in the path
<azonenberg_work>
Or FSB, or some other state actor
Bike has quit [Ping timeout: 260 seconds]
<rqou>
not "a 400 pound hacker in his mother's basement"? :P
<azonenberg_work>
rqou: as soon as a dumb analyst sees evidence that it's state sponsored they'll stop looking for other explanatoins
<azonenberg_work>
only a smart one will keep looking
<azonenberg_work>
Use a codename for a tool that has been revealed in leaks, but for which no binary is publicly available
<azonenberg_work>
People will be like "oh, THAT's what that tool does"
<azonenberg_work>
you could go full equation group and use RC6 for crypto, etc
<azonenberg_work>
When in reality it *is* a 400-pound hacker in his mother's basement
<azonenberg_work>
Just one who wants to deflect suspicion elsewhere :p
<awygle>
step 1) begin eating
<awygle>
step 2) buy mom a house with a basement
<awygle>
are basements even a thing in the US? i've never lived somewhere with a basement but maybe it's an East Coast thing?
<azonenberg_work>
awygle: Depends on your definition of basement
<azonenberg_work>
the place we live in now on bainbridge has a crawl space under the house where the furnace is etc but its not tall enough to stand in
<azonenberg_work>
At the new place, the 1st floor is partially below ground and would probably qualify as a daylight basement
<awygle>
yeah crawlspace doesn't count. neither does your new first floor.
<azonenberg_work>
My parents place is also built in a hill and has a somewhat similar setup, but older (built in the 1930s)
<azonenberg_work>
The basement floor is mostly-flat poured concrete but at the foot of the stairs a giant boulder is sticking up a foot or so
<azonenberg_work>
it was cheaper to cast concrete around it and live with the boulder than to blast it out, i guess?
<azonenberg_work>
walls are bare concrete
<azonenberg_work>
the floor in one area has plywood over it, the rest is concrete
<azonenberg_work>
the ceiling is super low
<rqou>
azonenberg_work did the inspector show up?
<azonenberg_work>
Not yet
<azonenberg_work>
I called the L&I office today
<azonenberg_work>
as of this morning, our ticket showed pending, meaning the inspector had not yet picked it up for processing
<azonenberg_work>
They normally target a <2 business day turn time but it sounds like they might be busier this week. Yay
<awygle>
they should at least give you a 4 hour window :p
mumptai has quit [Quit: Verlassend]
<azonenberg_work>
noope. i wish lol
<azonenberg_work>
In any case i also just called the city building dept
<azonenberg_work>
They're a bit more punctual about these things
<azonenberg_work>
And are coming down on Monday to inspect plumbing/gas line (freebies, we did none of either), HVAC (minimal) and caulk/seal
<azonenberg_work>
Assuming we pass electrical inspection, if not then we'd have to reschedule :p
<azonenberg_work>
they actually told me monday AM though
<rqou>
btw azonenberg_work have you seen the john oliver episode about infrastructure?
<rqou>
"if anything exciting happens, we're doing it wrong"
<azonenberg_work>
No? but lol
<qu1j0t3>
can't disagree
<rqou>
apparently the United States in general has years-long backlogs for major infrastructure inspections/maintenance
<azonenberg_work>
Yep
<azonenberg_work>
even just basic road maintenance
<qu1j0t3>
never fear, Domino's Pizza has it covered
<rqou>
hey, they're finally working on 880 here
<rqou>
LOL
<rqou>
right, that
<rqou>
not sure if better or worse than PornHub plowing snow
<rqou>
(which apparently didn't actually happen)
<azonenberg_work>
rqou: it would be both funny and sad
<azonenberg_work>
if (say) Amazon started funding infrastructure projects
<qu1j0t3>
MISTER PLOW being, of course, my---
<azonenberg_work>
just to get packages to customers more efficiently
<qu1j0t3>
azonenberg_work: I think arguably that has been happening?
<qu1j0t3>
azonenberg_work: haven't they been paying USPS?
<qu1j0t3>
for extra service
<genii>
Probably costs more to fill a pothole though than to just buy a drone
<rqou>
apparently it doesn't really
<rqou>
pothole filling is apparently really cheap
<genii>
Interesting
<azonenberg_work>
qu1j0t3: it is, amazon is already paying USPS a special rate to deliver on sunday
<azonenberg_work>
Normally no mail is delivered on sunday
<qu1j0t3>
azonenberg_work: That's what i was alluding to
<azonenberg_work>
But thats what i'm saying
<qu1j0t3>
I'd really prefer they paid tax
<azonenberg_work>
well as long as business expenses are tax deductible, their strategy will be a viable one
<azonenberg_work>
(spend everything you make, have no profit and thus no tax liability)
<rqou>
I'm just waiting for Amazon to just buy everything related to physical objects and Google to buy everything related to digital items
<rqou>
e.g. "Amazon outright buys Iowa, expanding their Whole Foods operation" :P
<azonenberg_work>
lolol
<azonenberg_work>
and google buys ICANN?
<qu1j0t3>
pretty sure that won't be a goodThing™
<azonenberg_work>
i never said it was good, just that it was the direction things are headed
<azonenberg_work>
rqou: how far do you think we are from Omni Consumer Products?
<azonenberg_work>
The current generation ED-209s are pretty wimpy and can't swim :p
<rqou>
"In 2050, Alphabet gains all letters of the alphabet, a through z, by merging with Amazon"
<azonenberg_work>
lool
<rqou>
"This is approved because in 2049 Alphabet has already just acquired the DoJ"
<azonenberg_work>
lol
<azonenberg_work>
My point from earlier was, though
<azonenberg_work>
They wouldn't funding infrastructure for altruistic motives, or by taxes, or anything
<rqou>
"In 2051 Alphabet successfully lobbies for legal fictions to be electable to the presidency m Alphabet is now the president"
<azonenberg_work>
but simply because their business depends on it
<azonenberg_work>
lolol
<azonenberg_work>
to be fair, i think i'd rather have google running the country than our current Dear Leader
<azonenberg_work>
I'd take an inflatable whale or a pile of plywood too
<rqou>
"In 2100 the entire world is <strike>paperclips</strike>Androids"
<awygle>
i can't believe nobody's funding trade schools yet
<azonenberg_work>
for software devs?
<awygle>
Google University is the obvious way to solve their (alleged) hiring problems
<azonenberg_work>
Yeah
<rqou>
"In 2200 all humans are dead. Only busty android girls with big swords are left" :P :P :P
<azonenberg_work>
honestly? it's probably because of the elitism of hiring managers and coders who don't want to see programming reduced to a skilled trade
<azonenberg_work>
(even though it already is)
<azonenberg_work>
Software engineering and programming are not the same thing
<azonenberg_work>
i know lots of software projects in which it is painfully obvious that no engineering was done :p
<qu1j0t3>
azonenberg_work: I've inherited more than a few myself.
<awygle>
azonenberg_work: I also, many of them done by people who went to fancy schools. which makes me uncomfortable with the distinction
<awygle>
I think we'd need some kind of professional association if we wanted the distinction to be at all meaningful
<azonenberg_work>
yeah
<azonenberg_work>
fancy school != good sw eng
<azonenberg_work>
maaany rpi grads had no clue about how to run a large project
<awygle>
and e.g. bootcamp != (!good SW eng)
<q3k>
is there any other way than running a large project to learn how to run a large project?
<q3k>
it's like the streets smarts of software engineering
<q3k>
can't learn this from books yo
<awygle>
i'm willing to bet that there are ways, but there doesn't seem to be any decent research on what those ways are
<awygle>
maybe our colleagues from Big Data Driven Companies have some? (mithro kc8apf)
<q3k>
'the deadline was yesterday and we don't have time for proper design' simulator 3000
<awygle>
ugh
<awygle>
"the guy who designed this was incompetent and hasn't worked here in five years so we've been afraid to touch it" simulator
<q3k>
awygle: from my time at google it seems like the solution to run large projects properly is actually just hard fucking work
<awygle>
idk it's never seemed that hard to me on a _technical_ level. there's like, five or six things you need to do and that's it. i keep looking for the complete misunderstanding i'm sure i have someplace, but i can't seem to find it.
<awygle>
it's all the non-technical shit that's the problem of course. computers are easy, people are hard.
<q3k>
take time to design, failure is always an option, don't blame people, blame processes, etc.
<q3k>
yes
<kc8apf>
q3k: it's mostly experience and having empathy. I end up teaching other engineers on the job.
<awygle>
but there sure as hell are lots of projects that are absolute garbage designs _technically_ for reasons that elude me
<q3k>
awygle: fairly sure those technical reasons stem from people being people
<q3k>
it's people all the way down
<awygle>
q3k: i'm torn between "yeah, fair" and "that's just kicking the can down the road" :/
<awygle>
ah well
<awygle>
keeps us gainfully employed i guess
<qu1j0t3>
i've seen a lot of such projects. usually the causes are around education/experience/ never being exposed to good practices or a healthy engineering culture
<q3k>
i don't see it as kicking the can down the roa
<qu1j0t3>
as far as i can tell
<q3k>
*road
<awygle>
healthy culture is a big one for sure
<q3k>
but trying to actually solve the fucking problem
<q3k>
you can't patch over broken culture with technical solutions
<awygle>
mm that's true but incomplete. it's a feedback loop.
<q3k>
the more i consult with customers to fix their fires, the more often i realize i'm there to fix people
<kc8apf>
99% of getting a project back on track is setting reasonable boundaries on what is acceptable and what isn't
<q3k>
my role has with time become more of a counselor for siloed teams
<qu1j0t3>
you have to get the basics in place (code review, design review, requirements, etc) but to know what the basics are, takes experience :)
<q3k>
yeah
<awygle>
i've always felt that Conway's Law cuts both ways
<qu1j0t3>
and with experience you can see danger signs too
<qu1j0t3>
(e.g. this very project i'm on. has had "missing reqts" from day one)
<awygle>
if you know your organization is broken (and you can't just leave) you can mitigate the damage with technical firewalls
<qu1j0t3>
(this is now the most common pathology. we have lots of engineering resources but no way to get proper requirements)
<q3k>
now how do you convince a three-programmers shop that they need to allow time for code reviews even though they're three months behind schedule :D
<q3k>
other than 'fuckin hell you hired me for this just trust me you'll regret it otherwise in half a year'
<q3k>
and other such anecdata and whatnot
<awygle>
i will admit i have no idea how to create meaningful schedules for software projects
<qu1j0t3>
i don't quite know how to explain to people who think they don't need X that they will find out they're mistaken eventually :)
<awygle>
"how long will this bug take to fix?" "uh if i knew that it would be fixed already"
<qu1j0t3>
but i do see the results
<kc8apf>
q3k: by talking with the leadership and being _very_ clear that the schedule doesn't matter anymore because it won't be met. Time to figure out what the new schedule will be.
<qu1j0t3>
also, code review doesn't have to slow things down much
<kc8apf>
awygle: I usually list what things I don't know and how I'm going to figure it out.
<awygle>
depends on who's doing the code review and how obnoxious and pedantic they feel like being. which, again, people.
<kc8apf>
That gives a lower bound
<q3k>
kc8apf: yeah, problem is when that leadership is investors :D
<qu1j0t3>
awygle: Well, yes, but that was mentioned above -- people, culture.
<awygle>
yup
<kc8apf>
q3k: depends on the investor but, yes, most only care about making a return
<qu1j0t3>
awygle: it's disheartening how often code review goes bad, i agree. i have no answer for this either, except it's certainly a management problem.
<kc8apf>
anything that isn't banging on a keyboard is wasted time to many of them
<q3k>
awygle: tbh if someone's a dick during code review they'd probably be dicks at work otherwise
<kc8apf>
I purposely avoid those types of investors
<qu1j0t3>
q3k: yep!
<awygle>
when in that "three months behind schedule" situation i tend to try to take an axe to the features list before renegotiating schedules.
<q3k>
awygle: good point
<awygle>
(glad to be out of space business where schedule is "rocket going up")
<awygle>
(especially glad to be out of space business where schedule is "rocket claims to be going up but we all know that's not true but we have to pretend the schedule means something anyway")
<kc8apf>
places with soft or virtual deadlines still do all the same stupid things when schedule starts to slip
<awygle>
so _does_ Big G have a "managing big-ass software projects for complete idiots" class or something? seems like the kind of thing they'd study
<awygle>
(and then ignore all the results of the study i guess)
<kc8apf>
best advice I heard on schedules was from Bart Sano @ Google: schedules are a guess. When you aren't meeting the schedule, the schedule is wrong, not the people. Adjust the schedule based on what you know now.
<kc8apf>
there are trainings for project managers but not the average SWE
<q3k>
'they're called estimates for a reason'
<q3k>
'adjust your schedules to reality, not reality to your schedules'
<q3k>
etc
<awygle>
wait, "estimate" doesn't just mean "the real number plus 30% of fat that we can freely trim"?
<awygle>
(/s)
<q3k>
also 'just fucking talk to eachother'
<q3k>
you have no idea how rare that last one is
<awygle>
yeah for sure. engineers that are willfully ignorant of business realities annoy me just as badly as manager types that think declaring schedule makes it so.
<q3k>
(I mean, at Other Companies in comparison to G)
<q3k>
yes, but even laterally
<awygle>
also very true (see: the meeting i was in all day friday)
<q3k>
i like people building fully meshed clos networks instead of everything going through a managerial bottleneck :)
<awygle>
common lisp object system? :p
<q3k>
oh no eww
<kc8apf>
my new gig has worked themselves into a corner by everyone doing what they think is best completely independent of everyone else
<kc8apf>
"We have a product" "From what I see, you have 3 with the same name"
<qu1j0t3>
lol, yeah
<awygle>
i was about to say "the problem with full meshing is that your meeting size becomes untenable"
<kc8apf>
using delegates helps with that
<qu1j0t3>
i worked at a startup once that had 200kloc of PHP in their product, with 2 "senior designers" both of which had duplicated functionality in two differently styled class hierarchies. Apparently they didn't talk to/like each other.
<kc8apf>
of course, nearly everyone just says the manager is responsible
<qu1j0t3>
one wasn't there when i started and hte 2nd had left by the time i did
<awygle>
something something that building at berkeley with the weird weld line down the middle and the story about the architects sleeping with each others' wives
<kc8apf>
separation of concerns helps avoid overloading any one person
<qu1j0t3>
^
<kc8apf>
use a separate technical lead, people manager, etc
<q3k>
that too
<awygle>
a big problem is that lots of people have different definitions for those terms, too
<kc8apf>
yup
<awygle>
and nobody anywhere EVER writes the definitions down :p
<q3k>
because it's * ~ * ~ business management ~ * ~ *
<q3k>
the secret is that nobody knows how to fucking run a business
<q3k>
so nobody writes these things down
<kc8apf>
I was explaining this to someone at a mid-size business. You simply can't organize people into a single, meaningful box
<q3k>
because they don't want to admit that they don't know what they're doing
<awygle>
^ also the secret to software engineering
<kc8apf>
usually they oscillate between organizing teams based on product and based on competency
<awygle>
something something matrix organization?
<kc8apf>
kinda
<q3k>
however buzzwordy 'matrix organization' is
<awygle>
my father claims a matrix is the _only_ way to run a technical company
<q3k>
when I first got this explained to me my reaction was 'oh, yeah, that's how we're doing it already, no?'
<awygle>
i suspect they go wrong via the Two Bosses Problem unless tightly held
<kc8apf>
Most successful places I've worked, teams physically sit together and share a manager. Ad-hoc groups of people from various teams are formed to deal with a particular product/feature. Long term technical strategy is another dimension entirely.
<q3k>
speaking of duplicating work
<q3k>
i've once worked with a Kabushiki-Gaisha where management actually hedged their bets on a given product
<q3k>
and made two teams work on it totally independently, with two different approaches, stacks, etc
<q3k>
(this was a good decision, as one of the approaches failed)
<iximeow>
TIL "matrix organization"
<kc8apf>
G routinely does that with server designs. Mostly because they are being built while the processors are being finalized. If one processor vendor runs into a problem, the other usually doesn't.
<q3k>
but this created a fantastically curious environment where team A and team B wouldn't like eachother anymore
<q3k>
kc8apf: right, although that's slightly different - that's using vendor A as negotiation material against B, and vice-versa
<q3k>
*that's also
<kc8apf>
yup
<kc8apf>
doing it purely for motivation, etc is horrible
<q3k>
seen it at my project as well with external vendors
<q3k>
(at G)
<kc8apf>
yowza AWS has a lot of product names that tell you nothing about what the product does
<q3k>
aws is not my favourite service
<q3k>
i gate that gcloud used its' naming scheme for locations
<q3k>
mapping {singapore, tokyo, taipei^Wchanghua} to asia-{southeast,northeast,east} is painful
<kc8apf>
I conveniently ignored AWS until today
<q3k>
not to mention {london,belgium,frankfurt,netherlands} to europe-west-{1,2,3}
<q3k>
fuck this nonsense
<kc8apf>
"I need to launch a docker container" "Great! We have 4 different ways to do that."
<q3k>
*{1,2,3,4}
<q3k>
kc8apf: also they're all expensive
<q3k>
kc8apf: i want k8s-aas that scales :(
<q3k>
(price-wise)
<q3k>
also cloud spanner that doesn't cost an arm and a leg
<kc8apf>
I just bought a bunch of cheap machines and run a cluster at home
<q3k>
yeah, but I want something like that for cheapo production :)
<q3k>
gonna end up doing that at hswaw probably
<q3k>
one power uplink and internet uplink should be enough for anybody
<q3k>
i don't care for anything better than 99% SLA 99% of the time
<kc8apf>
heh. I've got a standing offer to get half a cabinet at HE's FMT2 if I can provide a router capable of full Internet routing
<q3k>
that's easy
<q3k>
get a supermicro xeon-d
<q3k>
install BIRD
<q3k>
done
<q3k>
should do 10GbE no problem
<q3k>
share that half of cabinet and i'll buy and configure the router :P
<kc8apf>
apparently the owner insists on a Cisco or Jupiter box