Showing posts with label Project Post. Show all posts
Showing posts with label Project Post. Show all posts

Tuesday, August 20, 2024

The Blog - 2024

Um hello! I'd wish you a Happy Belated Blog End and Start day, but that was a while ago... Did anyone one get the licence plate of that August? I'll be picking calendar shrapnel out of my brain for weeks!

If you're new here, welcome, good timing. The next sentence I'm going to write is weird, but it'll be a whole year now before I write again. My rule is to never start a project without an idea of how it ends, so I never set out to blog for more than a year at a time and the beginning of August -- actually mid July, but honestly nothing here makes that much sense -- marks the end of the last year of blogging, and, since I feel like continuing on, the start of the next year.

I noted last year that I wanted to cut back on quantity in favour of quality. I've certainly achieved reduced quantity, quality isn't quite where I want it but you know, things are coming along. I guess my goal of this year is now to increase the quantity of the quality.

I'm proud of the two "Things about Games" posts I wrote (Sea of Stars and Unicorn Overlord) and I enjoyed the things I wrote about reading and rereading. I also had fun rebuilding the way I record the books I read and the games I play. Games especially aren't quite there yet, but my over engineered mail merge is fun. 

Do I know what I'm doing next? Nope. I might blog more. I might finally move off blogger/blogspot. I might just hang out and write another August post here next year feeling like I'm almost where I want to be. Still I'm working on getting the "shoulds" out of my life and just doing. 

I'll see ya'll for the New Year's navelgazing. In the mean time I hope we can have a little adventure. Hope you've found a nice seat. 


A view from a lawn chair of a bit of a messy yard, under a blue sky with a couple of fluffy summer clouds.


Tuesday, May 14, 2024

Project 24: Blog HTML Generator - Introduction

 I’ve been having a lot of fun with my new book tracking infographic. Doing things like making a word cloud of authors and a grid of titles is just interesting enough that it’s a great job to have on hand when I don’t want to do anything that needs more thinking. And more, or less, I like the look of what I’ve put together. I’m sure I could make it more … infographicy … but for now I still like it and that’s all been an easy amount of tracking.

What frustrates me (or at least leaves me squinting over a screen) is that I like the look for two columns of data for books and authors and other things, but it is hard to manually transcribe and update that information correctly. While I’m enjoying making some parts of the infographic by hand there’s no reason not to automate the parts I don’t want to do by hand.

The data that I track for books isn’t terribly complicated, and my display isn’t all that complicated either. My first thought was that I could probably just build a table manually in Python. Then I started looking around and while Python has an HTML library that I could possibly use I also discovered Jinja, which is a template generator you can call from Python and which lets you build structured text with your own data added in.

I thought Jinja looked fun, possibly having old timey Mail Merge nostalgia, and I really enjoyed the bit where it just takes a template and adds your data where you put in a marker. It has some fairly functional concepts of conditionals and loops and didn’t rely on much else. You can use it for a bunch of different things, and it’s probably overkill for me, but I’m a sucker for accessing data in double braces. {{ humour }}

Getting Set Up

