20190210

neato website

Recently, a subscription-based social media site, socialgalactic.com, was launched. The site already appears to have paid subscribers due in some part to the loyal following of the website’s creators.

The public-facing user interface appears to be based on vue.js and bootstrap. While vue.js introduces too many layers of indirection from actual dom manipulation than I am personally comfortable with, it is a reasonable choice in terms of very-small-footprint view libraries. Being used in a large social media website could lead to even more widespread adoption of the vue.js project.

It will be very interesting to observe the composition of paid subscription levels among this website’s users over the next several years. If content and foaf datasets become available, it would also be interesting to compare against similar datasets produced by existing social media platforms. Feeding post content through a sentiment analyzer, for example, or observing how subscription level changes in a member’s friends list correlates with that member’s decision to change their own subscription level, would provide valuable insights for other projects that seek to create profitable subscription-based products.

20190208

neato websites

http://www.sawaccidents.com – statistical breakdown of saw accidents and their associated injuries.

http://ucnv.github.io/pnglitch/ – how to make various kinds of png glitches.

https://doc.rust-lang.org/book/ch03-03-how-functions-work.html – this is the page where I decided I do not like Rust. Still working through the manual.

Rust does not allow underscores in method names, but only camel case. It is useful under some circumstances to use underscores to indicate one kind of concept separator and camelCase to indicate another kind of concept separator. For example, when creating a path handler in a controller, one might name their method PageController@page_something_twoWords_index($id), where the associated path is like something/two_words/{id}, and the form validation handler is PageController@validate_something_twoWords_index, and the submit handler is PageController@submit_something_twoWords_index.

This is a matter of human preference, and it is difficult to derive widely-applicable measures for readability in program language or coding convention designs.

https://archive.org/details/book_of_politeness_1302_librivox/ – a public domain deportment guide.

Currently reading a book by autists who have learned social skills, and the procedures they applied to reach that goal. The participants claim that manners helped early on to smooth over interactions, before they understood or empathized with the strange, aggressive creatures that had them surrounded.

20190207

demo shader

From time to time, humans have occasion to respond to forum posts in a strategic way. The United States Air Force has published a procedure for such activity. This flowchart has since been translated into a shader for demonstration purposes.

The translation process was a matter of deriving the node types from the source image, filling in the text for each node, and then attaching the links between nodes in the node editor. Total setup time was 15 minutes. Once created, a shader link may be shared on social media, in email, or in blog posts and comments, to invite use.

As an usage example, suppose an agitator has defaced the landing pages and comments sections in an organization’s social media setup with their own content. It may be worthwhile to have procedures planned to deescalate the situation with minimal resources expended. Unprepared humans “on the ground” in such a scenario may become agitated by the agitator’s behaviour and rhetoric, and resulting public displays of anxiety or aggression may create long-term organizational issues.

Shaders may be modified after publication. Peopleshader.com includes facilities to download datasets of past shader activity. After the procedures have been applied on a number of occasions, one may find it useful to gather statistics from the sessions of that particular shader and extract probabilities and timings of each node and branch activation, which may provide useful insights during the adjustment or creation of new procedures.

20190205

domChanger for SVG

It took a lot of research and false starts to resolve this issue, so the solution has been made into a blog post for future readers.

One of the more productive lightweight libraries out there is domChanger, which implements virtual dom functionality like is found in React, without the weird parser extensions. Instead, the input to domchanger is a description of the dom to be created in a format dubbed “jsonml.”

When taking the naive approach to apply domchanger to scalable vector graphics, one quickly runs into an implicit constraint of the library: domChanger elements do not include the xmlns attribute in new elements, and svg elements require an explicitly stated namespace in order to operate on many web browsers.

To rectify this, the apply method must be modified to extract the top.namespaceURI, when building a new dom tree, and if creating a new tag element, to grab newItem.props.xmlns. The document.createElement call is then changed to a document.createElementNS call, with the xml namespace specified in the new element. This creates the svg element and its sub-elements with the appropriate namespace, and allows svg graphics on all svg-capable browsers tested.

For the code, see the domchanger.js from peopleshader.com, and compare against the canonical domchanger.js found elsewhere on the web.

20190201

“It’s called a ‘Work Breakdown Structure’ because the Work remaining will grow until you have a Breakdown, unless you enforce some Structure on it.”

Akins

2018 was spent on small client projects and developing peopleshader.com. Peopleshader.com is now deployed, but remains in test mode pending release. Once released, there are many options to expand view counts past the current level. Among those options:

  • Create shaders that provide practical guides, and putting them into search or social ads.
  • Encourage social media influencers to use shaders to bulk-process incoming contacts with surveys or audience feedback.
  • Locate organizations in the region and encourage them to encode procedures into shaders.

Each of these options must involve a small test case, and statistical instrumentation laid out ahead of time to safely determine effectiveness. Once a test case has been constructed and the statistical instrumentation has been put through its paces, decision support spreadsheets may be constructed.

Based on anecdotal experience, the creation and maintenance of an individual shader does not take very much work. There remains some confusion in the beginning about how to use the node editor, and tests must be performed to determine whether the graphic on the logged-out and logged-in landing page will help people to better understand the process.