We started producing shows as Today with a Techie on 2005-09-19, 13 years, 10 months, 5 days ago. Our shows are produced by listeners like you and can be on any topic that "are of interest to hobbyists". If you listen to HPR then please consider contributing one show a year. If you record your show now it could be released in 8 days.
This episode is about modeling vehicle designer that can be used to design all kinds of vehicles available in the game. It relates to episode about performing research.
Two major parts about vehicle designer are components and chassis.
Components are modular pieces of vehicle that are assembled on chassis. They can, among other things, be things lie star sails, astrolabe navigators or long range sensor. Each component is defined by two values ComponentId and ComponentLevel. If you know these two values, you’ll be able to find out details of the component. ComponentId tells what component it is and ComponentLevel the general knowledge of it. When component is first discovered as a result of research, it’s just a prototype and as a such doesn’t function particularly well. Further research refines it and factories are able to produce higher quality components.
Two particularly interesting fields are componentSlot and componentType. componentSlot has type of ComponentSlot and defines what kind of slot the component occupies in chassis. As there are limited amount of slots in each chassis, designer needs to make compromises on what components to install. componentType has type of ComponentPower, which defines what component does in general. It could be sensor or provide supplies for the vehicle for example.
Technology requirements are defined by function: componentRequirements :: ComponentId -> Maybe Technology. It defines which technology unlock a given component. Part of the definition is show below. Each and every ComponentId has to be handled.
componentRequirements ShipLongRangeSensors = Just HighSensitivitySensors
componentRequirements ShipBridge = Nothing
componentRequirements VehicleWheeledMotiveSystem = Nothing
componentRequirements VehicleHoverMotiveSystem = Just HoverCrafts
Second major part of the designer are chassis. They’re stored in database, as I wanted a bit more flexible system than hardcoding as I did with components. Following piece of configuration is used to define database table and generated data for Haskell code. Most of the fields are probably easy enough to guess. type with type of ChassisType defines if this particular chassis is for example a land vehicle or a space ship. Various slot fields on other hand define amount of particular slots that the chassis offers.
Not all chassis are equal and some (probably pretty much every one of them) have some sort of requirements that has to be fulfilled when designing a vehicle. For example, space ships require a bridge for captain and star sails. Bawley, smallest of the working ships has room for two star sails, but requires only one of them to be installed in order to be a valid design. Flyboat on the other hand is smaller ship built for speed and always requires two set of sails.
This data is stored in required_component table and represented as RequiredComponent data. Both are generated from the definition show below:
With all that data, we can now design a vehicle. Process is roughly the following:
based on completed research, get a list of chassis that are available
select chassis from the list
based on the selected chassis and completed research, get a list of components that are available
select components to install
remember to check that maximum tonnage isn’t exceeded and that there’s enough slots and requirements are met
fill in name
save into database
Completed design is saved in two different tables. First one design holds info like name of the design, faction that design belongs to and used chassis. planned_component holds info about which components are planned to be installed and in what quantity.
deriving Show Read Eq
We are using this as an opportunity to have a round-table discussion about the series, about Awk, and where we recommend the listeners should go from here. Including this one we have produced 16 episodes covering the features most likely to be used in pipelines on the command line or in simple shell and awk scripts.
Note that although the HPR site will list this episode as having a single host, in fact it has two! Plans are afoot to enhance the HPR database so we can eventually indicate this properly.
Started in 2016 (first show released 2016-07-13)
Finishing in 2019
16 episodes in total
Why are we finishing the series?
We have probably reached the limit of what is useful on the command line or in shell scripts or even in manageable-sized Awk scripts
Awk shows its limitations as we go on and doesn’t compare well with more modern text processing languages
Our personal experiences with Awk
Started with sed and awk when first moving to Linux in 2011
(ongoing) Exploring and cleaning client data
(ongoing) Personal scripts when adding python or other tool would be overkill
Working with VAX/VMS in the 1980’s. No very good text processing features built-in, so Gnu Awk (and sed) was a great way to handle the data we were using to generate accounts for new students each year. Could easily spot bad records, do some data validation (for example impossible dates of birth).
Later in the late 1980’s and early 1990’s more Unix systems came on the scene running HP-UX, Ultrix, SunOS, Solaris, OSF/1, True64 Unix, and awk was very much used there.
Later still we moved to Linux; initially Fedora but later RHEL, and of course awk figured in the list of tools there as well.
What have we left out? Why?
User-defined functions are pretty clunky and hard to use
Multi-dimensional arrays: other languages do this better
Internationalization: assumes you’re writing big awk programs
The gawk debugger: quite clever but probably overkill for this series
Extensions written in C and C++: some come with gawk and look quite good, but this subject is out of scope
What to use as an alternative to Awk?
DM moved from gawk to Perl (version 4) in the 1980’s and later to Perl version 5. This might have engendered an awky, Bashy mindset that’s hard to shake off. Not the recommended place to start these days.
BY moved from gawk to Python and R for large projects. For interactive Bashy exploration, moved to XSV, q, and csv-kit for most use cases.
These tools have built-in convenience features, like accounting for headers, data types, and file encodings
It is planned to turn the notes for this series into a combined document which will be available on the HPR site and on archive.org. There is no timescale for this at the moment
The National Institute of Standards and Technology of the US Government issued the NIST Cybersecurity Framework, which has recommendations for private companies and mandates for U.S. Government agencies. For people who work in information security in an Enterprise environment, this framework may be of interest, so we will take a walk through it.
Released: 2019-06-27. Duration: 00:31:08. Flag: Clean. Tags:Music,Recording,Audio,Tape,Reel-To-Reel,Open-Reel,Recording Devices,Tape Speeds,Bash Scripting.
I talk about my latest thrift-store gadget, a 1969 Sony portable reel-to-reel tape recorder
Released: 2019-06-24. Duration: 00:31:04. Flag: Clean. Series:How I Found Linux. Tags:linux, intro, story, discourse, bsd.
A response to the request for "how i got into linux" and a little of my history with Linux/BSD
Released: 2019-06-17. Duration: 00:26:16. Flag: Clean. Series:Interviews. Tags:opensource, photography, lubuntu, darktable, rapidphotodownloader, displaycal, gimp.
In this episode, Yannick talks with Wendy Hill about her use of opensource software in her job
Released: 2019-06-13. Duration: 00:29:17. Flag: Clean. Tags:programs, linux, android, apps, applications, lists, favorites.
Moving right along with shows from the requests list, I combine two program lists.
Released: 2019-06-10. Duration: 00:39:07. Flag: Clean. Series:Interviews. Tags:nagios, network, monitoring, opensource, singleboardcomputer, sbc, raspberrypi, odroid.
In this episode, Yannick talks with Robbie Ferguson about the Nagios Enterprise Monitoring System
Released: 2019-06-06. Duration: 00:23:11. Flag: Clean. Tags:HPR, Policy Change, Legal, DMCA, TWAT, Fair Use, PacketSniffers, Copyright.
A request for comments on not publishing clips with known fair use samples
Released: 2019-05-27. Duration: 00:46:24. Flag: Clean. Series:Interviews. Tags:vcfe, vintage, computers, exhibition, munich, germany.
I interviewed some of the exhibitors at the recent vcfe.org event in Munich, Germany.
Released: 2019-05-23. Duration: 00:08:13. Flag: Clean. Series:Podcast recommendations. Tags:podcasts, narrowcasting, broadcasting.
I provide a slightly different view on podcasts to that recently given by Knightwise.
Released: 2019-05-13. Duration: 01:29:47. Flag: Clean. Series:Interviews. Tags:ubuntu, snap, snapcraft, flatpack, linux, appimage, alan pope, popey.
In this episode, Yannick talks with Alan Pope about snaps, snapcraft and all things related
Released: 2019-05-10. Duration: 00:07:42. Flag: Explicit. Tags:Android, fdroid, lineageos, AFWall+, Wi-Fi, wpa_supplicant.conf, termux.
Ken fixes an Android Firewalled Wi-Fi connection that reports no Internet and won’t connect