Documentation for Jinja is a little spotty, but not too bad. The big thing to keep in mind is that you need to install Jinja2 using pip. (Also then that you have to call it as jinja2 in code. I found the Geeks for Geeks tutorial pretty good to get started. I went through the tutorial a couple of times and once I knocked all the rust off my Python knowledge I was able to pass lists of dictionaries to the Jinja renderer and get a basic version out.

On the note of Python rust, the thing that really got me the connection of Python keyword arguments to Jinja’s variables, but once I remember and got comfortable with method keywords (template.render(authors=authors)) things got better. (I guess by convention for Jinja I should be calling that context, but I’m very bad at using libraries conventionally).

But the left and right!

I’ve maybe given too many introductory programming questions in my life, but when I looked at trying to neatly organise data into two columns, my first thought is to check if we’re on an even or odd iteration of the loop.

Jinja, does not do that.

There might be a way, but when I made a variable and counted to it, it turned out it was being reset at the beginning for every loop (or possibly just never being changed). That was fairly disheartening, until I stopped and actually read the weird little blurb in the Jinja Tips and Tricks page, which I’d skimmed past a dozen times.

The loop.cycle() method is pretty neat. When you call it in a loop, it returns the 1st argument in the array passed in, every time it’s called. When you call it on the next iteration, it returns the second argument and so on until it runs out of arguments then it loops around in the arguments again.

The way to use this took me a little while to process, since in that example there, they’re changing on each row, but the thing I needed to konw is that can call the method again with different arguments, and the nth argument will always be returned. So I was able to update my template to either added the row start, or nothing, and then added nothing or the row ending.

This is how that ends up looking:

  {{ loop.cycle('<tr>','') }}<td>...</td>{{ loop.cycle('', '</tr>') }}

I also had to add a check at the end to add an empty table element if there was an odd number.

  {% if books|length % 2 == 1 %}<td></td></tr>{% endif %}

I also added a set of conditional tests to add bold <b> tags. Which really catches the thing that I struggled most to do when I was building these tables manually.

Other cleanup

I finally broke down and thought I’d ask ChatGPT a programming question. Unsurprisingly, if you were look at my search history (or listen to me grumble about files), I asked it how to open a csv file in Python. The answer was about as good as Stack Overflow would have done for me. (that's gotten more complicated since I asked, I guess). The answer was wrong (or more correctly missing a very important detail, but good enough.

I did get to learn that when you open a csv file, you can include the field names in the arguments to csv.DictReader, which is very helpful.

reader = csv.DictReader(file, fieldnames = ('name', 
'books_read_month', 
'pages_read_month', 
'books_read_year', 
'pages_read_year'))

At this point things bogged down, I did not expect Excel to ambush me with “I now show all data upside down” (like, no seriously, it shows all of the text upside down and the rows upside down) so that obscured some issues I was having with getting the data arranged properly. (I’m blaming excel for reordering the CSV, … see the upside down thing above). But with a little manual work I’m now able to get data out of my tracking spreadsheet and into some template HTML files which I can then put into my blog posts.

The thing that made me happiest was as I was working I realised how much duplicate code I was generating between the template and the CSV loader for most of the tables. The books and the authors are unique but all of the other tables share a format, and so first I was able to use the same template. Then I was able to tidy up more and just pass the file name to the one method and process all three tables with the same method and template combo. That nicely reduced the size of the generator script and made me feel like a proper computer scientist.

Next Steps

My current “hand crafting” set up is that I copy select data out of my main reading spreadsheet and export it as five CSVs, then I run the HTML generator over those and get five files with the tables. I then pull those tables into the blog post in blogger.

That really covers all of what I’m looking for and the data is simple enough that I don’t really need anything else for books. The original idea for the project was do stuff more or less by hand and I’ve automated the parts where I was frustrating myself. I might come back and mess around more, but for now I’m pretty happy with the book infographic.

The game infographic is a little more of a mess and the new format I’m thinking about needs a lot more data displayed and folded in different ways. So I think I am going to go on and play with Jinja to generate a monthly games infographic. I’ve done a little bit already so hopefully I’ll be able to pop out the March and April infographics before the end of May.

It’s been a fun project and was nice to take on something a reasonable size which I could finish in a reasonable amount of time. Jinja seems useful for a lot of other applications, so I’m glad I’ve at least had a chance to play around with it.

A Few Helpful Links

Friday, March 01, 2024

Project 21 - Code Doodle - Swarm Doodle (Introduction)

It’s been a while since I’ve built anything interesting in the Artificial Intelligence field and with all of the neural network / transformer / LLM nonsense going on right now, I wanted to go back to one of the parts of AI I love, swarm systems.

If you haven’t heard the term before, boids are a generic model for the way organisms swarm together. Think fish in a school or birds in a flock. Each animal has a pretty simple set of things its trying to do but sometimes the overall effect can be breath taking; think of a huge murmuration of starlings at twilight. Boids -- think they fly like a boid -- are a way to model how bunch of simple agents can create a very complex behaviour, and how small tweaks to an agents behaviour can change the way a whole system performs (think starlings compared to geese). They're a very old addition to the world of artificial intelligence, and they've also been extreamly important to the world of film making.

Walter Baxter / A murmuration of starlings at Gretna / 

That being said, it’s been a very long time since since I’ve messed around with swarms (or boids) and I’m quite rusty and -- as I think is a theme here -- my vector math always seems to be just a touch insufficient. So, I’m going to write a short series as I go about putting my swarm system together.

I’m not going to go into all of the details right now, but I’m going to roughly follow Craig Reynolds Boid model. A lot of the details aren’t in the original paper and the content in the Wikipedia article is slightly out of line with my memory, so I’m going to bushwack from what I have to a hopefully working swarm system (rather than do more reading right now).

For this doodle, I’m taking my pre-existing moving agent code -- which I always wrote with an eye to doing a swarm system and expanding on it. To start I have little circles that try to balance being between the mouse and the middle of the screen. To build boids we’re going to have to expand that a little and add in a few more things to do.

I’m trying to stay close to Reynolds model for now, although there’s lots of fun to play with later on. I’m going to set up three “urges” for the boids, a separation urge -- “I’d like to not crash”, a heading (or alignment) urge -- “I want to go where everyone else is going” and a cohesion urge -- “I don’t want to be the only one out where I can get eaten”.

I’ve been working on this for a while -- and then not working on it for a while, so I’m starting to write with the intention of kicking myself into finishing the project. I’m about halfway done putting everything together -- which you'll notice when you look at the code in the repository, and I think I’ll write this up in four or five posts over the next few weeks. Once I get the basics done, I’m looking forward to all the other things I can play with.

Thursday, August 03, 2023

Ten and Three Years Blogging

Well, it’s August again and I get to wish you Happy Blog End and Start Day.

If this is your first Blog End and Start Day, welcome! This is the day when I “wrap up” my blog and then also the day when I start a “new” blog for a new year. This is the tradition because I always find it hard when long running projects fade away and so I don’t want to take on anything that doesn’t have a committed end date. So every August I start a new season (or edition, or volume) of the blog.

This is somewhat complicated by the fact that I tend to actually make changes to how I’m blogging in January, but I publish my first real post on … July 24, 2011… wait why do I write publish these these on August 1? Aaanyway, this is my yearly update to the Blog as Blog (writing about things, as opposed to project updates).

The biggest thing that’s different this year from last year is that the actual number of posts is way down. I’ve gone from averaging 5ish posts a month to more like 3. Most of that is changing how I keep track of the books I’ve been reading, and going from a list to a monthly infographic. This has generally made me happier because it cuts down on trying to keep track of the books and having a constant need to post and honestly making the monthly infographics has been fun. In light of all of the AI nonsense going on right now, doing things by hand feels worthwhile and entertaining and satisfying.

I’ve also been trying to put less stuff on the blog so that I can focus more on projects, be that [writing] or other stuff. I also want to write more better blog posts, I really want 2023 to be the year I set myself as a writer in my mind, and writing more meaningful posts is a part of that, so I’m trying to put less filler on the blog.

Since April I’ve given myself the objective of writing two meaningful blog posts each month. One is supposed to go on here, and the other is supposed to go on my professional blog Learning and Technology. I should be at eight posts so far, and I’m at five, but I feel like I’m moving in the correct direction. (It is the nature of blogging that all posts are made while moving in the correct direction because when you’re falling around not doing things, one of the things you don’t do is blog.)

Virtual stickies on two squares, one square reading 'General Update on Code Doodles', 'Most Memorable Mario Levels', 'and Station Mystery Process'. The other reads 'Using Good AI for Teaching' and 'Thinking more about AI - June 2023 edition'

I think I’m happy content wise with what’s up and I feel like I’m doing things I like doing in a way I like doing them.

What I’m increasingly less happy with is the platform. I’ve been on Blogger for a while and got very close to quitting a few years back when they suddenly modernised a bunch of stuff and it got easier to use. As a platform blogger is okay, but it isn’t exactly doing what I want. The biggest (and maybe dumbest) thing right now is that it still limits you to 200 characters of tags per post. That’s fewer characters than I generally need and it breaks the way I want to be using tags.

The other thing is it’s past time that I consolidated my digital footprint outside of Google’s infrastructure. Especially with issues coming up around AI, the time feels right to move on, but also just in general if I want to advocate for doing things the right way online I should probably do things the way I think they should be done.

So I’m going to start looking at moving the blog over to my own infrastructure. I’ll post lots of updates as I get things set up, but you may have to move your RSS feed when the change comes. A while back feedburner had a fit, so I took it off the blog, but then it started working again, so if you follow on RSS and have for a while, migration should happen automatically, but it may not. It’s 2023 never trust a corporation, or software, or anyone, or anything. Maybe move to the woods and help restrore the environment...

Cough. I’m not 100% sure what tech stack I’m going to go to, but figuring that out will give me more things to blog about, so it’s a win all around. At the moment, I might lean into wordpress, but I also think, given a lot of what I want out of the web, I may go towards Hugo and try to keep things as flat and dumb as possible.

Anyway, that’s your update for another Year of the Blog. Take care and I’ll see you in August 2024 (plus hopefully lots of days in between).

A sky split with clouds on the left and blue on the right over bright trees.

Saturday, July 29, 2023

Project 23 - Update - Actually Writing the Station Mystery

I’m trying to get better about getting things done and finishing projects. Of course, I’ve decided to try finishing an 80,000 - 100,000 word novel. I hear that this may not be the easiest way to get practice in.

Still I’ve been working on writing a “shitty first draft"1 of my Station Mystery novel for the last few weeks. When I wrote about the book back in January I mentioned not being too sure how to go forward since I’m usually trying to do so many things at once. I’ve decided to focus on the Station Mystery as my primary project and try to prioritise working on it. So for these last few weeks I’ve set a goal of writing for half an hour a day, which I do after the things I have to get done, but before the things I should probably do. I’m not really consistent yet, but I’m moving in the right direction.

Half-an-hour is not a lot of time. I’m only able to write about 500 words if I write the whole time. On the other hand, I’m having fun, I’m actually doing it and 500 words a day is so much better than 0. So for now I’m going to say that it’s a good start.

Chart of words written, with 3 chapters growing over time with the total ending just over 6000 words.

When writing, I’ve instituted a general rule that once I finish a paragraph, I’m not allowed to go back and edit it and this is really helping me to get stuff on the page. I am allowing myself to leave comments in the margin as I go so I can either fix a thing, or just note something or just point out just how shitty the draft is. This gives me just enough of a push that I can let what I’m writing go without getting hung up on it being good or even making that much sense.

A blurred view of green and yellow stickies on a yellow rectangle.

Since I first wrote about the Station Mystery at the beginning of January I did two starts on the first chapter and gave up, but my new rule is helping get things on the page. I’ve also rewritten the outline, with less text but more sticky notes in Miro. Those two outlines have helped me work out what needs to be said and what I’m supposed to be doing in each scene. Since it *is* a murder mystery, it’s also helpful for figuring out how the mystery fits together.

Comments from a google doc saying: 'Weird?' 'Weird.' make sure to make formal bow a thing. No shaking hands and generally not much touching non-family

I’ve also started using Obsidian to build a world book for the story. I’ve been using it increasingly to keep track of things at work and it’s a really helpful way to track things like relationships. I’m trying not to world build too much and it helps to be able to make decisions on the fly.

At this rate I hope I’ll be finished with the first draft by the end of the year and by then I’ll have a whole extra year’s practice of writing and be ready for what ever happens next.

1Lamott, A. (1980). Bird by bird. Bantam Doubleday Dell Publishing Group

Saturday, April 08, 2023

A General Update on Code Doodling

Doodle Code is my “knitting” project, where I dabble in programming while watching TV or during family gatherings (hey, it works for my family), and I haven’t had any really goals, so I haven’t had a point to stop and update. It also turns out I’ve been a bit forgetful and messy, but oh well. Now seems like time to dust it off and share it with anyone who’s interested, even if it's not the repository of useful teaching code I'd thought it might be originally.

Graph of Languages for the Github repository, showing Java at 77.1%, Processing at 18.8% and Python at 4.1%.
Can you tell I'm a programmer who did most of his learning in the late 90s and early 2000s?

There are about 15 doodles, in various states of completion. Dunking on the dumb mathematical things sports casters say has been a bit of a theme and beyond that playing with colours. Everything else is things I thought would be interesting or just stuff I’ve been meaning to do (like the Coding Train Challenges).

I’d drifted away from doodling for a while, so back in February I thought it was time to start again. Then I came to the realisation that basically nothing was organised, documented or finished. I’ve started poking at that, but as it turns out it’s more fun to do new things than it is to go and clean up my own mess.

Graph of GitHub Commits showing tjkendon with 251 commits from January 2022, to April 2023, 6739 lines of code added and 1464 lines of code removed.
Github is always good for that endorphin rush of numbers go up.

Each doodle now has at least a description and a Readme, some are better documented than others, but that’s a starting point. I’m trying to strike a balance between working on new stuff and cleaning up what’s there so that it might be useful for someone else at some point. It may not be good for my existing habit of not getting stuff done, but I’m honestly feeling quite happy doodling around with stuff and I’m not feeling that compelled to “finish” anything. I am slowly learning to unlink my feelings of self-worth and happiness from productivity and I must say it’s quite refreshing and the project is leaving me feeling pretty good even if it may not be that actually useful.

Saturday, January 28, 2023

Project 23 - A Space Station Mystery Novel

Lately I've been reading a lot of mystery novels, and I've been kind of inspired to make something mystery on my own.


There's something in good mystery books that makes character and space feel familiar and comforting, even while unsavoury things are going on around your detectives. A good detective in a good detective novel is noticing things and connecting things and I think that makes the world feel really real and rich.


So I've plotted out a mystery novel, and I decided to set it on a space station. As I've mentioned for the other science fiction novel I'd like to write, I've been thinking about it for a long, long time about those stories and that world, and I wanted another way to approach them. So enter our hero librarian, her three friends, the diner they hang out in, a cast of hopefully charming and interesting people, a few of whom may be committing crimes.


I've drawn a map of the story and I've written around 3000 words in an outline (with a bit left to go).

A map of colour blocks linked by lines, most are yellow with a few in green and red, too zoomed out to identify any details. On the left side the word Protagonists, which is less a hint about the book as it is me struggling to zoom in my mind map tool.
Spoilers?


Hopefully it will turn out to be a fun read, with interesting people exploring an interesting place. I like the idea of sci-fi and mystery mashed up and I'd like to see where I can go with it. I'm also just very fond of the idea of space stations, and once upon a time write about a walk on one.


That being said, since I'm all over the place in terms of the projects I'm working on, both the ones I'm documenting here and the other ones. I don't know exactly when or how I'll work on this or what will come next, but if nothing else thinking about it makes me happy.


Friday, January 20, 2023

Project 22 - Setting up my own about page

In light of certain online spaces failing, I've been thinking about better controlling my presence on the web.  I've had an about.me set up for a long while, but it seems like it's time to make sure that I have a point on the web which I own.


So if you were wondering who I am (and where else you can find me), I now keep a list of all that stuff at tj.kendon.ca.


I've owned my own domain at kendon.ca for a long time, so that makes it an easy start for building my own identity page. It's been pretty good for e-mails, but I haven't really done much else with it. I already had hosting set up, so I just had to put a page together there.


My webdev skills have grown fairly rusty -- and weren't that fancy to begin with. So this project gives me a place to play with some things and learn some new stuff. I've already spent a while playing with Hugo, which lead me to realize that CSS has changed a bit from what I knew before. I have a lot to learn, but I'm excited at the thought of getting to improve my page regularly.


For now, I've set up a pretty basic HTML page with an updated version of my CSS from my grad school page. I've organized into the two spheres I think about my life in, work and making stuff and there are links to my web presence.


I think my next two goals for the project are to set up SSL and smooth out the CSS.  I'm not totally thrilled with the style right now, so I may also rethink what it is I want that page to look like.



Tuesday, January 18, 2022

Project 21 - Code Doodle - Introduction

 As I've mentioned in my last few updates I'm starting to get a little bit more done on some of my *other* projects. Despite my best efforts though, some of those projects are big, and hard to finish and they need me to learn things, even when I think I've kept them small. 


The solution to that is *clearly* to start doing something else as well. Because spreading myself thinly has really been a key to my success. 


Oh.


Right.


No, it's definitely the other thing where I'm not great at finishing things and it's easier to play with the new shiny thing than it is to get shit done.


That being said, I am starting a new project and I have a bunch of ideas whey I think it's a good idea.


Ok Fine. I'll bite, what are you doing?

I'm writing a bunch of tiny programs. They may help me do other jobs or they may just be things that seem cool to play with. Basically, I want them to be simple, easily completed, code doodles.

A cartoonish drawing of the word Code surrounded my some doodles of squares, lines and toast.



You Mentioned You Had Ideas as to Why This Wasn't a Bad Idea

Aha. Actually I said I have ideas as to why this is a *good* idea. Take that, Scalziesque interlocutor!

Still.

The biggest reason I want to write tiny programs is that I want to write tiny programs. I don't write that many programs and programming is fun.Sometimes your brain is a little bit on automatic and you want to engage it just enough to to have done something. It's knitting basically. Programming, fun times.

The second reason is that I'm working on *another* project, related to teaching people to code and I think one of the things we do very poorly when programming is teaching new programmers to read other peoples' programs. I've never had time when I'm teaching to get beyond the bare basics of what I need written for the students to work with, and so this seems like a great time to just build up a repository of interesting programs so that people can *look* at them at some point. In fact, at some point, I hope to have other people contribute interesting tiny programs too. (I don't know what that point is, so if you're interested in publicly sharing the code for a tiny program, drop me a line.)

The third reason is that there's a ton of things I still need to learn. Also there's a not insignificant list of things I've forgotten to a greater or lesser extent. And much as I hope Game Tracker will be great for teaching me, it's *already* too big and complicated for what I'd hoped to do for a lot of things and I need some places to play before I build those things.

The fourth reason is just to give myself practice finishing things. I'm bad at it. I've been bad at it for most of my life and so keeping the programs tiny seems like a good way to finish them.

The fifth (and for now final) reason is that it's a fun way to run into more interesting things I haven't had a chance to think about before. For example, how similar *are* the sets of {1, 2, 3, 4} and {3, 4, 5, 6}. So the fifth reason really ties the other together a bunch of the others in a way that should hopefully keep my brain moving.

So What Are You Doing?

I've made a GitHub repository and I'm uploading stuff there. No guarantees any of it's good or interesting (and if I've solved any of your intro to programming assignments by accident, (Sorry!) I'm not doing it on purpose. - Hit me up and we'll chat assessments in programming.) Feel free to keep an eye on it if that's the kind of thing that interests you.

So far I have 2 programs in the repo.
  • List Difference - takes a look at two lists and lets you see how similar they are. It's intended to help statistically mock sports casters. This one's pretty finished.
  • Food-o-rac-o-cycle - named for the food machine on the Jetsons (I think). This will tell me what to make for breakfast. This one's off to a good start.
I'm also planning to add a couple of other programs that I'm working on to help with the Chrono Sprites. I started them separately, but they fit the model for Code Doodling, so I'm going to drop them in too.

I'll update from time to time, but if you're interested in what I'm up to looking at the repository is probably the best place to see the latest.





Monday, November 22, 2021

Project 18: Game Tracker Update - 2021

 So it's been a long while since I've sat down and worked on the Game Tracker and it's also been a long while since I've written anything other than vague intentions for working on the project. Fortunately my new focus on creative work has push me back to it.


I was actually pushed by a post I'm writing for the blog that I'll share pretty soon. I've wanted to do a good explanation of Java's Preferences. I managed to thoroughly confuse myself with them and so thought I'd follow the Julia Evan's approach of writing about what confused me. I'd left my project in a thorough mess back in March - the equivalent of the truck sitting in the old bard with the engine out and wires and tubes laid out all over the place - and so in order to show how I was using preferences, I thought it might be a good idea to put the bits back together.


When I abandoned the project, I was in the midst of trying to convert the save system (persistence) to use JSON. That was part of a grander idea to connect to some kind of web interface - Google Sheets and Firebase are the two I've been eying. I ended up struggling to get Java and JSON to play nicely together and after a little bit of cobbling, I discovered that Joda-Time -  which I've used for managing time in Java for *years* - was also making everything complicated. 


I gave up and decided that since I mostly wanted the system up and running so I could finish the blog post - which I've been working on for months. I set up a project - well... took over the one from March - called 2021 refresh and tried to get a minimal set of the Game Tracker up and running. That was more or less fun, I built a CSV version of the data manager and then did all the cleanup I had to do to get up and running.


A screen shot of the Game Tracker showing the main menu.
Game Tracker - Pretty much the same after all these years.



I also realized that I've been keeping the GitHub repository for the project private. I think that's partly based on not feeling like the project was ready for people to see and partly fear about showing off my own programming work. Given what I've been thinking about with creative work and how I want to use my time going forward, hiding isn't going to help me, so I opened the repository to the public and put and MIT Licence on it - not that I think it will be terribly useful for anyone. I found Choose a Licence, which was helpful for comparing licences.

 

I also got to write a readme, which at the end of the day turned out to help me feel better about the whole project and make sure that anyone who stumbles across it will know what on earth is happening. Nothing about the whole project feels at all glossy or cool - like I would like it to - but it's happening and I've moved it a little bit forward. I found Make a README which was a really good resource.


I like that I can return to the idea of small tasks for the project now. For example, for reasons that are beyond me - maybe as a demo for students - I set the game systems to be a Java Enum. This is a terrible idea since for some reason new video game systems have been released in the last few years and I've even purchased some of them. It'll be nice to be able to jump in and work on that for a little bit and then be done.


I also have a lot of other things I'd like to do. I'd like to expand the interfaces to include a desktop GUI, something for my phone and something for the web. I also still want to set up remote data management for the system. I'll get to those at some point, but again my new approaching to getting things done means they'll hopefully trickle out over time.

Friday, November 12, 2021

November 2021 Project Update

I recently watched Cathy Hey interview Jeff Walker about building a creative career. While I'm not planning to leave my day job any time soon, I've been sitting on a lot of creative projects without making much progress and this really inspired me to get moving on a lot of these things.


I decided as a starting point I wanted to dedicate a little bit of time each week to working on projects. I set an initial goal of 5 hours a week and I really haven't nailed it yet, but I've actually started to get a little bit of stuff done. 


As apparently has become my wont I set up a spreadsheet to track my time, and so now my life outside of work is filled with colourful bar charts. 




My focus for now has been on reviving some actual posts in the blog. Inspired by Julia Evans (@b0rk), I wanted to start including more about the things I know and the things I'm learning. The first of those is using Java's Preferences. I'm using preferences in the Game Tracker so thought I'd use it as an example and then I realized that a) it's a horrible mess and b) it's not available to the public. Now I'm updating that and my next post will be about that.

