Open Source - CJS Hayward https://cjshayward.com An Orthodox Christian Author's Showcase, Library, Museum, and Labyrinth Mon, 14 Nov 2022 15:00:46 +0000 en-US hourly 1 https://wordpress.org/?v=6.1 https://cjshayward.com/wp-content/uploads/2016/02/cropped-site-icon-2-32x32.png Open Source - CJS Hayward https://cjshayward.com 32 32 I Build Intranets https://cjshayward.com/intranets/ Tue, 31 Dec 2019 13:57:13 +0000 https://cjshayward.com/?p=6955 Continue reading "I Build Intranets"]]> I'm a developer and other things, and I take a particular interest in implementing intranets. I refereed a book on building intranets, and authored two technical titles with Packt Publications, the first of which built the world's first open source employee intranet photo directory, and the second of which built a dashboard.

One recommended practice is not to build an intranet for the sake of building an intranet or using a sweet tool. Instead, come up with a business motive and objective that can be addressed by building an intranet, and build an intranet that is a tool for meeting that goal.

With that stated, there are some pretty sweet tools that I can fairly easily put on an intranet. These include:

Drupal is a multipurpose content management system.

Hayward's Free Intranet Employee Photo Directory treats a gap in open source coverage for a photo directory.

Koha Library Software is a library management system that is top-notch if you have a library.

MediaWiki is the same software as Wikipedia runs. An intranet wiki can be a very useful tool where information that is out of date doesn't stay out of date for terribly long.

Moodle is an open source learning management system, that unlike Blackboard is based on a pedagogy. If you have employee training, Moodle may be able to help you.

MyCollab is an all-in-one groupware project that advertises, "One place to keep your project on track. Task. Issue. Risk. Time tracking. Milestone. Kanban. Customer management."

phpBB is an online forum and bulletin board solution. It can foster excellent internal discussions.

Request Tracker is an industrial strength request handler and ticket tracker.

SuiteCRM is a customer relationship management system.

TikiWiki is a feature-rich all-in-one system.

WordPress isn't just for blogs. It's a content management system, although internal blogs can be helpful.

I can put your selection(s) from these on a virtual machine that a sufficiently powerful computer can run from your network, for $50 per system included. I can also do additional custom work to customize an intranet built for your needs.

Contact me via the web or email me.

]]>
Help me find a hobby! https://cjshayward.com/hobby/ Sun, 03 Nov 2019 11:37:34 +0000 https://cjshayward.com/?p=6499 Continue reading "Help me find a hobby!"]]> "21. Have a healthy, wholesome hobby."

-Fr. Thomas Hopko, "55 Maxims."

The Luddite's Guide to Technology and many other sources suggest we reduce the time we spend in front of screens.

But how?

One ingredient is to have a hobby to do so instead. And here we have a quiz to help identify what kind of hobbies might suit you best.

Fill out as much of the quiz as you can, and then look and see if any of the suggested hobbies seem to fit:


]]>
Spaghetti Parenthesis Visualizer https://cjshayward.com/spaghetti/ Fri, 20 Jan 2017 21:22:50 +0000 https://cjshayward.com/?p=2560 Continue reading "Spaghetti Parenthesis Visualizer"]]>

Set of opening characters, i.e. '{(' or '{[(': .
Set of closing characters, i.e. ')}' or ')]}': .
Preserve line breaks.

Your code, unfurled:

(Nothing yet.)

Your code, underlined:

(Nothing yet.)

Having trouble trying to keep track of nested parentheses in a page-long SQL query or PHP/Perl/Python etc. conditionals? Type or paste in code you have that has so many layers of parenthesis that you struggle to keep on top of the tangled depth of the code.

Security-conscious? This code doesn't send your code snippet to the server: all calculations are handled in the browser. However, if you want that extra level of assurance, you are welcome to capture the source and make sure everything's on the up-and-up before you use it. This code is dual-licensed, available to you under your choice of the terms of MIT and GPLv3 license.

