Showing posts with label Software. Show all posts
Showing posts with label Software. Show all posts

Saturday, July 16, 2016

TIL: Geany and Shellcheck

I've been using Geany for a while. When I selected it, I was looking for a cross-platform text editor with convenience features for writing code because all of the IDEs I had tried were cumbersome. I wanted syntax highlighting and code folding. I was happy that Geany also includes auto-completion, project support, vertical selection (when that's useful, nothing else will work as quickly), and plugin extensibility.

More recently, I ran across Shellcheck and was impressed with what it detects. Of course I could use it online or on the command line, but wouldn't it be nice to have it integrated with Geany also? Sure it would! So I proceeded to look for a Shellcheck plugin for Geany, in a case of retrospectively-humorous linear thinking.

The punchline is that Geany doesn't need a plugin; it has a far simpler approach. When I open one of my bash scripts in Geany, the first menu item under the Build menu is Lint. Guess what lint on a shell script runs? Of course it runs shellcheck! So today I learned that the feature I wanted in Geany was already there in the most appropriate place ... once I broke out of the linear thinking.

Thursday, January 22, 2015

Virsh

We all know how fun brain dumps are to read, so move along, nothing to see here.

Today was my second day arguing with learning virsh. Here's what I've learned so far (with some bruises).

Basic virsh

reference

You'll need to install various tools, but that should be readily search-able. I had the tools and some existing VMs as my starting point, but I had a lot to learn.

Create (build) a new VM

  • define (export) NEWVM, OLDVM, HOST, DOMAIN, and ME (assuming your VG, LV, and VM naming scheme matches mine; otherwise, watch out!)
  • sudo lvcreate -n vm_${NEWVM} -L 8192M /dev/vg_${HOST} # from http://virt-tools.org/learning/install-with-command-line/
  • The rest of this is mostly http://manpages.ubuntu.com/manpages/trusty/man1/virt-builder.1.html
  • virt-builder --list
  • virt-builder --notes ubuntu-14.04
  • From that, I learned that I want to add --firstboot-command "dpkg-reconfigure openssh-server" to virt-builder.
  • Create a file with your desired initial root password. Mine was /tmp/password.
  • virt-builder ubuntu-14.04 -o /dev/vg_${HOST}/lv_${NEWVM} --firstboot-command "dpkg-reconfigure openssh-server" --root-password file:/tmp/passwd --hostname ${NEWVM}.${DOMAIN}
  • Now I leverage that I already had some working VMs of the same OS type and version:
  • virsh dumpxml ${OLDVM} | sed 's/${OLDVM}/${NEWVM}/g' | grep -v "mac address\|uuid" > ${NEWVM}.xml
  • virsh define ${NEWVM}.xml # persistent VM
  • virsh start ${NEWVM}
  • Alternatively, 'virsh create ${NEWVM}.xml' is a transient VM that goes away when shutdown
  • Very awesomely, console access was available by default! If it weren't, you'll want to configure it.
  • virsh console ${NEWVM} # log in as root with the password set in the file
  • useradd -G sudo -s /bin/bash -d /home/${ME} -m -c "Your Name" ${ME}
  • passwd ${ME} # set your password
  • If console doesn't work, you'll need to use some brute force.
    • virsh domiflist ${NEWVM}
    • ipv6calc --action prefixmac2ipv6 --in prefix+mac --out ipv6addr fe80:: [that MAC]
    • ssh -l root [that IP]
  • Add DNS records for the new VM.
  • When you're done, virsh shutdown ${NEWVM}

