David Artman

Dec 042017
 

Basic design: a brick in your pocket with a giant battery, all the RAM, CPU, and storage. A Bluetooth earbud with also a giant battery (must last a day always on).

Use cases: Leverage all the voice-activated functions of current chat bots.

User merely speaks all commands, text messages, calendar events, etc.

Bluetooth keyboard and Wi-Fi screen pairing, when you gotta type to configure or install.

End result: A smart device that never dies (if charged daily) and JUST WORKS. Talk to ‘yourself’ and let the system click icons and type on a tiny screen.

Oct 112017
 

Today

  1. A given quantum of information is sourced in a root language, which could be a single language organization-wide or multiple languages.
  2. Structured markup languages provide metadata and semantics irrespective of eventual output formats.

Concept

  • Continue the abstraction of information in B by eliminating A above as well: content is divorced from format and language.

Implementation

  1. Codify grammar into conditions, objects, actions, results, and all other relevant dictional objects. (Consider the constructed language Unker for models of logical, nonlinear grammar diagrams.)
  2. Document conceptual, procedural, and reference information as information maps that diagrammatically describe the information.
  3. Develop Dictional Style Sheets (DSS) that render the information maps into textual, visual, or even multimedia deliverables. (For textual DSS, additional transformation via CSS and such continues as in B above).

Simple Example

Intent

“The door-open chime sounds and the door-open dashboard light illuminates when a door is ajar while the key is in the ignition.”

Information Map of Objects and Relationships

COND:[(OBJ:car-door:any)open AND (OBJ:key)inserted]
<=>
RES:[(OBJ:door-chime)on AND (OBJ:door-dash-light)on]

COND:[(OBJ:car-door:any)closed AND [ (OBJ:key)inserted OR (OBJ:key)removed] ]
<=>
RES:[(OBJ:door-chime)off AND (OBJ:door-dash-light)off]

REL:alert-types(OBJ:door-chime, OBJ:door-dash-light, …)

DSSs

[Magic happens here. LOTS of object:style mappings, but only need to be done once for each dictional output. Free translation; free infographics; free texts: all from running the information maps through DSSs and then output generators that can handle the renders. A tiny example:]

OBJ:key == “ignition key” | singular-only |

Outputs

Conceptual Contexts

“The door-open chime sounds and the door-open dashboard light illuminates when a door is ajar while the key is in the ignition.”

“When the door is closed, the door-open chime does not sound and the door-open dashboard light does not illuminate, regardless of whether the key is in the ignition or not.”

Procedural Contexts

“To test the door-open chime and the door-open dashboard light, insert the ignition key into the ignition switch and open a door.”

Troubleshooting Contexts

“If the door-open chime is sounding and the door-open dashboard light is illuminated, one or more doors is ajar. You can stop the alerts by either closing the open door or by removing the key from the ignition.”

Infographics

[You’d have graphics mapped to objects and relationships in the DSS that, when generated as output, show up like, say, an Ikea or LEGO manual. In fact, see Lego Digital Designer for a great model of a user interface for assembly mapping by sub-assemblies and stages.]

As you can tell if you’ve read this far, this isn’t a new idea: there are conlang folks who’ve thought about this stuff for decades, but not typically from the perspective of one:many translation (rather more like many:one ‘interfaces’ via written and/or spoke languages).

And I also just realized that many of the OBJ-REL information maps could be scraped straight out of software code! *headsplode*

Aug 162017
 

I’m trying to be the shepherd.
As tired as I am, boss,
I’m trying.
But the wolves no longer fear
The light of my dim torch,
Nor the spotlight of Lady Liberty’s.
How many do I have to lose
Before I raise my sword?

Apr 212017
 

A live-action (AKA “boffer” or “combat” or “paintball”) role-playing (LARP) system that is designed to be highly modular and therefore customizable for different playstyles, character-power levels, and setting tones. Inspired by HERO System and other influences mentioned in the Credits.
Available only as a PDF due to being too long to easily use as a single web page: Download a print-ready version

May 242014
 

Memorial Day always puts me into an emotional conflict.

When does respect for honorable and dutiful sacrifice begin to sanction the ill wills and greed that required it? Do we have any more righteous wars left in us? Did we ever?

I find myself thinking that, just like Valentine’s Day, this is another shitty holiday. Love deserves more than one calendar entry, so surely pain and loss does as well. The men and women lost to an aggressive will are remembered daily by their loved ones; why, as a nation, can’t we find time enough every day to do the same?

And maybe, just maybe, in that remembrance decide that throwing more children into the meat grinder won’t work any better than it did millennia ago?

Memorial Day is aptly named. Remember why war is the ultimate failure of everything that makes us human.

