Update metadata and transcripts through end of July 2026

Refreshed episodes/hosts/comments/series from hpr.sql, and added
official HPR transcripts for the 180 episodes aired since the last
sync (hpr4516-hpr4695).
This commit is contained in:
Lee Hanken
2026-07-31 16:18:57 +01:00
parent 37e8274bff
commit 087f80c44d
184 changed files with 61169 additions and 41 deletions
+384
View File
@@ -0,0 +1,384 @@
Episode: 4629
Title: What did I do at work today? Part 2
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4629/hpr4629.mp3
Transcribed: 2026-07-31 16:15:28 (official HPR transcript)
---
This is Hacker Public Radio Episode 4629, for 2026-04-30
Today's show is entitled, "What did I do at work today? Part 2"
The host is Lee and the duration is 00:42:53
The flag is Clean, and the license is CC-BY-SA
The summary is "Lee does some coding implementing the user interface toggling availability of a list of resources."
You are listening to a show from the Reserve Queue.
This show was submitted in April 2025 to cover occasions like this
where there are gaps in the schedule.
there I'm Lee, this is going to be a bit of a continuation of my last unscripted episode
where I was talking about what work I did and that episode ran on for about an hour so I tried
to make this one a bit shorter and this is just one little piece of work done and do today
so I'll set the context again and the software is online platform for motor mechanics,
it provides some technical info and it helps them manage their business and I'm an employee of
the company that provides a software at the time of recording so I'm working remotely rather than
the office today so one day a week I work in a rented office and then there is the time
my motor remote I'm doing this on a desktop PC this is a custom built PC and I'm running
Ubuntu at the moment as my daily driver this version of the software they may be planned to
change this in the new version which me and my supervisor have talked about but in the current
version this is running on ASP in that with forms and the language is visual basic it's using the net
framework which is native to windows and unlike net core the net framework will just run on a window
server so I run run on Linux so because of this I'll be using a virtual machine to run windows
and I'll be developing on windows with the software that Microsoft provides called Visual Studio
and there's community edition as free or the professional in the enterprise edition
I've got license provided to me for the professional edition of Visual Studio 2022
and the database is an SQL server database and I'm running the developer license of SQL Server
on my developer machine but obviously there's commercial license for the actual live production server
okay so have a toll on my desktop die click and it will launch windows and launch the
libvert viewer so it's a patched version of the display drivers that I create especially
to install on windows 11 because of the monitor that I've got it's ultra wide screen and the display
resolution on this monitor wasn't supported in the drivers that I think red hat provides
called vertio so I'd click a tile on my desktop and it launches I was doing a bit earlier so
virtual machine was already running so I just tap on the icon and the bottom of the taskbar
and it launches me into windows so I'm opening Visual Studio and I've got three solutions
at the moment on the go there's the what I call the class library which interfaces between the
application and the database then there's the tests for the class library that actually
just goes through and make sure that the class library works as it should when I'm
wonderful the class library and then there's the application itself so earlier today I made some
changes to the class library and the tests and also in SQL Server Management Studio I made some
changes to the database tables and the stored procedures the change I was working on today was
for resources which are things in the garage like an MIT by so if you're not in the UK
MIT is the test that cars have to pass each year to make sure that they're roadworthy
so some resources could include an MIT by it could include certain tools or other things
and I just want to have a boolean flag so it's a yes or no true or false flag
there would say whether the resources can't be available so for example one of the MIT
bays might need to be repaired might be being serviced itself that resource should not be available
if it was then needed to be booked the person booking the use of that bays should
know that it's not available or it should just not be listed as being able to be used
and that part of what I'm working on haven't got that fire yet so still at stage of
quote defining the various data entities and providing user interface to work with these
data entities so later on it will be possible hopefully to put the calendar that you want to do
a certain job and a certain day using certain resources with certain stuff about this stage
it's kind of defying the staff and defying the resources and defining their availability
at sort of after this monx bit will be defining the jobs and what resources in staff are needed
for a certain type of job you know such as an MIT would need an MIT by for example
so I've got visual studio here I'm launching the application solution
and it's just loading it up so my visual studio I've got dark theme going there I've got different
colours for syntax highlighting and I've like exported those settings they import them again
and I kind of just do that so kind of matches the same colour scheme that I've got in sublime
text which is my other text that I try use when I'm coding even for myself for from my other employer
but it just helps that when I'm in visual studio for this employer that the colour scheme looks
kind of similar actually I'm just going to run this application and it takes a while to load and
it's connecting to a local copy of the SQL server database and it's actually running on my Linux
machine base that windows machine is connecting over the like local network to access the server running
on the Linux machine so it's launched Firefox and it's launched the application at local
host a certain port I can log into this application and choose a username password and Firefox
fills in for me of the test use of that I use and although it's a real user but the data I've
got scripted on on the mice is the data so while the data is real any personally identifiable
information has been changed with like random values that do kind of make sense but they're not
real data so in much less than the risk of accidentally doing something with someone's real data
like especially you don't need to be emailed out or something like that by accident or unless
MS message to it by accidentally fire off or if someone going to my machine they won't be
getting you know real people's real data well it's they would be getting it but anything that
identifiable about it like names and email addresses and telephone numbers would have been an
on the mice so going to the settings screen of this application and it's a bit slower on my
death machine than it would be in production so it takes like a few seconds to navigate between
the pages and I'm then going to the diary section of the settings which is the bit I'm working on
and I've got different tabs that I've created in this section workshop resources staff holidays
and advanced I'm not sure whether it now did spend quite some time on the advanced is perhaps
too advanced so I don't know if this will be there when it comes to the end user seeing this
but it's there at the moment so I'm looking at under resources and I've got coming up
the title resources and then it's a subtitle like base in equipment and it's got a bunch of
adder resource and it's got resource and resource type and then next to each one it's got an
icon to edit on icons delete and these icons come from font awesome so I can add a resource
and it's like it gives me a name for the resource and it gives me a type so it could be a workshop
or a vehicle left or an air compressor thinks like that it's got save and cancel I'll just cancel
that so what I'm kind of thinking is do I want to specify the availability of three sources
and the same place that I'm defining the resources I kind of I'm not sure so I could have another tab
so just to mention just why I've already defined the data side of things and that class library
when you're doing the user interfaces sort of another kettle of fish you try and keep those
fairly separate so it's almost like in terms of the data and the class library I've given
myself the tools to work with but then now I'm doing the user interface I can layer the user
interface and lots of different ways potentially and the same data could be present to the user in
different ways in different parts the user interface so you're kind of hearing my unscription
thoughts about this so could have a resource availability tab and now I think we already have quite
lot of tabs already and would have call it resource availability and how will I do this so
if I have resources I just want a long list of the resources and then just to tick off
whether they're available and not with a burning flag I mean I'm almost thinking in this section
for the resource so I could have a resource availability tab but I am kind of thinking a nice user
interface would be to have with this resources just like a tick box so not editing it but just
I think like an extra column that says where it's available not in a check box so when I define
these resources I made the number of columns like configurable so it could be free columns
two columns or one column and just from how I've kind of got familiar with how it looks as I've
been developing it I kind of decided to set one two columns so I think there's there's still quite
bit of space so could have a check box and that right so this is another user interface question
do I want it to have to save after you've clicked the check box or do I want the check box
to automatically apply that and you like you don't want the user accidentally tick in the check
box without kind of realizing that they're changing the data so throughout the rest the user interface
you've got save buttons almost on every form so that the user knows that it's not changing
stuff until they click save and then it will pop up it should pop up a message some area that's
up where it will save that the items have been saved or if there's a validation area it might
save that you know what's invalid and that it hasn't been saved yet and that they need to change
something before they can save it so also when I put this check box to the left or to the right
and it's kind of a mix like a mixing metaphor's got on the right hand side you've got these two icons
to which I like actions that you can do like edit or delete and then you would have a check box
which is a directly editable field so I stopped the recording there to have a think about it
and of consulted with the AI chatbot from a certain well-known cloud company and had a little
discussion with it and I decided the way to go would be to have toggles the instantaneously
save whether the thing is available or not thinking about how that will look it's a bit difficult
for me to plan out user interface stuff exactly how it looks I've got always run the browser and
dark mode and obviously all the users are running it in light mode so I'm seeing these controls
and icons as pink on black but if I can somehow turn off my dark mode it's called dark
region this thing some reason I haven't got midnight at visit on this never get why so without the
dark mode it's a dark purple and white is a color of that stick dark reader back on
so the large language model has come up with a way that I can create a toggle control
in web forms because there is no native toggle control it suggests I could use another
to give me a toggle control by really always prefer not to add dependencies especially if it's
going to be some sort of substantial dependency because then that needs to be kept up to date
even it being cursor costs sometimes so I'd just be happy if I can implement the toggle control
myself right so the first thing I've got to do is I leave the browser running actually
visual studio doesn't look that good with everything running because it lays out everything different
when the browser running so hit the stop button and my browser disappears so my user interface
for this bit of the application I've been creating what's called user controls so I've to find
the user control thing I've got everything related to this stuck in the folder I'd create called
diary because I mean this code base a lot of it is in almost all the the SPX is which are the
actual different web pages of the application they're all in the root directory
my stuff that I'm developing I put it in a folder called diary and like when I was doing
the counting stuff before I put that in different folders called zero and sage and quickbooks
just to keep it a bit organized and not to have so much clutter in the root directory
and these are all ASCX files which is not the same as ASPX because these are like
used to find controls which this is a way of compartmentalizing the coding and making a bit more
structured and not having the code all in a big mess together just keep stuff separate that should
be separate or partition it as it were so I'm looking at the resource table control I think that's
the word of it one or the resource well it will be the resource table control because that will
have headers or add an extra header which is a TH in the T-head of the table and I'm
putting it in an EM which stands for emphasis which basically means italics ideally I'd be
styling italics with CSS but for whatever reason I'm styling it with just in the EM tag so I'll just
put available and save that and then so it's a resource table second column
resource table first column okay I've just realized there are two columns here and actually it's
not entirely configurable by parameters it actually does depend on the bit of actually putting
the headers into both the left column and the right column so I need to do the same thing
and put the available as a header in the right column I'm figuring out how these rows are
getting populated all right so it's got a yeah resource type edit and delete so I just add an extra
column to the row control because obviously the table control has lots of row controls inside it
and let's see what is actually is the chatbot recommending I do so I'll just use as checkbox
and as be checkbox for this but I'm just going to style it as a toggle and have it instantly update
rather than need to press the save button as be colon checkbox and give it an idea I'll call the
ID available so this is the last two columns what should call the CSS class I'll call it a toggle checkbox
don't want giving it text but that's what's been recommended to fire up also that hopefully the
text will be hidden once the CSS class is applied it's actually I can implement this before I
implement the toggle the CSS of the toggle I can actually fully implement this working
actually saving to the database I'm just going to run this to make sure the my checkbox is now
appearing and clicking on the resources tab yes so what I'm seeing is the resource the type of the
resource the two icons the idea delete and then I'm seeing an available column and there's a checkbox
under each one and I can toggle it on and off why not toggle I can tick it on and off it's got the word
available next to it so yeah before I go CSS styling it to make it look nice that's actually
implement making it do what it's meant to do so guess I want a function in the row control to run
when the checkbox is being clicked and this will do what's called a postback so I should make it an
auto postback basically or I just do explain about postbacks this is the thing the way that
I have been web forms works and I've told you before this bit of an old technology but basically
every time you change something on the screen and it saves it on the on the form as it were
then the client sends an HTTP post to the server and it contains the state of all the controls
and this kind of happens behind the scenes most of the time sometimes you need to like get into it
and interact with it as it's happening but a lot of the time it's behind the scenes and it kind of means
that it kind of came from people wanting to develop especially like visual basic how they're used
doing the past but then do that on the web so it's pretty much the programming experiences
very similar in terms of yourself events that fire it's just these events are always kind of sending
something back to the server and then the server is sending stuff back to the client when that
happens so I know the modern thing is that the client is his own thing and it communicates with
the server via an API I mean that's a common pattern now so you'd have a single certainly something
else I've been working recently I just had us like the whole web page I just had like one web page
basically and even though there are lots of screens on it lots of different options it was just the
one HTML file the whole time with just different bits of it being shown and hidden and so on
so it would never actually reload the HTML file and in fact if you did reload the page
using the reload button you would basically reset the entire state of the application and have
to login again so any interaction with behind the scenes would be even an Ajax request and that's just
a communication behind the scenes from the web browser to the server and they would go to what's
called an API endpoint an API is an application programming interface that is something that's
interacted with through programming rather than interacted with by the user
it's basically the distinction between an API and something else that interacts so the API was
needed to save the state or to get new state you know to get to fetch items for example but
that the way this works is slightly differently so this is actually receiving stuff back from the
server and using it to render what's on the front end in a way it's it's a bit of the same idea
I'll try not to muddy every muddy things too much there's this whole thing with web applications
of managing the client's state and the server state and it gets complex however you do it isn't
I don't think that there really is a perfect pattern for doing it and it's just the patterns
of people tend to use have changed over time and the API one has become what popular in a way
this is an API but it's an API that's not exposed or designed by the user it's an API
as part of the underlying platform that sorts of Microsoft's thing that facilitates the communication
between the web browser and the server and to keep the states in sync and doing what they need to
so anyway that was a bit of a die tribe or a bit of a distraction okay so I think the best
way to do is to have a property that tells you whether the thing is available or not okay
well this is silly isn't it because I can just read and write from the state directly
so when the resource object is set which will be done higher up in the hierarchy I want to
change the state of the checkbox so within the public right-only property called resource object
I'm going to say available dot checks equals object dot resource available and as I was typing
that visual studio is popping me up little lists that would help me pick from what I could
possibly type related to what I'm typing and that's quite handy because it stops simple like
typos at least you spell everything right if you're picking it from a list as you're typing it
first as if you're trying to type it out of memory and just making spelling errors and then actually
I don't need to propagate the state of the checkbox up the hierarchy because I'm going to make it
apply immediately I won't have a save button it will just be as soon as it's changed it will
change in the database so I do need a event handler so I'll kind of private sub-routine called
available changed and I'll say handles available dot checked changed so sorry I should call it
I recall the function or the method checked changed because this is one of those things you
could call the method whatever you like but it's a convention just to call it the same as the event
and basically I all I want to do is save it to the database so make sure I'm including
access to the database and I am I've got well it's not the database it's the class library
in the class library in turn talks to the store procedures in the database and they in turn
actually read and write the data from the table so that you've got at least two levels of
instruction between the user interface code I'm writing and actually getting in the database
so I'll create a new resource object object resource as new resource so I'll say
object resource dot resource ID I'll say actually I want to assign several fields of one so I
use the wave command with object resource dot resource ID equals and I think I'll go
property in this classical resource ID and then I'll assign this resource name
the resource name equals resource name both coming out red
oh no sorry resource dot text and then dot resource resource type equals yeah resource type nice
it's that right it's property called resource type ID resource type ID so resource type
equals resource type ID so resource ID resource name resource type and we're very
available which is what we're doing now so dot resource available equals which is defined
a property if we got property no resource available equals available dot share it then we'll just save
that to the database object resource dot add so add is and I it might be updating but just add
tool handle the situation of it updating and that's it and this just run this and see if it works
and it'll be quite miracle if it does actually work first time I'll sorry I've just realized
I need to have an auto post back because the check changed I don't think runs
automatically I've got feeling I've got to specify that whenever this control changes so when
it's tick to run tick then we want the client sent the post back event to the server so we just say
auto post back equals now we go through now run it again click on the resources tab
I have kind of expecting an error to happen when I do but we'll see
I notice this is quite nice I don't know what I'm seeing is the the hoist so I've got three
resources to find a hoist to jack in a radio for some reason I think that was just test data that
called it radio 25 but the hoist is available with the transmission jack is available and
the radio isn't so now it's a moment of truth I'm going to tick off the hoist from being available
and it reloaded the page and the hoist is not there so I just go to another tab
and then come back to this tab just check that the hoist is still in the there
I'll make the radio available and I'll even go to a whole different page
and then I'll come back to the settings screen
go back to the diary section, go back to the resources tab and yeah so the radio is still available
so this is work so all that's now required is for me to make it look nicer
with some CSS CSS is cascading style sheets which is basically
even though you've got information on the web page the cascading style suits decide
how it's going to be presented to the user you know what it actually looks like so
it can look completely different depending on the cascading style sheet and thankfully this
chatbot has given me a bit of CSS that I can possibly use I've got a choice I could embed the CSS
in the actual control that I made a thing or I could make it global and I think it may be
making it global be good because then I can reuse it so I'll go into the thing that's a style folder
somewhere styles and then we've got style dot CSS and it's quite a long file just double check
if this toggle defined here and already know no one's defined a toggle so far so I'll be the first
to define the toggle and actually it's got some quite extensive CSS provided by the
large language model so briefly reviewed it I'm going to kind of paste it in and just
kind of see how it goes I don't appreciate it adding comments for me well it adds comments
then that's good for me to know that they're there but I don't really want them in the code base
they're more there to help me understand what this code is doing and how I might tailor it
so it's like a whole host of CSS classes I've just put in now and I'm just adjusting the
indentation because it's unhappy you've got completely into indentations completely inconsistent
with the rest of the code here and I'm seeing these put some colors in so it's probably I
will want to adjust to make them consistent with the rest of the application assuming this works in
some way save that and then run it we'll see well it has done absolutely nothing that style she
is actually been included going to the web developer tools and I just reload the page recent
style.css yes even a pen something to the URL just to make sure it just depends on number
to make sure it always reloads the style she I did save that I'm going to actually look at the
response of that and scroll down to make sure when you don't assume anything yeah everything
everything I'd paste is in there is there right I'll go to the I'm going to run it again
I'll go to the web inspect and see what classes it's got yeah I have done I'm not super familiar
with any of these tools in particular it's not like I've been working with them for years so I
don't kind of never assume anything about how anything is working I just figure out what it's
doing I've now I'm seeing something different then the checkboxes and they look at there
when I've run it this time let's turn off the dark reader such case makes it different
do what I said I was going to do which is check the CSS class of the toggle of the checkbox
yep so span class equals toggle checkbox it's got stuff within that so what I'm seeing is an
input so when it's created this checkbox it's put an input in a label so I'm kind of thinking
the CSS class wanted it to be applied to the input rather than the thing so I'll go back to my
style she and I'm wrong I mean it's all here and I'll be bugging not loving you bugging mode I'll
say so toggle checkbox position relative display in light block width and high it's got
thing that makes it invisible and it's got a slider and a slider before and a slider
after I'm going to read through this to figure out what it's meant to be doing so this is talking
about a pseudo element so then what is the pseudo element this sort of crates of virtual element
that isn't really there in the HTML but the CSS creates it so then I've seen something I've
never seen before which is a plus sign in this CSS class definition it's the adjacent sibling
combinator so it's just the next one along basically if two are side by side you know what I'm seeing
that we should be yeah we should be defining this checkbox a bit differently with summation of
so put inside a label just not a nice p-label just a plain HTML label and we should be putting
a span after it's called slider so this is probably why the coding sample isn't working
wasn't showing anything so let's go into my a cx so resource row control dot a cx
to be honest the label isn't made it so it may be just adding a span class equal slider
let's try that now which I can see I actually need to read the closing tag of the table data element
what is sell element and if I can do a hot reload that's neat yes so you can actually
without recompose the program well without having to stop and then rebuild everything you
still hot reloading it's compatible it needs to or that's together what it needs to now
got these toggle boxes about the right size so don't want the word available being there because
that's redundant by the way I don't need this to be a slave or a combinator span
this is looking quite good now so it's actually a different color the ones that checked
the ones that are not checked although I don't like it and switch off the dark mode to a click this
one there isn't checked it doesn't do anything you should be reloading the page some maybe it
did need a label oh it's actually working it's now it's just it's not moving the slider anywhere
as far as it needs to so I'll see I've got translate x only two pixels I must have done that
accidentally look back at the code but was suggested 26 yeah I should have made that 13 and half
the size of everything and I know everything's meant to be responsive nowadays and should be using
example pixel values but this application is very much it's been designed not for my
ball if there's going to be a mobile version that's going to be have a different UI it's designed
to be on a table or a desktop PC so hot reload and to refresh the page there's to resent
the post back data maybe my hot reload is not functioning as it should close the browser
and run it from scratch again and then she my eyes are dying so I'm putting the dark mode back
on so I didn't seem to be interfering with things too much oh very nice well almost clicked on it
and it just refreshed the page so it's doing the animation but then it refreshes the page and I click
and again it does the animation and then refreshes the page now I'm just thinking is it about
word available is such a long word to be up there in the header again I'm going to go to
some my little chatbot and to the large language model thing and the for synonyms
something operational working active functioning ready online life present accessible in service
up and running deployable so as you could reverse the meaning and actually he's down
for lot of operational or out of service placed in the web browser seem to have a lot of browser
windows open so close not nice go back to my diary folder look at the resource table control
and it's still of the word available I'll just have your life question mark your life of a
question mark again I'm telling the dark reader of actually I do want to see the actual colors
that it's rendering these as I think green would be better than blue okay this green is a bit too
light this one is a bit too olivey and this one is just right and actually the flash on the screen
when I click the toggle thing and it reloads that's not noticeable when I'm in light mode it was only
noticeable when I was in dark mode just because I think that the dark reader was having to
reapply the CSS after refresh in the screen so this is quite nice it's still kind of think the
word life looks a bit clunky with a question mark so I'm going to just take off the question mark
right so I'm going to save this code to the repo can't leave sin dropbox and that keeps an
instantaneous backup for any version of any file but I want to then copy what's changed into the
repository so I've got a problem called beyond compare it's a Windows program
actually got myself because I just found it useful and it's a similar one called meld on Linux though
though this seems to be the best one that I found them works well for me on Windows looking to see
if I've previously compared these folders and yeah there's the previous compare there such
open that one and then I go into the in application folder it's still refreshing because it's
not just comparing the file dates it's actually doing a proper compare of the files see in
something that's changed and don't know why so I'm going to do a diff or quick compare it calls it
right this is something I'm seeing stuff that someone else has done so I've got a feeling I'm not
got I've got a different branch in the repository because I was working on some of the counting
side of things and so it's actually using the main repository rather than the branch that I'm using
for the diary project so I'm just going to delete this folder and refetch it from
the repository and get up so I mean I'd say no had to delete a folder on the command line
in Windows I know Delta Reusters did a job but I don't have Delta Reusters exists but rather just
sent it to the recycling and then I've got GitHub just to get the URL that I need some typing
Git plan minus b diaries name the branch and pasting in the URL and it's got me the latest version
and I run my file comparison program again I've been at going to the application directory
I mean I know if this is the right thing because yes I just my diary files I can see four of them have
been up there and while I've been updating the ACX files also been updating the dot fee
ACX dot vb files which hold the code and the dot ACX dot designer dot vb files which hold the
light that design layout although I never edit that directly myself some copy in those to the
right it's prompting me that I'm sure want to do that and yes seeing if anything else got changed
nothing got changed relating to what I've done today I can look at I can now is useful to look at
the dates I can see nothing else with today's date so then I'll just upload those changed files
to the actual branch and see the the program directory in the git status you can see those files
there so last time I was recording a website about this I was going for a rather long-winded way
using Git because I had a few issues and I just wanted to be a hundred percent sure so I was
being overexplicit so I can much more concisely commit these files to the repo so so git commit
a hyphen hyphen all hyphen m in quotes include toggle control for saving availability of resources
and then git push for a chin diary and if it's gone so I'm going to look my time I spent on that
I've got a little guilty that monitors what files I'm accessing uses I load fire weight
I'm just seeing how long I think I spent on that given that I did even I wasn't coding that
long it did take me quite a lot of thinking about it and researching it so I'm going to look
two hours for that so I'm going into job plan going into my log folder going into 2025 we can't
ding 25-0426 already got an entry for 25-0420 so I just say a availability toggle to resources
and two hours synchronize that saved okay so hopefully I've able to see this down so it's not
anything like as long as it actually took me for you to have to listen to and there was like a
good period of thinking time in between when I started and I paused it and then the second half
that's just the way it goes I have been kind of doing other things what in between the first second
half as well I didn't look at those hours I think someone's messaging me now so I'll probably end
the podcast here so this been completely unscripted so apologize if any of it seemed a bit off the
cuff and thanks for listening thank you bye
You have been listening to the Hacker Public Radio podcast, at hackerpublicradio.org.
Today's show was contributed by a HPR listener like yourself.
If you ever thought of recording a podcast, then visit the HPR site to find out how easy it really is.
Hosting for HPR has been kindly provided by anhonesthost.com, the Internet Archive, rsync.net, and the HPR Community Content Delivery Network.
Unless otherwise stated, today's show is released under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.