Clone an Ubuntu VM

  • Read https://help.ubuntu.com/community/KVM/Virsh.
  • virsh list --all
  • virsh shutdown ${OLDVM}
  • virsh list --all # verify that shutdown completed
  • sudo virt-clone --original ${OLDVM} --name ${NEWVM} --prompt # first time, or
  • sudo virt-clone --original ${OLDVM} --name ${NEWVM} -m [previous MAC] --prompt # subsequently, if you're learning by breaking as I did
    • answer /dev/vg_${HOST}/vm_${NEWVM} to prompt if you named yours like mine
  • virsh list --all
  • virsh start ${OLDVM}
  • sudo virt-sysprep --hostname ${NEWVM}.${DOMAIN} --enable cron-spool,dhcp-client-state,dhcp-server-state,logfiles,mail-spool,random-seed,ssh-hostkeys,yum-uuid -d ${NEWVM}
  • virsh start ${NEWVM}
  • The clone has my user account and other niceties, but I don't know its address. Luckily I can use available information and link-local IPv6.
  • virsh domiflist ${NEWVM}
  • ipv6calc --action prefixmac2ipv6 --in prefix+mac --out ipv6addr fe80:: [that MAC]
  • ssh [replace with that IPv6 address]%br0 # replace with your local network interface after '%'
    • sudo dpkg-reconfigure openssh-server # if you get ssh errors and have to use console
    • grep "${OLDVM}\|${NEWVM}" /etc/hostname # always verify!!!
    • sudo sed -i 's/${OLDVM}/${NEWVM}/g' /etc/hostname
    • grep "${OLDVM}\|${NEWVM}" /etc/hostname # and check my work!
  • virsh reboot ${NEWVM}
  • Add DNS records for the new VM.
  • virsh shutdown ${NEWVM} # when you're done

Clone a CentOS VM

  • Read https://help.ubuntu.com/community/KVM/Virsh. This was a CentOS 7 clone.
  • virsh list --all
  • virsh shutdown ${OLDVM}
  • virsh list --all # verify that shutdown completed
  • sudo virt-clone --original ${OLDVM} --name ${NEWVM} --prompt # first time, or
  • sudo virt-clone --original ${OLDVM} --name ${NEWVM} -m [previous MAC] --prompt # subsequently, if you're learning by breaking as I did
    • answer /dev/vg_${HOST}/vm_${NEWVM} to prompt if you named yours like mine
  • virsh list --all
  • virsh start ${OLDVM}
  • sudo virt-sysprep --hostname ${NEWVM}.${DOMAIN} --enable cron-spool,dhcp-client-state,dhcp-server-state,logfiles,mail-spool,random-seed,ssh-hostkeys,yum-uuid -d ${NEWVM}
  • virsh start ${NEWVM}
  • The clone has my user account and other niceties, but I don't know its address. Luckily I can use available information and link-local IPv6.
  • virsh domiflist ${NEWVM}
  • ipv6calc --action prefixmac2ipv6 --in prefix+mac --out ipv6addr fe80:: [that MAC]
  • ssh [replace with that IPv6 address]%br0 # replace with your local network interface after '%'
    • grep "${OLDVM}\|${NEWVM}" /etc/hostname # always verify!!!
    • sudo sed -i 's/${OLDVM}/${NEWVM}/g' /etc/hostname
    • grep "${OLDVM}\|${NEWVM}" /etc/hostname # and check my work!
    • sudo vgrename centos_${OLDVM} centos_${NEWVM} # or use lvm, see below
    • grep "${OLDVM}\|${NEWVM}" /etc/fstab
    • sudo sed -i 's/${OLDVM}/${NEWVM}/g' /etc/fstab # only needed if vgrename used
    • grep "${OLDVM}\|${NEWVM}" /etc/fstab
    • grep "${OLDVM}\|${NEWVM}" /etc/default/grub
    • sudo sed -i 's/${OLDVM}/${NEWVM}/g' /etc/default/grub # only needed if vgrename used
    • Now is a good time to add the RHEL7 console tips below!
    • grep "${OLDVM}\|${NEWVM}" /etc/default/grub
    • sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    • grep "${OLDVM}\|${NEWVM}" /boot/grub2/grub.cfg
    • exit # log out of ${NEWVM} now
  • virsh reboot ${NEWVM}
  • Add DNS records for the new VM.
  • virsh shutdown ${NEWVM} # when you're done

