AI usage⚓︎
Part of this year's HHC is to use some form of AI. AI has been probably the most significant tech trend in 2023, so this fits in really well.
As with the HHCs before, for me it meant I had the incentive to delve into a new technology. My experiences were mixed - please read below about them:
Voice Synthesis⚓︎
This is a must for solving the "Door Access Speaker" challenge.
A web searched found many sites that offered the needed functionality - read a text aloud in a voice based on a audio sample - but the business models behind differed wildly. Some sites had a free demo which would allow to upload a voice sample, but only use a predefined text. Providing our own text would only work for a paid account, which in turn meant giving away much personal data.
Finally, a tip in the HHC discord led me to AlphaDragon, which allows to synthesize arbitrary spoken text with no login. The result sounded convincing to my ears, and too the rating algorithm of the door access system as well.
Image Generation⚓︎
That was really fun. I tried several sites, but soon stuck with Microsoft's Image Creator that uses the DALL-E engine. Reasons were the size of the images, speed of generation, the subjective quality, and a sufficient daily usage quota. The title image of my submission is from there; I used the prompt
steampunk style. a head looking longingly at a laptop screen showing a scene from a caribbean island
Tools that generate images from a textual description are absolutely liberating for me.
Simply put, I cannot draw. Even my stick figures lack stickyness.
GenAI opens up creative possibilities that were closed to me before - be it illustrating the story to a Geocaching hunt, be it having captivating art-like graphics in a presentation.
Before, this felt almost like a disablement. Now, I have the equivalent of glasses, a hearing aid or a walking stick.
Technical Help⚓︎
I have been stuck for some time in the Active Directory Challenge. The vast amount of API calls for management.azure.com, graph.microsoft.com and related APIs is overwhelming, so I tried asking Bing Chat for help.
My prompts were along the lines
Using REST API, how can I find the domain controller?
or
Using REST API, how can I find AD domain information?
However, Bing would unfailingly come up with API calls that addressed DNS domains - not AD domains. Adding further prompts like
This is for DNS, not AD domains
did not help. Does this show a general problem of Large Language Models with words having several meanings? Or is there simply no way to use the REST API for AD domains, and Bing gave the best answer in those circumstances? I do not know.
Text Generation⚓︎
The first part of the introduction comes straight our of ChatGPS's pen.
Oh, the horrors.
Transcription - Talk like a Pirate!⚓︎
Sailing ships, tropical islands - I could not resists asking Bing Chat to transcribe my solution to Snowball Fight to "Pirate Speech".
Again, mixed results. See for yourself.
Transcription - Text improvement⚓︎
I asked Bing Chat to make my original answer text for Phish detection Agency easier to understand. Please see there for the prompt and result.
Code Generation⚓︎
This is the story of this HHC, so it must feature in the solution as well!
An opportunity arose during Missile Diversion.
I needed a hex string of a serialized Java object. The Bing Chat prompts
give me java code that serializes an object of class SatelliteQueryFileFolderUtility and writes the result as hex
generated
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class SerializeObject {
public static void main(String[] args) throws IOException {
SatelliteQueryFileFolderUtility obj = new SatelliteQueryFileFolderUtility();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
oos.flush();
byte[] serializedObject = baos.toByteArray();
String hexString = javax.xml.bind.DatatypeConverter.printHexBinary(serializedObject);
System.out.println(hexString);
}
}
As I was not sure whether the class javax.xml.bind.DatatypeConverter was installed on my machine (and out of a general dislike for anything XML, and out of curiosity), I followed up with
Please do not use javax.xml.bind.DatatypeConverter
This produced
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class SerializeObject {
public static void main(String[] args) throws IOException {
SatelliteQueryFileFolderUtility obj = new SatelliteQueryFileFolderUtility();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
oos.flush();
byte[] serializedObject = baos.toByteArray();
StringBuilder sb = new StringBuilder();
for (byte b : serializedObject) {
sb.append(String.format("%02X", b));
}
String hexString = sb.toString();
System.out.println(hexString);
}
}
I could use the program with just the minor modification of adding the initialization parameters in the "new SatelliteQueryFileFolderUtility()" call.
This is impressive.
Even if a traditional web search returns similar code (e.g. stackoverflow), using the AI was much faster, as I did not have to screen multiple result pages for usable code.
Of course, this is still the level of "boilerplate" template code. I wonder how AIs will fare when the prompt includes more and more requirements?