So, generally, you can expect to see a few more posts outside of me tracking books and games here. I've made some progress on Chrono Trigger Sprites and I have a backlog to post there. Plus you can also expect more posts about technology, learning and teaching. I'm not committing to any set rates, but "more".

I feel pretty happy approaching my projects this way, so I really appreciate that video. I think I've started on a good productivity groove right now and I'll take it.

A sketch of a bunny-thing in a bunny-hat.
I've been sketching more too!


Tuesday, August 03, 2021

Project 1: Blog11!! - Update

So, a decade of doing this blog thing huh. I may still not have any idea what I’m doing but I’m moving ahead so that’ll have to be good enough.

This year I’m not in the garden because 
  • a) the smoke is in the garden and I’m tired of the smoke and 
  • b) I’ve picked up a full time job and it does take up all those in the middle of the day hours. 

A rose with bright pink flowers in a small garden.
I may not have been out that much, but the rose is happy this year.



I started blogging in late July 2011 and usually take the first of August as Blog End and Start Day. I'm a little late, but I mentioned that full time job thing. You may also be looking at the list of posts (way down at the bottom of the page) and be thinking to yourself, but TJ, you started this in February and then sat on you butt for several months, and to that I would say, yes, but I’ve found a way to make it more complicated as that.

The “blog” is a project tracker where I’m supposed to keep “the world” updated on the things that I’m doing as a form of self-accountability. That doesn’t work as well as I’d like, but that’s the idea. The *trick* is that the first of those projects is a blog where I practice writing … and keep track of interesting metrics about my life, so Project 1 of the blog is a “Blog.” Other projects are updates, but for the “Blog” I also post the posts here.