This page is link-ware. If you like it, you are invited to put a link to CJSHayward.com.

]]> Virtual Tour https://cjshayward.com/virtual_tour/ Fri, 15 Jan 2016 19:52:05 +0000 //cjshayward.com/?p=562 Continue reading "Virtual Tour"]]> Virtual Tour is a CGI script meant to let webmasters take pictures and assemble them into an interactive tour. I invite you to see it in action in the Virtual Tour 'Impressions of Cambridge', whether or not you're a webmaster. It's worth a visit!

View on GitHub.

License: This project is free software, available under your choice of the Artistic, GPL, and MIT licenses. If you like this software, you are invited to consider linking to CJSHayward.com.

Version RedHat RPM Unix .tar.bz2 Unix .tar.gz
1.0b, development virtual_tour-1.0b-1.i386.rpm virtual_tour1_0b.tar.bz2 virtual_tour1_0b.tar.gz

Adminisgrator's Guide: Setting Up a Virtual Tour

Playing Around

A reference Virtual Tour is available in my 'Impressions of Cambridge'. I would encourage you to play around and see how Virtual Tour ticks, how it looks when it is put together.

You can log in to your script's administrative pages by adding '?mode=edit' to the end of the URL: if you have a script at 'http://example.com/cgi-bin/virtual_tour', then 'http://example.com/cgi-bin/virtual_tour?mode=edit' will let you log in and set up the pages.

Views and Places

There are (virtual) places one might stand, and virtual views. One place will normally have more than one view. (You can stand in one place, and look around and see different things while you stay in the same place.) The left and right buttons do not mean "Move left" or "Move right"; they mean, "Staying where you are, turn left" and "Staying where you are, turn right." The forward and backwards buttons mean, "Move forward/backward while facing the same way." In other words, the backwards button means "Back up," not "Turn around." This is not the most consistent way of handling directions, but it seems to provide more intuitive play.

Grids and Paths

