Jon's LiveJournal
[Most Recent Entries] [Calendar View] [Friends]

Below are the 20 most recent journal entries recorded in Jon's LiveJournal:

    [ << Previous 20 ]
    Sunday, January 18th, 2037
    1:37 pm
    Moved to the Dreamwidths.
    Rather than go with User Agreement of Glorious Republik ,

    You can now find me at


    Current Mood: indescribable
    Monday, January 30th, 2017
    12:54 pm
    "Front-end development work" or "Oh HTML-chan!"

    panel from Girl Genius by Phil and Kaja Foglio - see girlgeniusonline dot com

    If you're making a pure CSS front-end, and need things to be conditionally interacted with - you likely want to use radio-button type <input> controls set to display:none, associated <label> controls wrapping click-able areas, and the [type:radio] , ~ , and :checked CSS selector tools to make things do things. Gurpreet Singh's answer to this StackOverflow question makes a good starting point.

    Also the flexible box layout has been around 6 years and is generally supported ... if only there were more outreach.

    The HTML Living Standard is free (though extensive), most of it is readable by mortals, and has examples, and should be at least skimmed through and a copy kept on hand. If you're skimming, look for the grey "example" areas especially.

    Current Mood: situational dissidence
    Tuesday, January 17th, 2017
    8:33 am
    mount option 'norelatime' being ignored
    Red Hat bug 756670 also reflects the behavior of Ubuntu 16.10, and likely others.

    tl;dr: If you really want atime - you need to use the 'strictatime' option, not 'norelatime'.

    "Status: Closed NOTABUG" - ha ha ha
    Monday, July 25th, 2016
    1:29 am
    Cgroups example - limiting memory to control disk writes (Debian)

    I ran into a problem with an overactive process that left the rest of the system running slow. nice(1) did nothing to solve it, neither did ionice(1) rescheduling it to "Idle". If you run into something similar, cgroups may help

    cgroups ("Control groups") were developed at Google around 2006 and showed up in Linux around 2.6.24. Searching for cgroups examples largely leads one to the RHEL Resource Management Guide. (Link goes to the latest version, most Google searches point to older copies.)

    In my case, I had a long running (>1hr) process that wrote several hundred GB of output.

    I looked at the processes' speed by piping it through pv(1), and also looked at top(1), iotop(1), and

    $ watch cat /proc/meminfo  (watching the Dirty: line)

    The process was doing buffered writes to disk, which was good (keeping the disk continuously fed for best throughput) but was filling up huge amounts of cache (1~2 dozen GB of Dirty pages.) When I paused it, sync(1) took over 5min to complete.

    Debian 8.0 (Jessie) has cgroups by default but, the memory type are disabled by default.

    # apt-get install cgroup-tools
    # vi /etc/default/grub

    (Add  cgroup_enable=memory  to kernel boot parameters, run  update-grub2  and reboot.)

    # cgcreate -g memory:/foo
    # echo 64M > /sys/fs/cgroup/memory/foo/memory.limit_in_bytes
    # cgexec -g memory:/foo bash
    (your task here)

    The cgcreate(1) command is a fancy equivalent to doing a mkdir in the cgroup partition, which automatically is populated with the appropriate control files. Debian 8's kernel has both cgroup and cgroup2 support, but as systemd(8) is using version 1 and it appears the two cannot be used concurrently, that's what I used.


    • Fast throughput - better than piping through dd oflag=direct or dd oflag=dsync
    • Solved the system-wide performance hit
    • Everything ran nicely and the watching meminfo (as above) showed dirty pages were being regularly flushed


    • Your task might be hit by the OOM killer.
    • Your task can have malloc(3) calls fail, which makes most tools bail out.

    This feels like a hack solution, but since cgroups can't limit just write buffered memory yet, and using cgroups actual disk-write limiter (blkio.throttle.write_bps_device) would require the above-mentioned slow dd(1) (which ran at 30% of the speed, at best) and none of the other tools actually worked, I'm sharing it. YMMV - and I'd love to hear of other solutions that actually work for people. A good test program to run is:

    $ pv -S -s 80g < /dev/zero > zeroes.dat
    (write 80GB to a file, with progress bar and live throughput details)

    Current Mood: tuned
    Thursday, October 15th, 2015
    5:44 pm
    Microsoft Outlook hangs at "Loading profile..." (solved)
    • Outlook hangs at blue splash screen with "Loading profile..." and never opens.
    Software involved:
    • Win 10 64-bit 10.0.10240
    • Office 2016 64-bit 16.0.4229.1029
    • IMAP account hosted with GoDaddy ( - only item in profile (.OST backed, default settings)
    Solutions that did not work:
    • Creating a new Outlook profile
    • Clearing out all MAPI config from the registry (renaming HKLM\SOFTWARE\Microsoft\Windows Messaging Subsystem )+reboot
    • Deleting all Outlook folders under %USERPROFILE% dir
    • Renaming out all Outlook registry settings under HKCU
    • Doing a full repair of Office 2016
    • Setting up under a fresh user account
    • Starting Outlook with /SAFE parameter
    • Disabling IPv6 (create DWORD HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents set to 0xffffffff)+reboot
    • Clearing out Windows Search (ControlPanel->IndexingOptions, unchecking Outlook, 'Delete+rebuild' on advanced tab)
    Solution that did work:
    • Disconnecting the network, then reconnecting when Outlook was open.
      • Launch Outlook, wait for blue splash screen stuck at "Loading profile..."
      • Launch an Administrator command prompt. (Start, type CMD, press Ctrl+Shift+Enter, say Yes.)
      • IPCONFIG /release at command prompt.
      • Outlook opened up
      • IPCONFIG /renew at command prompt.
      • Clicked "Send/Receive All Folders" - sync completed normally.

    Current Mood: drained
    Thursday, October 1st, 2015
    3:28 pm
    4-disk raidz vs 3-disk raidz vs 2-disk mirror
    Benchmarked three different volumes (ZFS on Linux) from a Windows client.

    Conclusion: At the mere speed of Gigabit Ethernet, there's no appreciable speed difference.

    7:37 am
    "Stupid, STUPID Unix creatures!"
    tl;dr: Wrap your shell script loops in (subshells)

    ProTip: A task running in a shell script's 'for' loop that are paused by signal TSTP (that is, hitting ^Z) and restarted (with 'fg' or '%') will keep going, but the loop will have been broken and not continue (bash behavior) or the command sequence will continue as though it had completed ('dash' and probably other Bourne shells behavior). I've tested in bash and dash.

    This doesn't work when interrupted by ^Z:

    $ for X in 1 2 3; echo Iteration $X; sleep 5; echo Iteration $X complete; done

    This does:

    $ (for X in 1 2 3; echo Iteration $X; sleep 5; echo Iteration $X complete; done)

    This sort of thing doesn't happen often but when you're looping through commands that take ~6h to complete and find you've lost the output, it's frustrating. :)
    Saturday, February 21st, 2015
    10:02 pm
    Atari 8-bit "Archimedes Spiral" demo - Found again!

    Sometimes you stumble upon what you were looking for by accident ...

    When I was 9 or 10 years old, I didn't have a modem, much less access to the Internet. The few computer magazines I had, I read over and over - and would have to type in games from program listings. I remembered typing in a BASIC program full of complicated math I didn't understand. The resulting program would take hours to run, but produced an impressive 3-D wireframe image. (With hidden line removal!)

    7 years ago (mid-2008) I decided to poke around the Internet and ask in various places if anyone had seen it ... with no luck.

    I had a bit of luck a year later, and posted my findings here on LiveJournal.

    Today I was reading through some .PDFs of old Atari magazines, not even thinking of this, when lo-and-behold, there was the article. Hazzoo-huzzah! It turned out not to be MACE Journal or Compute, but a 1982 issue of ANALOG Computing - #7, the one with the awesome Blade-Runner inspired cover art. Many thanks to Charles Bachand, and editor Lee Pappas for the article!

    I wonder if Charles is reachable... and if he remembers where he got the code for the demo...

    The image I found before (in a Commodore PET accessory ad) appears in Compute! issue 12 (May 1981)10 (Mar 1981) ... the ad is from Micro Technology Unlimited ... and the May 1981 issue has a screen-dump utility by MTU employee Martin Cohen, author of their Keyword Graphics Package. Hmm! (Neat aside: he thanks Gregory Yob for help in his code!). Other snippets of code floating around the 'net include a "HAT.BAS" claiming "Originally programmed August 1982 by Bourn & Fruhwald", but the Compute! ad invalidates this claim.

    Those with too much time on their hands are encouraged to look at the issue on Internet Archive - A.N.A.L.O.G. Computing magazine, issue 7 (1982) pp60-61. (Thanks to Brewster Kahle, Jason Scott, and others for their work there!)

    Analog_Computing_07_1982-p60 Analog_Computing_07_1982-p61
    Read more...Collapse )

    Current Mood: happy
    Wednesday, November 12th, 2014
    8:03 am
    Wednesday, October 29th, 2014
    2:36 pm
    GMail locked down IMAP access at some point.
    • If you don't have IMAP + OAuth 2 you're locked out. Unless:
    • You change a Big Scary Setting "Allow less secure apps". The activation of which also generates a Big Scary Email to let you know you've done it. But then:
    • Your failed attempts triggered another lock on your account, which you need to inspect the IMAP negotiation to see. The first claims "Web login required! go to http://blahblah/100char-long-url", but, surprise! visiting the URL doesn't unlock you.
    • The second directs you to where you learn about which, when visited, does NOT display a CAPTCHA, but does unlock your account.
    • OAuth 2 is so ridiculously overdesigned the main editor of the spec loudly quit.
    • All of this could have been handled using client side certificates, without requiring any changes to the @#$% mail clients.
    -----BEGIN PGP MESSAGE-----
    Version: GnuPG v1
    -----END PGP MESSAGE-----
    Some relevant URLs:
    Tuesday, September 2nd, 2014
    2:18 pm
    Windows technique to print timestamps before & after from the command line
    On Unix, a quick way to output timestamps is:
    $ date ; slowcommand ; date
    Tue Sep  2 12:12:18 MDT 2014
    Tue Sep  2 12:12:34 MDT 2014
    But if you try a similar approach at the Windows command prompt, there's a few problems.
    • The command TIME /T outputs the time, but only in HH:MM format.
    • The command prompt's builtin magic variable %TIME% outputs, but if you try it, the results are unexpected:
      C:\>echo %TIME% && SLOWCOMMAND && echo %TIME%

      The timestamps come out the same, because the command prompt does all variable substitution in a line at once, before executing the first command.

      In batch files, this can be mitigated with the setting ENABLEDELAYEDEXPANSION and referring to variables !LIKETHIS! instead of %LIKETHIS%. But that won't work at the command prompt.
    The solution I used was to run the command explicitly afterwards with CMD /C, using the ^ to escape out the % character:
    C:\>echo %TIME% && SLOWCOMMAND && cmd /c echo %TIME^%

    Other solutions welcome.
    Wednesday, June 11th, 2014
    4:35 pm
    Differences in 100-pin printer memory DIMMs
    My HP Color LaserJet CM1017 (CB395A) claims, according to all online documentation I can find, to take 100-pin non-DDR SDRAM. Upon ordering and trying to install the RAM, I found the notches don't line up. Here's the differences, with photo evidence. Phooey.

    SDRAM pin/notch spacing: 6 pins, right notch, 16 pins, centered notch, 28 pins

    DDR pin/notch spacing: 6 pins, right notch, 16 pins, right notch, 28 pins
    Thursday, November 21st, 2013
    4:30 pm
    I know that when someone has the temerity to say "Gosh, I wish Emacs could do X", they're generally met instantaneously with howls of derision by a teeming horde of "Ask me about my Aspergers!"-shirt-wearing neckbeards who let them know:
    • Anyone who would want to do such a thing is an idiot.
    • Doing $INSANELY_COMPLICATED_ALTERNATIVE is much better as any idiot knows.
    ... it's a million times funnier when that person saying "Gosh, I wish..." is Richard M. Stallman.

    (Relevant: "if you ... think that my kids ... need to have the root password to access some wireless network, or to be able to print out a paper ... please just kill yourself now."
    —Linus Benedict Torvalds
    Monday, July 9th, 2012
    9:47 pm
    Saturday, July 7th, 2012
    12:06 pm
    I now own more original art. is back up, meaning Michael Poe (of Errant Story and Exploitation Now!) & his SO finally got the "give us money for stuff!" solution working after quite some time.

    Saturday, May 26th, 2012
    12:45 pm
    Remote Desktop cannot verify identity because time/date difference between your/remote computer.

    Remote Desktop cannot verify the identity of the remote computer because there is a time or date difference between your computer and the remote computer. Make sure your computer's clock is set to the correct time and then try connecting again. If the problem occurs again, contact your network administrator or the owner of the remote computer.

    Workaround: Connect via IP address instead of name.
    Thursday, January 19th, 2012
    6:10 pm
    New light switch assembly arrived...

    I do hope this works. (fingers crossed)

    Posted via LiveJournal app for Android.

    EDIT: It did, extremely well. Thanks to Nick for the company during the install.
    Saturday, December 17th, 2011
    10:24 am
    Monday, November 14th, 2011
    7:38 pm
    Saturday, November 12th, 2011
    2:31 pm cps3 study

    The primary investigator of the study was actually here at the denver location!

    Posted via LiveJournal app for Android.

    Current Mood: awake
[ << Previous 20 ]   About