Programming ch57k macro keyboards from AliExpress under Linux

This is about these kind of mass produced macro keyboards

This is third party software that has wide support for a variety of macro keyboards produced in great numbers in China. It’s the only way to program these under Linux.

https://github.com/kriomant/ch57x-keyboard-tool

Great tool, poor documentation. I’m running Ubuntu 22.04.3 LTS (Jammy Jellyfish)

Rename the executable file to something shorter like ch57x

Make a copy of the example config file before editing. I edited 3key.yaml below.

Open the terminal inside the folder where you’ve unzipped the file

When using the linux version under Ubuntu the formatting for commands is

./ch57x --help

To do anything with elevated permissions use sudo

sudo ./ch57x led 1

To validate the configuration file, read the directions in the example file very, very carefully.

Validation requires elevated permissions

sudo ./ch57x validate < 3key.yaml

Once you get the OK from the validation tool, writing the config file also requires elevated permissions

sudo ./ch57x upload < 3key.yaml

Here’s the output of ./ch57x --help

Commands:
show-keys Show supported keys and modifiers
validate Validate key mappings config on stdin
upload Upload key mappings from stdin to device
led Select LED backlight mode
help Print this message or the help of the given subcommand(s)

Options:
--vendor-id [default: 4489]
--product-id [default: 34960]
--address
-h, --help Print help information

Tweaking the Sage search URL for only subscribed content

You can add the Sage URL variable to the end of the search interface to limit searches by default to only subscribed and open access content.

https://journals.sagepub.com/search/advanced?access=user

Creating an updated Reading List using Zotero

I’m doing a relatively large literature review for an upcoming paper, and my recent tweaks to my reading list in Zotero have made it a much more enjoyable and consistent experience.

I’ve a folder with the academic articles I’ve selected to be a part of the literature review.

I ‘ve been tagging the articles I’m using in the lit review as ‘*cited’ or ‘*excluded’.

And then I created this saved search

This gives me a list of everything I have 1) not cited and 2) not excluded. It’s made the lit review process much more enjoyable by passing off all of the work onto my next read article to Zotero.

Using VOSViewer on a large text corpus : All Jane Austen Novels

I’ve been experimenting and using the citiation mapping fuction in VOSViewer for a few weeks now and I’ve started working with the plain text mapping function. VOSViewer supports what it calls a ‘corpus’ file, which is a plain text files with each of your individual documents held in a single line, with a carriage return at the end.

The installed version of VOSViewer has an example corpus file that you can work on.

http://www.vosviewer.com/download

I wanted to throw something a little more challenging at VOSViewer to check out how well it handled a larger text file.

I created a corpus using all of Jane Austen’s novels available on the Project Gutenberg site.

Sense and Sensibility (1811)
Pride and Prejudice (1813)
Mansfield Park (1814)
Emma (1815)
Northanger Abbey (1818)
Persuasion (1818)
Lady Susan (1871)

The leading and trailing Project Gutenberg information was removed, as well as all of the extra line breaks and carriage returns.

This was then loaded into VOSViewer, where we used the ‘Full Counting’ method. The minimum number of occurrences of a term was set at 50. This leaves 472 of 23000+ terms, and I decided to map all of the terms.

You can go through and remove unwanted terms, and I’ll show an example of that slightly later.

472Austin

Full Size

472 emma

Full Size

472 elinor

Full Size

472 fanny

Full Size

As an example of limited terms, I ran through the import process using the same settings  and only kept references to people (father, sister, cousin etc and specific names)

peopleAust.png

Full Size

peopleEliz.png

Full Size

peopleElinor

Full Size

peopleAnne.png

Full Size

peopleFanny.png

Full Size

VOSViewer is a really remarkable tool, adding abilities to analyze the relatedness of a very large text corpus in ways that would be very difficult only a few months ago. I anticipate that this particular example will be of particular interest to fans of Jane Austen.

This is just a very rough run through, without any attempt to create a master file of names or make any conclusions. But the power of VOSViewer for text analysis is really obvious in these maps.

 

 

Fast & Easy Handouts with Adobe Spark Post

I’ve been making handouts for instruction sessions for a few months with Adobe Spark Post https://spark.adobe.com/home/

My work-flow is to gather the text I’m going to be putting in my handout in Google Keep without any formatting.

Then I go through the process of picking one of the pre-selected templates in Adobe Spark Post. I’ll play around with colors (especially if I’m featuring a specific database or tool with a color scheme).

You can drill down to hex codes for colors, and there are a wide variety of fonts.

Here’s an example I’m going to be using soon featuring Zotero and other tools that take advantage of the DOI and ISBN systems. This took less than 5 minutes to create, with custom colors mimicking the Zotero logo colors.