Timing Social Media Messages For Service And Show Industries

 Technology  Comments Off on Timing Social Media Messages For Service And Show Industries
Nov 272012
 

Every restaurant, bar, pub, and show club wants to leverage social media. These media are free services; the people who choose to follow your business want to hear from you; and when done well, they can replace a lot of expensive, targeted advertising. Even better if your message makes your clientele tell others to follow you: valuable savings, exciting events, exclusive shows, and a sense of belonging turn triers into regulars. Assuming that is the case—that you don’t spam them with pointless noise but only post conscientiously, with “news they can use”—then social media will be a win-win investment for any business owner.

Unfortunately, all of your competitors are aware of these benefits and opportunities; and they are flooding Twitter feeds, Facebook timelines, and email inboxes with their best efforts and offers. Couple that with the fact that many users of social media only check occasionally, and your problem as an advertiser becomes one of distinguishing your announcements and offers from the rest.

Setting aside good copy writing and compelling visuals and links (a topic, perhaps, for a future article) the single best way to make your message stand out is, in a word, timing. This article presents what I feel is an optimal schedule of post timing for common attractions in the service and show industries, to maximize viewers and thus guests.

Note: I am assuming your principle target market is nine-to-fivers, not swing-, split- or third-shift workers or service industry employees themselves. I feel, however, that once you’ve grasped the basics I present here, you will be able to apply the timing principles to clientele with different work hours.

Specials

Specials include food, drink, and possibly value-adds like free parking or valet service.

Some establishments vary specials frequently, and it is those that will benefit the most from social media. If you, however, have locked into a routine that is rarely changed, treat it more like a regular event (below).

Food

When do you think about where you might like to go for lunch or dinner? Obviously, around lunch or dinner time! So this one is, on the surface, a no-brainer: post around 11 AM for lunch specials and around 5 PM for dinner specials. That’s when people are checking smartphones and making plans with others.

But that is just the low-hanging fruit. Look to how the major chains advertise on television, for even more good timing tips. Do you serve breakfast (or brunch on the weekends)? Then post the specials at around 10 PM on weekdays and perhaps a bit later on weekends—you know when your guests end their Friday and Saturday nights… or mornings!

Drink

First, I would suggest that you include drink specials when you post your food specials; but use good judgement! If your clientele favors a pint or martini with lunch, then by all means include it with the 11 AM post. If you’re more family-oriented, include drink specials only with the dinner specials post, perhaps only on Fridays and Saturdays.

If you run a show club and open for happy hour, or if you are a dining establishment that has live music during or after dinner, the 5 PM timing is also good for you, but absolutely include drink specials when you post to promote an evening’s event. So, odds are good that you will have food, drink, and the event in a single post at that time.

Note: I am a resident in a state where there is no happy hour, per se: drink specials must be honored from open to close to reduce binge drinking during rush hour (kind of makes sense, no?). If your local laws differ, then by all means be sure to post about an hour before a limited-duration happy hour.

Events

There is a vast variety of events that can be hosted at service or show venues: live music, a band line-up, pub trivia, singles nights, ladies nights, poker clubs. The list is as diverse as the creativity of venue owners and the cultural richness of your region.

Many events have common timing objectives, however. You want the punters to know about them as soon as possible; you need to remind them as they get closer; and you want to catch the eye of someone who is at loose ends and is looking for fun. That said, regularly occurring events behave much like daily specials: more than one or two posts about each event will be perceived as pushy or desperate.

Major Events

I characterize a major event as a one-off event booked well in advance for which people typically plan and budget. Tickets usually must be bought, sometimes early to be sure they don’t sell out; babysitters must be scheduled, sometime early to be sure they won’t be out; and reservations must be made for dinner, to complete the big night out.

