October 16, 2008: 5:36 am: kpdindoor-rowing, ErgMate

While I’ve not posted any updates in some time (that’s what having a baby will do to you), I have been busy incorporating feedback from the early beta testing. The biggest new feature is a wizard that allows one to create new sequences by simply answering a few questions. You also can now row to music from your iTunes collection in addition to files on disk.

Sample Sequence Wizard page

March 8, 2008: 3:17 pm: kpdPython, wxPython

TimeSpin has a bug in that it reports the same width for GetBestSize when AM/PM is shown and when it is not (24 hour format). This causes an empty space to appear after the control when it is set to display time in 24 hours. I’m not able to fix the bug at this point, but I was able to add a workaround that adjusts the width as needed.

Version 1.4 of the time_spin_and_control distrubution contains the workaround.

February 13, 2008: 7:21 am: kpdPython, wxPython

I added a workaround for a problem with timectrl.

You’ll want to upgrade to the 1.4 version of the time_spin_and_control distribution if you use limited, min, max, or value parameters in Glade when specifying the control.

Edit - 3/8 - updated to version 1.4

February 11, 2008: 7:17 am: kpdPython, wxPython

The program I’m working on (ErgMate) requires entry of hours/mins/seconds durations. I just defined input as total number of seconds for the initial prototypes, but the time has come to make it more usable. I was able to create the bridge code necessary to add the wx.lib.masked.TimeCtrl to the wxGlade widget palette by following examples from Alberto Griggio .

The normal TimeCtrl can bind to an external scroll button. The package also includes a new control called TimeSpin. It is based on Andrea Gavana’s FloatSpin control, and provides both a TimeCtrl and scroll button in one control. TimeSpin does not accept the format nor the scrollBar parameters, otherwise it should be a drop-in replacement for TimeCtrl. Let me know if I missed something important in the interface.

There is (at least!) one minor problem with TimeSpin: It seems to report too large a width - its bounding box is actually wider than the displayed control. I’d appreciate anyone with more knowledge of wxPython than I looking into it and sending a patch. For now it’s good enough to get started using.

Both time widgets are added to wxGlade by untarring the time_spin_and_control distribution from within your .wxglade directory. The included README contains more details.

Edit:
1.1 - fixed codegen problem w/value
1.2 - fixed loading problem when presetting a value
1.3 - added workaround for bug in timectrl when using min/max/limited settings

February 5, 2008: 5:43 am: kpdPython

The February Cleveland Area Python Users Group Meeting was held last night. The guys at BitBacker opened their doors and supplied pizza. It was the best meeting in awhile - 3 talks!

Christian Wyglendowski kicked things off with an overview of SimpleParse. He’s used it in applications from an ini file parser to a parser for an online survey processing language. It looks easy to use. Some time ago I wrote a parser for generating Python code from FLTK’s Fluid GUI builder data files using Spark. A great library, but SimpleParse might have been so much easier - it depends if I could have created or found a grammar for the fluid file format.

Matt Wilson spoke on IPython. I’ve been using IPython for some time and realized I wasn’t making full use of it. Until his talk I didn’t realize how much of IPython I was missing (”You only use 10% of your Ipython’s capabilities….”). Never knew it would assign results to _## where ## is the history line number. That alone will save a lot of time. Matt’s Ipython talk notes are online at his website.

Matt also gave a short talk on Twill. Twill is a domain-specific language used to test websites and web applications. The most interesting part of Twill is its extensibility. He demonstrated how one can add automatic checks as Twill encounters each page in your application - checks for tables-within-tables for example. Matt’s notes contain more information.

These talks gave us a lot to take home and think about.

February 2, 2008: 8:18 am: kpdwxPython

This morning I started getting the following exception when generating code from wxGlade:

Traceback (most recent call last):
  File "c:tempwxGladeapplication.py", line 394, in generate_code
    class_names=class_names)
  File "c:tempwxGladexml_parse.py", line 503, in __init__
   .
   .
   .
  File "c:tempwxGladexml_parse.py", line 593, in endElement
    self.code_writer.add_class(obj)
  File "c:tempwxGladecodegenpy_codegen.py", line 640, in add_class
    indentation = prev_src.spaces[code_obj.klass]
KeyError: 'FancyListControl'

There was only one mention of a similar problem on the wxGlade mailing list. The solution posted there was to start a new project - not really an option at this stage of development.

So after a little digging, I found a different solution.

The item causing the problem is a fancy subclass of ListControl defined in another module. I had placed a wx.Panel in the sizer slot, and had then changed the class to my fancy ListControl. Is the problem now obvious? This fancy list control is not equivalent to a wx.Panel from wxGlade’s perspective. Removing the panel and instead adding a ListControl with my fancy control as the class name fixed everything up.

So, in summary, use the closest matching wxGlade class (ListControl instead of Panel) when using your own classes.

Doh.

January 31, 2008: 10:23 pm: kpdindoor-rowing, ErgMate

It’s coming! Beta testing revealed that new users can use a hand getting started. There’s going to be a wizard to help new users create sequences.

