Skip to main content
tdro

Another wandering soul screaming into the void. If you are looking for my blog you are in the wrong place. The profile and header pictures are brought to you by @cdd20.

tdro micro.thedroneely.com (edited) view markdown plaintext permalink sep 27 2022 24 sec 72/50 words

Chrome --headless can dump the to the command line. Set a virtual time budget in [?] for the to settle down and then do stuff.

shell
Html() {
  chromium \
    --headless \
    --dump-dom \
    --virtual-time-budget=999999 \
    "$1"
}

HtmlToText() {
  lynx -stdin -dump -nolist
}

This has “peculiar” uses. Fun fact: invoking the name of chromium around normal people confers alien–like status.

shell
Html 'https://www.youtube.com/' | HtmlToText
#gists
tdro

Another wandering soul screaming into the void. If you are looking for my blog you are in the wrong place. The profile and header pictures are brought to you by @cdd20.

tdro micro.thedroneely.com view markdown plaintext permalink sep 2 2022 17 sec 50/50 words

WordPress has an affinity for back–doored radioactivity. If I can get my way (which is hard), a WordPress install has only 1 theme and 0 plugins.

shell
wordpress/
|-- public
`-- wp-config.php
php
/* Disable installing plugins and themes */
define('DISALLOW_FILE_MODS', true);
wp-config.php
#gists #php
tdro

Another wandering soul screaming into the void. If you are looking for my blog you are in the wrong place. The profile and header pictures are brought to you by @cdd20.

tdro micro.thedroneely.com (edited) view markdown plaintext permalink aug 26 2022 47 sec 142/50 words

My puppeteer scripts now use deno. No more need for npm in my personal stack! spawnSync + which returns the local browser’s path.

javascript
import puppeteer from "https://deno.land/x/puppeteer@16.2.0/mod.ts";

const chrome = "firefox";   /* Browser Chrome: "firefox" | "chromium" | "google-chrome" | ... */
const product = "firefox";  /* Product Base:   "firefox" | "chrome" */

const { status, stdout, stderr } = Deno.spawnSync("which", {
  args: [ chrome, ],
});

const executablePath = new TextDecoder().decode(stdout).trim();

const browser = await puppeteer.launch({
  headless: false,
  executablePath: executablePath,
  product: product,
});

const page = await browser.newPage();
await page.setViewport({ width: 1024, height: 768, });

const sites = [ "example.com", ];

for (const site of sites) {
  await page.goto("http://" + site);
  await page.screenshot({ path: site + ".png" });
}

await browser.close();
Basic Boilerplate: Captures a picture of example.com (main.ts)
shell
deno run --allow-all --unstable main.ts
Deno Version: 1.23.0
#gists #js
tdro

Another wandering soul screaming into the void. If you are looking for my blog you are in the wrong place. The profile and header pictures are brought to you by @cdd20.

tdro micro.thedroneely.com view markdown plaintext permalink jul 6 2022 27 sec 82/50 words

Web servers can be spun up quickly on the command line but with gotchas. Take the innocent web server .

shell
php -S 127.0.0.1:8080

Best not to use PHP’s web server cli (even for PHP) because routes with a dot (.) are assumed to be static files. Use a real web server or superior cli web servers with minor gotchas.

shell
python -m http.server --bind 127.0.0.1 8080
busybox httpd -f -p 127.0.0.1:8080
ruby -run -e httpd . -p 8080
#gists #shell
tdro

Another wandering soul screaming into the void. If you are looking for my blog you are in the wrong place. The profile and header pictures are brought to you by @cdd20.

tdro micro.thedroneely.com view markdown plaintext permalink jul 4 2022 24 sec 71/50 words

Hugo has template performance metrics with the --templateMetrics flag. Here’s a snippet of the metrics for this site.

shell
$ hugo --templateMetrics

Start building sites … 
hugo v0.101.0+extended linux/amd64 BuildDate=unknown

Template Metrics:

 cumulative       average       maximum         
   duration      duration      duration  count  template
 ----------      --------      --------  -----  --------
7.278303484s   49.177726ms  237.175705ms    148  partials/generate-feeds.html
7.22797312s   112.93708ms  246.988674ms     64  _default/single.html
6.982028147s   83.119382ms  245.262274ms     84  partials/navigator-right.html
6.683942678s   47.070018ms  237.223569ms    142  partials/web-ring.html
1.685089741s    5.561352ms   28.254398ms    303  _default/summary.html
#gists #shell
tdro

Another wandering soul screaming into the void. If you are looking for my blog you are in the wrong place. The profile and header pictures are brought to you by @cdd20.

tdro micro.thedroneely.com view markdown plaintext permalink jun 10 2022 17 sec 51/50 words

One way to remove multi–page transition jank is to force a permanent scrollbar. Are there any kindred spirits? Yes — there’s a kindred spirit. Overflows may disable descending position: sticky behavior. Avoid that problem with other jank removal techniques.

css
html {
  overflow-y: scroll;
}

body {
  overflow-y: scroll;
}
#css #gists
tdro

Another wandering soul screaming into the void. If you are looking for my blog you are in the wrong place. The profile and header pictures are brought to you by @cdd20.

tdro micro.thedroneely.com view markdown plaintext permalink may 7 2022 17 sec 51/50 words

Whenever I’m handcrafting , content selection rules are usually the first declarations on my sheet. Might as well ensure user selected text is readable. Easiest win for accessibility.

css
::selection {
  color: #fff;
  background-color: #000;
}

::-webkit-selection {
  color: #fff;
  background-color: #000;
}

::-moz-selection {
  color: #fff;
  background-color: #000;
}
#css #gists

Authors

Web Ring