This Day In History: 08/26
I've finished adding old art to the Artwork page, and as a bonus, I've added a lost essay on Divine Miracles and some haikus to the Writings page. That should be the last "old" content to appear, unless I stumble across a lost treasure trove of inherent creativity.
What good is a window decal that can only be affixed to the outside of the window? I have a couple FSU-related decals I'd like to put on my car, but putting them on the outside is about as useful as a garnet-studded bikini on the outside of your shirt.
Today I continued with composition and Tallahassee exploration. Unfortunately, the Wal-mart here seems to restock on Sunday mornings, which only leaves the crusty, stale food on the shelves when I go at my usual time. I may have to break my year-long routine of reserving early Sundays for laundry and shopping. The horror! I also noticed a car in my parking lot with Fairfax plates -- it looks like I'm not the only one from Ole' Virginny.
For the record, I don't wear bikinis of any sort on any occasion, even on the inside of my shirt.
String quartets will be an interesting class, not because the material is demanding at all, but because the professor will make it interesting. The theory class I'm co-instructing looks like it will be fun as well. All the students seemed actually interested in being there, although we didn't get through much more than reviewing the syllabus. Now I'm hard at work with student flash cards trying to memorize names and majors and the like for Wednesday. Only twenty-four are officially registered right now but it looks like it will be around thirty students.
"Let's give it a more elegant name. Bridge is nice, yes. But bridges break; transitions don't." - professor, on sonata terminology
Yesterday's search terms:
orient express coaster on quicktime, people who sell yellow lab dogs close to schenectady, recipe for groundhog deterrent
tagged as fragments | permalink | 14 comments |
Lachrymose: (adj.) Suggestive of or tending to cause tears; mournful. My Composition (0:33 MP3) |
Other than being a possible substitute for pure sugar, "lachrymose" doesn't immediately present a strong mental picture. The definition seems to infer a maudlin quality over a bawly one. All in all, it seems like a word that might appear in a tenth grade English essay after using the online thesaurus one too many times.
This snippet is written for flugelhorn, alto flutes, and rhythm section.
Over 200,000 pounds of Hot Pockets recalled
tagged as museday | permalink | 5 comments |
or "How I stumbled upon the URI! Zone"
tagged as website, searches | permalink | 3 comments |
There are no spoilers in these reviews.
The Girl Who Played With Fire by Stieg Larsson:
The second book in The Girl trilogy, I enjoyed this one more than the first, because the mysteries of the plot were more related to the main characters -- like many good books, this one deepens the concepts of the first book, rather than spreading in breadth. It's a little slow to start, notably the nine million pages about shopping at IKEA, but this makes a pivotal scene that much more jolting, and the book doesn't lose any energy from there to the end.
Final Grade: A-
Sherlock Holmes:
There was a choice between this and Hot Tub Time Machine, and I ultimately chose this because you probably can't go wrong with Robert Downey Jr. AND Rachel McAdams. (Additionally, Rob Corddry from the other movie is rapidly approaching Jack Black levels of obnoxiousness). This was a fun little caper of a movie, greatly assisted by Robert Downey Jr.'s characterization of Sherlock Holmes. It won't change your life, but it's an entertaining two hours.
Final Grade: B+
Burn Notice 3:
The third season of Burn Notice feels like it's lost a bit of focus, but it still has a few high quality episodes mixed into the bunch, along with tons of cameos from other USA and Showtime stars. The formula is starting to get old, but I'm not really watching for the cutting edge drama and plot twists.
Final Grade: B
tagged as reviews | permalink | 0 comments |
why you can have nice things
♠ When the earthquake struck knocked politely on my lawn, I was busy in the kitchen installing outlet covers. One variety which covers a dimmer switch and socket next to each other was not available in stores and had to be ordered online -- this type is called a "2-gang 1 rocker 1 duplex" cover, which incidentally sounds like a very good pilot concept for a sitcom in the ghetto.
♠ Now that the earthquake has finished trending, I'll have to come up with my own original content to milk for website traffic again. Faux catastrophes like a Mineral earthquake are perfect for my mock mock tag, which has been woefully underused this year.
♠ The earthquake and its two aftershocks, Steve Jobs and CmdrTaco, overshadowed much bigger news: one of our own readers, whose name starts with a "D" and rhymes with "BOOBY" is a new dad as of August 18. Congratulations! Based on previous experience with OPB (other peoples' babies), Ethan Patrick Fraker is currently the size of a Denis Wick euphonium mute (stone-lined), but plenty more valuable on eBay.
♠ I have never bought or sold anything on eBay, although once I went canoeing on a wee bay. I guess I don't really see the draw of bidding on weird stuff on the Internet, which is odd given the exorbitant number of hours I've wasted on the auction house in World of Warcraft.
♠ WoW is getting boring again -- It's very easy to login and waste time, but playing is more out of familiarity and lack of a better game than fun or addiction. I may let the subscription lapse in September and drop those eight million gigs of patches into the Recycle Bin.
♠ Speaking of recycling, our office is plastered with signs advertising "Single Stream Recycling". I suppose that means we can put all our cans and bottles in the same bin, and then someone will dump it all into the same creek behind the building. This should not really impact my recycling habits because I was never big on segregation in any arena.
♠ There are no plans for the weekend, because apparently we're due to get peed on by a giant hurricane named Irene. I have a new strategy for stocking up at the grocery store though -- while all of the other rubes are fighting over milk and toilet paper, I plan on hitting all of the less popular aisles. We should be able to get through this weather event just fine with a bag of charcoal briquets, roach spray, cold medicine, dill weed, romance novels, and cake frosting.
♠ Have a great weekend!
Rebels find Rice photo album in compound
tagged as fragments | permalink | 3 comments |
On Saturday, I did a few miscellaneous home maintenance tasks with my dad, and also received chocolate chip cookies from our new neighbours across the street (they baked enough for the entire court). Unlike six years ago, I, myself, did not make cookies for this new neighbour set, although we did give them an inexpensive bottle of wine as a welcome present.
The primary event of the weekend was a Game Night with Kathy, Chris, Anna, and Ben with Anita's dinner burritos for meals. We also did a sex-blind wine tasting (which is like a double-blind wine tasting but with three times the blindness), featuring three Pinot Noirs of varying price and quality from the same Oregon vineyard. As it turned out, Rebecca was the only taster whose favourite was the high-priced bottle, although I am already familiar with her expensive tastes (she buys her workout clothes at Target). Everyone else preferred the mid-price option or the cheapest one.
On Sunday, we watched the pilot episode of Downton Abbey, starring the love child of Colin Firth and Victor Garber, because everyone keeps hyping it up, in spite of its resemblance to every other show starring British people ever made. We also taught ourselves to play Cribbage, and had delicious fish tacos at Ford's Fish Shack.
How was your weekend?
tagged as day-to-day | permalink | 0 comments |
These themed chicken tender shapes are getting edgier every year.
Twenty years ago today, on August 26, 1995, I was fifteen years old and about to start my senior year of high school. According to my historically preserved Far Side calendar, the 26th was a Saturday just after the end of Band Camp, and my sister had just left for her sophomore year at UVA.
Having finally reached the Age of the Learner's Permit (15.5 years in Virginia), I spent much of August doing behind-the-wheel training through Keith's Driving School. On this particular Saturday, my instructor, Big Mike, was particularly disagreeable since he'd just had surgery the week before. I did my hour behind the wheel in Hybla Valley with a girl named Lucy in the back seat while Big Mike played his country guitar demo tapes, and then we swapped for the next hour. We ended, as always, at a 7-11 so Big Mike could grab a bite. His self-applied nickname was actually Big Mike -- I'm not just calling him that because he was bulky.
In the afternoon, I crushed soda cans for recycling in our newly purchased Crusher (thanks, 1990s), and then went for a bike ride around Alexandria. Finally, I went up the street to our neighbours, the Jarrett's. Walt Jarrett worked for one of the big publishers back then (maybe Houghton Mifflin?) and hired me to read off several pages of price lists so he could punch them into the mechanical calculator more quickly. I earned twenty bucks for about an hour of mindless work, which went towards the purchase of Phantasmagoria (the full-motion-video horror game by the creator of King's Quest) the next morning.
tagged as memories | permalink | 0 comments |
We're heading back to beautiful low-humidity Sterling today, so enjoy these miscellaneous pictures of our non-hiking adventures!
Saurus dinosaurs (acrobats on stilts) take over the downtown Breckenridge square.
A puppy dog hitches a ride up to the top of Quandary Peak.
We go horseback riding in Breckenridge on Lucas and Rubicon.
We enjoy a free wine and cheese Happy Hour at the Queen Anne B&B in Denver.
Annie and Mike use their brain waves to move a ball at the Nature and Science Museum.
We experiment with sour beers at the Crooked Stave Brewery in the RiNo district.
tagged as travel | permalink | 2 comments |
A breakdown of the $6300 we've blown on EZPass roads since 2006.
Twenty-four years ago today, on August 26, 1996, it was my first day of classes as an undergrad at Virginia Tech. I started with 9 AM Music Theory, taught by Dr. Bachelder, my trumpet professor, followed up immediately with sight-singing taught by Dave McKee. That was it for my entire day until "Introduction to Programming in C" at 2 PM, marching band at 5 PM, and a major-wide meeting of all Computer Science freshman at 7 PM that I wrote was "a huge waste of time".
Looking back at who I was at that time, an unassuming short person who didn't like making small talk, who walked emphatically from point A to point B with maximum efficiency and the typical CS major's hunch to my general posture, I probably would have loved doing all of my coursework virtually. This is reinforced by a journal entry from two nights before where I wrote, "I skipped a band party so I could finish up my Honors essay" (This was also a huge waste of time because I ended up dropping out of the Honors program soon after because it was "a huge waste of time").
That said, I'm glad I'm not starting my college experience in front of a Zoom chat and hope that kids today are opting out for a year whenever possible.
tagged as memories | permalink | 0 comments |
Maia's first day of kindergarten on Thursday was a success!
She's in the Yellow Crayon class and sits at a table next to our across-the-street neighbor. She was super excited for her first school bus ride ever.
She told this story about the bus ride home: "Two girls sat next to me on the bus home. They didn't know where to sit so I told them they could sit with me!"
She also wore those cat ears all day long.
tagged as offspring, day-to-day | permalink | 3 comments |
originally posted on LinkedIn
The Wars of Light and Shadow by Janny Wurts might be the longest fantasy series you've never heard of. Spanning 11 books, 6 short stories, almost 7000 pages, and 50 years of development from outline to final published book, the series is often overshadowed by the more visible Daughter of the Empire trilogy, which Wurts co-authored with Raymond E. Feist in the 1980s.
Like all respectably chonky fantasy series, the Wars of Light and Shadow also boasts a detailed world map. This is the story of how I used open-source libraries and an iterative development cycle to bring that world map into the 21st century, offering readers a new way to explore the continent of Paravia.
When "State of the Art" Is a Moving Target
The online map of Paravia was beautifully modern upon release? in 1998. It featured Dreamweaver-generated image maps using the HTML <map> tag, allowing readers to click on different regions to go to other web pages containing larger inset maps. Images were crisp, black and white GIF files that looked spectacular on 800x600 monitors. The whole thing even worked in Internet Explorer 3!
Image maps require you to explicitly define the clickable area, making them very brittle if the map changes or your Dreamweaver license expires.
When I inherited the project, it was clear that a full modernization was needed. Web-based mapping has come a long way in 20 years and the "click around" experience that sufficed back then was too small and limiting for modern audiences. I realized that if I could implement even half of the user experience (UX) patterns that we're accustomed to today, the new map of Paravia could be incredibly immersive. I can easily dive into Google Maps, find my childhood home, see Street View pictures of my dad mowing the lawn, and even rewind time to see how it looked 10 years ago. Why not apply this to the map of a world that only exists in our imaginations?
Defining the Requirements
I spent a few days studying Google Maps, Apple Maps, and even the wizened Mapquest before capturing these basic requirements for my project:
It was actually very straightforward to meet every requirement except for the last one. The technology is there to make it happen in the future, but the data is not ? the author would need to ink additional maps showing cataclysmic, tectonic changes, like a 2nd continent laid to waste by drake fire and a 3rd continent that sank into the sea during the Second Sundering.
Prototyping
I chose Leaflet.js, an open-source JavaScript mapping library, as the backbone for the new map because of its wonderful documentation and extensibility. Though Leaflet.js is commonly used with real geospatial data, it can work with any image-based data, even a giant picture of a cat. I wrote the supporting code (PHP, CSS, and JavaScript) in IntelliJ IDEA and used Adobe Photoshop for image alterations. With this technology stack in place, I obtained a massive (10,000px width) TIFF file of the map from the author and got to work.
Leaflet.js works by seamlessly loading sliced up map images in the background as the user drags the map around. For example, zoom level 0 (as far away as possible to see the whole continent) is a single image that takes up the whole screen. Zoom level 1 gets a little closer, and uses 4 tiled images to render the map. My map goes up to zoom level 6, which uses 1024 tiled images to show the maximum detail possible.
Street View is not available because cameras and other technology are proscribed on this planet.
The first thing I realized was that I would probably end up doing a lot of experimentation with the map images and color palettes, and I wouldn't want to slice the map up by hand (requiring 1365 map tiles for the 6 zoom levels) every time. I added the open-source utility ImageMagick to the tech stack and wrote a small Kotlin script that automatically slices, resizes, and stores all the required map tile images with a single click.
Automate anything you're going to do more than 3 times, especially when the 3rd time is going to be years later when you've forgotten how to do it.
From here, it took only a few lines of JavaScript code to get a prototype map working. I could zoom in and out flawlessly (even with pinch gestures on touch screens) and navigate across the map simply by dragging it or using the arrow keys. These features worked out-of-the-box with Leaftlet.js and didn't require any custom code.
Adding Points of Interest
I wanted users to be able to click on towns, fortresses, and natural landmarks to learn more about them. Each point of interest has a name, a brief description, a link to a more detailed write-up in the series wiki, and (if applicable) a thumbnail of the artwork that the author had created of that location.
Clicking on the links takes the user to a full-page write-up about the location and sometimes high-resolution original artwork created by the author.
To begin, I added a special DEBUG mode to the map which displayed the current latitude and longitude whenever I click somewhere. This allowed me to click on a spot where a point of interest is supposed to go and copy/paste the coordinates into my code. I used DEBUG mode to build a list of over 120 locations, stored in the code as an array of JavaScript objects.
At this point in the development cycle, a user could open the map, zoom in on a region, and click on a point of interest to see its popup window. So far, so good!
Polish
With the primary features implemented, I started testing on different platforms and evaluating UX to figure out how to improve the minimum viable product. These are the enhancements I implemented:
Most important for usability, I noticed that the level of detail needed to decrease as the user zooms out. While it's great to have intricately detailed maps at the highest zoom level, that detail is noisy and distracting while zoomed out. It would be like Google Maps showing every street name when you're far enough away to care about the countries and continents. This was especially noticeable with points of interest, which obscured the entire map when at zoom level 0.
The fix for this was twofold: First, I created an alternate version of the map image tiles that blurred out the detail and focused on kingdom names and borders at the lowest zoom levels. Then, I adjusted the Leaflet.js Layers to only show points of interest when at higher zoom levels. This combination lets the user gradually zoom in and see more precision only when it becomes useful.
Thanks to my earlier automation, it was very simple to direct ImageMagick to slice up a different image for the lower zoom levels.
Conclusion
The entire project was completed in just 10 days, thanks to my reuse of open-source libraries. You can try out the map at the link below (and you can "View Source" in your browser to see the JavaScript code that brought it all together).
Beyond any technical interest you might have in the mapping technology, you might be interested in reading the series itself. The Wars of Light and Shadow is a challenging read that rewards your patience. It requires space and focus to savor. The prose is dense, poetic, and uniquely structured, intentionally asking you to slow down and linger over each idea. This is truly literature that I would have been much more excited to read in my high school English classes than yet another Shakespeare play.
tagged as programming | permalink | 0 comments |
You are currently viewing every post from a specific month and day across history. Posts are in chronological order with the oldest at the top. On the front page, the newest post is at the top. The entire URI! Zone is © 1996 - 2024 by Brian Uri!. Please see the About page for further information.