code logs -> 2020 -> Fri, 26 Jun 2020< code.20200625.log - code.20200627.log >
--- Log opened Fri Jun 26 00:00:23 2020
00:19
<~Vornicus>
think I need a book or soething
00:20
<&McMartin>
Gosh, that's a hard implied question.
00:20
<&McMartin>
The books I'm coming up with are more about, if you will, managing specifically tricky kinds of joists or windowsills, and less about actually building a proper house.
00:22
<&McMartin>
If you can make some sketches of a mid- to high-level design I can talk through some of it with you, I suppose.
00:29 Pink [user1@Nightstar-g7hdo5.dyn.optonline.net] has joined #code
00:49 Kindamoody is now known as Kindamoody[zZz]
01:00
<&Reiver>
I'd be happy to help with that too, I've done a little architecturing in my time.
01:00
<&Reiver>
More data systems & DBs than software, but workshopping it may well help nonetheless
01:09
<~Vornicus>
It's ... okay let's see.
01:27
<~Vornicus>
At the moment it's stupid simple what I want to do, but making it so it looks like I can add stuff is harder. Right now I just have a terrain drawing thing which I'm working on adding a camera to, and then eventually buildings and trees and objects that move around and stuff. https://cdn.discordapp.com/attachments/474705430434807819/717407973055397918/Pick.gif Consider OTTD or Roller Coaster Tycoon
01:30
<~Vornicus>
But this is so vague as to be pointless
01:30
<&McMartin>
Mmm. Yeah.
01:31
<~Vornicus>
Which is part of why I'm struggling, really. There are questions, I know, that should be answered, but what those questions are I don't know yet.
01:31
<&McMartin>
You're considering operations when you should be considering policy.
01:31
<&McMartin>
Are you building a sim-game of your own? An interactive map engine? An editor?
01:32
<~Vornicus>
I'm pretty sure at the moment it's the second, if I understand your meaning of it.
01:32
<&McMartin>
If you want an immediate exercise to focus the mind: take the things you have written, and start conceptually drawing boxes around parts of it that are both relatively self-contained and that could be part of the grander vision.
01:32
<&McMartin>
And then see which direct links could be separated from there.
01:33
<&McMartin>
One of the boxes that isn't there right now is a fluffy "outside logic" cloud that determines whether you are playing a SimCity clone, a Command-and-Conquer clone, or chesse
01:34
<&McMartin>
*chess
01:34
<&McMartin>
Not cheese
01:34
<~Vornicus>
chesse sounds like fun
01:37
<&McMartin>
But definitely part of this involves user input events turning into events that happen on the map which turn into things that could have some kind of game effect and would need to be forwarded on to that game
01:38
<&McMartin>
You aren't really at a level yet where it's time to start building framework elements for them, but this is a place where having the publish/subscribe concept in your toolkit will help make things gel later
01:38
<&McMartin>
https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern
01:38
<&McMartin>
(This level of architectural detail is the kind of thing I was referring to when I said it's about joists or windowsills instead of houses)
01:40
<&McMartin>
But if the engine you're imagining is tightly bound to a scrollable 2D map with a notion of height, such a system would be kind of overkill for actually dispatching user events to the map interpreter; those could just be handled via direct calls into the system.
01:41
<&McMartin>
THEN the question becomes "what signals or messages do each of these black boxes send or receive?"
01:41
<&McMartin>
And then that starts turning into an API.
01:41
<&McMartin>
This is a very OO-centric way of discussing it, but a box that receieves a method is a module that exposes a function that others can call.
01:48 catalys22 [catalyst@Nightstar-vu6bd4.dab.02.net] has joined #code
01:50 catalyst_ [catalyst@Nightstar-lgnnkl.dab.02.net] has quit [Ping timeout: 121 seconds]
01:57 catalyst [catalyst@Nightstar-v6lb30.cable.virginm.net] has quit [Connection closed]
02:25
< catalys22>
do you think that the ability to implement stl types is rare and something that would stand out?
02:26
< catalys22>
for some reason I'm thinking I wouldn't make an attractive hire to anyone
02:28
<&McMartin>
In terms of mastery of the C++ language, I consider myself to be two tiers below you, and I rate my own C++ skills quite highly.
02:28
<&McMartin>
And I am told that even my level is uncommon.
02:28
<&[R]>
I remember you talking about some weird edge cases you were dealing with, focus on those?
02:29
<&[R]>
Also talk about why you did it
02:29
<&McMartin>
My level would be something like "I am capable of understanding and making use of those aspects of the STL that are exposed in the public-facing API, and can correctly choose between when to use a movable rvalue and when to use a copied value outright"
02:29
<&McMartin>
The tier above that is "can read STL implementation level code with all the template metaprogramming stuff and understand what is being specified"
02:30
<&McMartin>
The tier above that is "can actually replicate it, which means that they can design APIs that use things like std::enable_if in their own code."
02:30
<&McMartin>
I saw you implement the basics of a logging framework here some months back.
02:30
< catalys22>
I suppose I consider myself just about competent in Rust now I've figured out how to write custom derive macros
02:30
<&McMartin>
I would not have designed it in that way becaus I could not.
02:31
< catalys22>
ah
02:31
<&McMartin>
I would lean into simpler wrapper classes that were not as transparent to use, simply because the necessary powers of specification would not have been to hand.
02:31
< catalys22>
enable_if is a horrendous language hack
02:31
<&McMartin>
I don't deny it
02:31
< catalys22>
what you're saying is that I'm am expert even from the point of view of other experts, technically speaking?
02:31
<&McMartin>
But it's one of the things that appears to be in your toolkit, even if (indeed, especially since it is) rarely used.
02:32
<&McMartin>
Yes.
02:32
< catalys22>
huh
02:32
<&McMartin>
To make this extremely concrete
02:32
< catalys22>
neat
02:32
<&McMartin>
I am the best C++ programmer I know in the flesh.
02:32
<&McMartin>
When I get stuck, I ask you for advice.
02:32
<~Vornicus>
argh I got eaten by eating so I didn't continue responding but: yes I know of publish/subscribe and yeah that kind of thing seems very common
02:32
< catalys22>
:D
02:32
< catalys22>
this explains why I find it difficult to get help on coding tasks
02:33
<~Vornicus>
like there's the gang of four book and game programming patterns and all that shit and it's
02:33
<~Vornicus>
...okay yes these things are here but it feels like you need to use them on top of a design that ...
02:33
<&McMartin>
Yes
02:33
<~Vornicus>
yeah. now, bed
02:33
<&McMartin>
That's why I'm struggling to find a reference to use, and am reduced to "we need whiteboard drawings"
02:34
< catalys22>
patterns are a common language and a starting point, not designs in and of themselves
02:36
<~Vornicus>
and toymaker/engine user leads to not great habits when you suddenly find yourself in command of a thing that you need to actually do the enginey bits
02:37
<~Vornicus>
slep for real or I will be ded
02:38 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has quit [Connection closed]
02:44
<&Reiver>
catalys22: Bearing in mind I do not understand what you actually do as a skillset, I am familiar with your position
02:44
<&Reiver>
And it is one where you are getting very close indeed to no longer "Asking for help" but "Conductingt original research" any time you hit a wall you're puzzled by~
02:44
< Mahal>
"but.. .I just do my job ...? it's my job...?" "yes and LITERALLY NO-ONE ELSE UNDERSTANDS WHAT YOU DO, YOU ARE AN EXPERT"
02:45
< Mahal>
I am not in that boat with, er, anything I look after, tbh, but I am the resident expert on several things and it took me a solid two years to accept that
02:46
< Mahal>
"I dunno, ask Mahal, she's the expert." "NO I'M NOT I AM JUST A PLEB" "look shut the fuck up, around here NO-ONE ELSE KNOWS ANY MORE, and can you in fact answer the question?" "... yes ..."
02:46
< Mahal>
"Right, that makes you the SME"
02:46
<&Reiver>
Mahal: Hahah
02:46
<&Reiver>
I have found myself intermittently in the awkward position of correcting the Enterprise Software Vendor on the behavior of their own software
02:47
<&Reiver>
Not in terms of bugs, oh no, that is a perfectly reasonable thing to discover
02:47
< Mahal>
I have done this multiple times to MS support
02:47
< Mahal>
except I think that's just cos they're shit
02:48
<&Reiver>
"Yeah, so I'm having some issues with architecting our solution to properly pull off X..." "What? Why are you doing X at all? Are you mad?" "To deal with Y?" "Y doesn't happen." "Yes it does. *proof*" "... Hang on, I'll hit up our dev team." "Sure. I'll wait."
02:49
<&Reiver>
"... Yeah so I took what you said to them and they have admitted they didn't know their software did that either, but now you've explained it to them they admit it turns out it totally would do that after all, they're happy to put it on the next Sprint as something to try and work out a solution to..." "Oh, cool, but FYI I already built X anyway while I was waiting." "... Oh. OK."
02:51
<&Reiver>
I ended up presenting my solution to their systems architect when he visited NZ. Who was awfully keen to see what we'd done... and I was very careful to emphasise it was not as a 'this is a good solution' but a 'as I go through the rube goldberg machine, hopefully you will notice just how many spinning wheels I have built as I identified the issues A, B, C...' ¬¬
02:52
<&Reiver>
Ended up a conversation with "Yeah, we thought A was a good solution at the time but it's clearly not fit for purpose, having seen this we now know what fit for purpose should look like"...
02:53
<&Reiver>
...and my favourite bit that was so good I wish I could put it in my CV or something: "Well, we are very impressed with what you have achieved, and we are very sorry you had to achieve it"~
02:54
<&Reiver>
So
02:54
<&Reiver>
That happened ;)
02:54
<&McMartin>
Heh.
02:55
<&McMartin>
One of the stock interview questions is "looking back over your career, are there any projects you've done that you would have done differently in retrospect?"
02:56
<&Reiver>
... I will need to think on that one, because "Does it count if the options in terms of technology stacks changed after we'd already built the thing" count as a valid qualifier?
02:57
<&Reiver>
Because "Shout at the vendor until they finally cave in and provide us the technology stack we'd demanded all along and they had insisted was impossible until the dude was eventually overruled by his system architect" turns out to have been a potentially valid solution, but one that only became clear in retrospect!
02:59 Degi [Degi@Nightstar-bbsr42.dyn.telefonica.de] has quit [Ping timeout: 121 seconds]
03:03 Degi [Degi@Nightstar-6p74l6.dyn.telefonica.de] has joined #code
03:07 * Mahal giggles
03:08
< Mahal>
My usual answer is "... yes? I mean, all of them, because lessons-learned always show up things you should have done differently in retrospect?"
03:08
<&McMartin>
Well, I mean, yes, but generally they're asking to get insight into how you learned lessons and possibly which ones you learned.
03:09
< Mahal>
i know, I'm being an ass
03:18
<&Reiver>
Yeah
03:19
<&Reiver>
More honestly: "Yes, we should have handed the bit of custom work off to the vendor to implement themselves and to hell with whatever it cost, our custom solution allowed greater flexibility but has become an albatross around our neck in terms of continual updates ever since"
03:19 Pink [user1@Nightstar-g7hdo5.dyn.optonline.net] has quit [Ping timeout: 121 seconds]
03:20
<&McMartin>
My stock answer to this question is similar!
03:20
<&Reiver>
"... And if we're totally honest, maybe next time being allowed to decomission one set of extremely customised code before implementing the next one for precisely one single bill's worth of overlap would sure have been nice"
03:20
<&McMartin>
It works out to "we shouldn't have used C++ for this project, given how it was ultimately used"
03:20
<&McMartin>
Tempered by "the languages we *should* have used for it either did not exist or were languages I, the sole designer, did not know at the time"
03:21 Pink [user1@Nightstar-g7hdo5.dyn.optonline.net] has joined #code
03:21
<&Reiver>
hah, quite
03:21
<&McMartin>
Now. Partway through I had to get a crash course *in* that language that did exist at the time in order to get it to work at all, and then glue the C++ *to* it.
03:22
<&McMartin>
So the prescient ideal alternative really would have been "do the crash course first, then do the whole thing in that"
04:39 celticminstrel [celticminst@Nightstar-olm4vg.dsl.bell.ca] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!]
05:43 VirusJTG [VirusJTG@Nightstar-42s.jso.104.208.IP] has quit [Connection closed]
05:43 VirusJTG [VirusJTG@Nightstar-42s.jso.104.208.IP] has joined #code
05:43 mode/#code [+ao VirusJTG VirusJTG] by ChanServ
07:00 Vorntastic [uid293981@Nightstar-h2b233.irccloud.com] has joined #code
07:00 mode/#code [+qo Vorntastic Vorntastic] by ChanServ
07:07
<&[R]>
https://drewdevault.com/dynlib.html <-- hmm
08:20 catalys22 [catalyst@Nightstar-vu6bd4.dab.02.net] has quit [Ping timeout: 121 seconds]
08:27 catalyst [catalyst@Nightstar-h9jmlu.dab.02.net] has joined #code
08:56 Kindamoody[zZz] is now known as Kindamoody
08:58 Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has joined #code
09:21 Emmy is now known as Emmy-Werk
10:29 McMartin [mcmartin@Nightstar-c25omi.ca.comcast.net] has quit [[NS] Quit: reboot]
10:31 McMartin [mcmartin@Nightstar-c25omi.ca.comcast.net] has joined #code
10:31 mode/#code [+ao McMartin McMartin] by ChanServ
12:30
<&jerith>
Reading up a bit, this seems to be a position I am in a *lot* these days.
12:31
<&jerith>
"None of the existing options actually do the thing we need, so we get to either modify one of them or build our own."
12:32
<&jerith>
Also, "what would you have done differently" is a complicated question for me.
12:33
<&jerith>
And the answer usually boils down to "guess the future better".
12:35
<&jerith>
Or "try arrange to not have certain problems until a year or two later".
13:06 celticminstrel [celticminst@Nightstar-olm4vg.dsl.bell.ca] has joined #code
13:07 mode/#code [+o celticminstrel] by ChanServ
13:44 macdjord [macdjord@Nightstar-rslo4b.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
13:44 ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [[NS] Quit: WeeChat 2.8]
13:44 ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code
13:44 mode/#code [+ao ToxicFrog ToxicFrog] by ChanServ
14:04 Kindamoody is now known as Kindamoody|afk
14:25 Pinkhair [user1@Nightstar-g7hdo5.dyn.optonline.net] has joined #code
14:27 Pink [user1@Nightstar-g7hdo5.dyn.optonline.net] has quit [Ping timeout: 121 seconds]
14:29 macdjord [macdjord@Nightstar-rslo4b.mc.videotron.ca] has joined #code
14:29 mode/#code [+o macdjord] by ChanServ
14:34 macdjord [macdjord@Nightstar-rslo4b.mc.videotron.ca] has quit [Ping timeout: 121 seconds]
14:48 catalyst_ [catalyst@Nightstar-nkuuah.dab.02.net] has joined #code
14:50 catalyst [catalyst@Nightstar-h9jmlu.dab.02.net] has quit [Ping timeout: 121 seconds]
15:03 Vornicus [Vorn@ServerAdministrator.Nightstar.Net] has joined #code
15:03 mode/#code [+qo Vornicus Vornicus] by ChanServ
15:49 Kindamoody|afk is now known as Kindamoody
17:10 Vorntastic [uid293981@Nightstar-h2b233.irccloud.com] has quit [[NS] Quit: Connection closed for inactivity]
17:20 Emmy-Werk is now known as Emmy
20:20 Kindamoody is now known as Kindamoody|afk
21:20 catalyst_ [catalyst@Nightstar-nkuuah.dab.02.net] has quit [Ping timeout: 121 seconds]
21:23 catalyst [catalyst@Nightstar-rfrqc5.dab.02.net] has joined #code
22:06 Kindamoody|afk is now known as Kindamoody
22:30 Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has quit [Connection closed]
22:32 Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has joined #code
22:59 Emmy [Emmy@Nightstar-9p7hb1.direct-adsl.nl] has quit [Ping timeout: 121 seconds]
--- Log closed Sat Jun 27 00:00:24 2020
code logs -> 2020 -> Fri, 26 Jun 2020< code.20200625.log - code.20200627.log >

[ Latest log file ]