The Rants, Raves, Gripes, and Prophecies of Paul R. Potts
Contents by Category
Contents by Date
I found out today that Functional Developer, the flagship Dylan compiler and IDE, has gone open-source. That's exciting news. It even applies to all the extra libraries that Functional Objects used to sell.
Of course, it is a huge project, and it now leaves the Gwydion project in a unique bind: they now have two high-quality, advanced, and extremely large codebases to work with. The two are "compatible" only in that most of the straight Dylan code involved is at least largely portable, modulo compiler and library bugs. Some of it has already been used with the Gwydion d2c compiler. That's something. So, where to start?
I took a shot at compiling the Ravensbrook memory management codebase. This required a few tweaks to suppress warnings, but seemed to work after that. That's just the beginning, though. Functional Developer has a full-blown GUI for Windows, and an alpha-level command-line compiler for Linux. It hasn't been ported to MacOS X yet. They don't even have full build instructions for Linux yet. The MacOS X port would be a great project to work on, but it is also quite intimidating. Porting the IDE would involve a complete implementation of the DUIM libraries. That could be valuable for both compilers. And it appears that someone has done at least preliminary work on generating PowerPC instructions!
But Dylan is already fragmented within the d2c project, because of the separation between the byte-code interpreter, Mindy, and d2c. Mindy's main use these days seems to be in boostrapping d2c. There's another interpreter project, Marlais, which seems to be at least marginally active; it is a true interactive interpreter, but I'm not sure how well it works at the moment. And of course there's the buggy and abandoned Apple Dylan, which won't run in emulation under MacOS X, and is even more unstable than usual under MacOS 9. That one's out of the game, but lives on in spirit.
For the moment, I should just try to finish my somewhat derailed Dylan sample code project, and consider what I could do with a PC running the full version of Functional Developer, together with all the optional libraries, on Windows. I don't have the PC, but maybe a suitable machine will magically arrive on my doorstep. Stranger things have been happening recently. But would it allow me to do anything that would help me find a good job? Would it contribute anything useful to the Gwydion group? Or would it just distract me from my job search? I'll meditate on that and see where it leads me.What Kind of Job?
I was passed over for the Brown University instructional design position. It is probably just as well; it provided no benefits at all, and I would have needed to finish an initial set of deliverables by the end of September, with the job to conclude at the end of the year. In other words, it would require either a frantically fast move, or temporary separation from my family. I've been so stressed out about the job search and corresponding money crunch that they might consider the separation a nice bonus, though. Maybe it would do all of us some good.
It's 3 a.m. Do you know where your job is?
I promised in an earlier entry to talk about the kind of job I'm looking for. I had to answer this question recently for someone who thought I might be a fit somewhere in his organization, but didn't have a specific posting to refer me to. So here is what I told him.
Something that is implicit in my resume, I think, is that I really value constant learning and mixing heads-down development with writing, training, and design. My dream job used to be DTS (Developer Technical Services) in the Newton group, where I would have a chance to write sample code and help outside developers get their code working, which might include writing library code for them, isolating bugs, etc. That combined the tech part with interaction with other tech people. It doesn't sound like your team will necessarily be supporting other developers, but if there was some equivalent, that would probably be the best of all worlds for me.
That said, I also like working on challenging low-level coding projects. I like to sink my teeth into code, I'm willing and able to do maintenance work and revision of old code, and I've tended to take on the "language lawyer" role as well as writing style guides and setting up processes where there were none. I would be looking for a more senior-level job, doing at least some architecture work and supervising other developers, perhaps managing a build process. I'm comfortable managing a small group, and I like to do XP-style pair programming. I don't really want to be a project manager who doesn't also do at least some serious hands-on coding.
I like the startup environment in part because in startups and small companies I've gotten to wear many different hats and contribute to setting up a whole development culture. If I have a single heads-down assignment to work on all day every day, that job would be less satisfying for me, although I can enjoy that kind of thing for the length of a single project, especially if it is a challenging one.
It seems o me that there are really two ways I could go.
First, I could go down the ladder, to a more entry-level position, and try to acquire some more in-demand paper qualifications, such as an MCSE or some sort of Linux certification, and look for a sysadmin position or low-paying programmer position. The problem being that the low pay might not keep us afloat, and force us into bankruptcy anyway.
I could try to teach myself C# and .NET and more of the J2EE APIs and apply for a job with one of those specific requirements, although it would not result in the various years of experience that various employers are demanding these days. I also usually learn best when given a real task, not when left to my own devices to make one up.
Or, I suppose, to become buzzword-compliant, I could apply for something like this, which I came across in my job hunt yesterday:
As a volunteer software engineer for e-Brainstorm Technology, you will be a key member of a growing organization that delivers high quality, value-added Information Technology services and solutions. Successful candidates should have 1-2 years of application development full life cycle experience. J2EE, Oracle9i, ASP.Net, C#, SQL2000 skills as well as some networking experience are required. Highly self-motivated, self-directed, creative, spontaneous and attentive to details. Excellent written, verbal, and interpersonal communication skills. Ability to translate functional requirements to technical specifications. Thrive in a deadline-driven, multi-projects, fast-paced team environment. Work closely with project manager and sales engineer. Bachelor's degree in Software Engineering or Computer Science is required.
Compensation: Volunteer position with training and career growth opportunity
But that doesn't seem like such a good idea. I'm not sure how anyone with the necessary credentials could consider taking this job, and I certainly don't think this is a trend that should be encouraged. It doesn't seem to be a job posting for a non-profit; if they are delivering "value-added blah blah blah," does it make any sense that the person adding the "value" would not partake of any of that added value?
It seems to me that if I'm going to find anything, I have to be able to differentiate myself from all the people who realized in 1999 that there was money to be made in web development, and so bought themselves a copy of "Teach Yourself Web Programming in 29 Minutes." Where is a good job for someone who has been programming computers since he was ten years old, twenty-six years ago?
Up, then. To a more senior more technical, or managerial position. If there is an "up" in the current job market. And what about sideways? That is, in effect, what I was hoping to achieve with the Field School position.
Paul Graham describes the dilemma I feel quite well:
Wed, 28 Jul 2004 My Calculator and I are Feeling Obsolete
What do hackers want? Like all craftsmen, hackers like good tools. In fact, that's an understatement. Good hackers find it unbearable to use bad tools. They'll simply refuse to work on projects with the wrong infrastructure.
A couple years ago a venture capitalist friend told me about a new startup he was involved with. It sounded promising. But the next time I talked to him, he said they'd decided to build their software on Windows NT, and had just hired a very experienced NT developer to be their chief technical officer. When I heard this, I thought, these guys are doomed. One, the CTO couldn't be a first rate hacker, because to become an eminent NT developer he would have had to use NT voluntarily, multiple times, and I couldn't imagine a great hacker doing that; and two, even if he was good, he'd have a hard time hiring anyone good to work for him if the project had to be built on NT. [Footnote: They did turn out to be doomed. They shut down a few months later.]
If it is possible to make yourself into a great hacker, the way to do it may be to make the following deal with yourself: you never have to work on boring projects (unless your family will starve otherwise), and in return, you'll never allow yourself to do a half-assed job. All the great hackers I know seem to have made that deal, though perhaps none of them had any choice in the matter.
I've been cleaning out my posessions and auctioning them off in preparation for a possible move. Among the things I've gotten rid of: a Radio Shack TRS-80 Model 100, two recent TI calculators (a TI-89 and a TI-83 silver edition), a Chapman Grand Stick, a broken original Newton MessagePad, a lot of miscellaneous audio and DJ gear, several ancient Macintosh computers, years and years of Wired and Mondo 2000 magazines, all my vinyl records including some rarities such as REM's first album Chronic Town, Should Have Been Greatest Hits by the Tourists (Annie Lennox and Dave Stewart with a band before they became Eurythmics), all of Thomas Dolby's vinyl albums and EPs including the European version of The Golden Age of Wireless containing the tracks "Leipzig" and "Urges," singles and albums by some of his friends and collaborators including Lene Lovich and Adele Bertei, Torch Song's Prepare to Energize EP (used in some early Orb tracks), all my commercially-recorded VHS tapes, and hundreds of books.
Today I attempted to fix one of my oldest posessions: a Radio Shack calculator circa approximately 1982, with a green LCD screen, labeled "Radio Shack LCD Scientific." I got this for (approximately) my 15th birthday. It would have been expensive back then; perhaps $40 or more. It was a gift from my mother. I didn't know much about the scientific functions it provided, but I spent a lot of time trying to understand them anyway. I was not able to find much information about this model, save that it seems to be a re-branded Casio fx-80.
I have already repaired this unit once, when a set of leaking batteries ate up the clips in the battery compartment and I had to clean that out and re-solder the wires connecting the battery clips to the circuit board. Today I tried to put new batteries in it but could not get a peep out of it; I re-tinned the wires and soldered them to the clips again, and used a pink eraser to clean the contacts on the on/off switch; nothing. The batteries overheated and began to melt, so something is either shorting completely or acting as a resistor. The chip might be fried. In any case, it needs more help than I can give it.
I'm feeling very reluctant, though, to toss it out. The prospect fills me with a deep sadness. This calculator has never had button problems like the new HP models. The on- off switch operates with a satisfying "click." There's no contrast adjustment for the yellow-green screen; it is always right. The paint and buttons are subtly tinted to look compatible with the screen color. The buttons sit on a very readable aluminum faceplate. The case is slightly wedge-shaped, so that it angles slightly towards you as it sits on your desk. The buttons come in two different sizes, so that the grid of scientific functions don't seem to visually overwhelm the numbers and basic functions, and the scientific functions are laid out with an eye towards relative frequency of use.
I remember being attracted back then (at the age of fifteen) to the subtlety and beauty of the design, although I did not have the language of HCI and the subsequent years of experience evaluating and creating user interfaces. I guess people don't really change that much.
The fx-80, also known as the Radio Shack EC-498, is a non-programmable scientific calculator. It supports the usual transcendental functions. It does degree-minute-second calculations; it handles polar coordinates; it even does basic stats, using a separate mode and an additional set of registers, even though it only has two or three memories. The designers came up with a very clever and subtle scheme to support multiple modes of behavior and hidden functions; it is mnemonic, and so effective that I can remember pretty much how it worked, over twenty years later. I will describe the user interface on my Wiki here.
Even though it is only an 8-digit calculator with a rather limited features set, I have a strong impulse to keep this one and auction off my TI-86. If only I could get it working. The TI can no doubt do degree-minute-second calculations, stats, and polar coordinates too; I just have no idea how to find that function without rummaging in the manual. And I read the manual at one point. When I push "stat" on the TI, it throws me into a bunch of nested sub-menus. The manual is long lost. I have the option of using the PDF manual available on TI's web site, but somehow using a computer to figure out how to use a calculator seems like overkill.
I feel like the TI is an imposter, the Johnny-come-lately trying to humiliate the real calculator with its wads of RAM and menus and graphing abilities. But I'm not fooled. The antique is cool. The TI is just a hunk of rather ugly black plastic. Instead of serving as a useful calculator, it is really a slow and watered-down version of Mathematica. I own a copy of Mathematica; it is a great program, fantastically powerful. But if I wanted Mathematica, I would use Mathematica.
I will probably keep the TI, but I will miss my old calculator. I'd really like to get my hands on a functional fx-80, either marked with the Radio Shack logo or not. A whole pile of fx-82 variants followed the fx-80, but they didn't necessarily get better... just gratuitously different, and uglier. See a gallery here.
Look at Casio's calculators today, such as the FX-260 solar: they've dark gray plastic, and the same yellow and blue colors that TI uses for labeling. Nearly every key has extra labels. The subtle cueing for the inverse functions is gone: for example, the sine key now has "sin" on the key and "sin^-1" directly above it, like the TI. It embraces redundancy. Some of the original is still present, but the larding on of new features has required basic scientific functions to be demoted to shifted number keys. There is extraneous writing under the display, where it will catch your eye every time you move your eyes from the screen to the keys, and also some kind of color-coded legend describing the modes: a built-in cheat-sheet. A good design would render such a thing unnecessary, obviously. It is even uglier than the TI design. I'm sure it is much more powerful than the original, but I will miss the clean brushed-metal design of the original fx-80.
I try not to get attached to my material things. I know it all goes the way of all flesh. But sometimes it is hard. I was unhappy to have to toss out a skipping CD player from 1990 and a VCR from 1993. Ten years of service, or even twenty, doesn't seem quite enough at my age. I understand the economic reasons for planned obsolescence; I just don't like them. The calculator hasn't worn out; it is hardly even scratched. But the innards were not built to last or to repair.
Twenty years goes by pretty quickly. I hear the mechanical Curta calculators still work really well. Some of them were produced in 1947. And don't get me started on slide rules. How many of you have even held one, much less used one?
Now, a computer is obsolete in three, two, or even one year. My PowerBook G4, purchased in 2000, is on its last legs already. I've replaced various parts including the power manager board, power adapter, and built-in backup battery; it hasn't worked right since it went out of warranty. Only adding loads of RAM has kept it able to run recent OSes at all.
After my VCR and another loaner VCR both stopped working (and I did my best to fix them; I got the loaner working again for a while, but something else failed), I went on a search for another VCR. I was looking for one that would last ten years or more, like my last one. It seems that such a thing does not exist anymore: that is, no matter how much you are willing to pay, no one builds a solidly-built VCR that can be repaired.
So, I finally broke down and bought a DVD player. I tried to pick one that received good reviews. It is pretty, but it feels flimsy, and most of the features are only accessible from the remote control. Does anyone believe it will still be operating in ten years?Fri, 23 Jul 2004 Linked In
Wow, I just did a Google search on my weblog's base URL and found out that, as far as Google knows, not a single web page links to my blog! That's inspiring, it really is. On teh intarweb, no one knows I'm not a dog. Bark, bark.
For some reasons the Wiki is not getting crawled by Google: for example, I can't get any hits from keywords on my page of reviews of Terry Pratchett's Discworld novels. The blog is, though; Google probably found it through our main home page, which appears as a link on various sites that archive mail and Usenet postings.
I have reconfigured my bloxsom script so that it now shows only seven stories on the default page. This prevents the default page from getting huge. This setting is unfortunately global, though, and even applies to more specific searches: so, for example, if you select the topic "geeky," you won't see my article on the Dylan programming language; you'll only see 7 of 12, with no "more..." link and no indication that there are more articles, unless you happen to notice that the number of articles on the page doesn't match the displayed count.
Strangely, in by-month view, all the articles for that month are shown, even if there are more than seven. So the limit doesn't apply here. I've got to dig into Bloxom again. I'll probably have to find another plug-in, one that will provide a "more articles..." link when browsing by subject. I've got five plug-ins already, including two which together are needed in order to allow me to update entries after posting them, without screwing up the sort order. Does everyone who uses Blosxom have to mess with it this much? If so, what does that say about its usability?
I appreciate Blosxom's simplicity and support for plug-ins, but sn't there a saying about making things as simple as possible, but no simpler? Or, in this case, as simple as it can be while still handling the most common use cases? Being able to always reach even the oldest posts when browsing by subject seems like a desirable use case to me... but what do I know? I'm just a dog.
P.S.: I installed the "moreentries" plugin. You have to modify templates to get it working. It also disables some of the other plugins, like "archives," unless you carefully reorder them. The author of the plugin has a few choice comments about the Blosxom experience here.
In the release notes for the plugin, the author writes: author writes "This is a big ugly hack. The only entrypoint that worked for this is the filter() hook; the problem is that when filter() is called, the sort() routine hasn't run (isn't even decided on yet!), and %files contains all posts, not just the ones matching the request. Even running as filter, it has to be the last plugin to run, so that any other filtering happens before we decide the 'numbering' of the posts."
P.P.S.: OK, so "morentries" was working. But then I found out that Blosxom doesn't support conditionals in the template: that means it is difficult to customize the text that shows up when there are more entries available using a previous or next control. So I tried the "interpolate fancy" plugin. It basically worked, but I ran into problems when trying to nest conditionals. So I tried Rael's own "interpolate conditional" plugin, which is simpler. It worked, but I had to give up on nested conditionals, and also limit my conditional so they didn't extend past a single line in length (this breaks Rael's plugin). So it is all working, but the solution to "how do I do that?" is in part "change what you want to do."
It seems that perhaps the chain-of-filters model simply can't always do everything one might need. I've found arbitrary dependencies, bugs and undocumented limitations at every turn: and these are very small pieces of code. It's a bit like Linux in the early days: Linux is free only if your time doesn't cost anything. And after you add rather simple functionality, it isn't such a simple little application any more.Sat, 17 Jul 2004 Queens and Knights
I've become aware of a job opportunity in Cambridge, MA. The company offering the job want to see a programming example. They recommend solving one of two problems posted on their web site. This one looked the most interesting to me. They say:
Unless otherwise specified, you may use any language you like for the programming problem. If you send code for a problem, please include the final answer in the body of your email and please send code that actually compiles and runs, so we can test it -- no pseudo-code please. If you're submitting a program, try to make it as efficient as possible.
Queens & Knights
In 1850, Carl Friedrich Gauss and Franz Nauck showed that it is possible to place eight queens on a chessboard such that no queen attacks any other queen. The problem of enumerating the 92 different ways there are to place 8 queens in this manner has become a standard programming example, and people have shown that it can be solved using many different search techniques.
Now consider a variant of this problem: you must place an equal number of knights and queens on a chessboard such that no piece attacks any other piece. What is the maximum number of pieces you can so place on the board, and how many different ways can you do it?
I was just recently going through old papers and looking at a solution to the Knight's Tour problem I wrote for a computer science class in my sophomore year of college. The Knight's Tour asks for a "tour" in which the knight, using his unique L-shaped move, touches every square on the chessboard once and only once. My program allowed the user to specify the size of the chessboard (there are "degenerate" cases; obviously, on a 1x1 or 2x2 board the knight cannot move; on a 3x3 board the knight either starts in the center square and is stuck there, unable to move, or starts on an edge square and can quickly hit all the edges but can't get into the center).
I ran solutions up to a 10x10 board, but this was about eighteen (!) years ago, and the code was written in Pascal for the VAX 11/750. I can't remember if the 10x10 solution ever completed. The standard 8x8 board took some time, perhaps an hour or more, depending on the load on the system. My fellow students and I took great joy in all firing off our programs at once and watching the system crawl. I put in diagnostic output which would dump out an ASCII representation of the board in progress, and as you may guess, the I/O was much more expensive than the search, and so the runtime would increase by at least an order of magnitude.
We were studying recursion, but deep recursion in VAX Pascal was dicey: deep searches tended to blow up the stack. A follow-up assignment for some classes was to implement the solution using a hand-rolled stack data structure, which was considerably more efficient. I don't think my class implemented that program; we did something else with stacks. In any case the lesson taught, inadvertent or not, was that was recursion was a powerful tool for performing a brute-force search of a problem space, but "real" programs would not use it because building and unwinding the program call stack is expensive and the program is likely to run out of stack space.
Now I know that VAX Pascal probably didn't properly optimize tail recursion. I've got several other programming techniques and more expressive languages at my disposal these days. So I'm going to take on the Queens and Knights problem and see what I can come up with. I have friends that would probably try it using a genetic algorithm or a purely functional language like Clean, but I'm not quite to that point; I'm going to write it in Dylan, using the Gwydion implementation. I'll first re-implement the Knight's Tour to warm up, using a naive technique, and then see if I can start to improve the run time.
You can follow my efforts on my Wiki here.
P.S.: I have an initial Knight's Tour implemented, using a combination of iteration (to track starting positions) and recursion (to backtrack) along with a table of offsets to describe the moves. This took me about one work day, so I've certainly come a ways since 1986. The Gwydion d2c compiler is still frustratingly slow, although using a BBEdit worksheet helps; it doesn't quite have a real-time listener for writing and testing functions interactively, like Apple's Dylan did (and yes, I'm familiar with d2c's interactive mode; it is still too slow and fragile). I'd like to try this using Functional Objects Dylan, but I don't have access to a working PC at the moment, and the free version is missing some basic library functions (I believe format-out is missing, for example, unless you pay for at least the minimal console libraries package).Mon, 12 Jul 2004 The Long Hot Summer
Good afternoon, loyal reader. It is another fine day, if you call mid-80s and humid fine. It is finally starting to feel like summer, after a strangely cold June and first part of July. If the temperature gets as high above normal as it was as below normal for the last six weeks, we're going to be in a lot of trouble. Grace is entering the 3rd trimester and is not able to tolerate heat and humidity; she tends to wake up nauseated (nothing like some dry-heaving to start the day off right).
Our other big news is that I'm unemployed. I have been receiving Michigan unemployment: the first time in my life I've ever had to actually use the system. We received our first check and should get a second this week. It was considerably easier to apply and receive this benefit than I thought it would be.
I'm grateful to have it, but there is a complication, of course; it will pay us about $1,200 per month. That's very helpful. But our rent costs $1,000 per month, and we need to put about $850 towards debts each month to maintain the consolidated debt plan we set up two years ago. Then, there are the matters of food, utilities, car repairs (non-trivial at the moment), and all other expenses.
Among these other expenses are creditors hounding us for payment for my brief hospital stay last year, which we thought was covered by our insurance at the time.
It was, for some definition of "covered," which in reality meant "mostly not covered." I'm not used to this; in the past, every medical expense I have had was entirely covered, or required small co-payments.
But now we're being hounded; the creditors are threatening some kind of court action unless we pay them $5,000. Well, we don't have $5,000, so they're not going to get it -- for the time being, at least. I suppose they may be able to legally garnish my unemployment. Maybe they will put me in jail. I hear they are doing that to debtors again. I hope it is air- conditioned and they will let me write letters.
Which brings me back to the fundamental problem of unemployment. If I understand its ostensible purpose, it is supposed to pay me enough to stay afloat while I spend all my time finding a job. But of course I have, in reality, been putting a great deal of time into trying to get enough money to make ends meet in the short term. This has involved, in part, running around selling off, or trying to sell off, a lot of our possessions. We've gotten rid of all of our records, almost every bit of my remaining music gear, video tapes, and boxes and boxes of books. I've sold a few small items on eBay as well.
Those things that we can't sell, we've been donating, recycling, or just throwing away. We want to be ready to move on short notice. And of course with Grace feeling sick and tired much of the time, a great deal of my energy has gone into cooking and home-schooling. So I am feeling quite overwhelmed, and am not feeling on top of my job search.
And, this late-breaking news. Re: our debt consolidation agent, Take Charge America (formerly CCOA, Credit Counselors of America). It turns out that although we have sent them statements religiously, and paid them religiously, they have only received our last set of statements, which we had to fax multiple times. After two years, in which we assumed they were checking up on the agreements with creditors that they negotiated on our behalf, they have finally done some looking, after some serious prodding. We prodded because it did not appear that some of the creditors, such as Citibank, were acting in accordance with the agreement.
Silly me; I had thought that TCA must be using a sophisticated computer modeling tool, like... oh, I don't know... Excel... to track our progress, and was using our statements to verify that progress. Instead they apparently lost 18 months worth of statements, failed to tell us, and didn't bother to do... well, much of anything. Well, that's not quite true: they've been deducting $585 from our bank account each month, and paying it to the creditors. That's something; at least the creditors are being paid on a regular schedule. But it is less than we expected.
Anyway, we're supposed to send them our statements, for those creditors which still send us statements, quarterly. We've done that: we faxed them. Something on the other end received them. TCA claims they did not receive the faxed statements; they never verified that the creditors were complying; in fact, they didn't even tell us that one creditor was insisting on receiving $4.00 more per month before reducing the interest rate, and thus has charged us 13% interest for the last two years.
They also didn't notice that Citibank was charging us 19.9% instead of the agreed-upon 9.9%. And they haven't attempted to get MBNA, who was charging too much and eventually corrected their interest rate, to credit us per our original agreement.
In other words, it isn't enough if Citibank is caught charging twice the negotiated interest rate and made to reduce the rate; they agreed to a negotiated settlement in which we paid X at Y interest. They must recalculate and correct our balance to match what our balance would have been had they been complying with the agreement from the outset.
Because of creditor non-compliance and TCA's apathetic enforcement, they've told us that it is going to take approximately another 3.5 years, instead of two years, until we are debt-free. We thought we were at the halfway point. In other words, a 37.5% increase in the time, and thus the money, we originally planned to pay. That's more than just a rounding error.
My suspicion is that our account rep is simply losing the statements to lessen her workload, and only responding when customers are angry enough to gripe to her supervisors. It is eerily similar to the behavior of our Medicaid rep: lose the evidence. The dog ate my homework.
So we'll try to follow up aggressively; if the creditors aren't complying, and won't pay the agreed amounts, we'll write to them ourselves; if that doesn't work, we'll have TCA drop them from the agreement and inform them that they won't get paid. I'm all for personal responsibility; we want to pay our debts. But I'm not willing to pay these debts indefinitely, at whatever rate our creditors think they can get away with.
So we've got one more thing to worry about. I've got to make up spreadheets for each of nine different creditors and try to extract information from TCA; I've got to follow up on both the creditors that send us statements and those that don't.
As if unemployment, pregnancy, a mountain of 1099-MISC income upon which I can't afford to pay the taxes, and a mountain of medical bills weren't enough.
On the positive side, some of our friends and relatives have been exceedingly generous; we've gotten assistance with our utility bills (air conditioning is essential if Grace is to be functional); we've gotten help with groceries; we've even been given maternity clothes, and even a working car to help us out. That's wonderful.
Now, on to the job search. The job market does seem to be picking up, and that's good. However, what I see more of are postings like this one:
"We have the following Immediate Job Openings in our highly esteemed organization.
Six Java/J2EE consultants. Atleast three years of experience in above technologies. Required Skills: experience in Websphere and WAS is a must. Candidates who are willing to Transfer H1 will also be considered. we will give Training in hot and current technologies. Candidates should be willing to relocate any where in USA."
There's often some strange catch: either "willing to relocate to [sic] any where in USA," or they want seven years of experience and 65% travel but they only want to pay $30,000, or the requirements are so specific, mentioning a dozen acronyms I've never heard of, that I am not eligible by any stretch.
What I'm really looking for is an employer that wants a long-term relationship, not a one-night stand; in other words, I want dinner and a movie before I get screwed. I want to be an employee; I want health benefits for my family; I want a salary that will enable us to pay off our debts. It would also be nice if the job involved something I was even remotely interested in and did not involve a terrible commute. (We've seen in many of our friends what that does to a family).
At the moment we're considering moving. Grace really wants to live in New England again. I'm game if I can find a decent job and place to live. I feel like Ann Arbor no longer offers us much except some friendships.
One possibility is Providence, RI: I have applied for an instructional design job at Brown University. I have a phone interview scheduled next Monday. The job sounds potentially interesting, although there are downsides: it is temporary, leading to a possible permanent position, without benefits. We would need to try to get Grace enrolled in some kind of equivalent Medicaid program in Rhode Island. If I take that job and it doesn't lead to a permanent position, I'll be in the same position again, but with a newborn baby, although (we hope) in better financial shape.
Another possibility that caught my eye is an opening at the Field School in Washington, DC. DC is expensive but there is good public transport. I have cousins in the area who might help us move. The Field School job looks interesting because although it is a system administration job, the school's web site indicates they are open to combinations involving teaching. In other words there is a possibility I could run their computers and also teach computer programming. Unfortunately I have not yet managed to get an interview for that job, but I'm going to hound them.
I'll continue in another weblog entry and discuss a little bit more the kind of job I'm looking for. Meanwhile, wish us luck, or if you are the praying type, please pray for us.