If you want, you can manually connect all of the views, but the script provides two shortcuts. The first shortcut is a grid: if you set a Full View Name of "St. John's College 0 0 W", that means, "On the St. John's College grid, at the coordinate (0, 0), facing West." Virtual Tour will look for a picture in 'St_Johns_College_0_0_W.jpg', stripping out the period and apostrophe and converting the spaces to underscores, then adding '.jpg' to the end (or any other image suffix you've asked it to add). Note that this is case sensitive; don't leave your computer looking for '.jpg' files if you have your pictures stored in '.JPG', or give a room of "St. John's College 0 0 W" while your image is stored in 'st_johns_college_0_0_w'. The title given to the user will be something like "'Impressions of Cambridge': St. John's College: 0 East, Zero North (Facing West)." Note: by paying attention to the view titles when visiting 'Impressions of Cambridge', you can tell what the coordinates are. Virtual Tour will automatically link a view with other views at the same place (if the user turns around), and will also link one place to adjacent places on the grid. It should not be necessary to specify too many links manually; normally it should be enough to manually connect e.g. grids with paths, and then let Virtual Tour handle all of the links within a grid or a path.

Note: 'link', as I'm using the term, does not mean an HTML link <a href="CJSHayward.com">like this</a>. I am using to denote the setup behind what the user will intuitively understand as, "At the end of this path, I can move around in this grid." In other words, the nuts and bolts of navigation. Usually this refers to links you specify manually, not the ones that Virtual Tour will automatically create between parts of a path or a grid that are next to each other.

A path is similar to a grid, except that it is one-dimensional. Rather than having two coordinates, it only has one, indicating how far you are along the path, and instead of letting you face 'N', 'S', 'E', and 'W', you can face either 'F' (for 'Forward'), or 'B' (for 'Backward'). A sample Full View Name might be "King's Parade 3 B", which would load the image Kings_Parade_3_B.jpg.

Normally, I created either all or none of the views for a point on a grid or path. In other words, "St. John's College 0 0 N", "St. John's College 0 0 E", "St. John's College 0 0 S", and "St. John's College 0 0 W" should all exist if at least one exists, and likewise "King's Parade 1 F" and "King's Parade 0 B".

Coordinates for grid points, and positions along a path, must be integers.

Manually Linking a Grid and a Path

What I did to connect "St. John's College 0 0" with "King's Parade 3", so that "King's Parade 3" is intuitively south of "St. John's College 0 0", is to create four links from four different views:

  1. Go to the "Room View" screen for "King's College 0 0 S" and set the "Forward" link to "King's Parade 3 B".
  2. Go to "King's Parade 3 F" and set the "Forward" link to "St. John's College 0 0 N"
  3. Go to "St. John's College 0 0 N" and set the "Back" link to "King's Parade 3 F".
  4. Go to "King's Parade 3 B" and set the "Back" link to "St. John's College 0 0 S".

The last two steps help make Virtual Tour behave the way a player would expect when he tries to back up. This sets the path's forward direction to the grid's North. Various directions need to be adjusted if the path's forward direction is to the grid's South (basically, the 'B' and 'F' portions of the path are swapped), or the path leaves from the grid's North, East, or West. Basically, if you're not sure, try to work it out (or take a guess), test it, and expect to get it wrong the first couple of tries, but you'll be getting the hang of it before too long.

This is most easily done after the views are all created, not as you are adding views.

I know that this is cumbersome and slightly confusing; I'm sorry, but I haven't taken the time yet to make a simpler and more intuitive way of doing this.

Directories, Files, and Images

The virtual tour will look for images in '/var/www/html/virtual_tour/' (if you installed from an RPM), or whatever place you told it to store its HTML files in (if you installed manually). If you're not sure where it is, go to the home page ('http://example.com/cgi-bin/virtual_tour' for an RPM install, or what you specified for a manual install), right-click on one of the images, and select "View Image." That should let you see the image's URL in your browser's URL bar, which will be in the same directory as where you need to put your pictures.

The default image size (640x480 at installation) can configured from the 'Miscellaneous' menu, and you can override this for individual images if you want.

Notes

That's what you need to know to set up a Virtual Tour, even if it's tersely stated. Play around with it, and if you're a programmer, think about what would be needed to produce something that behaves like 'Impressions of Cambridge'. And, if you think of something important that should be here but isn't, please contact me so I know what else to add.

-Jonathan

]]>
Proportional Font Terminal: A Better Unix / Linux / Mac Term https://cjshayward.com/terminal/ Thu, 14 Jan 2016 21:18:38 +0000 //cjshayward.com/?p=531 Continue reading "Proportional Font Terminal: A Better Unix / Linux / Mac Term"]]>

This project works with archaic browsers, like FireFox 3 or (shudder) Internet Exploder 6. It does not seem to work well with current browser versions, and it is being left partly as a historical detail, with a clear reference implementation of how one would do this with today's browser.

The basic enhancement of allowing this for e.g. Gnome Terminal appears to be in the Gnome Terminal bug tracker, and so this functionality may be available someday in standard terminal programs by setting one's font to Verdana.

View project on GitHub.

Design, typography, and terminals:
Not-so-good, better, best

Those of us involved in web design and usability know that fonts are not created equal. The first incarnation of my own website used fixed-width fonts for almost everything, because I didn't know what I was doing. Since then, I've joined the rest of the web in recognizing the benefits of using a font optimized for on-screen reading.

In the spirit of the sort of makeover done by Tufte in books like Envisioning Information, I would like to look at three different terms; the last one is the one offered here.

Not-so-good

This is a (cropped) screenshot of the default term (xterm) that shipped with my EeePC. It has a black background, like ancient VT100's:

A screenshot of some code in a default xterm from an EeePC.What this is optimized for is densely packing information into a tight space, and for serious coding this is seriously answering the wrong question.

Better

Let's look at a terminal that shows much better typography and design:

A screenshot of the same code in a gnome-terminal.This has a more readable font, and it makes productive use of space: more specifically, it uses space to enhance usability and readability, not cram in as many bits per pixel as can still technically be read. The font, unlike even the Mac Terminal, is deftly anti-aliased, and to a designer the font appears to have been clearly designed for usability.

