“I’ll just put together a little proof of concept application. Get some screenshots, that’ll look sexy.”
Yeah. Yeah, I’ll do that.
My background is in software development. I’ve been writing code for more than thirty years now, both for work and to support my hobbies (as in “make tools to help me do my hobbies”, more than “make money to pay for my hobbies”).
On reflection, it seems that while I still understand a lot about writing code, I have a fair bit to relearn.
Nothing I can’t overcome, of course, given time. Looking at what I’ve been writing for the last few years, it’s mostly been a mix of… not what I’m doing now.
- PL/SQL package writing (i.e. RDBMS data processing).
- XSLT scripts (i.e. XML data processing).
- Perl scripts (i.e. text processing and glue connecting other tools).
- Web application (full stack developer in C# and ASP.NET connecting to Oracle… i.e. mostly pushing queries and presenting output as HTML).
Which is to say, lots of backend work, often using languages well-suited to their purpose and that have a lot of what I need to do more or less built in.
Then, there’s what I’m doing now. I have several pieces to get together.
- Database. Which is mostly solved, in that I’m inheriting SQLite by way of calibre… and it’s convenient enough.
- Database translation layer, to deal with ‘custom columns’, dynamic field specification. As a designer I have a sense of what entities and fields I want, but I’m not cooking them into the application. Instead, I’m making an engine that lets me be very flexible in how I want it to work, so I can define at a high level what I want and the engine can deal with the plumbing. But first, I need to make the engine.
- A front end the user interacts with. I could use Python, as calibre does, but since I think that’s part of why performance suffers at large library sizes (confirmed in part by a very simple proof of concept — GUI application that opens and displays the list of books in a 229,244-book library) I’m leaning more toward C#. This still isn’t the fastest option available to me, but it’ll still save me quite a bit of time and effort.
With only a little investigation and digging, I can get something to do these things. I wrote a program that displays a window with a list of all the titles in this library, but there is a lot of hardcoded material in that program. I don’t mind that for a proof of concept, since all I’m trying to do is prove it can be done, but looking at the code I wrote, I’m not proud of it. There is a lot of idiom I simply don’t know.
So. Back to first principles. “Introduction to SQLite”-level stuff, and “Your First WPF Application”-grade material.
Today, I learn.