Spent the day pounding away at the VOIP Billing project. It's getting fairly close to functional at the single-account level. Did a couple of significant refactorings during the day and am now seeing a web framework poking it's hoary head out of the contingencies.
Since I'm using BasicProperty for all of the modelling, there are all sorts of places where generic programming can be done... and that's where frameworks sneak in, refactoring their way into rules and patterns that try to be generic solutions to everything ever done.
Of course, maybe it's just my frustration that's letting them creep in. I'm astonished at just how much I was upset by writing a couple of dozen raw SQL queries for each module. Something in me just screams out when forced to sling strings about.
Even with PyTable's SQLQuery making the composition a little neater, the lack of schema introspection is driving me nuts (the lack of automatically retrieving sufficient unique keys to identify the record is also a pain).
I miss being able to say:
if record.dirty()
record.updateQuery( connection )
And just having everything figured out for me under the covers, which keys to use to identify the query, which fields need to be updated, what the table name is in the schema, whether a key-value is changing and thus requiring special handling.
No big deal for one record type, or one module, but with half a dozen modules and record types it just grates on the nerves and beckons the unwary wanderer into the depths of framework creation...
The problem being I already have a framework (heck, a plethora of them), so I can't justify spend any time building one now... I was seriously tempted about an hour ago to install Django and see if it was reasonably similar to D'Arcy and Tim's CGI stuff that I could prevail upon them to adopt it.
Ignore it all, I tell myself; march forward, I chant. Get the project done and delivered. Deadlines are looming in the rearview mirror.


Comments
2010-07-25 14:02
> and would have no Trac integ ration The trac-bzr plugin[ 1] seems to provide good integ ration between bzr and t [...]
2010-07-13 21:47
I've always been fascinated wi th the Asterisk AMI interface. So much so that I married tha t fascination with the [...]
2010-07-03 21:32
Yes, only references in dicti onaries are replaced, so hold ing references in lists, tuple s, etceteras keeps them alive.
2010-07-03 11:18
They hold references to remove and install?
2010-06-24 08:34
There's higher-level objects w hich are tracking what is repl aced (the actual Mock objects) . They hold references [...]
2010-06-24 08:23
I haven't tried it, but it see ms to me like this approach ha s one fundamental problem: If you replace all refs o [...]
2010-06-24 08:22
That's the "magic" that made m e go "ooh shiny"
2010-06-24 06:03
That's even more evil than the mock patch decorator...
2010-06-06 18:33
blush Oh.
2010-06-06 11:07
That's what the module does (a utomatically), but on a per-te st-run basis, and only for the process being tested (i [...]
2010-06-06 02:43
Maybe I'm missing something im portant here, but why not just write small scripts to mimic whatever dangerous utili [...]
2010-06-05 15:17
I thought about stubbing out t he python call to the process in the current process, but I want something which stu [...]
2010-06-05 14:47
Hmm... if Mock isn't flexibl e enough to handle mocking pro cesses adequately then I'd lik e to know how it could b [...]
2010-05-19 10:27
Hey, maybe it's a stupid new bie question, but where and ho w exactly should the patching of the core take place? [...]
2010-05-04 14:36
I used Qemu and VirtualBox pre tty extensively back when I wa s working for the OLPC, but mo st of the stuff we were [...]