Best

But we can do better by breaking out of the grid and using web-based typography as a starting point, and tweak the spacing for reading code:

A screenshot of the same code in the enhanced terminal served from this page.
I've looked at a lot of code this way, and the difference is remarkable. If your code is formatted well, it is easier to read and you can tell more at a glance and then zero in on what you need. It has just a little of the magic of of moving from find/grep/xargs to ack, ordiscovering Python. Having tried it, I really don't want to go back.

How did I do that? By standing on Antoine Lesuisse's shoulders with Ajaxterm (download). A few CSS tweaks, and there is a terminal that takes advantage of the web's advances in typography and usability.

License: All changes from Ajaxterm 0.10 are free software in the hopes that they may be useful but with ABSOLUTELY NO WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE, available under your choice of the Artistic, GPL, and MIT licenses. If you like this software, you are invited to consider linking to CJSHayward.com. Ajaxterm itself is not my work, but is in the public domain, except for its included Sarissa materials, which are LGPL.

(These instructions are for Unix/Linux/Mac; on Windows, I would try Cygwin.)

Troubleshooting tip

  • If you have trouble logging in, and this makes sense in your security situation (by default, Ajaxterm listens on localhost, and firewalls can block 8022 from access by other machines ensuring Ajaxterm is only available locally), you can pass ./ajaxterm.py the argument "--command=bash" and possibly have connections to http://localhost:8022/ simply served bash as the user running ./ajaxterm.py.
]]>
Snippets https://cjshayward.com/snippets/ Wed, 13 Jan 2016 22:53:47 +0000 //cjshayward.com/?p=496 Continue reading "Snippets"]]> Snippets is a CGI script where fortune cookie meets wiki. It provides:

  • A way for people to share quotes, recipes, jokes...
  • A private niche where a person can keep track of sites to visit, people to e-mail.
  • A tool for administrators to turn a large repository of static content into a manageable amount of dynamic content.

Snippets is designed to be easy to configure and customize.

View project on GitHub.

The present release is version 1.0b.

License: This project is free software, available under your choice of the Artistic, GPL, and MIT licenses. If you like this software, you are invited to consider linking to CJSHayward.com.

 

Version Unix/Linux
1.0 (stable) Download
1.0b (experimental) Download

Please e-mail me if you are interested in porting Snippets to another server platform. ]]> Sidebar in a Can https://cjshayward.com/sidebar/ Wed, 13 Jan 2016 22:40:20 +0000 //cjshayward.com/?p=486 Continue reading "Sidebar in a Can"]]> Would you like the software that powers this sidebar? Or would you like a front page with one or more rotating links?

Sidebar in a Can does just that. My front page runs on sidebar technology. The sidebar you see was created only using the install script and facilities described in the README: the administrative web interface and editing the page header and footer. The result is a simple and powerful tool for webmasters to take a large amount of static content (intimidating to new users) and turn it into a quite manageable amount of dynamic content. The result showcases your site's material.

View project on GitHub.

License: This project is free software, available under your choice of the Artistic, GPL, and MIT licenses. If you like this software, you are invited to consider linking to CJSHayward.com.

Sidebar is available as follows:

 

Version Unix/Linux
1.0.1 Download
1.0 Download
1.0b Download

Sidebar in a Can is built on Snippets technology.

Please e-mail me if you are interested in porting Sidebar to another server platform. ]]> SearchLog https://cjshayward.com/searchlog/ Wed, 13 Jan 2016 22:26:34 +0000 //cjshayward.com/?p=478 Continue reading "SearchLog"]]>

The Searchlog Searchable Weblog

What is SearchLog? At its simplest, it is a searchable weblog with a lot of features. But if you're only looking at SearchLog "at its simplest", you're missing a lot.

View project on GitHub.