I was going to post a screen shot of the flow, but that’ not very exciting, so instead here’s a screenshot of the latest version. The icons to the left of each clip indicate the type of trigger that causes that particular clip to play. Rulers represent distance, while the clocks represent time. For example, the first power 10 is triggered based on some time from the end of the row. The chain indicates a simple trigger that plays the clip immediately after the clip before it finishes.

January 13, 2008: 12:41 pm: kpdindoor-rowing

This guy is doing the Concept 2 “row as far as you can” challenge this month, even though officially it is a team challenge this time. He wanted the time spent to have a bit more meaning, so he’s doing it to raise awareness of breast cancer.

His plan is to erg 2000 miles ( > 3 million meters ) in January.

“…12 days + 4.5 hours finished, and I’m now past my previous month best, set this past fall. 1,101,336 and 34.2% finished.”

http://blog.myspace.com/index.cfm?fuseaction=blog.view&friendID=305324608&blogID=341877773

That is hard-core.

November 4, 2007: 10:22 am: kpdrowing

(I came across this article this morning that I wrote for the old Western Reserve Rowing Association web site. At this point, our local high-school teams are in dire need of coaches, so maybe this will help in some small way).

February 24, 2003

I left work today feeling a little sick and very tired. Grabbed a cup of venda-coffee on the way out to wake up as I drove out to the school. The coffee bore a most uncanny resemblance to river water.

The team has some ergs in a very small room at the school. The team was elsewhere strectching and warming up when I arrived. One of the coxswains brought me the list of athletes present - 17 rowers and 2 coxswains. Hmmm. We had the workout schedule written down through the ergatta the previous weekend, but nothing determined for today. Well, I’ve been meaning to have the team run stairs. It would be a good change as the sight of an erg makes them sick at this point in the season. Sharon, the other coach suggested erg/stair relay races. That would be hard to coordinate as the stairs are fairly far from the ergs. 6 ergs, 17 rowers, and 2 coxswains. That’s 6 groups of 3 if the coxswains row. So it boiled down to relay races on the ergs. Each rower would row 1000 meters and switch. Cycling through this 6 times would be a good hour and 15 minute workout. So we lined up the team in order of their 2K erg score and created 6 even teams of 3. That was after creating 3 teams of 6. (Rowing all these years has impaired my ability to count past 10.) The teams got started and the athletes rowed hard.

The races were amazingly even given the distance they were rowing. There was much yelling, power tens, and all kinds of encouragement resulting in rowers pulling hard, then falling off the ergs. The energy was amazing. All I could do was stand there and smile. The screaming continued until there was one person left rowing. The entire team gathered around this rower and egged her on, finally calling a power ten at the end. 18000 meters, an hour and 15 minutes later, and 19 tired rowers.

We talked to the team, explaining the purpose of the workout - how they are learning their capabilities, how they are a team when they support each other like they did, and how now that they were warmed up the real workout could begin. I left the parking lot feeling relaxed, energized, and quite happy. It beats happy hour any day.

Many organizations need coaches. Even coaching part time will be a big help. Just contact any of the delegates listed on http://www.clevelandrows.org

April 7, 2007: 3:06 pm: kpdrowing

While we were unable to see the live webcast on this side of the pond, Tim Marcovy convinced a local pub ( O’Reilly’s in Cleveland Heights) to open early today so we could view the coverage on ESPN-U. About 25 local rowers showed up to watch ITV1’s live coverage. It seemed very appropriate that it was held at one of the few places in town that pours an imperial pint of Guinness correctly.

This was simply the best coverage of a rowing race I’ve ever seen. Each shell had a small camera on a stalk behind the coxswain. This camera could be rotated to view the other shell. The coxswains were miked as well. It also appeared that those running the video knew about rowing and what angles to show. I got the biggest kick from the stroke rate shown for each crew on the bottom of the screen throughout the race. I am just awe at the ability shown by these crews. They made rates of 35-40 look like a casual row. It was the first time watching a regatta that we were just stunned by the technical ability of the crews. The excellent race coverage brought this out and allowed one to see it, where as in the Olympic or Worlds races, the camera cuts away too quickly and is taken from such a distance that one doesn’t get a good view of the technique.

A video stream of the race coverage I’m writing about is at:
http://www.itvtheboatrace.premiumtv.co.uk/page/Video/0,,12539,00.html

It was also nice to see the wide spectrum of rowers in attendance today at our viewing of the Boat Race. The usual hard-core masters group was present, but the audience also included a large group of rowers that have recently come up to our competitive masters program from our summer rowing league. Some local scullers and members of the Case Western University Crew rounded out the audience. Marcovy is head coach of the latter, although I doubt attendance got them out of any ergometer work this morning.

Quote of the race - I’m not sure which commentator said it:

Bodies are asking ‘why’?
The mind has no answer
-but the spirit is willing.

After today, I’m ready to row NOW. Too bad there’s 5 inches of snow on the ground.

Next Page »