If that’s not confusing enough, Blog End and Start day is the day where I finish writing the “Blog” for last year and start writing the “Blog” for this year. Clear as mud? Excellent. The basic idea stems from how frustrating it can be when a long-running project falls apart because the creator isn’t into doing it any more. This way if I decide I don’t want to blog any more, well you wouldn’t have expected me to do it past August anyway.  (If you were somehow sitting there with baited breath for a new blog post to come out.) Between now and next August is my 11th year of blogging.

By far, I’ve spent this last year using the blog to keep track of games I’ve played and books I’ve read. In fact, aside from last year’s Blog End and Start Day post and my new year resolutions posts I only wrote one in-depth post (on Paper Mario: The Origami King). This was more or less on purpose, because I wanted to focus my time on creating novel stuff (well, new stuff, not just the novel…), so I’m happy enough with the blog this year.

I like keeping track of what I’ve read and what I’ve played because it feels so easy at the end of the year to look back and have no idea where your time went. Instead I’ve felt like everything I’ve played and read this year has mattered. It’s helped me to read more and it’s helped me to enjoy the games I’ve played.

Looking forward, I want to write more. So, I’m going to try to write more. I’d also like to document more about my thoughts for teaching and the things I like about programming. My day job involves a lot of writing and not that much teaching, so this feels like a great way to build my writing skill while keeping in touch with my teaching. No guarantees, but I’d like to write two posts a month. I’ll update my other projects in a bit and I want to get some progress on them too (as I always do).