Zotero

Adding Hidden Search Limits on Certain Poorly Designed Search Forms

Sometimes you’ve reached the end of what’s possible with WYSIWYG search screen editors and very, very specific needed features (like search limits) are missing.

If  you have access to the HTML of the page or the ability to include arbitrary HTML, or can include Javascript in any form on the page you can apply this.

Most library search forms follow something like the following pattern

<form>

<h2>Title</h2>

<input type=”text” id=”title_input”></br>

<h2>Author</h2>

<input type=”text” id=”author_input”></br>

<h2 id=”j_title_input_text”>Journal Title</h2>

<input type=”text” id=”j_title_input”></br>

<input type=”button” value=”Search”

</form>

The key to keep an eye on here is the ID part of the input.

If you can include any javascript anywhere on the page, you can auto-fill part of the form, then hide it.

This will auto-fill the form

// Fill input
document.getElementById(“j_title_input”).value=”Harvard Business Review”;

And this will hide the input box

//Hide input
document.getElementById(“j_title_input”).style.display=”none”;

Now, this is pretty hacky, but with many of us dealing with hosted systems and limited budgets it can become difficult to get server side solutions. If you can create a search box and a search strategy, you can create limited, customized search boxes.

Fork and play with it here using CodePen.

Complex AND-OR-NOT Searching using Summon

When doing complex librarian-style searching, you often run up against the limits of the Summon interface. Like most library systems, in order to reduce confusion from users the Summon interface limits the number of characters in a search box to 128.

When a librarian or other experienced searcher is attempting to do a sophisticated set of Boolean searches this character limit and the complexity of the nested search terms often stymies a search. A single punctuation mark out of place can ruin a whole search string.

Summon, and many other search systems, usually only place this limit on the content of forms. When applying a search string using the URL (or more precisely in the case of Summon, the Summon API) you can submit much more complex and lengthy search requests

For this example, I created a Google Sheet with two sheets.

The first allows the user to create complex AND, OR or NOT search statements in a string, such as (in the example data)

“college admission” OR “university admission” OR “community college admission” OR “higher education” OR “tertiary education”

Search Example 1

This has extra options for searching sections inside Summon such as Author, Title, Publication Date and Abstract. The Keyword search is indicated with the open parenthesis  (.

After you create this search statement you can copy it from the “Summon Search String” cell and paste it (make sure you paste values only) into the Search String cells on the second spreadsheet.

The second sheet allows you to string multiple search statements together with AND, Or or NOT

(“affirmative action” OR “quota” OR “equal opportunity” OR “nondiscrimination” ) AND (“Asian” OR “Black” OR “Middle Eastern” OR “Hispanic” OR “American Indian” OR “Indian” OR “Pakistani”  ) AND PublicationDate:(“1990” OR “1991” OR “1992” OR “1993” OR “1994” OR “1995” OR “1996” OR “1997” OR “1998” OR “1999” OR “2000”) AND (“college admission” OR “university admission” OR “community college admission” OR “higher education” OR “tertiary education” )

Search Example 2

For more subtle manipulation of the Boolean searches, it’s quite easy to copy the contents of the ‘Test This Search” box into Notepad and adjust it as necessary.

For example, I’d adjust the above statement in this way for clarity

((“affirmative action” OR “quota” OR “equal opportunity” OR “nondiscrimination” ) AND (“Asian” OR “Black” OR “Middle Eastern” OR “Hispanic” OR “American Indian” OR “Indian” OR “Pakistani”  ) AND (“college admission” OR “university admission” OR “community college admission” OR “higher education” OR “tertiary education” )) AND PublicationDate:(“1990” OR “1991” OR “1992” OR “1993” OR “1994” OR “1995” OR “1996” OR “1997” OR “1998” OR “1999” OR “2000”)

Search Example 3

Within the example sheet, I’ve added the settings for ‘Full Text’ and ‘Scholarly’.  On the first example (1), no settings are in place, on both of the more complex examples (2 and 3), ‘Scholarly’ is set to Yes, while ‘Full Text’ is set to No.

Additional options that could be added include limits to Books, Journals or various forms of media.

For this example, I’ve used the Summon instance at the University of Toronto. Please feel free to make a copy of this sheet, and feel free to contact me if you’re running into problems adjusting this for your university’s Summon settings.

The basic principles of this project are applicable to any library system, but the details on the back end will vary considerably. I wrote the initial version of this project to simplify complex searching in an InMagic Presto database using Excel 2016

Sharing is currently set to ‘View’, please make a copy and adjust it to your own circumstances as necessary.

V1 Example Complex  Boolean Search Spreadsheet

The Summon API documentation is really useful for determining which fields are available for creating complex searches.

Summon API Fields Documentation

Data from running Have MLIS, Will Travel for November 2016

This is just a quick update on the Have MLIS, Will Travel job sharing site. I did a substantial amount of work automating the collection and classification of the jobs I was collecting. I recently collected the data from the first full month I ran HMWT, and I wanted to share a couple of charts. Here’s the total data

Country Number of Jobs Nov 2016
Canada 73
United States 762
UK 126
Republic of Ireland 3
UAE 11
Kuwait 2
Netherlands 1
Qatar 2

job-num-nov-2016-by-geo

 

Job Type Number of Jobs Nov 2016
Medical 32
School 121
Public 245
Academic 465
Legal 24
Special 57
Records Management 4
Archives 5

job-num-nov-2016-by-area

Some of the insights gleaned from this:

1)the automated job search strategies I’ve created are heavily biased towards academic jobs in North America.