These are the best times to post information about major events:

  • When the event is booked: Get the news out as early as possible. As for the time of day to post, most nine-to-fivers do not actually check their feeds during the work day (unless planning for a get-together that very day, as with specials above). So post either in the early morning as people check in before starting their day, or just after work hours as people get home and catch up, but not both! Whichever works with your schedule. For example, a show venue might post before locking up in the wee hours; a restaurant might post before the dinner rush (if applicable, as an addendum to the night’s specials post).

    Note: For the date timings below that do not specify a time, pick the time of day as with this date timing.

  • The day before tickets go on sale: Your fans will want to be ready at the sales web site or window, ready to reserve their access. Don’t make them miss out!
  • Two hours before tickets go on sale: Get folks excited and remind those who forgot to get ready. In many cases, this will entail an early morning post, as ticket outlets often open for sales around 10 AM. Don’t sleep in!
  • One week before the event: Everyone with advance tickets already knows, sure; so use this post to both inform and build anticipation. Perhaps offer a value-add to the post: a link to a popular or evocative song by the (headlining) performer(s); a recent addition to the line-up; or even a joke, if you can manage humor. Don’t let anyone seeing the post think, “I know, I know! STFU, already!” **clicks Unsubscribe**
  • The day of the event: Work out the time of day that best suits your principle demographic for the event, asking yourself when they will be checking their feeds for something to do tonight. Generally, I recommend around 5 PM (in conjunction with your specials post, as I mentioned above).
  • Near the end of the penultimate act: Nothing will excite the curious browser as much a picture (or short video) of your venue heaving and shaking the rafters! As a bonus, you’re not likely to be spamming your attendees… and if you are, if they’re staring at their smartphones instead of the act… well, take note of that and bring it up with whomever is in charge of bookings at the next meeting.
  • NEVER again: Yes, I said it: posts about how great the show was or how packed you were will more-likely cost you goodwill than behave as a morning-after kiss to your attendees. Nope, nah. Not worth it. Post, perhaps, to the band’s page or feed to thank them; and let any knock-on views see you not as advertising but as conscientious.

No two major events are the same, and so no hard-and-fast timings will work for every situation. Adjust the above accordingly, while always keeping in mind that your posts should be of value to your guests and you should value your guest’s time more than their dollars!

Regular Events

Much like food and drink specials, regular events can become repetitious to the point of irritation, if not timed effectively and used sparingly.

In general, include the pitch and details of the event with your 5 PM specials post, both so that the otherwise unoccupied folks can be reminded and so that those who might be put off by the event will know to pass you by that evening. While the latter might seem detrimental to the night’s takings, trust me: a new or fledgling customer that would find such activity an irritant rather than a compliment will be unhappy that you did not inform them of it as you enticed them with your chef’s latest masterpiece or $1-off well drinks.

Finally, if a regular event has established a following and become virtually a part of your business identity, consider splitting it off into its own page or feed, and encourage folks to join that one before and after the event for several weeks. When the new page or feed has gained traction, limit posts on your primary feed to very irregular reminders, for customers whose interests might have changed over time.

Succeed With Grace

In closing, much of the above advice focuses on a general principle: use social media to bring value to your guests, not to bring revenue to your establishment. The former will guarantee the latter, so long as you respect the most valuable assets that your customers have: time and attention.

Descent Condition Checker For Android

 Application, Design  Comments Off on Descent Condition Checker For Android
Feb 212011
 

Motivation

Descent Condition Checker ScreenPlaying Descent: Journeys In The Dark can be an exercise in confusion, especially when one has several conditions in play, is a Necromancer, and is wandering through a trapped dungeon. My second app for Android, built using App Inventor, is designed to make such checks fast and error-free.

The Application

Here is a link to the APK file for the application:

Descent Condition Checker For Android

Descent Condition Checker QR Code

The Logic

The app is simple enough: click the condition button and it checks against one of three subroutines, as appropriate to the particular condition: rollBlank, rollSurge, or rollPowerEnh. Based on whether TRUE or FALSE is returned by the subroutine, a specific message is displayed in the results area at the top of the screen.

Problems

The following code is supposed to delay a bit and show some text after a button press, to confirm the press for the user:

Descent Code Block Problem

The RESULTS text change, however, does not work properly, no matter where I call for it (even if I make the text change its own procedure). I have to assume that this is a bug with App Inventor, because the exact same calls are used to make the results area change its text based on check results, as well as its background color (green for good-for-the-user results, red for bad-for-the-user results).

Credits

Descent: Journeys In The Dark is ™ and ©2011, Fantasy Flight Games, all rights reserved.

Descent Condition Checker For Android app is ©2011, David Carle Artman, CC-BY NC 3.0.

IAWA Oracles For Android

 Application, Design  Comments Off on IAWA Oracles For Android
Jan 312011
 

Motivation

IAWA Oracles ScreenI decided to try out Google App Inventor, being invited to the Beta. I wanted a simple enough project to get a feel for the process without becoming bogged down in complex logic or user interface (UI) design. It occurred to me that a random Oracle generator for the In A Wicked Age role-playing game by Vincent Baker would be interesting enough and maybe even useful to others.

The Application

Here is a link to the APK file for the application:

IAWA Oracles For Android

IAWA Oracles QR Code

The Logic

App Inventor uses OpenBlocks as a visual programming environment. Very cool for beginners, but also very mouse-intensive when one has repetitious tasks (like pasting in 208 lines of text!)—I’d have liked to be able to edit a TXT or XML file to populate the Oracles lists.