SearchLog is a Swiss Army Lightsaber. Where a common Swiss Army Knife has useful tools that include scissors, blades, screwdrivers, and a can opener, SearchLog is a multipurpose tool for dealing with information and ideas. Its "blades" include:

  • Something that can be as public as a weblog or as private as a diary.
  • A functional search engine over everything in the log.
  • Personal information management:
    • Address book information.
    • A task manager.
  • An interactive document repository.
  • A search engine that will highlight what you're looking for.
  • A place to keep track of ideas.
    • A tool to search through ideas and see what's related to what.
  • A flexible tool that lets you edit information while keeping an archive.
  • Wiki-style groupware.
  • A tool to help keep an office in touch.
  • A portal that provides an excellent starting point for the Web.

As well as these "blades", it is designed to be "expert-friendly." It uses usability principles to try to give the serious user maximum power for minimum effort and keep mousework to a minimum.

If you're not sure which version to download, I suggest the highest-numbered version.

License: This project is free software, available under your choice of the Artistic, GPL, and MIT licenses. If you like this software, you are invited to consider linking to CJSHayward.com.

 

Version RedHat RPM Unix/Linux tar.gz Unix/Linux tar.bz2
1.1, development searchlog-1.0-1.i386.rpm searchlog1_1.tar.gz searchlog1_1.tar.bz2
1.0.2, development searchlog-1.0.2-1.i386.rpm searchlog1_0_2.tar.gz searchlog1_0_2.tar.bz2
1.0.1, stable searchlog-1.0.1-1.i386.rpm searchlog1_0_1.tar.gz searchlog1_0_1.tar.bz2
1.0, development searchlog-1.0-1.i386.rpm searchlog1_0.tar.gz searchlog1_0.tar.bz2
1.0 beta, development searchlog-1.0b-1.i386.rpm searchlog1_0b.tar.gz searchlog1_0b.tar.bz2
]]>
Quizmaster https://cjshayward.com/quizmaster/ Wed, 13 Jan 2016 21:16:33 +0000 //cjshayward.com/?p=457 Continue reading "Quizmaster"]]>

Quizmaster screenshot

Quizmaster is a tool to let people design, publish, and use fun quizzes.

View project on GitHub.

License: This project is free software, available under your choice of the Artistic, GPL, and MIT licenses. If you like this software, you are invited to consider linking to CJSHayward.com.

Version RedHat RPM Unix/Linux .tar.bz2 Unix/Linux .tar.gz
0.0, development quizmaster-0.0b-1.i386.rpm quizmaster0_0b.tar.bz2 quizmaster0_0b.tar.gz
]]>
Private Logistics: Privacy-Sensitive Todo, Scratchpad, Calendar, Personal Information Management (PIM) https://cjshayward.com/private-logistics/ Tue, 12 Jan 2016 21:52:13 +0000 //cjshayward.com/?p=445 Continue reading "Private Logistics: Privacy-Sensitive Todo, Scratchpad, Calendar, Personal Information Management (PIM)"]]> People are becoming increasingly aware of online privacy and things that contribute to Big Brother knowing quite a lot about you: FaceBook or Google, for instance, offer a tremendous service, but everything is logged and monitored at least at some level.

Your computer's privacy can be invaded by spyware or other malware, but having private data stay on your computer is the best recipe. And, in some newer browsers, there is a way that a webpage can work off of a database that you run on your computer, so that what goes to your to-do list, stays at your to-do list.

This is an attempt to release some highly useful tools, a (CKeditor) scratchpad, a calendar, and an option-rich todo list, all in a way that is sensitive to privacy and keeps your private data just where it belongs.

For geeks, the software is ©2012 CJS Hayward, available to you under your choice of the terms of the MIT or GPL2/3 license. You can download the directory tree here (0.2) (0.1) (0.0).

 Source                           

                              

StylesFormatFontSize       

 

Showing

days
UNDO
 Completed   Delete   Hidden   Unsure  Important   You Define It   In Progress   Active  Background   Problems


Show hidden items.

And pick a date:

Make this repeat.

 

]]>