2) I have not found a reliable source for european jobs outside of the UK

3) for jobs posted on the same day, I have a process to eliminate duplicates, but I have a problem with duplicates posted across multiple days. About 1/3 of the raw data was duplicate positions, posted as much as 3 weeks apart.

The total jobs posted in the month of November, after all duplicates were removed, was 980

The problem of duplicates is not enough of an issue to pursue further development to limit them. The process to tag and distribute these jobs is sustainable and easy to do, taking at most 15-20 minutes a day.

Minimalistic Text Android Widget

This is just a quick update on a widget I made for my own use using

Minimalistic Text

Tasker

Google Maps Directions API

The time, day of week, and weather information are all built into the Minimialistic Text program. Transit information was a little bit more complex.
screenshot_20161026-215751minimalistic-text-widg

The Transit information circled is two API calls to the Google maps directions API through Tasker, one for my trip to from the train station to my work bus stop and one for my trip home. They run every 5 minutes and extract out variables including the bus number, the time of departure, the train name and it’s time of departure, the length of the trip and the time when I will arrive home from the XML response to the API call.

Tasker pulls the full result from train station to work bus stop, and caches it in a variable. I then use tasker to pull each variable out of the XML results cached in the full variable.

Then, using Tasker, I format the variables into a easy-to-read (for me) one glance information screen with emoji’s to indicate bus trips, train trips, total time and icons for home and work.

Some of the additional features I’ve built into this include

  1. A widget that speaks my commute when pressed.
  2. A popup that lists out departure times for my commute
  3. I added the api call and variable update feature for this widget into my 5 minute data widget  which turns my data plan on for 5 minutes.

What I end up with is a very simple, one-glance tool that gives me all the information I need to know for my commute.

Subscribing to Journals with your institutional Subscription

There are some journals and magazines that you want to read every article in. However, in the institutional subscriptions that most academic libraries use, there are a lot of tiny (less than 150 word) articles that clutter up email alerts and RSS feeds.

This is a strategy to create smart RSS feeds and email alerts with only the larger articles.

Because I’m using some less-documented features, I’ll show you how to do this in two of the largest vendors, EbscoHost and ProQuest.

ProQuest

At the University of Toronto, we have access to Rolling Stone through CBCA Complete.

You can generally find the internal ProQuest ID’s of journals and magazines by clicking on the journal name in any generic search result, or through your OpenURL resolver.

The Rolling Stone internal ID on ProQuest is 47797

You can search for Rolling Stone in your ProQuest subscription by using this search string.

PUBID(47797)

You can create an alert within the ProQuest interface for every article, but as mentioned earlier a lot of tiny articles will clutter up your alerts. ProQuest uses the operator WC to allow you to limit or place a lower limit the number of words in your search results.

The WC operator uses > (greater than) and < (less than) in front of the number of words. To only get longform articles from Rolling Stone, you can use this search string.

PUBID(47797) WC(>500)

ProQuest search results should be sorted by the ‘Most Recent first’. With this search string and sort option, you can then create the alerts inside ProQuest.

Gale

At the University of Toronto have access to International Affairs through our Academic OneFile subscription

Gale uses the Publication Title operator to identify individual works. You can find International Affairs with this search.

Publication Title (“International Affairs”)

Gale uses the Word Count operator to limit word counts, and uses the > or < in front of number of words..

To get only longform articles from International Affairs, use this search string.

Publication Title (“International Affairs”) AND Word Count (>500 )

Ebsco

At the University of Toronto we have access to the National Review through our subscription to Corporate ResourceNet.

Ebsco uses the JN operator to identify individual works. You can find the National Review with this search.

JN “National Review”

Ebsco does not use a word count operator, instead offering a page count limit. Put a page-count limit of Greater Than 1 and create a search alert inside the Ebsco interface.

 

All three interfaces allow both RSS and Email subscriptions to alerts with these search options.