.plan Archive 2003
![[Home]](../images/bhome1.gif)
![[Products & Services]](../images/bprdsrv1.gif)
![[Contents]](../images/btoc1.gif)
![[What's New]](../images/bnews1.gif)

17/dec/03
Didn't get the job at Volition
- Do I want a parallel structure to shadow the display list? Or just let the list be the
master of the pointers? I suppose I could kill the list sent in and rebuild it from the
display list on exit. I'd rather not tie it so tightly to the UI
04/dec/03
20/nov/03
- Added Fox library vs header version test
- Added Tooltop instantiation
04/nov/03
- 20:10 Only have about 45 mins before hockey. FTP list dialog
29/oct/03
- 05:00 Coupla movie reviews, plan update and posted some pics.
28/oct/03
- 20:00 Let's get this to compile before doing FTPListDlg. I think it's clean enough to do
that
- 02:00 Compiles clean. Checked in
27/oct/03
- 20:15 Working on FTPConfigDlg
- 20:45 Need to add FTPListDlg
- Got distracted making the newsfeed to this site. All manual, at the moment
- And then later trying to get Popfile (spam filter) to work
24/oct/03
- 01:00 Working on saving FTP list
23/oct/03
- Finished DoFTPChore
- Next, clear out all m_FTPSettings
- 0.5 hrs
22/oct/03
- 00:00 Looking at DoItFirstTime
- ReadSETIFiles
- 00:20 GetCurSETIDirectory
- 01:00 Finished DoItFirstTime. It's now only one screenfull
- 01:10 Finished Heartbeat. Almost a block-copy of DoItFirstTime
- Removing all Sigand HTML-specific references
- Need to change Sigand HTML-specific replacement strings
- 02:15 I think I have most of the sig-specific stuff cleared out
- TODO: Make a text box to hold the last output?
- Gonna work on the FTP stuff, now
- Need OutputFileList to be an FXDict, too
- 03:15 Got the pending FTP list set up. Next, to interpret it in the FTP chore
- 19:45 Have 15 mins before I have to get ready for hockey
- Got started on doing FTP
21/oct/03
- 01:15 Hmm, what do I do about username and other single-machine replacement strings? I
hate to do it, but I guess I need to add an alias parm to those. Default to the first in
the list
- Changed member variables for new lists to pointers
- Added DoOne. This change is gonna be a pretty thorough rewrite. It's gonna simplify some
things, though, I think
- 03:00 1.75 hrs
20/oct/03
- 20:15 Half an hour stepping through that. It appears to work. I should be able to bang
out FTP and Quote pretty quick
- 21:30 Quote and FTP reading compiles
- Hmm, UI first, or processing? I guess processing
- 1. 25 hrs
19/oct/03
- 03:00 Ruined a keyboard. Frost spilled a Mickey D's Coke onto the keyboard. I took
it apart and cleaned it pretty well. But one key was still sticking. So I decided to dunk
it in the sink, as I've read Jerry Pournelle does. Turns out, you need to dry it better
than I did. A few wires corroded, and now it doesn't work. Next time I'll go ahead and
take the keyboard apart and wash only the plastic key part. Anyway, so now I'm using big
clunky old keyboard. It's okay, but the backspace key isn't oversized, so I'm constantly
hitting hitting the key next to it by accident.
- Got multiple sources for output compiling. Gonna test it tomorrow
- 04:00 Out 1.0 hrs
16/oct/03
- Changed SourceFileList to FXDict. I think I'm going to be accessing it mostly through
the Alias
- Do I want Outputs to register themselves with Sources? So that when a Source is deleted
or changed, the Output is updated? Not for now
- 16:30 Doing output list of sources
15/oct/03
- 02:00 More work on new INI layout. Read source file list
- Can't get FXArray to work. STL? Or just write my own linked list?
- 03:30
- 18:00 Got half an hour of working on output sections. Need to build list of sources for
each output
13/oct/03
- 02:30 While chatting, updating license agreement in all source files
11/oct/03
- 01:15 Now to use the new INI layout and get it into program structures
- First, update WriteDefaultINI
- Do I want to cross-reference which sources are used by which outputs? Which FTP and
quotes are used by the outputs? Hmm, earlier I was thinking about using the alias as the
unique identifier. That way, if they shift around in order it doesn't affect the outputs
using it. But, that doesn't take into account when the user changes the alias. Don't let
him change the alias once it's chosen? Add alias field to quotes and ftp?
- Decided to insure Alias' are unique. No spaces in Alias?
- DoItFirstTime, DoIt, and Defibrilate are going to be much simpler. They'll need to go
through the list of output, read source files to order, queue up FTPs
- Changed INI "System" to "Program". I've had problems with that
nomenclature in the past. Differentiating between actual operating system settings and
program settings.
- Starting to actually read new INI. Reading program settings. About to start on source
files
- Someday may wish to change INI to XML. It lends itself better to a list of input,
output, quote and ftp settings. But my initial research tells me it's a science project I
don't want to take on right now
- Out 04:00
09/oct/03
- 03:00 Learning about tagging. Looks straightforward
- 03:30 Back to work on input machines dialog
- Actually, working on INI changes
- Moved CopySettings from within MainConfigDlg into its own file
- 06:30 Got INI conversion routine finished
- 09:15 Got it to compile. Let it write back out to file and checked output. Conversion
looks good.
05/oct/03
- 01:00 Won our first hockey game of the season
- I posted a question to the ME forum
http://www.multiedit.com/forums/viewtopic.php?p=463#463 I'm gonna just use Wincvs until I
hear back. I'm wasting too much time on this
- Hmm, guess I better make sure it still compiles :-)
04/oct/03
- 16:30 Working on SourceForge CVS support. Spent a coupla hours the other day on getting
it working with Wincvs. That seems to work. Got my project into CVS today. Currently
trying to get Multi-Edit to work with it. It appears to be using RSH instead of SSH.
- 19:00 Danyelle logged on. Still stuck on ME vs CVS+SSH
- "C:\Program Files\GNU\WinCvs 1.2\cvs.exe" commit -m "Commit test"
MightySETIInfo.cpp
- 20:30 Need to turn off heartbeat any time I have a configuration dialog up
- Add <%Include filename.txt%> This will let me do a quote once per day and include
that into a sig file that's done every five mins
- Need to update licenses again, with zlib/libpng license http://www.opensource.org/licenses/zlib-license.php
- Started SourceForge project. Mostly to use their CVS
27/sep/03
- 01:15 Back to work
- 02:00 Making progress on EditMachineDlg
- Need to think about who owns the machine list. If the dialogs are modal, then it's okay
to have a master list in the app that's copied to the list dialog. And individual machines
are copied to the edit machines dialog when they're actually edited. I copy the info back
on OKs
- Getting distracted. 0.75 hrs
- Working on web site while chatting
26/sep/03
- 03:30 Working on INI
- How do I want to store it in the INI? How do I want to pass it around the program?
- Added InputMachine.h
- Don't forget to tidy up by adding private copy constructors for everything
- Main MachineList stored in... app? Hand off to dialog while it's up.
- Look up machines by alias? That way, sort order is unimportant. Does that mean I should
use an FXDict structure?
- 5:00 Out 1.5 hrs
21/sep/03
- 05:00 I still need to do the source designation
03/sep/03
- Doh! Finally figured out how to handle Clawe's situation and still keep things simple.
Right now, I have one master set of SETI@Home input files, and it only outputs one set of
output files. Instead, I need to turn that around. For each set of output files, I need to
point at groups of input files. One might be just for one user. Another might point at
files for several users and provide consolidated results. That makes the interface much
clearer.
- Look at http://www.vprince.com/np/help/index_e3.html for ideas on conditionals and loops
in template files. Also for highlighting ideas to make tags easier to read in the docs
22/jul/03
- 06:00 Okay, I figured out how to capture the update in the encapsulating dialog. I
should be able to return what I need, I hope
17/jul/03
- 00:00 Let's just point at a folder and have a Setihide check for now. Just to get
something done
- Changed DebugFlagsList.* to CheckboxList.*
- Oops, DebugFlagsList was accessing DebugFlags directly. Need to give it a callback. Hmm,
or a Fox message?
- 00:30 Distracted
- 04:15 Back at it. I think I'm gonna go brute-force for now. I really should learn the
Fox messaging system, because it sounds like the right tool for this job (runtime
connection of GUI to code to handle events)
- 05:00 I can almost see how to do it with Fox messages. Need to capture SEL_CLICKED in
outer dialog. Need to handle SEL_UPDATE in CheckboxList. But I don't see how CheckboxList
can call out to see what to set the icon to. Hmm, almost there
16/jul/02
- 03:00 Adding Show in Task Tray to Settings
- Took 20 mins
- Thinking about what to do for multi-machine read. I guess just do it really simplistic
for now
- Just noticed a bug. The user_info file I want isn't the in the same directory as the
state.sah file. I need to look one cache back to find the most current info. Therefore,
I'm gonna have to do two searches through the directories. I could just look for both
files at once, but I figure there are going to be few enough cache directories that I
don't need to bother with that
- There's another bug I've noticed that I'm not sure how to duplicate, easily. Sometimes,
when the program goes to FTP and it fails, the FTP object-or-connection isn't getting
deleted-or-released
- 04:00 going bug-hunting
- 04:30 Fixed wrong-state.sah bug
- 05:00 Might move FTP Disconnect so it gets called even if login unsuccessful
- I'm thinking I'm not going to change templates for now. Instead, I'll let each machine
ftp its own file and the user can incorporate them manually. I might write an example PHP
that skims a directory and builds the page for him.
- What I'll do instead is add an option to copy/FTP the state and user_info files to
another machine. Hmm, that means keeping another set of FTP values
- Started dozing. Out at 6:00. Prolly 2.0 hrs, total
11/jul/03
- 04:00 Working on machine list dialog
- 05:30 Got the dialog up. No functionality
- 0. 5 hrs
10/jul/03
- 05:00 Let's go ahead and do the list of machines to read from. Prolly gonna take longer
than the 2.0 hrs estimated because I'm not taking into account having to rewrite the read
routines into their own classes. Nor is there any time for defining new template
structures to handle the multi-machine output. I'm guessing another 2.0 hrs to rewrite the
read routines and 2.0 hours for the new template stuff. The original 2.0 will cover the UI
for the new stuff
- Prolly 0.5 hours
07/jul/03
- 08:30 Pass in tip text to tray icon
- 0. 5 hrs
03/jul/03
- 03:00 Doing hotkey UI
- 04:30 Done. Had the modifiers backwards to begin with (Alt=8, etc). Also, a checkbox
value of 2 shows as grayed out. Had to put an extra test in for the Ctrl key.
- Decided not to warn if fewer than two modifiers. I'll mention it in the docs
- 05:00 Half hour of UI tweaking, adding some labels, rearranging
- 07:00 Been working on html docs, screenshots
- 08:00 Upload v4.5
- Put consistent licence statement in source files
- Added "Maybe" string replacements for integer day
- Got into a heavy discussion with Scats that took an hour
- 12:00 Finished Results box at the bottom. Capturing read errors, write errors, ftp
errors, and write successes
- Calling this v4.6 and checking it in, before starting on task tray icon
- Restarting at 13:00
- Lotsa distractions, but finally got an icon at 18:50. Prolly 2.5 hours actual work
- 19:30 Got correct icon. Changed icon to have transparency
- 20:15 Finished handling clicks on tray icon, and cleaned up commented code. Look in
TrayTest for more examples
- Okay, time to treat myself to some game playing
01/jul/03
- 16:30 Working on docs for release of v4.5
- Oops, need to ad UI for unhide system hotkey
- Rewrote schedule for v5.0 and 6.0
- Did some more docs. Gotta go buy soccer cleats for practice tonight
- Out 17:30 1.0 hrs
- 23:15 Gonna just allow A-Z on the hotkey, and enforce at least two shift keys.
Postmortem
Very disjointed progress. I just couldn't seem to make myself do the UI to do other
machines. I kept finding other things to work on. I'm pretty sure now that's because I
didn't have a good plan. I needed this opportunity to sit down and redesign from where I'm
at to where I'm going, with lessons learned. Hmm, how to spot earlier that it's time to do
that?
30/jun/03
- 20:00 How often am I going to forget LAYOUT_FIX_WIDTH? Search terms: ignoring width
- 21:00 Mostly working. But it's a few pixels off from one box to the next. Let's see if I
can figure out how to get an FXHorizontalSeparator in there
- And Bruce dropped the latest issue of Playboy in my hand (the one with the Survivor
chicks.) Hey, I am mostly human
- Tried some experiments and still don't like how it looks with One Big FXMatrix. With
separate matricies they're off a few pixels from lining up. I'm gonna go ahead and live
with it like that
- Clawe just wrote. He was admonishing me to keep the program simple. I totally agree with
him. But I really want to do the consolidated totals. And the ideas from yesterday are the
only ways I can think of to do that
29/jun/03
- 02:45 Add Hide button on main screen and put Hide checkbox in settings
- At the same time look at doing setting screen as an FXMatrix
- 06:00 Some distractions.
- Tried a coupla variations on FXMatrix. Can't find anything that works. I can't figure
out how to add in separators. The label width field seems to be ignored in matrices, too.
Posted a question to the list
- I need to sit down and rethink the multi-machine stuff. I think I need to rewrite my
input stuff to let the user choose between four sources:
- Direct read of local machine and LAN machines
- Use Setihide log file
- Satellite copies of MightySETIInfo write to master machine
- Read from SETI@Home XML files
- And then I need to reschedule everything from here on from scratch
28/jun/03
- 08:00 Sent a beta to Clawe, but after trying it on my machine, I need to change it to
not show popup dialogs if the hide flag is set
- 08:15 Sending v4.4 Beta
- 11:00 Adding WUTotalSecs and WUTotalSecsLeft stuff to SETIState
- 11:30 Done with those
- 12:00 Do I want server-pull or client-push to build consolidated totals?
25/jun/03
- 06:00 Gonna put the hide and show stuff into the INI and get that to Clawe
- One problem I haven't addressed is when a pref isn't in the INI. I kind of thought that
when the Fox readxxxEntry couldn't find an entry it would create it with the default I
gave it? Nope. Hmm.
- 07:15 Gonna put that off for now. Compiled a release version and am sending it to Clawe
23/jun/03
- 18:00 Looking at WM_HOTKEY
- Wow, got it to compile on the third try. Watching for WM_HOTKEY in the FXapp
dispatchEvent routine. Now to add RegisterHotkey...
- Woo hoo, got it to work. Just in time, I'm off to go see X2
- 19:50 Lotsa distractions. Prolly 30 mins, total
22/jun/03
- I was originally planning on the one instance of MightySETIInfo going out and querying
all the other machines on the LAN to get the info. But Clawe doesn't want to open shares
on all those machines. Instead, he'd like a small program to write on the "main"
machine, sort of like how Setihide does.
- And now, while thinking about this, I don't see any need to write a separate teeny
program. Hmm, you could fake it by making the output "sig" and "html"
files that look like user_info and state files. Then, the "main" program can be
pointed at each of those faux SETI files. I'm not sure I like it, but it would work.
- And thinking about it some more, Clawe said he can run a PHP script to parse the info
once it's ftp'd to a web site. So, he can just run a copy of this program on every machine
and produce whatever output he wants and parse it himself. So, about all I need to do at
this point is add a pref to do a hide() on startup and I think this will work for him.
- 23:30 Okay, let's get something done
- Adding SETIState class
- Changing GetFilename to GetSETIDirectory and passing that to the instantiation of
UserInfo and SETIState
- Removed leftover test junk in About
- Need to read SETI files every time
- 02:00 Oops, not on every heartbeat. Only on the beats where we actually want to read
something
- Added Progress replacements. Took about a three minutes
- Out 03:30. Some distractions 4.0 hrs
- Did some research on WM_SETHOTKEY while on the phone
20/jun/03
- 22:00 Holy shit, it's been a month, again?
- Way cool, someone who calls himself Clawe wrote me an email saying he was using
MightySETIInfo. He's asking for the promised feature of checking multiple machines on a
LAN and consolidating the results. So I promised it to him in a week.
18/may/03
- 20:30 Put in a few hours over the last few days doing my spam graphing program. Using
GDChart, which uses GD, which uses PNG and JPEG, which uses ZLIB.
- Lotsa distractions, but got the gd.lib test to work. About to start on gdchart
13/may/03
- 01:00 Don't even remember what I did
12/may/03
- 07:00 I guess what prompted the error system thing is wanting to do the minimalist UI,
and cut down on resource usage. Right now, while the worker logic is mostly in their own
routines, they're still in the main window class. I need to get disciplined and pull them
into their own class(es). Doing that will entail creating an error reporting system that
connects the worker routines to the UI instances
- Moved file reading and chore setup into ::create. Should be able to popup errorbox from
there
- Moved all debug display to strings in the app class. This way, I can run without
instantiating the debug dialog unless we need it
11/may/03
- How to match up program identifiers to error message text?
- What I need is an error identifier macro, like ERRID. Do I want to just collapse that
into a single global STRID table?
- 0. 5 hrs
11/may/03
- 06:00 Let's work on an error system
- Brainstorming: Inside of a worker routine, like reading the ini file, I post an error
code to the error system. They're kept in a queue? No, just return the code?
08/may/03
- 04:30 Check in v4.2. Gonna change the icons to the green smilie
- Fixed checkin.bat to check to see if I'm overwriting and existing directory, and whether
I can log onto Mightymouse
- Made MakeIcon.bat
- Worked on docs
07/may/03
- 03:30 Do I want to work on minimal window? And, cutting down on resource use by not
instantiating dialogs until I need them? Store the info in FXStrings until I ask to
display it?
- Actually, I think I'm going to get my icon into it, first
- Converted the icon to a .ico. Added the icon as a Resource in DevStudio, then included
the .rc into the project. Somehow, it automagically used that icon for the EXE
- Reduced the size of the .gif icon to 16x16
- reswrapped both, included them into the main window, instantiated GIF icons, called
setIcon and setIconMini, as seen in adie
- DON'T FORGET TO DELETE THEM IN THE DESTRUCTOR
- 04:45 Out 1.25 hrs
03/may/03
- Wasted a lot of time looking for a utility that will copy a list of files. I want a
single command line so that I can redirect the output to a text file. The current .bat
files don't have a way to capture success or failure
02/may/03
- 23:15 Making checkin.bat and release.bat 20 mins
26/apr/03
- Working on HTML documentation
- Cool, I just found the HTML option to create a table and have text flow around it. Not
sure I'm gonna use it right now, but I think I've wanted this in the past
- Oops, figured out the FTP Configure button isn't working
- Quick fix, just overzealous on deleting dead code from app
- Posted v4.1
- Back to work on docs.
25/apr/03
- 07:45 Debugging why my MightySETIInfo web page is shoved over to the left and up. I
think the body style in my include on that page is overriding the style in the page it's
being included into. Gonna change my template and see
- Yep, that was it. I changed the <BODY> tag to use the same stylesrc as the rest of
my site does
26/apr/03
- Working on HTML documentation
- Cool, I just found the HTML option to create a table and have text flow around it. Not
sure I'm gonna use it right now, but I think I've wanted this in the past
- Oops, figured out the FTP Configure button isn't working
25/apr/03
- 07:45 Debugging why my MightySETIInfo web page is shoved over to the left and up. I
think the body style in my include on that page is overriding the style in the page it's
being included into. Gonna change my template and see
- Yep, that was it. I changed the <BODY> tag to use the same stylesrc as the rest of
my site does
25/apr/03
- 03:00 Let's go ahead and package this one up
- Did Postmortem (below)
- Moved documentation for replacement strings to Readme.txt
- Went ahead and reswrapped checkbox gif files 0.5 hrs
- Just noticed that new flags aren't being displayed, because the listbox is populated
before the first call to them. Hmm, should I fix that? I guess so. Otherwise, I'll have to
run the program twice to be able to check it? Hmm, but it defaults to off, anyway. If I
want to see it the first run I'll need to add it to the INI manually? Still, I would like
to be able to hit DoIt the first time in, without having to quit and restart.
- In the end, I wanna get this release out. This is a trivial problem with a quick
workaround. So I think I'll go ahead and leave it as-is
- Spent a few mins trying to get the FTP finished dialog to show up centered in the main
window. For some reason place() between instantiation and execute doesn't work.
- Thank PC-cillin. When I was in CA my laptop got hit by a virus. I've already cleaned
that one off, but apparently the virus was itself infected with a virus. When I was
building the release zips and moving them to my other machine PC-cillin spotted the virus
and cleaned the file. So I now know for certain the EXEs I'm releasing are clean.
Postmortem of v4.0
- Gawd, look at how little work I've done. I need to cut down my chatting. But it's hard.
I really enjoy those people. Some a whole lot.
- Lost a lot of time to the FXRex bug. Was banging my head against the wall instead of
stepping into it. I trusted Fox. When using new-to-me technology, how do I spot when
unexpected behavior is my fault and the rare library/driver/compiler bug? If I had someone
to show my code to it would likely fix that problem
- The extra time on the busy-transfering box was mostly a case of trying to get the
current messagebox to work. I ended up copying that code and making my own very similar
class. Just took awhile before I figured out the built-in stuff wasn't going to work for
me
- Can't remember why finding the current Setihide cache directory took so long.
- The debug flags feature creep is I think time well spent. I've been wanting something
like this forever. Not sure why it took so long. I think I was distracted by chatting.
Also, GUI details just always seem to take me longer than I expect.
- The DST bug was mostly time spent researching the MSDN. I really didn't want to have to
put in that hack. I was hoping to find some other workaround. The actual hack didn't take
all that long
24/apr/03
Happy birthday, Lara
23/apr/03
Happy birthday Hannah :-)
- 12:45 Reenabled minimize button
- Checking out the seconds being read as an integer, not a real
- Had to change it to FXDouble. Wonder why
22/apr/03
Happy Birthday Hayley :-)
- 04:00 Figuring out loop to move entries from INI to flags, from flags to dialog, and
from flags back to INI
- 05:00 Actually read ints from the INI
- 05:10 Okay, so now I can change an INI entry to turn a debug flag on and off. Time to
hook up clicks on the icon
- 06:07 I think I've got it. Man, this is something I've always wanted
- Bug was the Use Setihide checkbox was set, but it wasn't actually in the INI file. I
need to add that to WriteDefaultINI. But I also need to protect against a missing flag
- Hmm, it's already in the default INI write. Just need to add the protection
- The problem was the call to get the Setihide flag setting in the main program was
opposite from what was in the config dialog checkbox update method. So, it looked to me
like we should be searching Setihide cache directories, but we weren't. Added the default
Setihide value (and update once default) to Consts.h so it'll match up in the future
- Gonna check in v3.5. Maybe clean it up and call it v4.0? Prolly should, considering the
last version was posted in January
- Working on docs
- Gawd dammit. The time left is off by an hour. Apparently it has something to do with
Daylight Stupid Time. There's a bug report in the Knowledge Base, but it's not supposed to
apply to VC++ 6.0.
- The problem is in mktime()
- Also, I just noticed that VC 7.0 and later starts at 1900, not 1970. I guess I need to
conditionally compile for that. Sheesh. Right now, just pop up a compiler error letting
people know about it
- 18:30 I just noticed that if Run Once is not set, and FTP is, then the program uploads
once and then sits there on the Transfer Complete notification. I need to put some sort of
timeout on that one
- 19:30 This is blowing up into a project. But I think I have a handle on it
20/apr/03
- 01:00 Hmm, do I want to move those items from MainSettings over to the DebugFlags dict?
It's the same thing, really. I guess I'll be stupid for now and alias the pointer to
MainSettings. I'll still have the interface to make it easy to change someday in the
future.
- Not sure when I got distracted. Prolly after an hour or so
- Got it to compile just before going to bed. Stepped through a test and it appears to
work.
- 18:45 Working on listbox
- Idea: My app log should include identifiers for each entry. This is passed to via
AppendLog(string, id); Then, I keep each entry in a list and the user can turn various
groups of entries on and off. That way, I can dump everything to the log, but be able to
hide stuff I'm not currently interested in.
- Distracted for over an hour. Looks like I need to derive from FXIconList to pull this
off
- 05:00 It's compiling. Time to flesh it out
- Maybe an hour?
19/apr/03
- 04:00 Gonna create a debug flag structure. I've tried to do this in the past and never
liked how it worked. This time, the structure will contain the on/off flag and an
accompanying string. The advantage is that I can use that string to populate a listbox to
provide a runtime GUI to turn each item on and off. After doing a simple array for this
app I may try to figure out how to put a real OO interface around it.
- After starting to work on it I decided that what I really want is an FXDict derivative.
I'm going to want most of that functionality
- 05:15 Maybe 80% finished. Need to read in saved flags
15/apr/03
- 20:00 While watching hockey
- First attempt at running v3.5 beta on main machine fails to find current Setihide
directory. Gonna add debug info for that. Contemplating putting debug info checkboxes on
debug screen
13/mar/03
Life isn't fair :-(
- A lot of the simple info, like total time, total Wus, etc is now available as an XML doc
straight from the SETI@Home site. Http://setiathome.ssl.berkeley.edu/individual.html
08/mar/03
- 06:00 Tracking down crash bug that showed up on system running beta
- Looks like if an output is disabled and we've passed the interval then we get confused.
I need to simply not display the countdown if that output is disabled
- 0.3 hrs on crash bug
- I think I'm going to finish adding those things to the settings dialog, find the current
Setihide cache folder and then release what I've got
- Getting the quote fields in there was easy, except...
- The delimiter itself is displaying as non-displayable characters. So I'm having to steal
the parse/unparse routines from the FXSettings.cpp file
- 08:15 Looks like that's working 2.0 hrs on adding those fields
- Checkin v3.3 Beta
- 09:30 Working on searching for current state.sah file
- 11:30, Okay, got it finding the current directory. But, it turns out that one doesn't
have the correct nresults. 2.0 hrs
- Talking to Julia
- 14:00 Look for next-to-oldest? Or go to setihide.ini?
- Gonna go with next-to-oldest. Otherwise we have two input routines
- Turns out it's oldest (current dir isn't changed until we leave) 0.5 hrs
- Need to change Settings dialog to match. Took about 0.5 hrs
- Checked in v3.4
- 17:15 Gonna go ahead and do the minimalist window
- 17:45 Well, not full minimalist. Just removing the editboxes that show the names of the
output files. Leaving the Sig and HTML textboxes. 0.5 hrs
21/feb/03
Scored a goal in my hockey game, the Ice Phish. It was blast from a long way out, at
least 3/4 of an inch :-)
- 01:00 Looking at how to extend FXFileDialog to add a "goto /Program
Files/Seti@Home"
- Hmm, I'm thinking I don't need to do that. How about I just add a "Default
folder" button to the Settings dialog, along with a SetiHide checkbox.
- Also need to add Quote delimiter fields to that dialog
- Partway through adding new fields. Got layout done, now adding guts
- 02:30 Internet finally back up. Two days without is torture for a geek like me. 1.5 hrs
on adding fields to Settings dialog, with 0.5 wasted on FXFileDialog
20/feb/03
- 00:30 Gonna be tough to make this generic. Gotta pass WM_USER to the ftp lib
- Also, it looks like maybe the ftp lib ought to be instantiated by the app, not the main
window
- No, just need some way to get the message id's back and forth. I suppose call
ftp->dispatchEvent?
- 0.5 hrs on asynch ftp
- 01:00 Okay, this is going to take too long right now. Gonna blow this off and just throw
up a message box while busy and when finished
- 02:00 Worked on throwing up a box to say "we're transferring." Having trouble
getting it to show up. Need create() ?
- Yup, needed create(). Now, I need to remove OK/Cancel and put in label
- 1.0 hrs on Doing xfer/Done with xfer
- 17:30 Removed buttons, added label, placed in center of owner. 0.5 hrs
- 19:00 Started to move program over to MightyMouse and wanted to change the delimiter to
a blank line. That forced me to come up with separate delimiter adjustments for the front
and back of the string. Changing default delimiter to the blank line 0.5 hrs
- Added Quote stuff to default INI write
- When running MightySETIInfo on the other machine the first time it choked on the
template input files. The sig was the wrong default filename. But I'm not sure what the
problem was with the HTML.
- Now using MightySETIInfo for my email sig
- Let's call this 3.2 and check it in
19/feb/03
- 01:30 Do I want to release this as a point upgrade? No, not yet
- Found formatting bug in About box. 2 minutes to fix
- But did check in v3.1
- 02:20 Just spent an hour fooling with default input files
- 02:30 Look for multiple instances of replacement strings
- Can't research hiding icon right now, because ISP is down
- Looking it up on MSDN
- 03:45 My simple tests with WS_EX_TOOLWIN don't work. It looks like Fox sort of supports
it. Gonna have to ask on the list when I get internet access back
- 1.25 hrs on hiding taskbar button
- Gonna look at countdown timer before going to bed
- 04:15 0.5 hrs on countdown
- 15:00 Back to it
- Just change title to groupbox?
- 16:00 I like it in the groupbox title. Might clean it up a little more later. 1.0 hrs
- 16:15 Let's look at asynch ftp
- When getting an error c:\personalprojects\mightysetiinfo\mightysetiinfoapp.h(19) : error
C2629: unexpected 'class MightySETIInfoApp ('
c:\personalprojects\mightysetiinfo\mightysetiinfoapp.h(19) : error C2238: unexpected
token(s) preceding ';' that could be an unknown type within the declaration:
MightySETIInfoApp(CPChar name="Application",CPChar vendor="Default");
In this case, it doesn't know CPChar
- 1.0 hrs on ftp asynch
18/feb/03
- 22:00 Spelunking into FXRex code
- Looks to me like there's a bug. Downloading Fox 1.0.29
- Yup, a bug. Reported it to the list and Jeroen verified it
- Trying to strip line ends from beginning and end
- 2.0 hrs on that
26/jan/03
- 01:30 Feature creep. I want to replace Tagline and Setisig. Adding <%RandomQuote%>
Might want Enable flag, if file gets large, but not used
- 02:30 Got up to the point where I'm looking for the delimiter. Not sure if Fox regex
returns all hits for a given fixed string. Will look at that tomorrow
- Need to add delimiter input field
- Do we want the same quote in both replacements? If so, need to save seed
- Do we need a schedule for when to change quotes? That would address seed issue
- That would also save parsing the file twice
- Do we need enable flag? IOW, don't parse potentially large file if we don't intend to
use that replacement? Look on-the-fly for that replacement field in the templates?
- Maybe put in a mechanism to make a preliminary search for potentially expensive
replacements and put them inside if's
- 1.0 hrs
- 22:30 Looked at regex tutorials for awhile
- Hmm, I guess I was mistaken. No built-in support for multiple occurances of a search
string. Guess I just need to put them in a while statement. No big deal
- 01:00 Trouble with FXRex. Can't seem to find my simple search string / when going
forward
- 2.5 hrs
21/jan/03
- 02:00 Okay, I think the biggest problem is that I'm trying to do too much decision
making inside of DoSig, et al. I need to pull the decisions out, and DoSig just does the
sig string. Later, I decide whether or not to actually post the string to the window. And
separately, whether or not to write it to a file.
- 04:15 There are three entry points/states from which to decide whether or not to do the
work.
First time in
- Always display string
- Only write if timer has expired
User hits DoIt
- Always display string
- Write even if timer hasn't expired
Heartbeat
- Only display string if timer has expired
- Only write if timer has expired
- 05:30 Done with scheduled writes. 2.25 hrs
- 0.5 hrs on postmortem
- Schedule v3.0 Jan 21 - v4.0 Jan 25 - v5.0 Jan 27
- 05:45 Tested Update Once, didn't work. The decision was nested in the if's in the HTML
output. Had to set a variable at the top of that function that got changed as necessary
(ftp)
- 06:00 I think it's ready to check in. Gonna go ahead and go to sleep and finish it
later, hopefully before my game tonight. I have an eye appt in the afternoon that'll cut
right into the middle of my day
- 19:30 Doing some tweaks. Screwed up conditional compiles for debug output of
replacements
- Adding in program version string replacement, so I don't have to modify my default html
template
- Tried to upload at 21:30, but it wasn't getting through. Finally got it up after
my hockey game.
Postmortem of v3.0
- Not sure why enable checkboxes ran over. Guess just fiddley details
- String replacement, prolly half was just researching regex. Reading docs and searching
for free regex libs
- Not having planned to add the template input fields was an oversight. UI stuff takes
time
- The splitter was pure feature creep. But I think it was worthwhile, and it was quick
- Moving the configuration info to its own dialog was from not planning the UI ahead of
time. Since I'm just building it as I go I didn't know ahead of time how crowded that main
screen was going to get
Also, I don't really like how much code is duplicated in order to implement some fields on
the main screen the same fields on the configuration screen. Need to look at that and see
if I can make the actual work routines more generic. FXDataTarget is one solution. And
learning the messaging system better is another. It feels like I'm not fully taking
advantage of Fox' messaging system
- Scheduled writes seemed a fairly simple idea (just check to see if a timer expired.) But
I was trying to do too much in one or two routines. I ended up having to completely
rewrite the architecture to handle the different cases. Fortunately, the program is
modular enough that the rewrite didn't really take all that long. I wonder if I would have
spotted the problem/solution if I hadn't implemented the DoIt button? With only two cases
I prolly would have tried to make one monolithic routine do all the work. With three cases
it was clear I needed to treat each one separately. Hmm, how to spot a monolithic design
before it has already gotten out of control?
20/jan/03
- 01:30 Gah. Base year is 70, not 1970. How silly. Whose bright idea was that?
- Getting wonky layout. Some large window below the menu and above the main frame
The Fox window decorations apparently weren't what it wanted.
DECOR_ALL | ~(DECOR_MINIMIZE | DECOR_MAXIMIZE | DECOR_CLOSE)
accidentally turned on everything. I wanted an & instead of a |
- 03:00 Posting FXSplashScreen to Fox list
- 4:00 1 hr lost
- Trying to figure out logic to fire of FTP and 10 sec shutdown boxes
The problem is that we're no longer automagically going to run through the HTML/FTP code
every single time. Now, I'm checking the time, first. So, I need to separate the 10 second
window from the FTP code
- Fixed recording of times to INI file. The time returned by time() is Greenwich Mean
Time, meaning it's six hours ahead of here. I had to use localtime to split it into a tm
struct properly
- Okay, this has gotten complicated. I need either a bunch of bools, or a state machine.
Things I need to do
Build sig/html string
Display sig/html in window
Write sig/html to file
FTP HTML
Pop up 10 second box
Hmm, brainstorm. If I'm not creating a new sig/html, should I read the previous from the
output file? I think not
If first time
or Doit button
or interval has expired
then create sig/html string
If html written
then ftp file
If first time
and once then exit flag set
then display 10 second dialog
- 04:45 tired 2.25 hrs
19/jan/03
- 03:30 Gonna spend less than 30 mins looking for robust text date/time and if I can't
find it then I'll just write my own. It's not hard, except that I don't want to write all
my own error trapping. Parsing sometimes-user-written text can be such a tedious job. I'd
rather use someone else'
- 03:45 Okay, forget it. I'll just do it myself, and if the user types in weird number
then he's just gonna get weird results
- 04:00 Distracted
- 04:45 Back on it. Just going to use ANSI time structure. No point in making my own,
methinks
- 06:00 Is expanding, as usual. Need to split out DoSig, DoHTML, DoFTP
- 19:00 Doing interval replacement strings. Use gmtime to convert from raw seconds to
days, hours, mins, secs
- 20:30 Getting pulled off. mktime isn't working. For some reason it's failing on the year
test
18/jan/03
- 01:00 Cleaning up bugbugs. Mostly just deleting comments. Finishing out WriteDefaultINI,
WriteDefaultFTP
- 01:45 Looking for date input/output. Sure I can write my own, but I figure someone has
done this robustly
- 0.75 hrs
17/jan/03
- 02:00 Let's finish that up
- Lotta copy&paste coding. Don't like it. Not sure what to do, because it really is
nearly identical behavior between the two
- 04:00 90% finished. Just need a few cosmetic changes
- Need to implement FTP enabled update handler
- Get rid of commented code
- Hmm, the way I've done it, outer FTP enables don't get updated instantly
- Got all buttons and config menu items to work
- Some doc touchup. Created MightySETIInfoTemplateTest.txt
- Checked in v2.4
- 04:45 2.75 hrs
- 18:30 Gonna add a few more strings subs. Total days, total hours, etc.
Took 10 mins
- Implement timed writes. Do ugly UI layout in config window for now
I really should use FXDataTarget. I'll do that for v4.0
- 20:15 Learning ID_SETINTVALUE and ID_GETINTVALUE
- 0.75 hrs
- Distractions
- 21:00 Trying to get back to it
- 21:30 Got everything saving and updating on both windows
- Going to Andy's game 0.5 hrs
16/jan/03
- 01:30 Config dialog in earnest
- Took awhile to copy the settings
- I'm not sure I like storing the settings in an FXSetting structure. I guess this is
where the prefs system would come in. And I don't have that, so we'll live with this for
awhile
- Checked in v2.3
- Moving everything to main settings dialog
- 04:00 Prolly 40% through moving to new dialog 2.5 hrs
15/jan/03
- 02:30 Just gonna do a little. Really tired
- Just doing documentation
- 03:00 0.5 hrs
- 18:00 Changed FTP configure button from ... to Configure
- Need four levels of reporting
Debug
Information
Warning
Error
All errors and warnings are also information
- Added menu items to fire off template choice. Took 30 seconds
- Added Update once then exit checkbox. Took five mins
- Thinking about layout of scheduled writes. Where to put time boxes?
- In their own dialog, for now
- 19:00 1.0 hrs
14/jan/03
- 00:30 Made the main window bigger, to make room for long filenames
Also, because those fields weren't leaving room for the output boxes
- Once again, lotsa tweaking to get that to look good
- 01:00 While on the phone, put email sig and html output into a splitter. Took 15 mins
- 1.0 hrs
- 02:00 Gonna do some mindless string substitutions
- 03:30 Distracted while doing that. Added date/time subs
- Need to add multiple hits on a given string
13/jan/03
- 16:30 Figure out how to handle internal representation of EOL when reading
Try opening binary. Regex should be able to handle that?
- Need to spell out error conditions better. Consolidate error messages
- Taking a moment to add time substitution
- Stripped <CR>s with an incredibly ugly method. I open the file first in binary to
make sure I read it successfully. Then reopen in text mode, to strip the <CR>s. It's
brute force, but simple to code.
- 17:30 Distractions
- 20:00 Template selection
- 20:45 Went fairly quick. Getting some distractions
13/jan/03
- 04:00 Back to work
- 05:45 Success replacing strings
- 06:15 Split guts of string replacement away from selection of template file.
- Managed to make it pretty generic and easy to use. It'll be fairly trivial to add new
replacement strings as I think of them
- 06:30 Changed FTP to point to new web host
- Fixed two bugs in FTP. If it got an error during send it never disconnected.
And, I never called FTP->Shutdown() (does nothing right now, anyway)
- v2.2 Beta
- To do:
- Figure out why what we read in doesn't match file size
I think it has to do with end-of-line interpretation
- Add template input boxes
- 07:00 Tired 3.0 Hrs
12/jan/03
- 20:00 Oli finally answered and pointed out that the current WU of all machines is stored
in the WU .log file. That's where I can get the info. I should have been able to figure
that out on my own
- Gonna keep working on regex, though.
- 21:00 It looks like the only reason to use regex is ignore case?
- Distractions
- 1.0 Hrs
06/jan/03
- 17:30 Refound Setihide.rsc. Just machine names and progress, I think. Hmm, I wonder how
Seti2Html gets all that info
- I can't seem to find it. I wrote the authors of SetiHide and Seti2HTML and we'll see if
they respond. Oli (SetiHide) has been good about responding in the past.
- Therefore, gonna look for regex libraries while I wait on those replies
- Let's try hs_regex. Gonna start by using their dll as-is. Hopefully I won't have to
recompile it
- Doh! Fox has regex in it. Shoulda known. It's Fox-specific, but I'll live with that for
now. It's a small enough piece of the program that it would be easy to change later if I
wanted to
- 22:40 off for now Prolly 3.0 hrs real work, studying regex
05/JAN/03
Changed web hosts
Moved website from DataRealms to PowWeb. DataRealms was pretty good. I have no
complaints. But at the time I switched I was right at my 100 meg limit. PowWeb
was offering 250 meg for less than half the price. And two days after I switched
they changed their package autmoagically bumped me up to 500 meg.
I had a little trouble at first. FrontPage was complaining about not being able
to open a file for reading. When I moved that file it complained about the next one
alphabetically.
Decided to move work log into .plan file.
Current .plan
.plan Archive 2004 - Start of JCI
.plan Archive 2003 - MightySETIInfo
.plan Archive 2002 - MightySETIInfo
.plan Archive 2001 - Inertia/RC Sim, MightySETIInfo
.plan Archive 2000 - Inertia/RC Sim
.plan Archive 1998-1999 - Digital Chicken, Parsoft/SDOE,
beginning of Inertia/RC Sim
Please email comments, typos, errors, dead links, and any suggestions to webmaster@mightydrake.com. (Privacy statement)
Copyright © 1997-2007 Mighty Drake, Inc. All rights reserved.
Last modified: March 07, 2004