Google has managed to clean up enough about blogger that I’m content to keep the blog here for now. I am still considering options (and the day job calls for more word press), but moving the blog feels like a ton of work if I don’t have to.

2021 is definitely bringing new and different things for me. I’m learning and growing and hopefully another year of blogging will help with that.

A blue sky above green pine trees and a brown garden fence.
Once upon a time, the skies were blue and we were happy.




Sunday, January 31, 2021

Projects Update: January 2021

I'm finding this particular project update a bit of a struggle. On the one hand I feel that I've been much more productive on my own projects than I've been in the past, but on the other hand I'm feeling a bit lost overall and like there's still a lot of things I'd like to do. 


At the beginning of January I started a new job and I'm finding balancing my energy difficult. I appreciate having my time better structured with a 9-5 position and the position itself has a lot of breadth for creativity, but I do find myself pretty tired at the end of a day. 


All in all I'm finding it a bit of a challenge to hit a balance that works for me. I probably need to relax and take to heart that I've only been working on this for a month. One thing I am trying to do is to reduce the number of things I'm trying to do at any point in time. For the first time in most of a decade I've reduced my daily to-do list down to just the absolutely must do things. Then I allow myself to decide what the best next thing for me to do is. 


As an AI researcher this gives me a real fear at getting stuck in a local-optima, but honestly I find that the landscape shifts and I'm able to get things moved forward here and there. Not as much as I'd *like*, but that's how life works. Beyond that, I'm trying to decouple my feeling of self-worth and happiness from productivity and completing projects, but that's a long journey to undertake.