Here is an image of the basic logic for the Blood And Sex Oracles button:

IAWA Oracles Logic Blocks

Nothing too fancy going on here:

  1. Copy the set-specific list to the OraclesCurrent temporary list.
  2. Call the generic procedure that populates the Oracle labels:
    1. Populate the first Oracle label element’s Text with a random Oracle from the list.
    2. Set the second label’s text to the same value as the first.
    3. While the second is the same as the first, populate the second with a random Oracle from the list.
    4. Repeat Steps 2 and 3 for the remaining two label elements, checking them against all preceding labels.
      Put another way, an Oracle label element can not contain the same Oracle text that is currently in any preceding label element.

The rest of the app is a simple UI of buttons for choosing an Oracle set (the BloodAndSex.Click event in the logic shown) and, of course, four global list variables (one-dimensional arrays) to hold the Oracle-set-specific text (the OraclesBloodAndSex in the logic shown).

Credits

In A Wicked Age is ©2007, Vincent Baker, all rights reserved.

IAWA Oracles For Android app is ©2011, David Carle Artman, CC-BY NC 3.0.

Facebook Events In Google Calendar

 Technology, Writing  Comments Off on Facebook Events In Google Calendar
Jan 202011
 
Google Calendar - Other calendars panel

Google Calendar - Other calendars panel

Folks who know me know I’m irritated by Facebook closing the native interfaces to Google apps (specifically Calendar on Android). Turns out, there’s Another Way:

  1. Go to any Event that you are Attending.
  2. Scroll all the way down to the bottom of the page.
  3. Click Export.
    A pop-up will offer you two options for that single Event: Download or email.
    It also shows a link under “Export all of your upcoming events.”
  4. Highlight that link and copy it (or right-click it and choose Copy link location).
  5. Open Google Calendar in your web browser.
  6. Under “Other calendars,” click Add > Add by URL.
  7. Paste the Facebook URL into the pop-up’s URL field.
    Note: You probably do not want to check the checkbox to make it public.
  8. Click Add Calendar and then wait a moment. A “Firstname Lastname ‘s Facebook” calendar should appear on your “Other calendars” list.
  9. Sync with your Android device or other Google Calendars client and enjoy!

FREEDOM!!!

Food Bank Coordination

 Application, Design  Comments Off on Food Bank Coordination
Jan 072011
 

Challenge

Municipal food banks depend upon food donations to serve the hungry. Coordinating donors with bank locations becomes a logistical challenge:

  • Picking up donations in a timely manner, without disrupting donor business
  • Distributing donations to banks that need them most
  • Accounting for the storage space of banks
  • Transferring food between banks, if actual numbers do not align with projected needs

Use Cases

A donor registers what they have to donate on a Google map, and chooses a range of pickup time (e.g. a restaurant will usually want it to be between 2pm and 4pm; a grocery store might prefer 10pm to 2am). Options to schedule recurring pickup days, dates, and times.

A recipient registers current stock (one-time, upon setup), storage maximums by volume or weight or other? (one-time, upon setup; and if storage increased), pickup minimums by volume or weight (below which it’s not worth the bank’s costs to pick-up; adjustable as needs change), and projected need (daily, weekly; based on history, once sufficient data is accumulated).

A bank’s delivery drivers are given a “traveling salesman” shortest route to pickup donations equivalent to the bank’s projected need. When they commit to the route, those donations are not made available to other banks unless released later by the receiving bank (to be re-distributed where most needed).

Architecture

Initial setup form, as donor only or recipient/donor.

Site (donor or bank) location definition, via manual text entry, push-pin on Google map, or GPS.

Secure verification of valid bank via server check against state or municipal registries.

User deletion of “bad” donor locations -OR- “bad” donor location reporting and server-side banning.

Multiple location support, for owners of several donor businesses or managers of multiple food banks.

Route navigation interface, once a bank’s delivery drivers commit to best-route pick-ups.

Option to use less efficient routing, if necessary to deliver more balanced meals at a given bank or system-wide.

Historical data storage, server-side or locally, for need projection for a given distribution period (day, week, month?).

Optional automatic application of need projections based on historical data, with ability to adjust before submitting to server for distribution.

Costs

Application development and maintenance – Open source community? Grants?

Validation of food banks against municipal or state charters – Possibly manual labor; possibly automatic with connection to government systems.

Server-side data accumulation and re-distribution to apps – Possibly a function of a public Google map; more likely hosted via grant or by government servers.

License

Creative Commons 3.0 BY-NC-SAThis work is distributed by David Carle Artman under the Creative Commons Attribution-Noncommercial-Share Alike 3.0 License.