Okay, Iām starting the December Adventure but worried my first project is too much slog and not enough adventure. I need to rebuild my website! So this means Iāll need to make it more fun for myself: an actual adventure.
Iāve tried to get the motivation to rebuild it many times previously. It mostly looked like the same homepage for the past 6 years. Then a couple months ago I changed my landing page to a HTML only page with dithered image. Nerdy, yes, but is this actually a good landing page for an artist? Anyway, the whole site is a hodgepodge now, and all of my projects that I crank out are not in the portfolio or linked from the gallery page. This needs must change!
Starting out, here are my goals:
My three spirit websites for this are Elliot Costās million sites that seem to constantly change and yet are always compelling, Palomaās accessible artist portfolio, and the miles of pages of Cory Arcangel.
I started out by exploring Paloma Kopās site because itās a clear and compelling design, keeping principles of low-bandwidth/consumption. Itās also a well-organized artistās portfolio site. Palomaās site is CC BY SA and they generously wrote a clear website info page which has lots of information on the design, going into things like lazy-loading images, minimizing js, using system fonts. Seems like a great way to get started. In fact, itās how Iām getting this site started!
One problem I have is that I crank out a ton of projects. I have hundreds. You wouldnāt know that from the current website portfolio page, and some are tiny projects and others are big. So Iāve also studied Cory Arcangelās site, who is the Merzbow of joke gallery objects. His site is designed to just list all of his art things, from websites to bots to saleable objects to each individual slightly different color shade sculpture. Certainly itās a minimal site design in some ways, but he uses Jekyll, which I have many years of experience working with now, and Iām not keen to build my own portfolio with it. To be honest, this is Coryās worst incarnation of his website. Itās no longer fun to browse and his art has grown less interesting for me lately, but Iāll just keep that to myself.
I also looked at Increpareās site since he cranks out dozens or hundreds of games too, to glean how that could look. The design is not fancy but itās fast and quickly shows what each game looks like and their info pages are straightforward, though maybe under-informing.
I also looked at some friendsā sites too that use long lists of projects that link to individual project pages. Not the right approach for me. I determined that it is important to me to have at least one image for each project that links to the project page. In contrast, there are some websites that are text only lists that link to project pages, but thatās not a fun way (for me) to browse when designing work meant to be seen.
I spent time perusing cargo.site since they have nice brutalist templates, but when I actually try those sitesI find many harder to navigate through or not nearly as expansive as my site needs to be to capture all my work.
Okay, so Iāve tried some things, looked at code, ran some code. I am not linking it here but I pretty quickly 1-for-1 re-built my a clone of Arcangelās site in about 20 minutes. This is only because Iāve a lot of experience with Jekyll and his CSS is dead simple.
So if Iām not a fan of the Jekyll static site generator but also find HTML tedious when I have hundreds of pages then one other aspect of this is to build my own static site generator. I generally prefer using pandoc for converting between formats, so Iāll create a wrapper around that.
And thatās what Iāve done here: I built this very December Adventure page tonight starting with HTML and CSS from Paloma (thanks!) and then modifying, and using pandoc with a structured system.
Hereās the foundation of the static site builder, which runs after save:
#build.sh
pandoc -s index.md -o index.html -H assets/includes/header.html -c assets/css/main.css --metadata title="December Adventure"
The result of all that is this page youāre looking at now.
Tomorrow: gallery view page experiments
End of day 1 looked like this:
Images are converted and compressed with imagemagick:
convert source.png -resize 400x -quality 85% output.jpg
My partner has more experience as a professional web dev, looked at my day 1 writeup and was basically like āyeah iām not reading thatā but then gave me some good design and css feedback.
I took that into account, then showed them an old experiment page I did with an overlay. She suggested I try it using css background with a container. Because Iām trying to use out of the box semantic web classless CSS I got into a roadblock where I wanted the speckled digital dirt as an overlay for the whole page whilst also having the gradient background. At first this appeared impossible, with whichever is latter replacing the earlier one (due to ācascadingā) but after some searching I came across a solution to place them in the same css line and it worked. Then I added some background blur to the body to try to make the text more readable, and played around a bit to balance trying to soften the hard edge of the bounding body box versus readability. Iāll try to get some feedback later on whether this is as compelling design, and to test the readability/accessibility.
Hereās the current page design:
Beginning of day 3, here is the site currently. I didnāt quite get to the gallery pages yet, but will try today.
I tracked down some tricky bugs today and no one but me will know but Iām writing it out anyway: basically, although my body background image speckles were blurred below the centered body section with text on desktop cross-browser, I found that the background wasnāt blurred on iOS Firefox or Safari browsers that I tested. I couldnāt quite find the answer online, but I noticed that the backdrop-filter css selector was relatively new and re-read the caniuse.com page for it several times. Thereās no firefox iOS column there and I remembered that firefox on iOS is actually webkit. iOS Safari requires a trick to figure out its version - itās based on what iOS system software youāre running, and since mine is a version or two behind, it turns out my version of safari/webkit needs the āwebkit prefix I believe. Also, I saw that images seemed to be loading on top of the speckled background image, but text wasnāt, so as another potential fix I added a clear background by adding a background-color of rgba(255,255,255,0.1). In other words, white with a mostly transparent background. After deploying, one or both of these fixes seems to have fixed it! Tested on iOS on ipad and iphone now. All is well.
I also did some accessibility checking to make sure the overlaid but blurred body speckles donāt make it hard to read the text. It seemed to pass the test except for my codeblocks. When I look at the markdown->html rendered output, they seem to have added classes and spans. Iāll come back to examine those again later and see why thatās happening. It may be in the pandoc converter.
Okay, so now that Iām happy with this text page, I finally turned to working on the project gallery page.
I again began by looking at Palomaās gallery page. In particular, I think the choice to use CSS is a smart one. I began by modifying and removing classes to try to get this closer to a classless CSS. Iām doing this to try to simplify. I also played with widths, margins, colors, removing borders, and sizing. I think it was a nice foundation and I will ultimately likely make a number of changes here. Nothing to show yet, the work continuesā¦
I also thought Iād do an experiment to see if my text page would work as the homepage/landing page.
I added just a few lines of css to override a few defaults trying to give a bit more oomph.
/* assets/css/home.css */
body {width: 100%;
font-size: 36px;
blur(3px);
backdrop-filter: }
To be honest, I donāt think it feels like it āworks.ā While I like having a quick bio/statement up front, I think this isnāt a strong landing page and will need to go back and look at some good landing page examples from other artists.
I didnāt have as much time to work on this today since I was helping my partner prep for a job interview earlier today and then had to go to school to teach my Monday night Programming for Visual Artists class. It was the final session before final projects and presentations are due. I helped a number of students, brought pizza for everyone, but I continued to work with students after the normal session ended and so I missed my bus and train. I live really far from school and the school shuttle and the train are not timed correctly anymore and so this meant I had to wait 45 minutes for the Metro North train. All this waiting meant I got home at midnight instead of 10:30pm, sheesh. This happens, itās okay. I had a good magazine to read and my computer. Next semester Iām teaching a more normal schedule. As part of studentsā final projects they need to do writing, screenshots, and talk about their project development, very much like how folks are writing about their ongoing work for DecemberAdventure, so I pointed out a few of the logs and had students check them out.
On the train home I worked on the gallery page a bit, and did a little bit more before bed. I think itās coming along, but still more work to be done.
Page last updated: 2023-12-04
Was busy on other projects today that didnāt involve code.
On the train ride home from teaching I did some more tests on the projects page. One question I had was whether I could replicate the gallery container individual items using semantic html rather than individual added classes. It seems like this approach should work, and I started modifying the css.
After a good bit of wrangling I was successful. What this means is that one should be able to write the gallery landing page in straight markdown. So for example:
![Project 1 name](assets/img/projects/project1/1.jpg)
turns into:
<figure>
<img src="assets/img/projects/project1/1.jpg" alt="Project 1 name" />
<figcaption aria-hidden="true">Project 1 name</figcaption>
</figure>
And because of how I edited the CSS page this gets automatically placed into the CSS grid. I need to modify the CSS some more to get it chunkier in a way that I like. Here is the first working version, though not yet styled the way I want it, but it is a proof of concept and shows that markdown alone can produce the gallery page:
After a pause I realized a fatal flaw. While this does render a nice gallery page, it doesnāt automatically work well with linking each image to its own individual project page associated with the image.
For example, to do this in pure markdown would be written thus:
[![Test project](assets/img/testproject1.jpg)](projects/testproject/index.html)
Oof, thatās ugly code. And it no longer will produce the accessible figure/figcaption rendered output, and due to the ugly syntax may possible cause mistakes later if I mess up a bracket or parentheses.
I had to rethink my strategy. My options are:
[<img alt="Project 1" src="path/to/image.png">](https://link-to-your-URL/)
Iām currently leaning toward this one but need to do more tests and research. Iām wondering if I can write a lua extension so that I get my preferred figure and figcaption output. Iāll have to look into this.
I didnāt have a ton of time today but I spent an hour exploring writing lua extensions as tests for pandoc but I didnāt get anything particularly useable yet. At this point Iām thinking Iāll likely go back to pure HTML for the gallery! :0
More gallery rendering work.
I read up about image options in pandoc markdown, and decided that this markdown solution to producing a gallery of images (with links) with captions would be too monstrous:
[![Lost Angeles](../assets/img/projects/lost/lost1.png)](./projects/lost-angeles){.gallery-item}
**Lost Angeles**
Livestreamed Performance 2016
I donāt think thatās really any better than this:
<div class="gallery-item">
<a href="./projects/lost-angeles/">
<img src="../assets/img/projects/lost/lost1.png" alt="Lost Angeles">
<p><strong>Lost Angeles</strong></p>
<p>Livestreamed Performance</p>
<p>2016</p>
</a>
</div>
The latter is also easier to debug and has less chance of making a syntax error.
I canāt believe how many hours it took me to explore and then eventually settle back pretty much where I started. Anyway, next step will be to actually clean up images, move them into directories, and then build this page. Still a bit more CSS cleanup as well.
Stayed off the computer today.
Stayed off the computer again today.
When you get bogged down, pivot. At least thatās what I tried. I didnāt feel like working on organizing my project image directories yet or building a template project page, and was still bummed by my gallery markdown generator turning up lemons. So I decided to work on the landing page. On a whim, on the train to school on the way to my last Programming for Visual Artists class I started trying something out, then continued in my office before class, and then again on the train home again tonight. And Iām pretty happy with what Iāve done though Iāve yet to get outside feedback, and itās possible I may feel differently later. So caveat emptor: this could all change tomorrow.
What I like about it: itās both chunky and readable. It feels like a cross between my competing aesthetic and project goals. Text-oriented, but still supporting images. And a nice ātimelessā design (whatever that means). It doesnāt look totally out of place from my programmer-y friends sites, but also isnāt totally 180 degrees from an artist site. Though perhaps too much text up front?
Next I worked on the file size issue. The background jpeg was pretty big, 422k. Yikes. My goal is to try to make the image look as hi res as possible while as low file size as possible. I know thatās a squishy goal. Should I start with the lowest resolution and use a media query to switch out images and serve a higher resolution file on bigger screens or with certain browser indicators? Iām not certain.
First I reached for the imagemagick āswiss army knifeā tool, one of my beloved software tools. I ran some imagemagick conversion tests to try things out trying to chase the goal of highest quality resolution while minimizing image size.
I tried a number of ways to limit file size. I took a somewhat staged photo of my messy desk in my office at school, then converted to jpeg and limited the image to 1920x1280. The image was 422k. I read a stackoverflow answer and a short article with several techniques that I tried out: ālighthouseā image compression, gaussian blur, and a mix of the two. I didnāt think the lighthouse approach looked good, and neither did the mixture one. The gaussian blur looked best to me and was compressed almost as much.
#convert with gaussian blur and 50% quality
convert desk.jpg -strip -interlace Plane -gaussian-blur 0.05 -quality 50% desk-gaussian.jpg
Then I tried out a different imagemagick technique, the ādefineā parameter. To be honest, Iām not sure what this algorithm is, but I had success with it as well, and itās a more straightforward command. Essentially, you list what filesize youāre targeting. When I specified 200k I got an image I could accept. When I tried 100k it was too low resolution. 150k was the minimum I found to be tolerable.
#convert using defined max file size
convert desk.jpg -define jpeg:extent=150kb desk-limit-150k.jpg
The compression technique was different between these the gaussian blur and the defined filesize approach but it was a toss-up which one was better.
Okay, I think Iām at a good stopping point tonight. Iāll go back to working on the gallery pages next I think.
Lots of non-computer activity today. I went on several hours worth of bike riding today on the road, in the park and on the trail, despite the cold. Tonight I saw a noise show at Trans-Pecos in Bushwick. It was a pretty great performance by The Daxophone Consort.
I got home and first did some research on opengraph tags, which Iāll only call OG tags going forward. I am vaguely aware of these but never looked into them before. It only took a couple minutes to track down the info thankfully. These are used for the ācardsā that pop up on social media, which I knew, but nothing else. There are 4 that should always be used, though 2 basically copy the title and url. The other 2 are type, of which itās either āarticleā for writing/blog, or āwebsiteā for everything else, and og:image for a thumbnail. Did I mention these were invented by Facebook, for this nonsense? Nonetheless I think I may add them. So the 4 to include: og:title, og:url, og:image, og:type. Itās a good idea to also include og: description. og:description should be 2-4 sentences, and can just copy the meta description, which I should also add. The og:image is the most important because this is the image that will pop up on social media feeds. The og:title should be the āraw titleā without the site name. If I go the route of creating frontmatter I can probably include some of these in the frontmatter if needed and have them auto-populate in the header.
Back to working on the gallery page. I took a different tact and decided to browse gallery pages that looked good to me. First I visited Cargo and viewed their Sites in Use page, then selected a few I liked. They create templates for artists and designers. Iāve used their sites for inspiration before when creating my own websites. Their images load slowly and I find myself closing the page before they are done rendering. Their text is often hard to read or most of the time, absent. Their lightboxes are often crummy. So thereās a lot to like in layout but the details often dissapoint.
Hereās some sites I liked: This very simple 2up gallery page, though the individual pages are slow and hard to read; this single column gallery looks good and I like the interstitial text descriptors between, though there are no individual artwork pages; this random placement portfolio I thought was simple and looked nice and bold with background black and individual project pages were clear enough but needed a lot of scrolling.
Based on this, I decided to temporarily abandon my work on the gallery page I had done previously, and now I did some basic flexbox layouts. Hereās a super simple one, no gaps, 2 columns.
Will try more on the train tomorrow during my last day of class for the semester.
Woke up early to get to school for a meeting. Itās the last day of the semester in-person for me. I picked up donuts for the students enroute. I coded a bit on the train and almost overlooked getting out at the right stop. Later I had a short break between a meeting and class so I dropped off some pies to the admin assistants as a holiday treat, got myself lunch, and then worked a bit on the site. After class I took the train home, worked a little on the gallery page. In the late evening I tried many things out. I added the nav bar correctly to the gallery page, then merged my dev branch with my main. I tried applying my decemberadventure stylesheet to the now page and resources, but after checking them out, I didnāt think they were compelling. I tried replicating what I had done on my new homepage prototype and found I liked that look a lot more.
Hereās the now page, albeit with some bugs. I need to add some background color to the nav.
Hereās a bookmark to a 2up gallery page made with Cargo. I want to revisit this later when working on individual project pages, though the nav is bad and pages lack text descriptions and links. This is the other gallery page I built in flexbox before the current simpler design, but I think its nav at the top is simpler and maybe better fits my page design than the one I have currently.
Worked on school things today. In the evening, Lauraās flower shop had an opening party that we went to.
Editor meetings and school work day.
Grading, cooking, then performance and solstice party night.
Worked a little bit on the site tonight. Started working on an individual project page template and tried a few different layout and modifications in CSS, mostly using a column approach. In some tests I tried running images full-width and in others I had a centered column. Iāll spend more time on this in the coming days.
End of semester grading work and hanging out with my partner, watching a movie, but no coding work.
Worked on the now page a bit to clean up the design.
I did some work on the resources page as well. I tried finding a good background image, but I think I could still choose better. In any case, hereās my placeholder for now. Iām also uncertain if āresourcesā is the right term for the page. Should it be a āwikiā or something else? I know I want to link to my workshops, classes, tutorials, podcast, things like that. I guess some of those are also āprojectsā but Iām thinking of āProjectsā as holding my art projects and this āResourcesā page as my teaching and organizing. Will think more on this, but for now, āResourcesā works.
Hmm, I think the Resources background text blocks look better than the Now page groupings. Itās a bit much to have those separations between the individual paragraphs.
Okay, after some crazy css wrangling (and help from my partner), hereās a version of the Now page with the paragraphs grouped together. I think it looks a bit better.
This is still āclasslessā but Iām using some bizarre css-selector combos so Iām not sure itās worth not using classes/idās for this!
This seems like a kludgy solution, but on second thought, there is a certain charm if not elegance:
h1 {margin-bottom: 1rem;
}, h3 {
h2clear: both;
display: table;
background-color: white;
margin-top: 0.5rem;
margin-bottom: 0.5rem;
}~ p {
h3 background-color: white;
margin: 0;
}
Well, it works.
I realize I have been putting off the inevitable organizing task of grabbing photos, placing them in directories, and making individual project pages. If any part of site-building demanded automation, that would be it. I hope I can pivot to this soon. I want to finish up the site design this week and deploy by the end of the month.
A short while later, trying a new background image out for the resources page. I think this looks better.
A few days off. Tonight I did a backup of custom functions from the tilde server I created for the Social Software class. This isnāt a backup of the whole server or its software - itās more like the studentsā custom functions, my intro, and then our created command line thumb program (a function) that is like a wrapper around finger that creates a tiny little social media on our server. I retired the server so I donāt have to pay a monthly fee out of pocket after the course ends.
Worked on some styling cleanup on a few pages of my website design. After a few days away I still feel pretty solid on the design and just need to dedicate a few hours to building the gallery pages now, but Iām not sure when that time will come since itās a busy āvacationā this week. Iād really like to be done by the end of the year.
Looked at my old photocopyfier program. Iād like to port this to love2d with a gui I think.
Spent some time with Runna. I think the game is compelling, it just needs final graphics/theming. Iām wondering if it makes sense to partner with someone else, or purchase/find assets, or try to draw them myself.
Started building out some frontmatter system for the individual project pages.
My parents visited for a few days and I did some work on the site but havenāt finished yet. Will have to keep going into January.
Spent time the past week or two finishing the Programming in Lua book, and am now onto another Lua book for bedtime reading. I also checked out winduptoyās Lichen ssg, and review some forth / html gui ideas.
On my webiste project Iāve done some more tweaking and playing. Tonight I revisited my gallery page yet again. Maybe simple is best. I spent time looking at Aramās website Works archive and Increpareās and while I canāt quite match their output, I do pump out work pretty consistently. They both use a simple grid layout, with title, medium, year, thumbnail - and I think I should try that. Aramās I thought was an even grid but itās more a coincidence that he chooses the same size image. Increpareās is a consistent grid.
I still need to work on this a bit, and itās uber-basic, but I think it will serve my purpose of allowing for displaying lots of work. I got down a first version of the responsive view but itās not dialed down yet. Images are stretching funny.
Adding the year (or year and month) is important, to show that the page is dynamic with new projects. Adding the āmediumā I think is informative here as well. So hereās each label:
Title (in bold)
medium year
I re-visited Elliottās website and heās again changed it up completely. This is the second site redesign in a month or so. I admire his experimentation though I donāt think I can expect my guests to come back as often or to be as jazzed at these kinds of big changes. But still, how can I maintain some of his experimentation and flexibility to add new things on the landing? Maybe drop-in hand-authored html? Images wrapped in links? Will keep in mind some ideas.
Next step is to improve some of the responsive Css for the gallery page, then work on more on the design for the individual project page. Aramās project page template is again a good model I think, though Iāll want to also have the project description there, before any links.
Iām not quite in the home stretch but Iām getting there. Iām feeling like all the parts are pretty much in place. I just need to finish the project page, clean up CSS differences between pages and in the nav, and then complete a consistent, replicable workflow for updating pages.
I have returned. After New Yearās, yadda yadda yadda, Iām on vacation in Portland. Tonight I finally sat down for a few minutes, and with fresh eyes, fixed a few bugs on the gallery page. Iāve also made it look pretty blocky basic, oy, but thatās what I want now.
ām on a vacation of sorts, though still doing some prep for class next year. Iāve been submitting paperwork, tightening and studying and prepping learning outcomes. This isnāt the most creative, but itās required to get my Programming Games coures approved for next year.
This morning we escaped a blizzard up in the Columbia River Gorge and headed in an early bus back to PDX. We visited a nice cafe downtown in a hotel, got some food and coffee, and then I spent a couple hours researching fonts and testing more design.
Originally I had thought Iād do no font loading, but I found I liked a more exciting and strange font. I hadnāt looked into font size and formats in a long time. It seems all browsers work with woff2 and that they are quite compact, so Iāll load 1 or 2 fonts max that add some spice to my website. My next steps will be to clean up the header for the gallery page.