At the moment, I've got 6 projects I'm providing updates for:

  • The Blog, as ever, is ticking along. I actually wrote my first editorial piece in ages earlier in the month. I may write more, but my primary focus is to have fun keeping track of my reading and game playing.
  • I left the Chrono Trigger Sprites without a deadline and I'm enjoying that. I've done a bit more and so there will be project updates about those eventually, but I'm not rushing and I'm kinda happy to have a hobby that just a hobby. 
  • I haven't been writing  outside of the blog, so my project on The Roofs has been slow. I think if I do decide to carve out a little more time this will be the project I go to first. I'm definitely sitting on those first four thousand words I wrote and finding it a bit hard to accept the permission to write terribly, while pushing forward. If I don't carve that time out, then I'll let this go dormant for a bit.
  • I want to put together a Google Drive backend the Game Tracker, but this has been complicated, because the documentation from Google is all built around accessing drive through a Gradle build. In my mind I'd just like a library I can link against, but that's not the way the (fairly limited) documentation works. This throws me off making any progress and even though I have other avenues I could work on, I keep getting stuck. I haven't put in a huge amount of time, but this is definitely a project I'm focusing on. 
  • One of the ways I was able to justify taking the non-teaching job is to myself that I want to work on Code Click, building teaching resources and building up my experience for teaching. Code Click is a huge part of that, but for now it's also a project that can wait. I'll come back to this (I've spent quite a while thinking about what I would like Code Click to be like), but for now I'm not going to focus on it too much.
  • My time on Infinite Acorn Adventure has mostly been spent trying to remember all of the linear algebra that I took (poorly) two decades ago. That's been fun in itself, especially with Daniel Shiffman's videos.

I'm not going to share any deadlines for things right now. None of these projects need to go anywhere in particular, so I'm going to work on them when I feel like working on them. Later if something needs a push to get *actually finished* then I might bring back the idea.

A sprite of Robo from Chrono Trigger, punching. Made out of perler beads sitting on a pegboard.
This was a lot of fun to build and definitely easier than some.










Wednesday, September 30, 2020

Projects Update: September 2020

My last general project update was in May and I was a bit surprised by how fast May went by. Now, it's September...

Honestly I struggled a bit with productivity over the summer and eventually gave myself permission to just take some time off. I also hit a bit of a complicated patch with finding post PhD employment and figuring out what I want to be when I "grow up".  

In short I'm finding myself myself drawn to a creative career as well as (or in favour of) an academic one. So I'm trying to balance both of those for the next while to see what's possible. I've set myself some goals for the next year to give myself some firmer deadlines and so that I can see what's possible with what I can create for myself.

I am finding it a bit rough teaching this semester. I had hoped to be able to take the semester to increase my creative output but ended up with more teaching duties than I'd expected. This is making it a bit rough to get things done, but I'm doing my best to plug along where I can. Remembering I can take the time for myself has been tough, but I think I'm learning.


Where I am right now:

The Blog (Project 1)

I did give an update as usual at the beginning of August. This trucks along and the reading and games updates are a fun task to take a break and do.


The Roofs (Project 11)

I didn't write nearly as much as I might have, but I did start writing and it felt pretty good. 

I finished around 4000 words in May/June, before getting distracted and wandering away from the project. I managed to get my focus back in August and started a rolling edit to revisit what I had and to tighten it up. I'm trying to avoid doing that again, since I need to keep moving forward, but I'm still feeling like I'm accomplishing something.  


Chrono Trigger Sprites (Project 12)

I finished the Robo sprite a while back. I was able to do it really quickly, but I've been slow to write the project post about it. I have it on my plate to get done in the next few days.

I'm enjoying working on these, but I'm thinking they're a lower priority than some of the other things I want to work on right now. I have 3 main characters left to do from the playable characters, but I think I'm going to tackle them when I have a quiet Sunday.


Robo In Action!




Game Tracker (Project 18)

I didn't get to work much on the Game Tracker at all. I'm feeling a bit conflicted about this because on the one hand it's not a priority for me. I want to focus on writing, making games, Code Click. On the other hand, it's beneficial to teaching and it's been the motivation for me to learn more about developing modern real world software. 


Infinite Acorn Adventure - Bubble Puzzler (Project 13)

As I said, I've spent a lot of the summer thinking about what I want to do and how I want it to sustain me (and also putting food on the table might be nice). One of the things that really came to the fore for me was that making games was a place I wanted to focus. I've also been thinking a lot about how I want to be able to tell stories through games and use games as a mechanism for supporting a good life.

As such, I've been a bit frustrated with myself about the fact that I'm not working on making games and I'm not learning about making games. So I think the solution to that is to make a game.

Code Click (Project 20)

I think one of the roles I fit very well is computer science communicator. I'm interested in making things easily understood and I think generally there's a problem in communicating about computer science. Given that I'm in a state of looking for full time work in some combination of technology and teaching, spending a bit of time working on my computer science communication skills seems worth while. 

For my classes this semester, I've obviously had to move my teaching on-line, so I'm already developing those skills in a university context. I think pushing the science communication skills makes sense, and I think trying to capitalize on Code Click is a good place to start.


Where to next?

My thinking for the next bit of projects is:
  • Infinite Acorn Adventure - A prototype in Processing by October 31.
  • Code Click - One post by October 31.
  • Game Tracker - I'd like to have a google docs back end, working by November 31.
  • The Roofs - I'd like to get a finished (but bad) draft by August 1, 2021.
  • Chrono Trigger Sprites - If I get to them I get to them, I'm not going to give myself a deadline.
  • The Blog - will keep travelling along.





Saturday, August 01, 2020

Project 1: 10Blog - Update

Well, happy Blog End and Start Day again.

I've returned to my garden (actually I've been doing a thing called "vacation" for a few weeks so I've been here a lot of the time) and it's time for that annual end of the blog post. And as I usually do it's also time to start another year of blogging.

Small yard with a brown fence enclosing roses and raspberries.
The garden does not look nearly as good as it did last year, but it's a learning activity.

I generally prefer things with a defined start and end date (much as I'm bad at hitting them a lot of the time), so I find breaking the blog up by yearly volumes (sessions, editions?) helps keep it from feeling like it goes on forever. This is also traditionally the time where I reenforce my distinction between the blog as blog and the blog as project tracker. Effectively, I created this to keep track of projects I'm working on, but one of those projects is to practice writing and getting this out.

The last volume(?) of the blog covered an odd period of my life (I mean it included spring of 2020, so it's been an odd period in everyone's lives). I was fairly stressed in the fall and winter semesters with my day job, and trying to figure out how to live life when not doing a PhD. I'm slowly making progress on that front but honestly it's been a rough year in general.

For the most part the blog itself has been ticking quietly along on series of posts about the games I've played and the books I've read. I've been enjoying tracking those, so I'm happy enough with that. Aside for that I've written a few project posts and I feel like for the first time in a while I'm getting much better traction on the projects I'm working on. (Look for a project update shortly).

I am interested that the only thoughts on post I wrote was for Animal Crossing: Amiibo Festival.

Overall a quiet year for the blog, but as I wrote in my update last year I wanted to focus my energy elsewhere, so I guess I've done alright.

My total posts per year, highlighted by month. You can see more on my Blorgress Page

Over the last few months I've wanted to improve my writing and I think my project focus for the last half of 2020 will be on writing the novel I've been thinking about and on writing a manual of interesting coding. That could also include more writing here, but that depends a bit on what I want to write about. I definitely have thoughts in mind on Ocotopath Traveller and on Paper Mario: The Origami King.

I'm also considering moving the blog itself off of Blogger/Blogspot. I've been generally unhappy with outsourcing hosting to Google as a provider for a few years now, as we've seen power on the Internet being consolidated and algorithmic filtering affecting how people are able to access information. I'm also exceptionally unhappy with the recent interface update which has really increased the length of time it takes me to make a post. The tag system has always been bad as well and finding a solution that makes me happier is becoming more important.

I haven't made a decision about what I'm exactly I'm going to do yet, but things muttered on the internet sometimes come true. I am planning to look at Hugo for Code Click and if that goes well there might be a change.

In the mean time, generally, you can expect to see a continued series of updates on books and games, with an occasional update on other things or thoughts I feel like I want to share.

With that, I hope you have a good August, a better end of 2020 and a much, much better 2021.

Thursday, July 02, 2020

Project 12: Chrono Trigger Sprites - Lucca

Not even a year later ... I finished the next sprite in my Chrono Trigger Perler Sprites. Everybody, let me introduce Lucca.

A sprite of Lucca from Chrono Trigger made from fused perler beads.


I managed to work on Lucca much more quickly than I did on Marle so I actually managed to build a bit of a process. I'm hoping I'll be able to quickly move through the rest of the cast. I also got to get a little better at using The GIMP and Omnigraffle, so this feels like a productive project.

The Lucca Sprite


I started by determining all of the colours in the sprite and which sprite colour of Perler bead I would use to match them. I did this by taking the original sprite from The Spriter's Resource and then making a new layer for each colour in the sprite and removing all other colours. I also compiled those colours into the grid below. (I gave them names, but they weren't great names, so I think I'd just use the hex codes next time).


Colour Blocks labeled with the Hex colour codes from the sprite

Colour Blocks labeled with the Perler bead names from the sprite


There's a few cases where I don't have a bead that's a perfect match. Particularly, the Dark Green should probably be Olive and the Bright Green, Fern. Apparently it's about time I put in a new order of beads. I also beaded a test block in the same pattern so you can see what does or doesn't match.

Perler beads laid out in a grid matching the two above



I've broken out all the details below so you can see which colours are which parts of the sprite and how I matched them.


Sprite PartHex ColourPerler ColourNotes
------The Original
#302838PurpleAgain I'm using purple for the "deep shadow" parts of the outline.

#281820BlackThe main outline of the sprite.
#B86817ButterscotchThe (single pixel) highlight on the blaster barrel.
#482830Dark GreyMost of the shading.
#F8F867YellowThe (again single pixel) bright spot on the blaster barrel.
#F8800FOrangeHighlights in Lucca's outfit.
#F8E0A8RustThe leather bits of Lucca's outfit.
#F89868PeachMain skin colour
#801800CremeSkin highlights
#586029Dark GreenHat and sleeve shadows
#F8C028Bright GreenHat and sleeve high lights
#f8f848GoldLeather High lights.
#ffffffWhiteHighlights and her glasses.
You can also download the my .xcf file.

Process

As with the Crono and Marle sprites I decided to do a little addition to make sure that the fused sprite would be sturdy. I also levelled the bottom so that the sprite would stand up right. The only big change that was needed was filling in a couple of sprites on the right side of her face. I wonder if those were a glitch somewhere in my process or even in the sprite.

Lucca sprite, laid out, with two beads by the head highlighted and a wedge to level the bottom.
 

The sprite was pretty easy to build. I did make a good choice in laying out all the necessary beads in the same pattern as the blocks above in a project box.

Perler beads laid out in a bead project box in the same pattern.


I found the easiest way was to work from the top down doing a few beads of each colour at a time. 


Lucca's hat started. Lucca's head finished. The full sprite.


Success of the Sprite

I'm exceptionally happy with how this sprite came out. Part of that is the improved process I've used, so I managed to go from sprite to fused within a week. That definitely kept my the whole project in brain which made it much, much easier. 

The finished Sprite


I definitely need to put in an order to get the beads I'm missing. I generally think Lucca looks good, but a little bit off from how she'd normally look. Olive and Fern beads might have helped with that. Overall I don't think she looks completely off from the other two though.

The one thing I'm not sure about is using purple as that "deep shadow" colour. Given that I *have* dark grey beads now, it seems like it might make more sense to use those in the future. I started with the purple for Crono, which I think worked because there were fewer deep shadow pixels. I'm going to keep on with the purple / black arrangement for the rest of this batch and then I'll come back for a second and see what overall changes I made.

Perler sprites of Lucca, Marle and Crono


The next sprite is Robo and I'd like to wrap it up by July 15, 2020. (I was thinking Frog, but I'm going to wait until I buy a few more green beads.)


The Books I Read - November 2024

November was a bit weird. The Hands of the Emperor is long, but excedingly good. I'm continuing to find Anna Lee Huber a very engagin...