Enable CentOS Console Access

Typically, you don't care about console access until it's the only way to get out of trouble. So enable it right away if it isn't working yet. Check with 'virsh console ${NEWVM}' and press return at least once to see if you get a login prompt.

The directions for RHEL6 are https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Administration_Guide/sect-Virtualization-Troubleshooting_-Troubleshooting_with_serial_consoles.html. Edit the /boot/grub/grub.conf file to append this to the kernel line: console=tty0 console=ttyS0,115200

The directions for RHEL7 are http://www.daemonzone.net/e/17/, to add the following lines to /etc/default/grub:

GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"
GRUB_TERMINAL=serial
GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
Since mine already had GRUB_CMDLINE_LINUX (to apply it to all the menu entries), I just appended " console=tty0 console=ttyS0,115200n8" to that line inside the quotes, then added the next two lines. Next you need to rebuild the grub.cfg file:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg

LVM

[${ME}@${NEWVM} ~]$ sudo lvm
lvm> pvdisplay
lvm> vgrename centos_${OLDVM} centos_${NEWVM}
  Volume group "centos_${OLDVM}" successfully renamed to "centos_${NEWVM}"
lvm> pvdisplay
lvm> lvdisplay
lvm> exit

Loose Ends

sudo virt-inspector -d ${NEWVM}
sudo virt-filesystems -d ${NEWVM}
sudo virt-df -d ${NEWVM}
sudo virt-df
sudo virt-edit -d ${BrokenGuest} /boot/grub2/grub.cfg
sudo virt-rescue -d ${BrokenGuest}

Friday, December 19, 2014

CLI to Google Calendar

