Google Chrome Browser How to Pin a Tab to the Tab Bar

Today I learned how to in Google Chrome browser pin a tab to the tab bar. Right-click (control+click on Mac) on the browser tab and choose “Pin Tab”. When the tab becomes pinned it becomes small(only the favicon shows, not the text), it zooms (justifies) to the left and the “x” (the close button) disappears (so the tab can’t easily be closed).

Pinning a browser tab to the tab bar makes the browser tab take up less space. For me, this feature will compete with bookmarks feature– right now I have my favorite web pages bookmarked on the bookmark toolbar.

Thanks to Support Hangout Episode #17 ( http://supportops.co/support-hangout-episode-17/ ) for this tip. On that page this tip is located where it says: “From Carolyn – Chrome’s option to pin a tab.” That in turn links to the google support page that tells how to pin a tab (Chrome > Help > Tabs and windows > Arrange tabs..) ( https://support.google.com/chrome/answer/95622?hl=en )

Update note : two months after the “today” mentioned above, after having tried browser tabs for a while. I now don’t use the pin-a-tab feature. Daily I do use Chrome and daily I use the bookmark toolbar.

*2015-01-21 edit: previously published at http://wieldlinux.com/2014-12-31-chrome-pin-a-tab.html
*2015-07-30 edit: edited whitespace to improve this post’s readability


In the Desk.com Case List Teammates’ Cases-being-worked are Highlighted Gray

In Desk.com, in the case list when my teammate is working on a case, the case is highlighted in a darker grey than the other cases. I confirmed this by hovering my mouse over any of the dark gray cases in the list and I see the “Morgan Doe is currently working on this case.” message in the popover-details-window.


*2015-01-21 edit: previously published at http://wieldlinux.com/2014-12-26-desk-cases-highlighted-gray.html
*2015-07-30 edit: edited the whitespace to improve this post’s readability


For an IT professional it’s a Skill to get an Answer

Scenario: I ask a person a question– ask them for some information. They don’t answer my question- they don’t give me the information I’m asking for. It’s a skill to 1. realize that someone hasn’t given me the information-comprising-the-answer and 2. get the answer.

Moving on in the scenario:

Why mightn’t a person answer my question-asking-for-information?

1. It’s secret. The information-comprising-the-answer is secret/confidential.

2. Too much effort. It would take too much effort to give me the information-comprising-the-answer

3. They don’t know. They don’t know the information-comprising-the-answer.

At this point I need to know why the person didn’t give me the information-comprising-the-answer, so that I can decide what to do next.

If it’s reason 1. (It’s secret), then I know I’m going to have to regroup and find how to gain access to the secret information, and try again.

If it’s reason 2. (Too much effort), then I can recalculate how much effort it’s worth and regroup accordingly with whoever’s involved.

If it’s reason 3. (They don’t know), then I can either A.ask them to find out, or B.ask them who would know, or c.myself go ask someone else– whichever is appropriate.

In conclusion, as an IT Professional it’s important for me to realize whether or not someone has answered my question-asking-for-information. If they haven’t answered it then it’s also important to find out why, because that helps me to regroup and get the original question answered.

*2015-01-21 edit: previously published at http://wieldlinux.com/2014-12-17-it-skill-get-answer.html
*2015-03-04 edit: corrected date at top from 2015 to become 2014
*2015-07-29 edit: fixed white space to make readable.


Using phpLiteAdmin as a Daily Task Tracker and a Work Activity Log

Using phpLiteAdmin as a daily task tracker and a work activity log

On my shared web hosting, both UsingSugarCRM CE as a task tracker and UsingCollabPress as a task tracker were taking thousands of
milliseconds to load the page after each server-refresh-mouse-click.

Now I use phpLiteAdmin which is much quicker. The whole solution is comprised of a tasks table and a notes table.

Here are the table creation schemas:


CREATE TABLE "btc_notes" (‘date_time’ DATETIME DEFAULT

On both the tasks and notes tables, I set the date (or date+time) field to use phpLiteAdmin’s date stamp or time stamp functionality.

Here is my work flow:

– Into the tasks table, insert a new task with due date.
– I use the due date to order the tasks– if its an important task I put the date today and if its a secondary task I put it tomorrow or later.
– Screenshot here of the tasks ordered by date ascending:

– From the list of tasks with today’s date I pick the one most important task and work on it.
– To break from a task or to punt it to later, I update the date — either individually or with this SQL query: UPDATE “tasks” SET “date” = ‘2014-10-26’ WHERE “date” = ‘2014-10-25’
– In the notes table along with date+time I insert a note of a task’s progress.
– Screenshot here of the insert note form:

– When I complete a task I delete the task.
– At the end of the week I look at the list of notes. It’s become a report my week’s accomplishments.
– Screenshot here of the notes table ordered by date_time descending:

I use phpLiteAdmin as a daily task tracker and a work activity log. On the same shared hosting it is much faster than were either the CollabPress or the SugarCRM CE installations.

*2015-01-21 edit: previously published at http://wieldlinux.com/2014-12-09-phpliteadmin-as-task-manager.html
*2015-06-04 edit: edited to fix broken links and clean up white space.


The mzz-pendingcomment helper plugin for CollabPress for WordPress

Now posted is the Mzz Pendingcomment helper plugin on GitHub. This WordPress plugin in effect changes the functionality of CollabPress WordPress plugin — as they are made sets CollabPress comments to pending.

In other words it overrides the default behavior of CollabPress which is to always set a new comment’s status to “published”.

[2017-01-21 edit: Here is a link to the plugin (it's source code) on github: https://github.com/mjassen/mzz-pendingcomment]

This plugin adds one specific functionality to the existing CollabPress solution, without hacking the CollabPress core code.

This plugin is an open source software script.

Making this plugin took some iterations, research and trials. The reward is that it integrates with the existing software to change its functionality.

*2015-01-21 edit: previously published at http://wieldlinux.com/2014-12-06-mzz-pendingcomment-helper-plugin.html
*2015-07-29 edit: edited whitespace to improve the post’s readability.


For a Software Support Engineer a Note on the Relevance of Professional References

The most important thing in keeping one’s Software Support Engineer job is professional references.

A professional reference is one of my colleagues describing my work behavior to another of my colleagues.

If my colleagues continually positively refer me to each other (I mean give positive professional references about me to each other) then I will be able to keep my job.

For example I’m Maurice and two of my colleagues are talking about me and one of them says to the other: “Maurice really did a great job on last week’s ______ project.”

This is even more important than taking school classes, passing tests or showing my colleagues my great written portfolio.

Here are some characteristics that I’ve noticed about professional references:

– Professional references are out of my control (given totally by the mercy and grace of someone else)

– Professional references are Taboo (this may be why I personally have historically had a hard time understanding them — it’s hard to find a recorded reference to them and also hard to find a person who will talk with you about them) (because of this, this may be my first and last post on the importance of professional references to a Software Support Engineer — I want to respect the taboo and not dwell on this subject!)

– Professional references are valuable– as valuable as one’s paycheck, but in a different way. (In other words references get a job which comes with paycheck)(maybe this great value is what makes it taboo too…)

– Professional references are relevant at all times — connected to one’s ongoing reputation

– In addition to being important in keeping one’s Software Support Engineer job, professional references are also important in getting a Software Support Engineer job in the first place.

These are the relevance of professional references to a Software Support Engineer.

*2014-12-05 edit: previously published at http://wieldlinux.com/?p=893
*2015-07-30 edit: edited whitespace to improve this post’s readability

2014-11-13 23:43:40

How Much Does WordPress Cost?

I can’t afford WordPress. Wait– I mean that I can’t afford WordCamp not that I can’t afford WordPress.

This weekend it would cost $30 plus the cost of parking and gas to attend the nearby WordCamp. But I’m on a budget. A really strict budget and so I can’t afford it. Okay so I was exaggerating about not affording WordPress, I meant WordCamp.

How much does WordPress cost? Well for self-hosting the cheapest I could make it was to use my living room server with $30/yr. dns service and a $10/yr. domain name. That amounted to a live internet WordPress site for a total of $40/yr. Another option that I’m now using is shared hosting which costs me $82/yr. (that includes one domain name).

How much does WordPress cost? In conclusion, right now, I can’t afford WordCamp– but in a way that’s just a reminder how priceless WordPress is. And in fact I can afford WordPress. Right now for me WordPress costs $82/yr.

*2014-12-05 edit: previously published at http://wieldlinux.com/?p=897
*2015-07-30 edit: edited whitespace to improve this post’s readability



Into What Role Does a Software Support Engineer Grow?

Part of the answer is they grow into a COO. Like Chief Operating Officer or another role that reports to the COO. The other part is that a Software Support person touches every part of the organization. Sales, Operations, Engineering. And so it is possible for a support person to grow into any of those fields that they are passionate/inclined/skilled at. So they could end up as a CEO-type, COO-type or CTO-type.

But the reason that the likely role for a Software Support Engineer is most likely to end up as COO role, is if one sticks to the core responsibilities of a Software Support Engineer (for example triaging customer issues, Solving customer issues, using/testing software, promoting software, and many others), then one will be doing jobs that are considered operations. I mentioned in a previous post, Ramblings on Whether There Will Ever be a Standard Job Title for a Software Support Engineer, that in the Support industry a Support Person is sometimes viewed as an infantry. Indeed, there are parallels between Military/Police/Government-Executive-Branch-Type roles and Software Support. So if a Software Support Engineer excels at these, then they could naturally move towards a position of an operations role.

For example in the Support Driven podcast episode. 04, at 14min.,55sec. someone mentions that the support manager’s boss is the COO.

To conclude, because of the breadth of the software business that they touch, a Software Support Engineer role can grow into many career roles in Sales, Engineering or other, but more specifically, an appropriate role for a Software Support Engineer to grow into is COO or a role that reports to COO.

*2014-12-05 edit: previously published at http://wieldlinux.com/?p=881

*2015-07-30 edit: edited whitespace to improve this post’s readability and also fixed a broken hyperlink

2014-11-04 05:05:14

On a Dual Boot Ubuntu and Windows PC How to Modify Grub Boot Menu Screen Resolution

I dual boot Ubuntu 12.04 with Windows 8.1. I found that I can get it to work if I install Windows first, then install Ubuntu second and let ubuntu’s grub boot loader do the work of presenting me on startup with the grub menu of which OS to boot into.

But there’s a problem. I Install Windows, then install Ubuntu and everything is OK *except* that on my monitor I see a screen resolution error *during when it should be displaying the grub boot menu*. With my Compaq Presario with nvidia geforce graphics, with an HP W2072a monitor, the message is: “Input Signal Out of Range Change Settings to 1600×900 -60Hz”.

So I assume the PC is presenting the boot menu to the graphics card and/or monitor *BUT* I can’t see it. At this point, after about 10 seconds, by default it then proceeds to boot into Ubuntu and once Ubuntu loads, I see everything fine on my monitor. At this point, alternatively (before the 10 seconds elapses) I have learned through experience that when the boot screen is comes up (although my monitor is blank so I can’t see the boot menu choices with my eyes) if I press the down arrow on my keyboard four times and press enter, it boots into Windows fine, at which point windows loads the proper graphics software and I can see everything fine on the screen.

In other words its only in the grub boot menu screen that my monitor goes blank. It’s very frustrating to not have the boot screen options show on my monitor!

So anyways, the solution I found is here:
How do I safely change grub2 screen resolution?

In short, in uxterm or any shell, type:

sudo nano /etc/default/grub

Then uncomment this line: (remove the # )


Then click ctrl+o, then enter then ctrl+x to save and to exit nano.

Then back in shell type:

sudo update-grub

And hit enter.

Then reboot.


With this change in place, now when booting the computer it makes the grub menu options come up visible on the screen! (even though it is stretched wide, at least i can see it .) That is how, on a dual boot Ubuntu and Windows PC, to modify the grub boot menu screen resolution.

*2014-12-05 edit: previously published at http://wieldlinux.com/?p=879
*2015-07-31 edit: edited whitespace to improve this post’s readability

2014-10-27 11:17:06

Between Sydney and the United States Doing Software Customer Support?

It’s discussed in episode 18 of the Support Driven podcast! (link to podcast and website below!)

In one part of episode 18 of the Support Driven podcast, it’s discussed that a weekly newsletter is one way to keep the globally-disbursed Software Support Engineers together– a weekly newsletter that includes large and small details about what happened that week in the software support department/group. It’s discussed that this may even make the entire company feel closer.

In one part of episode 18 of the Support Driven podcast, it’s mentioned that the time-of-day when the Sydney team meets with the United States team is 5am Sydney time. ( that would be 3pm or 2pm New York time)

In one part of episode 18 of the Support Driven podcast, it’s mentioned that with remote worker Software Support Engineers in all timezones, at the end of the shift the Engineer from one timezone writes a report for the person coming onto the next shift– a report including what important things happened during their shift.

iTunes link:
(Support Driven podcast) Episode 18 – Mat Patterson on Building a Remote Team

Corresponding website link:
(Support Driven website blog post) Episode 18 – Mat Patterson on Building a Remote Team

*2014-12-05 edit: previously published at
*2015-08-03 edit: edited whitespace to improve this post’s readability

2014-10-23 05:07:46

Windows and Ubuntu Dual Boot – How to by Default Boot to Windows

I want to make Windows the default operating system that my PC boots into. (In other words I want Windows to appear first in the grub menu boot list.)

I search/google and find this article: I search/google and find this article: How do I set Windows to boot as the default in the boot loader?

In short, what did I find that worked for me?

In a terminal type:

fgrep menuentry /boot/grub/grub.cfg

Then find the entry for windows, for example. “Windows 8 (loader) (on /dev/sda1)”. Then run:

gksu gedit /etc/default/grub

Then Change the entry “GRUB_DEFAULT=0″ to:

GRUB_DEFAULT=”Windows 8 (loader) (on /dev/sda1)”

Save, then type:

sudo update-grub

*2014-12-05 edit: previously published at http://wieldlinux.com/?p=869
*2015-07-29 edit: edited whitespace to improve this article’s readability.

2014-10-20 23:00:03

On Ubuntu OS on Firefox Browser Installng Flash to Make Pandora Work

Relevant software versions:
Ubuntu 12.04
Firefox v30.0

Pandora wouldn’t work for me on Firefox v30.0 on Ubuntu 12.04 install. A message came up on the web page told me to install flash player. Then I googled and found this command recommended:

sudo apt-get install flashplugin-installer

I ran it from a terminal (command shell)(command prompt) and it ran fine.

The result is the next day I tried Pandora.com in Firefox on Ubuntu and Pandora now works fine.

*2014-12-05 edit: previously published at http://wieldlinux.com/?p=866
*2015-07-29 edit: edited whitespace to improve this post’s readability.

2014-10-17 21:21:18

Switching from Chrome Browser to Chromium Browser

I recently wrote about Switching to Chrome Browser. Now I switched my default browser to Chromium browser. I did so in an attempt to become closer to the Chrome browser software developer community. For example I’d expect that the code discussed committed in today’s #chromium IRC channel will appear in Chromium browser by tomorrow whereas it will be some weeks later before the same code appears in the stable Chrome browser.

It was scary and I avoided doing so in the past. It was scary because on the Chromium.org website there are numerous warnings to not use Chromium browser, recommending to instead use Chrome browser or Chrome canary browser. There are warnings that it is unstable and that it doesn’t have auto-updates.

After having made the move, I see that Chromium browser acts similarly to Chrome browser. After having made the move, I’m no longer scared. When needed I can still run Chrome browser side-by-side with Chromium browser.

In conclusion, I’ve moved to Chromium browser for my default web browser. It was scary at first. Now that I made the move it isn’t scary any more.

*2014-12-05 edit: previously published at http://wieldlinux.com/?p=864
*2015-08-05 edit: edited to remove whitespace to improve this post’s readability and to fix a broken hyperlink

2014-10-14 22:35:02

Switching to Chrome Browser

Today I switched my default browser to Chrome. Why switch to Chrome? Because the app I depend on most works best in Chrome. The app I depend on most is supported first in Chrome.

I opened Chrome browser, added all my daily-use bookmarked websites and saved passwords, and moved the Chrome icon to the front on my Mac OS X task bar.

In Firefox browser I removed my bookmarks and saved passwords, and moved the Firefox icon to the back of my Mac OS X task bar.

The first few times I needed to use a browser, I clicked on Firefox out of habit. When I saw that my bookmarks and saved passwords were gone, I remembered that I had switched to Chrome. After about half-day, I already remembered to use Chrome instead of Firefox.

In conclusion, today I switched from Firefox to Chrome. It took some effort but within about half a day I was effectively switched over.

*2014-12-05 edit: previously published at http://wieldlinux.com/?p=862
*2015-08-05 edit: edited to remove whitespace to improve this post’s readability

2014-10-07 22:21:00

Inspirational Documentary about Women in STEM ( Science- Technology- Engineering- Mathematics )

Upon watching this Women in STEM documentary ( http://vimeo.com/107201940 ), I’m inspired to continue to blog about IT Professional topics.

Note: In a scene of the video I’m in the audience– I appear for about 0.5 seconds.

*2014-12-05 edit: previously published at http://wieldlinux.com/?p=835
*2015-08-06 edit: edited whitespace to improve this post’s readability


For a .doc Document in LibreOffice Writer How to Make A Table of Contents

For a .doc document in LibreOffice Writer how to make a table of contents.

First get the document. For a sample see/download this document:


In this document there are 3 “Chapters”. I’ll tell Writer that the first line of each Chapter should be in the table of contents, and then I’ll tell Writer to insert the table of contents.

1. Here’s a screenshot of what the doc looks like before making the table of contents:

2. I’ll tell Writer that the first line of the first paragraph should be an index entry. Highlight the first line of the first paragraph, then from Writer’s top menu choose “Insert” > “Indexes and Tables” > “Entry…”. In the “Insert Index Entry” dialog that appears, for the “Index” dropdown choose “Table of Contents” and click the “Insert” button once. Then click X to close the “Insert Index Entry” window. Screenshot here:

3. Repeat this Insert-table-of-contents-index-entry for each chapter.

4. I’ll tell Writer to insert the Table of Contents. I put my cursor on a blank line at the top of the document. Choose “Insert” > “Indexes and Tables” > “Indexes and Tables…” and in the “Insert Index/Table” window that comes up, In the Indexes/Table tab make sure the Type dropdown has highlighted “Table of Contents” and click the OK button. Screenshot here:

Here is a screenshot of the result:

For a sample of the result, see/download this document:

*2014-12-05 edit: previously published at http://wieldlinux.com/?p=798
*2015-08-10 edit: edited to remove broken links, and edited whitespace to improve this post’s readability


A Helper Plugin that Puts CrazyStat Include Tag in the WordPress

I previously wrote a

This has worked. Now I’ve got some stats on who’s visiting my
WordPress-powered website.

I realized that soon I might want to change my WordPress theme. My
include script for CrazyStat is hard-coded in my site’s child theme.
So If I change to a new theme I’ll need to modify the new theme to
make a child theme and put the include script in its footer.

Thus I devised this mzz-include-crazystat
helper plugin that puts the include script in the footer for me.
The plugin’s README file has more details.

*2014-12-05 edit: previously published at

2014-09-29 07:29:21

Creating a Software Map to Learn Software and to Test Software

This morning I progressed the Software Map for a software that I’m

I’m refining my Software map process.

I use a spreadsheet and indent one cell for each significant
screen change.

For example the login screen has two text boxes and a button so it
has three elements. I describe them. Clicking the login button moves
to the Home page so I indent one column in my Software map
spreadsheet and on the next row/cell I continue to describe the Home

In this way I will describe the entire software application. The
benefits to me are that I will use the entire software application so
I’ll become skilled at using it. In other words, I’ll learn the app.

Later, one use of the software map document will be manual
software testing. Since I’ll have a written tree map of the
software’s interface, any time I need to test the software I can just
recurse/step through the map.(throught the spreadsheet) If I need to
report my test results then at each step I can take a note and report
the notes.

I can apply this Software map process to mapping any software. The
same benefits will apply in each case– the mapping process and the
map will allow me to learn the software and to facilitate testing the

*2014-12-05 edit: previously published at


Using CollabPress as a Daily Task Tracker and a Work Activity Log for Software Customer Support

I use CollabPress as a daily task tracker and a work activity log for software customer support. Here’s my workflow.

When I take on a new task– for example from a customer or a co-worker, I create a new task by going to the CollabPress "Tasks" page, scrolling to the bottom and clicking on the "+Add new task" link. This brings up the Add Task lightbox where I enter a Description and Due Date and click the Submit button. Depending on the urgency or priority of the issue I can set the Due Date today as opposed to tomorrow or further in the future.

When it’s time to triage or work on my tasks, I use CollabPress’ Calendar view. This shows me all my tasks laid out, by Due Date, in a monthly calendar view. So I work on today’s tasks and when they’re finised I work on tomorrow’s tasks.

On the calendar view, clicking on a task brings up its details. In this screen I can check the checkbox next to the task’s title which closes the task. I can type a note in the "Leave a comment" box and click Submit, which makes a timestamped note. I do this when I’ve significantly progressed the software customer support case.

For reporting, if I want to see for the past week all the notes I made along with their time+date stamps and which task the note applied to, I haven’t figured out how within CollabPress. For now I made a SQL query on the MySQL database that gives me this:

SELECT wp_comments.comment_date_gmt, wp_posts.post_title, wp_comments.comment_content

FROM wp_comments

JOIN wp_posts ON (wp_posts.ID = wp_comments.comment_post_ID)

WHERE comment_type = collabpress ORDER BY wp_comments.comment_date_gmt DESC;

As a Software Customer Support Engineer That’s how I use CollabPress as a daily task tracker and a work activity log.

*2014-12-05 edit: previously published at http://wieldlinux.com/?p=548

2014-09-22 07:05:19

Map of my Track for the 2014 WWWP5K 5K Run on 2014-09-19

Here’s the map of my track for the 2014 WWWP5K. (5K run on


*2014-12-05 edit: previously published at

2014-09-12 06:39:03

Hack core. Just don’t hack core alone.

I’ve read so many times to never hack core. Yet is that different
from editing a software’s core code? To learn software development I
need to edit a software’s core code.

I have read other people who write that it’s necessary to hack
core to learn.

My conclusion is that one should hack core, just don’t hack core

How to do this? How about hack core to modify whatever edit is
desired to make. Then submit the hack to the core dev. of that
software as a software enhancement patch.

If the core software developer isn’t reachable, then find another
way to publish or share the hack with others.

In other words, if one is sharing one’s hacks then its not hacking
core, it’s editing software– it’s being a software developer. Hack
core. Just don’t hack core alone.

*2014-12-05 edit: previously published at

2014-08-14 21:46:25

Using SugarCRM CE as a Daily Task Tracker and a Work Activity Log

I’ve been looking for a software to track my daily Software
Support Engineer tasks and to log my daily activity related to these

I had been using Trello.com for daily task tracker (to-do list),
and gitrdone php script
to log my daily activity.

I’m now trying SugarCRM CE (community edition) to track tasks and

To hide unused menu items and de-clutter the top menu, I went into
"Admin" > "Display Modules and Subpanels" and
dragged-and-dropped all but the "Tasks" and "Notes"
modules from "Displayed Modules" to "Hidden Modules".

For tasks, to streamline the list view that I see when viewing the
grid/list of all open tasks, I hid all but the "Close",
"Date Created", "Priority" and "Subject"
columns by going into "Admin" > "Studio" >
"Tasks" > "Layouts" > "ListView"
and dragging-and-dropping only these four choices into the "Default"
column (leaving in the "Available" or "Hidden"
columns the choices corresponding to the other task grid/list
columns) Screenshot here of my tasks list interface:

For notes, to streamline the list view I did pretty much the same
thing and hid all but the "Date Created", "Related To"
and "Subject" columns. Screenshot here of my notes list

So my work flow on this setup is like this:

When I get a new task, such as from a Software Customer Support
ticket system, from my software support engineer colleague or from my
sales colleague or from somewhere, I enter it as a new task, which
shows up in my list of tasks. I can sort my list of tasks by Date
Created or by Priority or by Subject. When I solve the task I can
mark it as Closed. This constitutes my to-do list, so all my tasks
are in one place, and so I don’t forget any of them (even when my
brain got full).

Throughout the day when I finish a task or even part of a task,
under that task I can click the "Create Note or Attachment"
button to create a new note related to that task. This creates a
log/record of what I’ve done throughout each day. At the end of the
week I can report on this– I use this to either make a report of
what I’ve done to give to my boss, or to review and re-write into a
blog post to share with everybody what I accomplished that week!

That’s how I’ve started using SugarCRM as a daily task tracker and
a work activity log.

*2014-12-05 edit: previously published at

2014-07-01 20:26:30

Where it is Discussed the Difference Between the Role of Software
Support Forum Moderator Support Person and Software Troubleshooting
Support Person

In this #wordpress-sfd IRC meetup, it is discussed the difference
between the role of software support forum moderator support person
and software troubleshooting support person:


So in other words two distinctly different roles both expected of
a software support agent,

1. Define and explain what is supported and what is not supported,

2. Troubleshoot/support the things that are supported.

*2014-12-05 edit: previously published at

2014-06-28 07:09:23

In Trello How to Create Multiple Cards with Copy and Paste

I love Trello for to-do lists. Shout out to Trello!

Here’s a Trello question I ran into, and the answer.

How do I force trello to prompt me every time to choose, so that I
will always have the choice to have my list either be made into one
card or multiple cards? I mean the prompt: "If you want, we can
create a card for every new line. That would be x cards. You can also
create one card with a long title."

Into a trello card when I copy and paste text containing line
breaks (new lines), it seems like it sometimes presents me with a
prompt whether I want to create multiple cards vs. one card. Yet it
seems like sometimes it doesn’t prompt me with this choice.

For example a week or two ago I remember I pasted a text with some
line breaks into a card and it prompted me one or multiple cards.
That time I just wanted one, so I chose one.

But going forward, at least once per day, I am going to need to
paste a list of about a dozen items into Trello and need them to
become multiple cards.

So my question is, how can I force the prompt to come up every

Googling for "trello how to create multiple cards with copy
and paste", comes up with some articles from blog.trello.com and
help.trello.com such as:




These said I could copy and paste lists. So following the advice I
tried the following things:

-I made a list in Textwrangler for Mac, separated by line breaks,
and then copied and pasted it into trello. Without prompting me to
choose, it went in as a single card.

-In MS Word for Mac, I made my list into a bullet-point list, then
copied and pasted the list into trello. Without prompting me to
choose, it went in as a single card.

-In MS Excel for Mac, I made my list into a column of cells, then
ctrl+clicked on the column header and chose "copy", then
pasted into trello. Without prompting me to choose, it went in as a
single card.

So what’s the trick? How do I force trello to prompt me every time
to choose, so that I will always have the choice to have my list
either be made into one card or multiple cards?

The answer:

Using it some more, I got it to prompt every time whether I want
one or multiple cards.

I found that after clicking "Add a card…" and then
pasting the multi-line text, if I *then proceed to click the green
"Add" button*, it’ll then prompt me whether I want one card
or multiple cards.

That solves this issue for me. Thanks for reading!

*2014-12-05 edit: previously published at

2014-06-27 06:16:34

A Script to Create a Log – a Log that is a Text Field that Stores

I created log.php on github — a (LAMP) PHP script to create a
log. The log is a text field for notes. The notes could represent
things. For example I may use it to hold song lyrics. Or journal
entries, or blog posts, or account ledger entries, or calendar
entries or notes-of-the-day’s-accomplishments. The script displays an
html text field form with one textarea in which by default appears
the current date and time down to the current minute. Then below the
textarea are printed the previous entries in descending alphabetical
order.(and so if the date and time is input each time it will cause
the entries to appear with most recent entries at the top.)

Link to the log.php script on github:

*2014-12-05 edit: previously published at


How to Symmetric Password Encrypt a File on Mac with GPGTools
GPGServices and then Decrypt it on Windows with Gpg4win Kleopatra

Applicable software versions:

GPG Keychain Access Version 1.1.3 (601) for Mac

Gpg4win Version 2.2.1 for Windows

Kleopatra Version 2.2.0 for Windows

Mac OSX Version 10.9.3

Windows 8.1 Pro N


– On the Mac, Install GPGTools for mac

– On the Windows PC, install Gpg4win

Downloads can be found on, or linked to from the GnuPG website:


Steps to encrypt the file on Mac:

– On the Mac, on the file wished to be encrypted, choose:
(control+click) -> Services -> “OpenPGP:Encrypt File”

– On the “Choose Recipients…” Window that comes up, enable
the “Encrypt with password” checkbox, disable the “Add to
recipients” checkbox and click OK.

– The “Pinentry Mac” window appears. In the “Passphrase”
field, create/enter (and remember or safely note) a passphrase.
Re-enter it when prompted again.

– This will create an encrypted copy of the file, next to the

Then Send/transfer the encrypted file however you like to the
Windows PC.

Steps to decrypt the file on Windows PC:

– On the Windows PC, launch Kleopatra and choose “File” ->
“Decrypt/Verify Files…”

– Browse to the wished-to-be-decrypted file and choose “Open”,
and in the “Decrypt/Verify Files” window that appears, choose a
destination folder and click the “Decrypt/Verify” button.

– A “pinentry” window will come up, prompting to enter the
passphrase that was used to encrypt the file. Enter the passphrase .

– The contents of the wished-to-be-decrypted file will become
decrypted into the destination folder.


“How to Decrypt Using GPG”:

“GPG Encryption Guide – Part 4 (Symmetric Encryption)”:

“18 Signing and encrypting files”:

Other resources:

“How to encrypt and sign text or files with GPGServices?”:

“Decrypting a file using GPG4Win (Kleopatra)”:

*2014-12-05 edit: previously published at

2014-06-06 06:41:50

Software Customer Support and a Software Feature Request

First I watched this SupportOps.co episode #10, talks about “the
customer is always right”:

( "Support Hangout Episode #10 – August 15, 2013 by Chase
Clemons" http://supportops.co/support-hangout-episode-10

At ~13:00 starts talking about "the customer is always
right", then ~15:50 starts talking about customer adamant about
a feature request.

Then I Bing-ed/searched and found this article where someone
states their thoughts on feature requests, and then tens of
commenters take over with their views. But there was great discussion
of where a "requirements document" comes into play to
define a feature request vs. a bug request, and also where cost and
who is sponsoring the developers’ time comes into play.:


*2014-12-05 edit: previously published at

2014-05-29 20:17:05

Having a Single Software Customer Support Document that Represents
the Software to Everyone

I’m trying to think of a way such that Software Customer Support
can all be performed via a single, simple tool.

My idea is to have a single document that represents the software
to everyone.

If someone wants to know how to use the software or be an expert
on the software, they will be able to learn or become that by using
the documentation alongside using the software.

This in theory will allow the Software Customer Support Engineer
to solve all problems by EITHER: pointing the customer to the proper
section of the documentaion OR: writing/updating/editing the
documentation to include the answer/solution/clarification and then
pointing the customer there.

To step back, I might as well say what triggered me to write this
in the first place. I had the idea that the Software Documentation
for a software should include specific descriptions of *what the
software doesn’t do*.

Why should the software documentation put into writing what the
software *doesn’t* do? So that customers can see that its already
been thought through before and actively decided a given feature is
*not* a feature of the software. This would allow denials of feature
requests to be performed in a totally objective way, with no need for
much discussion (other than positive discussion of
re-considering/revisition the possibility of enhancing the software
in the proposed manner)

I think this builds on the idea that in some ways in traditional
software support the Support Engineer person is a "living
documentation" who is supposed to know all about the software.
So by putting all this in writing the software support engineer can
be more objective and not emotionally involved, and thus do their job
with little stress and with high efficiency.

Moving on. What form will the document be? A (big) .pdf file? A
website like a wiki or an online manpages?

I will start by saying it should be in the form of an online man
pages, that can be programmatically viewed either as multiple pages
split into sections, or as a single .html page. so it is both a book
and a website. it can be split infinitely into sections and
subsections such as: 1, 1.1, 1.2, 2, 2.1, 2.2. 2.2.1, 2.2.2, 2.3,
2.4, 2.4.1,, 2.5, and so on. I’ll say that I got inspiration
for this from the MySQL 5.0 reference. And I’ll stop there.

*2014-12-05 edit: previously published at


Description of how I installed CrazyStat on WordPress 3.9

I uploaded the CrazyStat ‘stat’ directory into the root of my WordPress directory. (So now in my WordPress website directory I have the ‘stat’ folder alongside of the other folders (alongside ‘wp-admin’ folder, etc.)

Now I needed to paste the CrazyStat code in the footer file of my WordPress theme (as per this blog post: http://blog.christosoft.de/2012/04/how-to-include-crazystat-in-wordpress/ )

*but* I don’t want my footer.php file to get overwritten when I update WordPress. So I want to put it in a child theme.

So I get the help of this tutorial:

So next to my Twenty Fourteen theme ( ‘/wp-content/themes/twentyfourteen’ ), I created a new child theme by
making a new folder for the child theme, and I decide to call it twentyfourteenchildtheme. So like this:

And in the twentyfourteenchildtheme I create only two files: footer.php and style.css.

The contents of style.css is this which I got from that codex.wordpress.org link above:


Theme Name: Twenty Fourteen Child

Theme URI: http://example.com/twenty-fourteen-child/

Description: Twenty Fourteen Child Theme

Author: John Doe

Author URI: http://example.com

Template: twentyfourteen

Version: 1.0.0

Tags: light, dark, two-columns, right-sidebar,
responsive-layout, accessibility-ready

Text Domain: twenty-fourteen-child


@import url("../twentyfourteen/style.css");

/* =Theme customization starts here

————————————————————– */

And the contents of footer.php is the footer.php copied from the twentyfourteen theme, but with the CrazyStat line (two lines actually, although the "<?php @include_once("stat/src/include.php"); ?>" is the only necessary one) added near the bottom:

[See: ./uploads/2014-05-08_01.html ]

And that’s it. (I didn’t have to change anything in the ‘stat’ directory or its subfolders)

I did for security reasons want to change the CrazyStat directory away from the default of ‘stat’, however, I tried and something went wrong, so I ended up just using the default of CrazyStat directory name of ‘stat’.

And now I can login to "http://(my web site .com)/stat" and see if, and how many, people are visiting my WordPress website!

Finally, Thank you to WordPress and CrazyStat people.

*2014-12-05 edit: previously published at

2014-05-06 08:39:39

A LAMP PHP Script that Takes an Email Address and Inputs it Into a
MySQL Database

This is the email gathering web database script I wrote that
consists of a single input textbox on a web page that validates email
addresses before proceeding to store them into a MySQL database.

Link to script on github:


*2014-12-05 edit: previously published at

2014-04-20 09:40:35

A Morning-to-Night Day in the Life of a Software Support Engineer


– Communicating details of Customer Company A troubleshooting case
with Colleague A, B for help.

– End partner/reseller call With their coordinator and their team.

– Worked to arrange Customer Company A case.

– Worked on Customer Company B cases, three separate cases/issues.

– Worked on Customer Company B, a case.

– Working on Customer Company B, a case.

– Triaged cases specifically to bring Customer Company B cases to
the top. Current List: (14 individual tickets)

– Troubleshooted Partner Software Product user issue with
colleague B via email

– Customer Company B, their coordinator –per colleague C. I
responded as top priority

– Triaged cases. responed internal email requests.

– Internal call with colleague A

– Triaged and closed a Colleague D. support request.

– Re-assessed my inability to do the Customer Company C
administrative task- reached out to team to keep them informed of

– Closed a few tickets. created a few tickets. responded to
Colleague E.

– Responded to Customer Company B, one ticket.

– Called with Colleague B to recap Company D next-steps


*2014-12-05 edit: previously published at



It’s Excellent and There is no Downside for a Saas Provider to Provide the Performance Interruption Status Message to Customers

Here’s my own experience and my own feeling on a topic that has also been covered on SupportOps.co hangout/podcast. I came to the same conlcusion that they did.

Recently at the top of my help desk’s saas web page appeared a message saying that they were investigating performance problems that are delaying their secondary service.

I noticed right away and felt that: 1. that this is transparent(the fact that i am informed of the problem while the problem is not-yet-resolved), 2. that it benefited me by comforting me that my saas provider was aware-of/working-on the issue, and 3. that the downside was that negative publicity that all of the saas provider’s users now knew there was a problem and it’s not fixed yet.

Then thinking about this again, and thinking in light of the recent SupportOps.co hangout/podcast that I had listened to, I realized there is no downside. Number 3. doesn’t apply. in the above example, I am not a customer of the secondary service, only of the primary service which is running fine. And so the message does not apply to me. So I just ignore it. As long as I’m not constantly flooded with such messages, I don’t care.

And on the other hand, if I were a customer of their secondary service, I’d actually appreciate the fact that the saas provider is keeping me informed. Therefore there isn’t any downside in the above Software Customer Support scenario — it’s excellent that the saas provider transparently provided this performance interruption status message to their customers.

*2014-12-05 edit: previously published at


A PHP Script to Output Chinese Characters as Individual .jpg Picture Files

2014-04-04 21:52:06

A PHP Script to Output Chinese Characters as Individual .jpg
Picture Files

Here’s a php script I hacked for windows sever (WAMP) to output
the about 21,032 chinese characters, in black font on white bg, into
a directory as 50px x 50px individual .jpg picture files.


*2014-12-05 edit: previously published at

2014-03-30 16:02:43

A Software Support Engineer must Mention their Concern Early to
their Colleagues

Recently I needed a colleague to grant me access to something at
work. I was going to formally request permission for the specifics of
the request. I’m a knowledge worker and my industry is the
Information Technology industry, where we need to know as much
information as possible in order to make the best decision. So I
researched and thought it over all the details of my request, for
about an hour, and wrote up my request and sent it to them.

The response came quickly. It was a single sentence asking me to
research more, find the best possible solution, and get back to them
with a more refined request.

Hold it! I already researched this a lot. What did I miss? Why do
I have to research more? I would learn this a few days later. Here’s
the rest of the story:

A few days later, it was my housemate’s turn to take out the
trash. I had noticed that yesterday morning the trash was full but
hadn’t said anything. This morning I saw it was too full, and told
them that it was. The response came immediately. It was a single
sentence asking me if I had tried compacting the trash with my hand
and then seeing if it was still too full or not. Hold it! I missed
something again and it was the same feeling as with my Software
Support Engineer colleague.

What I had missed twice is that I needed to earlier tell the other
person of my concern. In the former case, I should have researched
just one bit, found a decent request, written it up and sent it. In
the latter case, I should have mentioned the trash was full on the
first day, not the second.

What I found is that very often, in a Software Support Engineer
environment, the other party will respond with questions and
suggestions before taking action. And so as to not waste time, its
best if I also take this iterative approach and involve the other
person early and maximize the value of the other person’s

And actually, the end of the stories is that in the former case,
we found a better solution such that I didn’t need access to the
something at work and so I was not granted access. And in the latter
case the trash really was full (not over-full — I pushed it down
with my hand and it went down to the normal "full" level)
and we split the work of tying up the trash bag and taking the trash

Conclusion: Best results happen when A Software Support Engineer
lets the other person know the concern early!

*2014-12-05 edit: previously published at



Why Do WordPress? Spoiler: Because it is School.

Recently I talked with a colleague. One topic from our
conversation made me think more afterwards. They expressed distaste
for spending effort and time on an open source project unless getting
paid/compensated for it.

Immediately another question came to my mind. Why do WordPress? I
didn’t know the answer right away. But then after thinking more
later, the reason is it is school. I do wordpress to stay in school.
I can go on the forums, IRC, blogs, github, and participate in this
educational project with my peers.

*2014-12-05 edit: previously published at

2014-03-09 07:56:31

For a Software Support Engineer, Triaging Cases is Different than
Working on Cases

I’ve had to triage cases. It’s much different than working on
(Solving or Progressing) cases.

When triaging I quickly touch each case and prioritize and
categorize it, maybe write a quick initial response.

Then later after all the cases have been triaged, I can go back
and work on the cases (solve or progress them), the highest priority
ones first.

In summary, triaging Software Customer Support Cases is different
from working on Software Customer Support Cases.

*2014-12-05 edit: previously published at

2014-02-12 20:22:24

Here’s the code for the pascal’s triangle javascript challenge that I did.

The part near the top is the actual script.

Then, commented out are nine (9) iterations that i made leading up to that final script. (i.e. “showing my work”)

At the very bottom is the “plan” that I wrote out in the first 30-45 minutes of the challenge, describing in words what I was going to code.

link to this page in action, displaying 10 rows of pascal’s triangle:



// start with two "1"s.

var pascalSeed=[1,1];
// make a loop that loops through 10 iterations, each time calling the function on itself with the previous row as input while outputting the next row.

var h=0;
while (h<10)

pascalSeed = computeNextPascalRow(pascalSeed);
// the function. it contains a loop that takes input: an array containing a series of integers representing a row of a pascals triangle, and outputs the corresponding series of integers calculated as the next row of the pascals triangle.

function computeNextPascalRow(pascalInputRow)
// for the first one have a special case: it is always "1" so write "1" to the output array.

var pascalResult=[1];
// for each iteration, calculate how many integers in this series.
var seriesLength = pascalInputRow.length;
// write the first special case to the screen.
document.write( pascalResult[0] + "-");
// step through the second through "n"th integers in the input series, have a loop to calculate this:
for (var i=1; i < seriesLength ; i++)

//add its value plus the value of the previous integer in the series, and output the result onto the output array.
pascalResult.push( pascalInputRow[i-1] + pascalInputRow[i] );
document.write( pascalResult[i] + "-");

// for the last one have a special case: it is always "1" so write "1" to the output array.


document.write( pascalResult[pascalInputRow.length] + "<br>");

return pascalResult;
//end loop that inputs series of integers and outputs series of integers


var pascalSeed=[1,3,3,1];

for (var h=0; h<10; h++)

function computeNextPascalRow(pascalInputRow)

var pascalResult=[1]; // for the first one have a special case: it is always "1" so write "1" to the output array.

// calculate the length of this series

var seriesLength = pascalInputRow.length;

// write the first special case to the screen.

document.write( pascalResult[0] + "-");

for (var i=1; i < seriesLength ; i++)


pascalResult.push( pascalInputRow[i-1] + pascalInputRow[i] );

document.write( pascalResult[i] + "-");



document.write( pascalResult[pascalInputRow.length] + "<br>");

return pascalResult;




var pascalSeed=[1,3,3,1];

for (var h=0; h<10; h++)

function computeNextPascalRow()

var pascalResult=[1]; // for the first one have a special case: it
is always "1" so write "1" to the output array.

// calculate the length of this series

var seriesLength = pascalSeed.length;

// write the first special case to the screen.

document.write( pascalResult[0] + "-");

for (var i=1; i < seriesLength ; i++)

pascalResult.push( pascalSeed[i-1] + pascalSeed[i] );

document.write( pascalResult[i] + "-");


document.write( pascalResult[pascalSeed.length] + "<br>");

return pascalResult;




var pascalSeed=[1,3,3,1];

for (var h=0; h<10; h++)


// calculate the length of this series

var seriesLength = pascalSeed.length;

var pascalResult=[1];
document.write("series length: " + seriesLength + "<br>");

document.write( pascalResult[0] + " <br>");

for (var i=1; i < seriesLength ; i++)


pascalResult.push( pascalSeed[i-1] + pascalSeed[i] );

document.write( pascalResult[i] + " <br>");



document.write( pascalResult[pascalSeed.length] + " <br>");




var pascalSeed=[1,3,3,1];

for (var h=0; h<10; h++)


// calculate the length of this series
var seriesLength = pascalSeed.length;

var pascalResult=[1];

document.write("series length: " + seriesLength + "<br>");

document.write(pascalResult[0] +" <br>");

for (var i=1; i < seriesLength ; i++)

pascalResult.push(pascalSeed[i-1] + pascalSeed[i]);

document.write( i + " " + pascalResult[i] +"<br>");



document.write( pascalResult[pascalSeed.length] +" <br>");




for (var h=0; h<10; h++)

var pascalSeed=[1,1];

var pascalResult=[1];
// calculate the length of this series
var seriesLength = pascalSeed.length;

document.write(seriesLength + " <br>");

for (var i=0; i<seriesLength; i++)


document.write( i + " " + pascalSeed[i] +"hi!<br>");

document.write( i + " " + pascalResult[i] +"hi!<br>");




/* working...

var pascalSeed=[1,1,1,1,1,1,1,1,1,1];

for (var h=0; h<10; h++)
// calculate the length of this series
var seriesLength = pascalSeed.length;

document.write(seriesLength + " <br>");
for (var i=0; i<seriesLength; i++)

document.write( i + " " + pascalSeed[i] +"

document.write( h + " " + pascalSeed[h] +"



/* working...

var pascalSeed=[1,1,1,1,1,1,1,1,1,1];

for (var h=0; h<10; h++)
for (var i=0; i<2; i++)

document.write( i + " " + pascalSeed[i] +"hi!<br>");

document.write( h + " " + pascalSeed[h] +"hi!<br>");



/* working...

for (var i=0;i<10;i++)

document.write( i + "hi!<br>");



/* from w3c -- thank you :) ...

for (var i=0;i<cars.length;i++)

document.write(cars[i] + "<br>");









okay so here's my plan:

start with two "1"s.

make a loop that loops through 10 (to start...) iterations.

the loop inputs a series of integers and outputs the corresponding series of integers.

for each iteration:

calculate how many integers in this series.

assign each integer in the series an ordinal number from 1 to n (n being the last one)

for the first one have a special case:

it is always "1" so write "1" to the output array.

have a cursor.

step through the input series.

for the second through "n"th integers in the input series, have a loop to calculate this:

add its value plus the value of the previous integer in the series, and output the result onto the output array.

for the last one have a special case:

it is always "1" so write "1" to the output array.

//end loop that inputs series of integers and outputs series of integ




*2014-12-05 edit: previously published at http://wieldlinux.com/?p=73

2014-02-02 08:29:44

It’s valuable for a Software Support Engineer to review and shorten a too-wordy draft of their customer support response.

To make a written customer support response focused and concise, it’s valuable for a Software Support Engineer to review and shorten a too-wordy draft of their customer support response.

Recently I spent at least 15 minutes writing a detailed response to a customer’s concern. I wrote at length about the case, its symptom, its problem, and the proper action/solution.

And I almost posted it. But I did a full read-through of the response before sending it. (which is also another good support technique on its own)

And I found that the response was far to lengthy, verbose and not focused enough.

So I edited it to take out the lengthy, unfocused parts. And unfortunately for me that took another 10-15 minutes in this case. I ended up with a shorter article where i had taken out about 75% of the content from the original response! I felt a little frustrated that i had spent so much time and ended up with such a short response. But then I did another read-through of this final result. And I became satisfied, because knew finally that I had responded concisely and accurately to the customer’s concern, with a focused response that contained just the information it should, no less and no more.

The point of this story is that regardless of the time spent or the length of the response, its important to have a focused, concise reply. And therefore that means as a software support engineer, if I see my response is to long, verbose and unfocused, then I should be shorten and focus it before being sent to the cusotmer.

*2014-12-05 edit: previously published at http://wieldlinux.com/?p=69


60 Days Later – Reflection on A List of IT Professional Career building Activities

Here’s a list written privately about 60 days ago and printed on a piece of paper. I put it aside and didn’t look at it since then. Today I found it and read through it again.

In reflection, some of these ideas weren’t relevant but some were. But now I’ll reconsider some of these IT Professional Career development ideas again.

What Ideas were both relevant to me then *and* still relevant to me now?:

– Writing written notes on my activities and then blogging and tweeting about them. (in my now-60-day-old list, this idea had been incorporated in most every list item)

– Performing a task at my day job. (this idea was #8 on the now-60-day-old list)

– Being more active on an online public software support forum. (this idea was #3 in the now-60-day-old list).

– Attending an IT meetup/lecture. (this idea had been #9 in my now-60-day-old list)

– Listening to an IT podcast. And google hangout or IT video. (in the now-60-day-old-list this idea had been #12 in the list)(and google hangout or video weren’t in the list, but are similar to #9 and #12 in the list, respectively)

– Reading others’ blog posts! (not in the list! but extremely similar to #10 and #11 in the list… and in fact the most common way I find an interesting IT Professional blog post to read is by seeing someone tweeting it on twitter.)

Conclusion? It turns out that about 6 of the ideas from my now-60-day-old list are still relevant to me now, and that on top of that I have organically put into practice one additional idea to develop my career.

What’s next? From this reflection, I realize that the activities involved in growing one’s career are hard to define, and furthermore that within the period of just two months the list of activities changes.

In addition, here are some ideas that now, by looking at my 60-day-old list I have been reminded of them, that I think I should do more of:

– Do more of any activity that involves talking with colleagues.

– Do more of taking career-related pictures, recording career-related gpx (GPS) tracks, recording career-related videos and audiorecordings, and including these recordings in my blog posts and tweets.

Why should I do more of these two aspects? It will boost one’s career, by professionally networking and by recording + publishing a portfolio of professional accomplishments.

Finally, Here’s the original list of Software Support Engineer / IT Professional career building activities, from ~60 days ago, unedited since then:


20130929 Career Building Activities remix:

1. Write a software script on github. Blog then tweet the script.(~1/month)

2. Write a technical blog post — for example a set of instructions how to do something on linux or on a device. Blog then tweet the technical blog post. (~1/month)

3. Respond to a forum post on an online public IT forum. Blog then tweet the forum post. (~1/week)

4. Author and host an IT audio performance to produce a podcast. Blog then tweet the podcast. (~1/year)

5. Give an IT lightning talk to produce a video(and/or audio and/or still pictures and/or slides). Blog then tweet the video (and/or audio, pics, slides). (~1/year)

6. Sit for an IT certification exam to produce a picture of the certificate with my name on it, zoomed in on my name and zoomed in on my official title. Blog then tweet the picture. (~1/year)

7. Audiorecord a GPL IT book reading, to produce the audiorecording. Blog then tweet the audiorecording. (~1/week)

8. Perform a task (like write a ticket, script or kb article. or other) at my day job to produce a written note and to produce a picture of me doing the task. Blog then tweet the written note and the picture. (~1/week)

9. Attend an IT meetup/lecture to produce a written note and to produce a picture of me at the meetup(and gpx track/map-picture). Blog then tweet the written note and the picture. (~1/week)

10. Read IT Tweets to produce a written note. Blog then tweet the written note. (~1/day)

11. Read github activit(y/ies) or online forum activit(y/ies) to produce a written note. Blog then tweet the written note. (~1/day)

12. Listen to an IT podcast to produce a written note. Blog then tweet the written note. (~1/week)

13. Read an IT Exam book to produce a written note about the reading. Blog then tweet the written note. (1/day)


*2014-12-05 edit: previously published at http://wieldlinux.com/?p=65