TestLink 1.9.3 API Documentation
Posted: February 17, 2012 Filed under: Software | Tags: oss, testlink Leave a comment »I have not been able to find any up-to-date documentation on the TestLink XMLRPC API online. The best I could find was phpdoc output from 1.8.x located at http://www.teamst.org/_tldoc/1.8/phpdoc_api/. The actual content of that page was pretty helpful, just out of date. Today I returned to trying to work with the API and decided to figure out how to generate the same document format for the 1.9.3 code. I’m placing it online in case anyone else had the same issue I did.
Browseable TestLink 1.9.3 API documentation:
A direct link to the actual useful part of all that output:
A tarball of those docs, for your local viewing pleasure:
The exact command used to generate the output mimicking the 1.8 style I liked:
-
phpdoc --output HTML:Smarty:HandS -dn TestlinkAPI -d api -t phpdoc-testlink193-api
Why Hardware Gotta Make Me Love It So Hard?
Posted: January 12, 2012 Filed under: Hardware, Projects Leave a comment »Often when working on an electronics project I experience a problem that takes me way too long to debug. I don’t mind iterative debugging, it’s where I’m partially hanging my hat these days professionally, but it’s painful how often my lack of experience leads me up a dead end. The last time I got so angry I felt the need to write a post about it was an hour lost to software debugging when I had just crossed a couple of wires.
My more recent experience was with my EtchASketch project. I rewrote the code several months ago so that it would draw persistent pixels on the display, then put it away over the holidays. I got it back out a couple of nights ago and instantly remembered the last problem I had. When drawing, the cursor was all over the place (so, for instance, drawing a horizontal line would have a lot of vertical jitter even if the vertical pot wasn’t moving). I tried lengthening my sample time from 10ms to 100ms with no effect (other than missing pixels in my drawing from the overly-long sample time). I started designing (software) dampening systems in my head. I redesigned the project to display positional debug on the display as well as have a clear button to make debugging this issue easier.
Right before I started writing code, I realized the behavior I was seeing was actually really strange. I could see having a little jitter when you’re moving the pot, but I was seeing jitter even when I wasn’t moving the pot controlling the direction I was seeing jitter. After a bit of experimentation I found that all the jitter was being caused by the vertical-control pot, and the horizontal pot didn’t show the same behavior.
This video shows the behavior pretty well. It starts with me doing horizontal sweeps with my hand completely off of the vertical trimmer and they look pretty good. Then, starting at around 00:42, I clear the screen and do a horizontal wipe with my finger just resting on top of the vertical trimmer and it goes nuts and a big blob shows up on the screen. After that, right around 00:56, after a last vertical adjustment the horizontal wipe results in a diagonal line, even though I’m not touching the vertical trimmer.
So, since I happened to have an identical contrast-control trimmer on the LCD (upper left, next to the display), I swapped them to see if it would help. And it did. Replacing the vertical trimmer made the problem disappear (the trimmer swap was the only thing that happened between these videos):
Such a simple solution, but it’s still unnatural for me to suspect that hardware might be at fault. Really happy to have solved the problem as easily as I did though.
The one outstanding issue for me is what’s wrong with that trimmer. Is it bad luck? Do trimmer pots have a known life cycle? Maybe trimmers (as the name implies) are supposed to be set-and-forget and my use of them as primary input devices was too much abuse? Dunno yet, just happy not to be writing dampening logic for this silly little project…
More Character Display Abuse
Posted: January 11, 2012 Filed under: Hardware, Projects Leave a comment »A few months ago I posted about a project I was working on whose primary goal was to drive single-pixel drawing on a 16×2 character display. Of course the real goal of the project was just to move forward with electronics, trying new things in both software and hardware.
Where Were We?
When last we left the project, I had just realized that my plan to draw (persistent) pixels on the entire 16×2 display wouldn’t work with the LiquidCrystal library’s 8-custom-character limit. Here is a very abbreviated version of the 4 possible next-steps I set out for the project:
- Make the drawing grid 2×4 instead of 2×16, just to get the persistent drawing working. Add as much physical “bling” to the project as possible just to play with new stuff and multiple components updating in the loop.
- Investigate overcoming the 8-custom-character limit inside the LiquidCrystal library.
- If needed, investigate bypassing the LiquidCrystal library entirely to bypass the custom-character limit.
- Investigate methods for circuit documentation, using this project as the guinea pig (emphasis on versionable files and multi-platform support)
Goals 2 & 3: Getting More Than 8 Custom Chars
The easiest thing to discuss is what didn’t work out. I never spent any time looking into #2 or #3, but a commentor on the previous post left a link to an Arduino forum post that implied that 8-custom-character limit is due to the hardware itself, not the library. That link, plus a little more googling, leads me to believe this isn’t a path worth walking down right now.
Goal 1: Multi-Pixel Drawing
I did decide that my itch for this project wouldn’t be properly scratched until I had persistent, multi-pixel drawing working. By this I mean that you have a cursor of one pixel, and anywhere you move that cursor lights up and stays lit (unlike the last version, where the pixel could travel anywhere, but they didn’t stay lit). I was able to get this implemented without too much pain. Actually, the vast majority of the time I spent on this was debugging a hardware issue outside of my control that I didn’t have enough experience to recognize at first (quicky blog post later on that).
Also while working on this I added a clear button to the circuit and some positioning debug information to the display.
Goal 4: Documenting Circuits
I looked at a few different solutions. I knew the name Eagle as it gets thrown around all the time. I downloaded the free version and couldn’t even figure out how to draw on it. Granted, I didn’t spend much time on it because I didn’t think it was going to be the right solution, but still…
I considered a few more-generic layout tools like dia, Graffle, or Visio, but none of them felt right. I didn’t really want to use an X11 server on Mac OS X, which I would need for dia, and the others aren’t cross-platform. I think I tried a few others whose names I can’t remember, but none of them felt right.
I had basically deferred this goal when, while looking at the Arduino docs and sample, I noticed they were made with Fritzing. I downloaded it and it was exactly what I was looking for. It saves in versionable XML, it’s very easy to lay out circuits, and it’s available for all three major desktop OSs. I get the impression that, if I were an experience EE I would feel limited by Fritzing and prefer something like Eagle, but at my current skill level I’m happy to grow with the still-young Fritzing.
Now What?
Here are my new goals:
- More bling! My current ideas are a new button which changes between three modes (draw, erase, and invert); one or more LEDs which indicate the mode (which will possibly also be drawn on the extra parts of the display); and, more maximum bling, a piezo which clicks when the cursor moves. Shouldn’t be too hard to bang out now.
- I want to be done with this project. To me that meant having the circuit documented, which is now done. Also, I couldn’t just (easily) ditch the breadboard and use another because my only Arduino is physically attached to one of the two breadboards I was using. Toward this end I re-did the project last night using only one breadboard. This will allow me to just set the breadboard aside after accomplishing #1 above, though to be honest I think I’ll be done with this entirely at that point. Love having it documented though. Frankly, having the circuit in Fritzing was a large reason why I felt comfortable changing the layout to just one breadboard – I knew I had reference if I made a mistake
Here’s what the project looks like right now after being consolidated to a single breadboard:

Woo! I didn't change LCDs, that model supports RGB backlighting and I just wired it up to the red pin instead of the blue pin for a change.
Onward!
About The Name Swaks…
Posted: January 9, 2012 Filed under: Software, swaks Leave a comment »I began developing the tool that would become “swaks” on December 19, 2001. The initial version was mostly just an adapted version of the sendpage my coworker Jamie Hill had written for simple SNPP transactions. At that time the tool was called “vmail”, which meant something like visual- or visualize-mail.
On November 11, 2003, I posted a link to vmail on the exim-users mailing list. I received lots of constructive responses, including one note that the name vmail was very generic, and also in use by another project (I wish I could remember who noted that, but I can’t find it in the mailing list archives).
I don’t remember much about picking the name swaks, but it fit my main criteria, which were that the name should be distinct and should be pronounceable. I’ve never been very happy with the acronym expansion “SWiss Army Knife Smtp” for several reasons, the most important of which is that it really ought to be “SWiss Army SMTP”, but “swas” isn’t nearly as distinctive in the dialect of English I speak natively.
So, here I am with the name swaks, which I’m mostly happy with. However, while the name swaks is unique for a software package, there are other, non-software uses that I wassn’t aware of before I chose the name:
“Sealed With A Kiss”
I’m not 100% sure what the original version of “SWAK” in this context was. Perhaps written on the back of an envelope containing a love note? The usage that pops up occasionally on the internet means something like “sent with love” or just “with love”.
bad / poor / ill (Afrikaans)
I just recently learned this one (hence this blog post). This popped up in the headline “SA se bes en swaks gekledes in 2011″, which native Afrikaans speakers translated as “SA’s best and worst dressed list”. Google Translate doesn’t like the phrase “swaks gekledes”, but after poking a bit I got it to translate “swak” as “poor” and “swak geklede” as “ill-dressed”.
I’ve put a much shorter and slightly more formal version of this post in the docs for the next release. I’ll add new meanings as I find them. If you know of others, please send them in and I’ll post them.
Fun For Young and Old
Posted: January 4, 2012 Filed under: Hardware, Projects Leave a comment »One of my goals for the 2011/2012 Christmas break was having fun stuff to do with my daughters to cut down on the boredom and minimize slack-jawed TV watching. While planning this out I stumbled across the Wayne and Layne kits, and the Blinky POV kit looked really nice. It looked like a great kit to use to teach my daughter Mary (5) how to solder – it didn’t have too many components, it looked like it would be fun to play with when it’s finished, and I’m really, really intrigued by the “hold it up to the screen” programming method.
Right before I ordered the kit my Mom contacted me and asked for gift ideas for the girls. I immediately suggested this kit for Mary and sent my Mom the link to the project. She said it looked like a great gift for Mary (which I expected) and she also said she really liked the idea of the Tactile Metronome kit (which I did not expect). I couldn’t pass that up, so I bought both kits.
We decided that both Mom and Mary could learn together, so Mom brought the Metronome kit over with the intention of both of them working on it. We started with soldering some resistors onto a junk PCB I got in an order from Evil Mad Scientist Labs. I added these to an order (for free) on a whim last fall and they were perfect to practice with. It’s very cool that EMSL offers them. I did a resistor to show them the basic action, then they each did a resistor.
Little Siege Engines and Little Girls
Posted: January 3, 2012 Filed under: Projects Leave a comment »Last March I followed a link to the “Trebuchette” project on Kickstarter – “the snap-together, desktop trebuchet”. I hadn’t used Kickstarter before but the Trebuchette project comtained more than enough awesomeness potential and I backed the project. I had a slight disconnect after the project closed funding because I hadn’t really grasped that there would be a non-trivial delay between funding and shipping. However, the frequent, informative posts from the project owners actual gave me a great deal of pleasure to read as they worked through the realities of building a physical-goods business.
The Trebuchette kits arrived right after Thanksgiving. Since Christmas break was right around the corner I decided to put the kits on a shelf and wait until the second week of break when my daughters would be bored out of their skulls. This plan sort of worked – they did ultimately enjoy them, but I made the mistake of telling them what the kit was when I got it and I had to fend off requests to put them together early every couple of days for a month.
BUT! A good day for it finally rolled around and I sat down with Mary (5) and Ellie (3) to put the kit together.
Swaks Release 20111230.0 Available
Posted: December 30, 2011 Filed under: Software, swaks 1 Comment »A new version of swaks is currently available for download.
Downloads:
- Project Page: http://jetmore.org/john/code/swaks/
- v20111230.0 distribution: http://jetmore.org/john/code/swaks/swaks-20111230.0.tar.gz
- v20111230.0 script only: http://jetmore.org/john/code/swaks/swaks-20111230.0/swaks
- v20111230.0 reference: http://jetmore.org/john/code/swaks/swaks-20111230.0/doc/ref.txt
New Features:
- Added –output-file family of options to capture some or all output without requiring shell redirection
- Added –protect-prompt option to protect “sensitive” user input (currently only auth passwords)
- Added –auth-hide-password to replace recoverable passwords in SMTP session output with a dummy string
- Added –auth-extra to have a single interface to pass non-standard authentication options into swaks. Currently used by NTLM and DIGEST-MD5.
- Added –show-raw-text option to provide more details of exact data being sent on the wire
Notable Changes:
- SMTP Data token parsing has been changed from single-character (%F) to multi-character (%FROM_ADDRESS%) to reduce chance of collisions with message text, especially non-ascii language encoding. See –use-old-data-tokens to recover old tokens while transitioning. (issue reported by Peter Baranyi)
- Specifying the NTLM/MSN/SPA DOMAIN by appending “%DOMAIN” to the username is no longer supported. See the new –auth-extra command.
- The DIGEST-MD5 authentication no longer uses the (buggy) Authen::DigestMD5 module. The Authen::SASL module is now used.
Notable Bugs Fixed:
- Previous release broke ability to use –header to set custom headers (first reported by David Favor)
- Previous release would not allow a file to be used to provide the message data if the file name contained the character “n”. (first reported by dietrich.rebmann@******)
- swaks has never properly handled creating date strings for timezones that are not on an even hour boundary. (report from, and patch provided by, Peter Samuelson)
- The documented behavior of the “no-” prefix on swaks’ options did not work when –OPTION and –no-OPTION were given in the same context.
- The DIGEST-MD5 auth type was not completely implemented. Worked extensively with Erwan Legrand to get as complete and useful an implementation as possible.
- Previous release contained a regression in which TLS responses sent in multiple packets were not processed correctly. (reported by Peter J. Holzer)
Why “Tinker Bell” is a great movie.
Posted: December 16, 2011 Filed under: Uncategorized Leave a comment »So, Disney decided to make some new movies focused on Tinker Bell from the Peter Pan universe, and released “Tinker Bell” in 2008. I checked it out from the library last week and finally saw all the whole thing with my daughters tonight. Let me give you a very quick plot synopsis:
A young girl trying to find her way in a new place struggles to change herself into what she thinks she wants to be, only to find that she was already what she wanted to be.
Not exciting for me. The flesh has been painted onto those bones a thousand times, usually with the “new place” being school and “wants to be” being popular. Whatevs.
But now let me synopsize Tinker Bell:
A young fairy (Tinker Bell) is born on Neverland. Through a sorting ceremony she is selected to be in the guild of tinkers (makers/fixers) and not one of the “Nature” fairies (who are responsible for things like the changing seasons, caring for animals, etc). Tink shows extreme talent as a tinker, but a MacGuffin pushes her to make a dedicated attempt to join any other guild. Many attempts at this fail. She eventually fails very publicly and catastrophically. After some soul searching, she realizes she can use her skill as a tinker to make tools that will erase the effects of the catastrophe.
So why is this different to me?
- The biggie for me, the thing that even made me pay attention to the movie, is that her skill was “making”. Not singing or cheerleading. I know that they were handed the “tinker” role by J. M. Barrie, but they didn’t have to run with it. The fact that she was a literal tinker wasn’t covered in the 1953 Peter Pan, which is the only real work they had to respect in this movie. They could easily have ditched the literal tinker aspect of her character and no one would have made a fuss, but they didn’t. They kept it and made Tink a “maker”, which I think is great.
- I absolutely love that the MacGuffin doesn’t involve a boy in any way. The plot’s not driven by Tink’s desire to get a boyfriend, by someone else’s attempt to steal her boyfriend, etc. Absolutely none of her sense of self worth in this movie is driven by a relationship she does or doesn’t have with a boy. It was a very refreshing experience to watch a movie where the female lead was fulfilled by making a device that can paint ladybugs and not by a dude smiling at her.
The movie was by no means perfect – the fact that she was “born” and started working the same day never stopped bothering me for instance – but it was significantly better than any other kids straight-to-DVD movie I’ve watched in a long time. Maybe it’s not that great, and I’m just being mislead by my incredibly low expectations going in, but I would encourage my girls to watch this movie again, which is not something I expected to say when we got it.
Swaks Release Preview 20111202.0-dev Available
Posted: December 3, 2011 Filed under: Software, swaks 2 Comments »I’m almost ready to release a new version of swaks which includes a few new features and some bug fixes. The last change I made involved a change in the code which reads text from the server. All of my testing indicates that the code is right, but my available testing platforms aren’t as varied as they used to be. If you are able, please download and test. Feel free to share the link as much as you want, but please don’t package it yet. If no one reports anything serious I’ll release the “real” version in a week or so.
Here are links to the script and the Changelog for this version:
http://jetmore.org/john/code/
http://jetmore.org/john/code/
I don’t have a pretty version of new features or bug fixes yet but the Changelog can be trawled for a decent overview.
Any testing notes or last minute requests can be dropped as a comment here if you want, but they are most useful as an email to proj-swaks@jetmore.net.
More places to hear about swaks
Posted: December 3, 2011 Filed under: Software, swaks | Tags: swaks Leave a comment »I’ve never been especially proactive in evangelizing swaks, but its usage number have grown to the point in the last 10 years that I think I probably am probably hurting users by not having more communication channels to receive and provide updates. So, here’s a quick breakdown of what channels exist right now, and where I want to go in the future
Current
- Website – http://jetmore.org/john/code/swaks
- Update list – There’s no UI for this, but emailing updates-swaks@jetmore.net and asking to be notified of new releases will get you on the notify list.
New
- This blog. This is my personal blog, but I am maintaining a swaks category at http://www.jetmore.org/john/blog/c/swaks/. This category has a dedicated RSS feed at http://www.jetmore.org/john/blog/c/swaks/feed/.
- Twitter – http://twitter.com/SwaksSMTP
- Google+ - https://plus.google.com/u/0/110270727761256449657
Future
- I don’t really have any desire to run a mailing list myself but there have been some requests for one (which I assume would be very, very low traffic).
- swaks.net – I own this domain, at some point in the future I think it makes sense for the swaks distribution to move to it.
- Trac – swaks’ “todo” list is not huge, and not especially hard to hold in my head, but I like the idea of Trac or something similar because of its ticket/commit cross reference and the timeline to help remember the history of the development. Not sold on this being worth the effort of maintaining yet.





Recent Comments