After a few weeks of missing my old cli access to Google Calendar, and pushing the Try It! button with no success (yes, I customized it, but no, what I tried didn't work for me), I went looking (again) for another tool.

Hurrah! Look to gcalcli!

First I tried "pip install gcalcli; pip install vobject parsedatetime" but "which gcalcli" came up empty. I read the log file mentioned at the end of the pip install, ran a search on the most obvious error message, and re-ran it with sudo. Now it's working! I recommend "gcalcli list" to start.

The command I expect to use most often is

gcalcli --calendar 'Calendar' --title 'what is it' --where there --when '12/19/2014 10:00 PM' --duration 60 --description 'yay for description field finally!' add --details url
, and next
gcalcli --calendar 'Calendar' quick 'quick add text' --details url
(possibly). I have always wanted to be able to populate the description from the command line, but APIv2 only supported what's in Quick Add. Now that I've got another easy tool, I can forgive APIv3 for moving my cheese since it supports a feature I wanted.

Now if you'll excuse me, I need to pound on this new command line tool ...

Update: Oh, it works so well! I start at Spot the Station, I remove the irrelevant lines (too early, too short, or too low) with PrintWhatYouLike, and then I copy the remaining (relevant) lines.

That then becomes the starting point to fun with regular expressions! Although pbpaste is a Mac OS X tool hailing back to the NeXT days, Linux has tools like xsel and xclip that I hope are roughly equivalent.

clear; pbpaste | awk -F $'\t' '{ print "gcalcli --calendar \"Calendar Name\" --title \"ISS sighting\" --where \"Durham, NC\" --reminder 20 --when \""$1"\" --duration "$2" --description \""$3" max elevation, "$4" approach, "$5" depart\" add --details url" }' | sed 's/\ min\ /\ /g;s/\ above/°\ above/g'; echo

I like to glance at the commands before running them, just to be sure I haven't made some hideous formatting error about to be replicated at the speed of automation, and I like to check at least one of the resulting URIs to be sure the calendar entry survived the transfer. So far, so great!

Tuesday, September 3, 2013

Lists To Do ...

I've had enough problems with Wunderlist to need to jump ship. The Android app is very large (OK, my phone's space is limited) and it loads slowly if at all. I started with a list of free Wunderlist alternatives (what I want may not be free, but I'll start here). I selected for Android AND (Online OR (Mac AND Linux)) clients AND NOT Freemium. (In some cases, like Google Tasks, I know there are many clients for Android, so I let it slide even though technically it's Online only. I want an Android client so I have offline access to my tasks when my phone doesn't have an uplink, and yes I know synchronization is hard.) So the list started as:
  • Google Tasks: Free by Google - Online
  • Simplenote: Free by Automattic - iPhone, iPad, Online
  • Producteev: Free* - Mac, iPhone, Windows, Android, Online, Blackberry
  • Todo.txt: Open Source by Gina Trapani - Mac, iPhone, iPad, Windows, Android, Linux
  • Any.DO: Free by Any.DO - iPhone, Android
  • Org-mode: Open Source by Carsten Dominik - Mac, iPhone, iPad, Windows, Android, Linux
  • Cloud Checklist: Free by Skybuffer - Online
  • allthings: Free* by welovelists - Online
  • Coolendar: Free by Fabiano Franz - iPhone, Android, Online
  • Yodiz: Free by Yodiz - Mac, iPhone, iPad, Windows, Android + Tablet, Linux, Online
  • Smthngs: Free by Valentin Shergin - Online, Android
  • TickTick: Free by Appest Limited - Mac, iPhone, Windows, Android, Linux, Chrome OS
  • One Line Todo: Free by eveningsun - Android
  • do.com: Free - iPhone, Android, Online
  • ToDo Pro: Free by Appigo, Inc. - iPhone, iPad, Android, Online
I want:
  • multiple lists (or filtered views aka smart folders),
  • tags (bonus if the application can know which are GTD contexts; not a feature in Wunderlist either),
  • easy way to re-order tasks,
  • optional due dates (or I'll keep the ones with due dates in Google Tasks, assuming Google doesn't kill it off like Reader)
So far:
  • Google Tasks: Adding dates far in the future is painful from the web interface, so I need a good client.
  • Simplenote: I already use JadeNote on my phone, but it's not to-do-specific. (last)
  • Producteev: Wait, I can't re-order tasks? Bah.
  • Todo.txt isn't going to be very different from Simplenote that I already use.
  • Any.DO: The interface wasn't compelling enough to make up for its Android footprint.
  • Org-mode: I'm worried about offline access now that I look at it again.
  • Cloud Checklist: No tags or filters, but the rest is there. The web interface doesn't seem to have a mobile view, although it's fairly responsive on my Android phone, but that does mean no offline access.
  • allthings: Worried about offline access when my phone doesn't have a data link.
  • Coolendar: I'll check it out. (middle)
  • Yodiz: It sounds like much more than I need for myself.
  • Smthngs: Whoa. Wait. This one merits serious consideration. (#1) UPDATE: It's available online and on Android, it works in offline mode, it has all the ways I like to slice and dice, except for ONE BIG ONE. I always need import and export before I put my data in a bucket, and I don't see that. I'm sad, because it's lovely and responsive, but I'd like to save myself a headache in the long run. *sigh* Strike another one from the list.
  • TickTick: The Android app is a bit large, and I'd rather see screenshots or a test mode.
  • One Line Todo: This one has Google Tasks support for the Online access I want (I hope). However, the bar is set at the Google Tasks interface, and I'd rather do better than that.
  • do.com: I don't really need deals, thanks.
  • ToDo Pro: Just for me, thanks.
  • Taskos (Task List): Thanks to Rob, I'm adding this to the list as a Google Tasks Android client. (#2)

Thursday, August 8, 2013

Network Traffic Generation

I was recently asked about options for network packet generation (low volume and highly distributed for measurement, so cheaper slower hardware is OK), and I may as well share.

  • Ostinato aims to be wireshark in reverse.
  • tcpreplay is what it says.
  • For more control over emitted packets, look at hping.
  • Or, if you're programming in Python, look at scapy.
  • The perfSonar toolkit would handle the distributed tests.
  • SmokePing might be simpler for the small-but-distributed case.

That should get you started.

Tuesday, July 23, 2013

S5 to PDF

I would rather use S5 for presentations than a proprietary solution. (I think Landslide is cool, and it has the feature to append #number to the URI to jump to that slide, but I can integrate S5 into my PmWiki so I stick with S5.) After a recent conference presentation, I was asked for the PDF version of my slides, and I was stumped for a moment. Then I found this post that turned me on to PrinceXML to work with S5. I thought about explaining how much I like Prince (after one use), but Ryan Tomayko already wrote that PrinceXML is extremely impressive. So I'll just say that I didn't like the initial output, and the documentation came to my rescue! I like well documented software that does what I need to do.

The actual command I used was prince --media projection -s page.css input.html -o output.pdf with the following for page.css:

@page { size: 1600px 900px; margin: 0 0 0 0; }

Join MP3 files

I like Audacity, so it's nice to learn I can use Audacity to join mp3 files just when I wanted to do that. Yay tools that do what I want!

Monday, September 24, 2012

Grocery Lists for Android

I know lifehacker likes Grocery IQ, and it does have the coupon tie-in since it's from Coupons.com if you're into that. However, after this trip, Grocery IQ won't be on my phone, and ZipList will stay. For lists of about the same size, Grocery IQ is using 5 MB of user data (and I'm running low on main memory even though it's installed on SD, and deleting items then clearing the history helped), while ZipList is using 104 KB for user data. That's a huge difference when I'm not using the coupon tie-in! So ZipList wins for me.

Wednesday, December 28, 2011

Tinkering with XSLT again

The cool tricks for today (since I wanted to update my syllabus) include replacements and improvements to what I did before. Since TestXSLT is PowerPC-only, I had to find an alternative method. I'm using the command 'xsltproc --output Syllabus.html opmlsyllabus2html.xsl Syllabus.opml' where Syllabus.opml is a file I edit in OmniOutliner and save as OPML, and where opmlsyllabus2html.xsl is a modified version of beigeopml2web.xsl from Buzz, as noted before. Runs like a charm on Lion!

Since I was mucking about, I decided to try to insert the current date for "Last Modified" line, and this time I found a wonderful hint to insert the current date with XSLT (see the top reply). For a brief overview of the XSLT date options, see this reference. While playing around with formatting the date, I ended up without a space where I wanted one, so I had to look for a way to insert a single space too (see the first hint in the last reply). It works, better than ever! I just needed TestXSLT to stop working to motivate me to try again.

Friday, November 4, 2011

web100clt for Mac

# install the latest Developer Tools
cd /Developer
mkdir Source
cd Source/
curl -O http://software.internet2.edu/sources/ndt/ndt-3.6.4.tar.gz
cd ndt-3.6.4.tar.gz
cd ndt-3.6.4
tar -zxf ndt-3.6.4.tar.gz
cd ndt-3.6.4
./configure 2>&1 | tee configure.out
make 2>&1 | tee make.out
find . -name web100clt
file src/web100clt
sudo cp src/web100clt /usr/local/bin

Tuesday, September 13, 2011

Lion Annoyances

I'm not ready to install Lion on all of my Macs, but it came on my new MacBook Pro at work. Yesterday, Time Machine was a fantastic way to get my applications, files, and preferences from the old laptop to the new! Now comes the more tedious task of making friends with Lion.

First up, the scroll wheel on my mouse scrolled in the wrong direction! I don't want to change everything else (older Mac OS X and Linux) to match, so I had to change Lion's default behavior. Apple menu > System Preferences > Mouse, un-check "Move content in the direction of finger movement when scrolling or navigating." Whew!

After that, I'm making friends with Apple's Lion.

Friday, September 2, 2011

Keyboard Shortcuts for Mail.app

Every previous time I've tried to use Mail.app before, I've gone running back to Thunderbird usually within a day. This time, thanks to a large monitor (so I leave Mail.app in the 3-pane single window more so that keyboard navigation works) and this tip on adding Gmail-like shortcuts to Mail.app using Quicksilver, and this tip to color a Mail message, I don't miss Thunderbird, I have better Exchange integration (ugh), I'm not reaching for the mouse too often, and I can now view graphic attachments like PDFs inline.

Quicksilver is awesome! AppleScript gets the job done, and consequently now Mail.app gets the job done too.

Tuesday, August 16, 2011

Chicken

On my Mac, I upgraded from Chicken of the VNC to Chicken (and you should too) because it works with IPv6 connections. It's also a very easy VNC client.

Tuesday, August 9, 2011

Color Your Mail

By using the number keys (zero to five) in Thunderbird (my preferred mailreader) I can easily assign different colors to the mails in the inbox. I’ve made a little system of my own where one color means urgent, another “less important todos” and so on.

My mailbox is IMAP-based and through the magic of IMAP, the color codes even carries themselves between the different machines I use (and works within Apple’s Mail.app too).

It may not revolutionize your life, but it sure helps me just a little bit – each and every day

from Color code your mail « Netfactory

I used to use the IMAP tags to color-code my email in Thunderbird heavily, until we switched from good ol' IMAP to Exchange 2010. Even though this Exchange server has IMAP enabled (thank goodness!), Microsoft doesn't support IMAP tags, so my color-coded tags no longer show up in all of my Thunderbird clients.

That takes some of the shine off of Thunderbird. Add in its memory usage, and I'm trying Apple's Mail.app yet again. I'm now accustomed to messages being colored per-client, but I still wanted to color my messages without creating complicated Rules in Mail.app. Luckily, I found an old post:

If you want to color code your messages in the Mail app just press Apple-Shift-C to bring up the color palette. Select any color and you’re done.

Awesome! I may be able to take the leap this time!

Friday, April 1, 2011

Jumping Ship

I bought an Android phone, the LG Optimus V, yesterday evening. Usually when I buy a new gadget, I can't stop playing with it. That hasn't happened yet. I'm sure I'll get there (I hope), once I get it "personalized" with my data and likable applications. I want to replace both my ancient Treo 700p and my old first-generation iPod touch with this Android (3G and WiFi). I want a single device that I carry everywhere, unlike the handful I carry now.

I am currently in the no-man's-land of waiting for my cell phone number to port from the old phone to the new phone, so I have no coverage on either phone despite many bars of service. No WiFi, no Android connection.

Where I need to start is a list of what applications I use on the older devices.

any smartphone or PDA worth its salt:

  • Calendar
  • Tasks
  • Contacts
  • Email (not strictly needed for a PDA)
  • Alarm (meeting reminders and timers)

Palm OS 5.4.9:

  • Graffiti Anywhere and ShortCut (may not need on Android, but invaluable on my Treo)
  • NoteTaker (for the sync-to-Mac text files, a Palm sine qua non for me)
  • Patience (solitaire, to play when Cale's almost asleep and I want my brain to turn off)
  • Eat Watch (weight tracker for Hacker's Diet)
  • NFP (female cycle tracker)
  • TCPMP (The Complete Portable Media Player, very awesome to play almost any media, another Palm sine qua non)
  • Handy Shopper (perfect for Palm, otherwise try ZipList for shopping lists)
  • Labor Timer (I don't need this anymore, but it was absolutely top-rate when Cale was ready to arrive)
  • FileZ (file manager)
  • VNC (Palm VNC for Palm)
  • ssh (pssh)
  • RPN Calculator (because I really do prefer RPN)
  • Toast Timer (for timers and countdowns)

All of those Palm applications are free, most from Freeware Palm, and I love 'em. I don't need to duplicate all of those to Android, but those were worth a spot on my Treo. I never did find a Palm application for drawing that I liked as well as what was built-in on my Palm Tungsten T3, so that was always an open spot.

iOS 3.1.3:

  • Dropbox - if you use it, you want the app
  • Evernote - ibid
  • Simplenote - ibid, and this could replace Palm's MacNoteTaker
  • Wunderlist - ibid, and this could handle the most basic Tasks
  • White Noise - I have insomnia, he snores, and we travel together
  • Stanza - or another book reader
  • ZipList - could replace HandyShopper in most ways
  • Air Sharing - I love this, but I'm not sure if I'll need to replicate it
  • Twitter - if you use it, you want an app for it
  • Sudoku - if I need a break from solitaire, even though it doesn't put me to sleep
  • GasBuddy - if you drive, you want the app
  • site-specific applications like Yelp, SparkPeople, eBay, WRAL and whatever else you like
  • Flashlight - don't laugh, this is more useful than you think!
  • Handy Level - ibid
  • Pandora - you know, I haven't used it yet on my iPod ... it may not need to make the jump either
  • Frotz - ibid
  • Subnet Calc - single-purpose, but fills that niche
  • EasyTask - I notice I haven't used it in ages ... it was the best fit to my checklist so I bought it, but the user interface just never pulled me
  • and kid games to keep me and the kids sane at times

I'm sure I'll want Google Docs, Firefox, Photos, and Music too; those seem like reasonable expectations nowadays.

And then I'm sure there are Android-specific needs to fill. At a glance, Astro File Manager, Gist, Google Sky Map, and Barcode Scanner as well as GTasks, Toddler Lock (but Cale will miss Spongebob), Color Flashlight, Smart Measure, Spirit Level Plus, and Barcode Scanner (again) all look appealing. And I get the feeling I want to be on the AppBrain train as well. Zoinks, that's a lot of work ahead of me just so I can make friends with my new phone that doesn't even place or receive calls anymore! Ugh, I think I'll head to the water cooler ...

Friday, December 10, 2010

Good Feature

I really like that I can link to a specific slide on Slideshare with the dead-simple approach of adding "slash-slidenumber" to the URL. Thanks folks, that's doing it right!

So if I happen, quite hypothetically you know, to want to send someone with a short attention to a slide show, I know he's not going to click through to the slide I want him to see. But since I can send a link to the exact slide, I can hope to capture just enough attention to get somewhere. For instance, I like this summary of teacher gift ideas.

Thursday, July 15, 2010

Geek Love at First Sight

For me, it was a case of geek love at first sight: Dido is the best of the lightweight database world (faceted views, filters) and the best of Web 2.0 (edit the document while you view it in your browser). It integrates with Google Maps and Timeline ... oh my!

Now to figure out how I should it. That's always the challenge with the Haystack tools. I love them, but ... eventually I use them.

Tuesday, June 8, 2010

Easy!

I always love it when my crazy ideas end up being easy to implement. I'm using version 3.1.3 beta of mGSD (a custom TiddlyWiki for GSD), and I don't actually know Javascript. I like the provided dashboards, but most of my work (this reflects my actual job) is a bunch of actions that are rarely bundled into projects so many of the consolidated views hide, not highlight, what I need to do.

I started with the "Projects Dashboard" tiddler but I wanted to order actions by Area (since my tasks do fall into general areas, just not projects). Basically I changed:

  • Project to Action
  • Active to Next
  • Someday/Maybe to [[Waiting For]]

Then I added a copy of Someday/Maybe, but changed to Future. I called it "Action Dashboard by Area" and ta-da! it's exactly what I wanted. That's how I think about what I need to do. Yes, my job really is that all-over-the-place, it is not easily categorized, and it is not well-organized except by me for me.

Here's the new tiddler I'm using:

{{cols2{

{{col{

<<mgtdList title:'Next Actions' startTag:Action tags:'Next && !Complete' view:Action mode:global

        group:Area

        gView:bold

        newButtonTags:'Next Action'

        >>

}}}

{{col{

<<mgtdList title:'Pending Actions' startTag:Action tags:'[[Waiting For]] && !Complete' view:Action mode:global

        group:Area

        gView:bold

        newButtonTags:'Waiting For Action'

        >>

<<mgtdList title:'Future Actions' startTag:Action tags:'Future && !Complete' view:Action mode:global

        group:Area

        gView:bold

        newButtonTags:'Future Action'

        >>

{{scroll10{

<<mgtdList title:'Completed Actions' startTag:Action tags:'Complete' view:ActionComplete mode:global

        group:Area

        gView:bold

        newButtonTags:'Action Active Complete'

        >>

}}}

}}}

}}}

I also really like that I can use Realms to hide what isn't relevant in mGSD. I use three Realms, Work, Home, and School, and I prefer to hide the ones that aren't what I should be doing right now.

I just love it when a useful change that could be a bear (what with not knowing Javascript) ends up being easy!

UPDATE 06/11/2010: I just created a "Tickler Dashboard by Area" by copying the "Tickler Dashboard by Contact" tiddler to that name (using same tags) and changed the two lines that said group:Contact into group:Area. I liked that so much, I added it (just the <<mgtdList ... >> parts) to this "Action Dashboard by Area" so I have one view of everything as long as my tasks don't overflow my screen!

Saturday, May 22, 2010

Use EXIF timestamp

I had just a few pictures exported from iPhoto (2 out of 100) that had a different datestamp than the photo, so I couldn't sort by date to see them in chronological order. Rats! So I looked for a way to fix it, found preserve photo timestamp when exporting from iPhoto at Mac OS X Hints, and discovered that it's just the jhead -ft command. No fancy tricks needed -- someone already noticed that annoyance and solved it! Sweet.

Tuesday, April 6, 2010

The RSI of Email

Email is an essential part of my day job; it's how I get most of my work-related information. If I don't have email at work, I feel adrift (before seizing the uninterrupted moment to get some actual work done!). So me liking my email client is essential, too. If I'm frustrated at email, it spills over to work. If my email feels seamless, I'm less stressed and I feel on top of "things" at work.

Today I had the unmitigated pleasure (yes, I'm being sarcastic) of blowing away all of the settings for my Thunderbird email client and starting over, so I once again did a quick status check on available mail clients. Once again, they all-but-one suck on the same point: how much they want me to use the mouse. I'd like to see a lot of messages at once so I can follow long threads, and I'd like to see a lot of the message I'm reading at once so maybe I don't have to scroll down. This means, unlike the rest of the world from what I can tell, I prefer more windows, and I despise panes within a single email window. (This is a preference setting in Mulberry. I like Mulberry.) Once I open a message in its own window, when I press the delete key on my keyboard, I want that message to be moved to the Trash (no longer taking up space in the long list of messages) and I want the next message to show up. No mouse, one keypress, two actions (delete, open next). If I have to use the mouse, it will take me more time and could contribute to a repetitive stress injury.

However, since I was deep in the settings, I did figure out today how to get Thunderbird 3 to pass my non-RSI email client filter! So not only did I blow away my Thunderbird profile (after saving my address books!), I even upgraded from Thunderbird 2 to Thunderbird 3! I thought I was going to be the TB2 curmudgeon forever!

The settings I wanted are:

Thunderbird > Preferences

Advanced > Reading & Display

>> Open messages in: (*) An existing message window

>> [ ] Close message window on delete

For me at least, Thunderbird is the best fit on two points: less mouse RSI / more keyboard speed, and IMAP tags. Of course, I just got migrated to the Exchange server that doesn't support IMAP tags, but I'm still hooked on tagging.

So I do want messages to open in the existing message window, and I do not want to close that window when I delete a message. Whew! I'm upgraded, I finally got all of my accounts added in just so, and work may now resume. Oh, whoops, the day is almost done!