@bytesnz

Jack Farley, Computer Engineer

  • home
  • about
  • 12/25/2020, 12:13:48 AM

    A new Litter Survey

    softwarelitterlitter-survey

    In a culmination of litter surveys and litter picks, linked data() and data exploration, and remoteStorage and ActivityPub, I have created a web-based litter pick/survey app that I hope will allow federated citizen science.

  • 12/13/2020, 6:00:00 PM

    Hoe Stream Trash

    litterpi-trash-camlitter-pick

    My latest litter pick target was Hoe Stream and the White Rose Lane Local Nature Reserve. Here's how it went.

  • 11/24/2020, 6:00:00 PM

    Release the Beast

    softwaregitlabcirelease

    I just created a Gitlab CI job to create a release with information from a CHANGELOG.md file for some of my projects. Here's how I did it.

  • 9/30/2020, 9:00:00 PM

    Gitlab CI Caching

    gitlabcontinuous integration

    I noticed something strange happening during build process during a multi-tasking bug fix. Turns out I was using Gitlab CI's caching incorrectly. I should have been using artifacts. Here's what I saw.

  • 9/21/2020, 6:00:00 PM

    Birthday Trash

    litterpi-trash-cam

    As a birthday treat, I took the day off work to try out my electronerised litter picker. Here's how it went.

  • 9/13/2020, 12:12:13 AM

    Pi Trash Cam

    raspberry pielectronicslitterpi-trash-cam

    In preparation for a day of litter picking, I finally got round to a project idea - attaching a camera to a litter picker to record it all. Here's what I did.

  • 8/25/2020, 9:29:58 PM

    yarn add --dev webdriverio

    first-draftsoftwaretestinggitlab

    I finally started implementing UI testing on first-draft using WebdriverIO. While writing tests was easy, getting the tests running was a little more difficult. Here is how I did it.

  • 8/16/2020, 7:04:44 PM

    Hooray! My new blog is live! Based on Sapper, using MongoDB and eventually ActivityPub and ActivityStreams, it will be my federated posting hub to the world.

    softwareblog
  • 8/9/2020, 5:40:49 PM

    Removing EXIF Data from Photos

    exifphotos

    Creating this new blog, I wanted to make sure there was no metadata data leaking personal information. Here's how I removed all the metadata tags except the ones I wanted from my photos.

  • 8/9/2020, 10:21:41 AM

    tmux List and Reattach

    tmuxbashsoftware

    Using tmux for your terminal multiplexer but want an easy to reattach to a session? Here's a small bash script to do it.

  • 8/8/2020, 2:58:48 PM

    Selectable Shell Examples

    markdownsyntaxcss

    Here's how to help your readers save time by making your post's shell commands easy to select and copy - with a simple CSS property.

  • 8/5/2020, 6:48:38 PM

    Be Dates You

    mongodbdocker

    Making my new blog, I didn't initially set the published dates to be native dates in the database. Here what I did to change them ...and do all the upgrades I needed.

  • 7/8/2020, 4:00:00 PM

    Testing vue components

    softwarevuetestingjavascript

    I recently needed to test that some Vue components were creating the correct HTML. To do this, I decided to create snapshots of Object representations of the rendered HTML.

  • 2/20/2019, 12:00:00 AM

    No More Numbers

    javascripthtml5software

    HTML5 number inputs aren't useful, but tel inputs, have all the power

  • 12/21/2018, 12:00:00 AM

    A Hacker "Hacked" Me

    securityemailgrep

    I decided to look into the extortion emails I have been getting and wrote a small script to extract the bitcoin addresses that have been used.

  • 12/7/2018, 12:00:00 AM

    Mouse Surgery

    pledge to not upgradeelectronics

    As part of my pledge not to upgrade, I decided to repair two of my failing mice instead of replacing them with a brand new model (as tempting as it was). Here's what I did.

  • 10/29/2018, 7:00:00 PM

    Danger Danger, Highly Reactive

    vuereactivegraphingdata
  • 9/11/2018, 7:00:00 AM

    Switching to SSR

    reactssrreact-loader
  • 8/10/2018, 4:00:00 PM

    Clean Docker Registry

    nodedockerconsolejavascript
  • 2/1/2018, 12:00:00 AM

    Testing on the Filesystem

    testingjavascript
  • 1/26/2018, 12:00:00 AM

    Tag You Are

    javascripttags
  • 1/25/2018, 9:00:00 PM

    NaN Got Me

    rubber duck savejavascriptnodejsjson
  • 4/28/2017, 10:25:34 AM

    All our app's tabs are belong to us

    angularjavascriptlocalstoragerxjssessionstorage
  • 2/20/2016, 2:33:19 AM

    Developing NPM modules

    nodejsnpm
  • 2/20/2016, 1:48:13 AM

    Nfa + Nfb or N(f+fa+fb)

    arrayfunctionjavascriptjsperf
  • 10/31/2015, 3:36:29 PM

    Photo Layout

    arrangercssgallery hierarchyhtmljavascriptphotostinymcewordpresssoftware
  • 10/31/2015, 2:33:49 PM

    Browning Pass HideAway Web Site

    cssgallery hierarchyhtmlwordpress
  • 10/17/2015, 4:04:57 PM

    Think Mobile

    mobileweb
  • 10/13/2015, 9:30:59 AM

    Pledge to Refuse and Not Buy Bottled Water

    environmentpledges
  • 2/25/2015, 7:42:33 AM

    Run PHP run!

    maximum execution timephptrial and error
  • 11/26/2014, 6:35:32 AM

    Gallery Hierarchy

    galleryhierarchyphotos
  • 10/3/2014, 7:22:04 AM

    Vim and functions

    functionnavigationtagsvim
  • 9/26/2014, 3:18:53 AM

    I'm making hierarchies

    hierarchical datahierarchyphp
  • 9/4/2014, 1:45:18 PM

    Google Sheets fun

    googlegoogle scriptgoogle sheetsjavascriptsheets
  • 8/13/2014, 3:14:22 AM

    Travel Photos

    photo managementphotostravel photos
  • 8/13/2014, 3:02:22 AM

    Image managment scripts

    photo managementphotos

    To handle the manage the amounts of images we seem to be producing on our trips, I created a few simple scripts to do a few tasks that I found myself doing constantly.

    Renaming

    As Canons files are name IMGXXXX.JPG, where XXXX is a one up number, and everytime you start a new folder (good for a new place) on the 450D, it starts from 1, you end up with quite a few duplicate names. To get around this, I add the folder identifier to the name using this simple bash script. The script can also make web-ready versions of the image, but I now use the next script for that.

    #!/bin/bash
    # Goes through folders and renames images depending on folder name and
    # makes a web ready version of the image
    
    rF=
    num=1
    chars=XX
    cD=`pwd`
    
    ##find . -type f -name '*.*' -print0 | while IFS= read -r -d '' file; do
    echo "$@" | while IFS= read -r -d '~' d; do
    #for d in "$@"; do
            if [ -f "$d" ]; then
                    dN=`basename "$d"`
                    convert -auto-orient -resize 1100x1100 -quality 80 "$d" "$rF/$dN"
                    echo resized $d - $rF/$dN
            elif [ -d "$d" ]; then
                    p=''
                    dN=`basename "$d"`
                    if (echo $dN | grep -q '..._....'); then
                            p=`echo $dN | sed -re 's/(...)_....\/?/\1/'`
                            p="G$p"
                            echo Folder $d from G15 - p = $p
                    elif (echo $dN | grep -q '...CANON'); then
                            p=`echo $dN | sed -re 's/(...)CANON\/?/\1/'`
                            p="4$p"
                            echo Folder $d from 450D - p = $p
                    elif (echo $dN | grep -q '....CANON'); then
                            p=`echo $dN | sed -re 's/(....)CANON\/?/\1/'`
                            echo Folder $d from a labelled Canon device - p = $p
                    else
                            p=$chars$((num++))
                            echo Unknown folder - p = $p
                    fi
    
                    if [ "$p" ]; then
                            # Move into folder
                            cd "$d"
                            # Rename files
                            for f in `ls ???_????.??? 2>/dev/null`; do
                                    n=`echo $f | sed -re "s/(...)(_....\....)/\1_$p\2/"`
                                    mv $f $n
                            done
    
                            if [ "$rF" ]; then
                                    # Make sure resized folder exists
                                    if [ ! -d $rF ]; then
                                            mkdir $rF
                                    fi
    
                                    # Make web version of image
                                    for f in *.JPG; do
                                            convert -auto-orient -resize 1100x1100 -quality 80 "$f" "$rF/$f"
                                            echo resized "$f"
                                    done
                            fi
    
                            # Move back into original folder
                            cd "$cD"
                            echo finished folder $d
                    else
                            echo Uknown type of folder - ignoring
                    fi
            else
                    echo Not sure what to do with $d, ignoring.
            fi
    
    done

    Resizing

    I currently keep a directory of copied web-ready images so that it can synced with the server holding my blog whenever I get a chance. This script will create web-ready images for any new images it finds. One thing I do need to do to it is make it so it will update the photo if it has been modified.

    dir=/home/photos/web-ready
    
    find /home/photos/large -iname '*.jpg' | while read file; do
    
            path=`dirname "$file"`
            name=`basename "$file"`
    
            if [ ! -d "$dir/$path" ]; then
                    mkdir -p "$dir/$path"
            fi
    
            if [ ! -f "$dir/$path/$name" ]; then
                    convert -auto-orient -resize 1100x1100 -quality 80 "$file" "$dir/$path/$name"
    
                    echo Done $file
            else
                    echo Skipping $file
            fi
    done
    Close
  • 7/31/2014, 3:43:45 PM

    MeldCE logo

    csshtml5javascriptsvg
  • 4/26/2014, 6:34:09 AM

    MoltenDB

    databasemoltendbmongodbnodejs
  • 10/29/2013, 12:09:07 AM

    The Expensive Side

    house
  • 9/22/2013, 7:00:08 PM

    abcde

    music
  • 7/16/2013, 8:26:10 PM

    Energizer Power Plus Rechargeable Batteries

    gadgets
  • 3/4/2013, 6:27:40 PM

    USAR FOGTeX

    fogtex
  • 2/21/2013, 9:09:54 PM

    Personal Gear Bag

    rescuegear
  • 2/18/2013, 11:10:34 PM

    Geocaching Stamp

    stampgeocaching
  • 4/2/2007, 3:50:02 PM

    Call Record Presenter

    parserpythonsqliteweb
  • 9/25/2004, 9:48:10 AM

    Kimi Ora School

    csshtml
  • 6/25/2004, 8:53:53 AM

    All About Catering Web Site

    csshtml
  • 7/26/2003, 7:52:11 AM

    Quantum Accounting Web Site

    csshtml
Copyright BytesNZ 2021. Powered by Sapper
[matrix]