| Work Life | I'm a Programmer/Analyst for a local $1B bank. The programming section of our IT department is me and my manager. I spend a lot of my time with several flavors of SQL. I'm also asked to do things with vbscript, javascript, .NET. |
I heard a couple of commercials on podcasts of radio shows over the last two days that each made me run screaming to my Information Security Officer. The scariest was GoToMyPC dot com which lets you go to their site to remote control your PC from anywhere. Similar was GoToMeeting dot com which lets you host net meetings. Both sites are now blocked by our "big brother" web control software.
My boss lined up some in-house training on programming an application we have whose object model is exposed internally through a slightly proprietary version of JavaScript. The training starts next week, but we already have the materials here, so I decided to take a look at the manual.
So, look, we have a 200 page manual that proposes to teach folks who have "a familiarity with Windows basics, such as choosing menu items and using a mouse" the "major features of JavaScript with [the application]." I realize that introducing programming concepts, a language, and it's application to a specific package doesn't leave a lot of room for theory. Still, reading this sentence at the beginning of the book hurt my feelings:
In Object Oriented Programming (OOP), code blocks are called objects.
This smacks of reframing to a lower complexity. I'm choosing to believe that the authors know this and are just working within their constraints. This approach allows me to maintain the level of respect necessary to give credence enough to their words to keep reading. Nonetheless, this choice costs me and makes my internal construct of their position of authority (really just an instance of the TechnicalWriter object with the default properties here at the beginning of the book) a little shakier. So they start off in the negative. They owe me. Better be some large sets of verifiable data coming soon.
I stayed up too long talking to my coach last night. Love ya, man.
A friend of mine has a long record of loyalty. At least that's one way that you could read the fact that she has never left a job before the business closed down. Another way might be to say that she is a harbinger of doom. I prefer the former.
She started working at an international communications company about four or five years ago. This seemed like a challenge, even for her. So far, though, she has nearly succeeded in lasting to the end of her department's lifespan (or read the other way: closing down her department).
Recently, the boss that was beloved of her group retired. The guy that came in was the level of slime I have previously only read about. This guy takes classic middle manager faux-pas to new lows. I guess that I've lead a sheltered career. No doubt folks in large corporations see this kind of behavior constantly.
What evidence am I basing this harsh judgment upon? An anecdote and a memo. Here's the anecdote: My friend had only met this new guy once, in an informal business lunch setting. The first day on the job he walks into her office, props his feet up on her desk, and tells her that he's removing a group of her responsibilites.
As to the memo, if it weren't real it would almost be a thing of beauty. There's nothing quite like being condescended to by poor grammar. But even if we allow for the obvious fact that English is not this guy's first language, we still have to wonder if Human is his first race. He sent this note to all his new reports on his first day, before getting to know them or even meeting some of them. It is so insulting and self-aggrandizing that I figure he would be right at home as a courtier in a Rennaisance-era royal court. I have obscured a personal name (L**** S*****), the name of the company (**C), and an identifiable project (**** ****). Otherwise, this is exactly what he sent.
I came up with a clever little solution to a problem at work today. I'm sure that others have used this idea before, but I arrived at it independently and am perhaps disproportionately proud of it. I'm so intent on bragging about it that I promise that even when this gets a little technical you'll be able to follow it, so hang with me.
I got a call from the SVP in charge of loan support today asking me to help them with labels. Each day they create file folders for new loans that have been booked. They have a MS Word document into which they type the names and loan numbers to print labels for the folders. They usually put two labels on the folder and one on the check-out card for each consumer loan. For commercial loans they normally require six labels (I'm guessing that there are two folders).
Continue reading "Making Copies"It occurred to me to wonder whether abstract classes could extend abstract classes and whether interfaces could extend interfaces.
In short, yes.
Continue reading "Extending Interfaces and Abstract Classes"As promised yesterday, I converted the Java code from the book to C#, just to see what I would have to change. There were very few changes, really, but they each taught me a little something.
Continue reading "Interfaces and Abstract Classes Further Differentiated"I read the first chapter of Head First Design Patterns over lunch today. I guess that made lunch run long, but I figure that when I�??m studying programming it doesn�??t really matter whether I�??m in my cube or somewhere else as far as my employer�??s commitment to my ongoing compensation is concerned. As long as I�??m reachable (the mobile phone is on), then somewhere I can see the sky and get free refills of soda is better in every way.
Yesterday I said I could give a novice's description of the difference between an interface and an abstract class. Here goes: An interface is not allowed to have any code. Hmm, that's not quite all of it. Let's see... You can't instantiate either one. That's not a difference is it? In Visual Basic .NET the key word for making an abstract class is MustInherit. So there's the (mostly semantic?) difference that an interface must be implemented, but an abstract class must be inherited from, that is, extended. Alright, I can see that I'm going to have to come back to this.
Continue reading "This Isn't Quite Normal(ization)"A project with no business-side interested stakeholders has been mouldering in our test environment for better than half a year. When the request went out for internal testers to "play with it" every one of them were "too busy with other projects." So it sat. The contractor who built it for a fixed price considers it a done deal. He had some troubles with some of the backside programming and he subcontracted that work. Since he ate the cost of that work he had no incentive to push for a fully proven project. Since we didn't test it we didn't push him.
So half a year later the CIO, who believes no news is good news, asks me to give him an estimate of the effort it would take me to extend the functionality of the program. Apparently he has promised this program as our contribution to some joint venture. Prior to this point I have not been involved with this project at all. That's changed.
Continue reading "Decoding for Vocabulary and Concepts"Unlike Marques I can't get them rolling in any sensible way. In plain language, the following will read like random spew, so I understand if you blow it off.
In Phillip Pullman's alternate world where the action in The Golden Compass takes place, he refers to physics (particularly the harder bits) as "Experimental Theology." In Neal Stephenson's Baroque Cycle he reminds us that in its infancy we called science "Natural Philosophy." It seems we lose our way when we take the meta out of metaphysics. The science of unconsidered consequences is fodder for a great deal of speculative fiction and real world pollution.
Today I read the first couple of chapters of the Larman book and the first chapter of Object Thinking by David West. I feel like I stumbled into a seminary. The theology is all so new to me that I can't yet tell if people are agreeing or arguing.
The thing with religion is that it works with you where you are. The thing that is good for you to do as an acolyte may be hateful heresy when you become more advanced. Of course there's no lack of people to condemn you in either state.
Work out your design with fear and trembling. Phillipe Kruchten gives fair warning, "Programming is fun, but developing quality software is hard." These guys all emphasize the importance of thinking.
A man I love says he sees the Old Testament as a record of God's progressive revelation to a people who were growing more complex. In the garden was simple community with one simple rule. Next came redemption from slavery and ten simple rules. In our foolishness we immediately expanded these to hundreds of helpfully specific rules. God reframes the problem again and again, trying to restore communion.
In the beginning was the monolithic program. It did not scale well. Then came "datacentrism, software engineering, object orientation, patterns, and extreme programming." In each case the people tried to take the new idea and create a monolith. It's a complexity issue.
David West says, "Software development is a social activity." As a solitary programmer I have to reframe this or admit defeat. Here's the grace: coding is the smallest part of agile development, any good object thinker will do. I may be the only object programmer in the bank, but there are several other smart people who work in other departments. The trick is in convincing them to help me. Perhaps I will be buying some lunches.
I am so new to this. These sound like great ideas. They look simple in the examples. It is a great kindness that they talk about how hard the work is.
You can't avoid the feelings of looking at religious inscriptions when you see the Agile Manifesto values and principles. As one outside that faith, "Simplicity--the art of maximizing the amount of work not done--is essential," seems very Zen.
It is equally hard not to be mindful of Jaques when you read the principle, "The best architectures, requirements, and designs emerge from self-organizing teams." Or more cynically when you read, "Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale."
As usual I don't know where I'm going with this. It's just that I feel like I finished my first class, audited a bit of the second, and then walked up the hall about three or four doors and found instruction that makes perfect sense until you try to do it yourself. It really is hard.
On the plus side, it turns out that a liberal arts education may have prepared me to be a better programmer.
I was chasing rabbits a little on Thursday and ran across a piece of software called Community Server. It was moderately compelling because I'd previously spent some time looking for .NET blogging software, but I didn't have any current need and didn't dwell on it.
On Friday I was in a meeting of folks who are tasked with revising our new deposit account opening process. As we talked about gathering data about the existing process and reconvening to discuss it I thought how useful the forums might be. The folks who are supposed to get this info are separated by location and by division.
I'm setting up a basic forum and adding the six users tomorrow. I hope we get some good use out of it in the coming week.
I'd go into more detail, but I've been messing with it too long and I didn't save time to write about it. The pillows are calling.
I poked my head in the CIO's office on Friday and asked if I could buy some books. He told me "Sure." Then, "Don't go crazy." I assured him that I wouldn't. I'm pretty conservative about what I buy. In fact, since I hadn't had the go ahead to get books, I'd just been going to the bookstore and reading there.
Tonight I bought a couple of books. The first is a book I already had. Actually it isn't. I had the first edition, and this is the third. Unlike many revised editions of computer books which vary only where new features have been introduced to the specific software, this is practically a whole new book. This book though, is not about a specific software. Craig Larman's Applying UML and Patterns An Introduction to Object-Oriented Analysis and Design and Iterative Development is for folks involved in more than single environment coding. "Analysis and design, defining how to solve the problem, what to program, capturing this design in ways that are easy to communicate, to review, to implement, and to evolve is what lies at the core of this book."
The other book I bought is the antithesis in style of the first. Head First Design Patterns is full of visual interest so as to avoid the soporific effects of books such as Larman's. This is a well reviewed intro to the major design patterns made famous by the gang of four (GoF) in 1994's Design Patterns. Design Patterns were introduced originally in architecture, but have been greedily adapted to other construction metaphors.
The only annoying thing about these two books is that they both use Java examples. Now Java's not that far from C# (which I read as "see pound" until I finally cracked a cover) but I'm barely a newbie to that language. In fact I really want a good C# book too, but I haven't done the research yet to find an appropriate one (or two). I'm beginning to be able to put names to the things I don't know, but there's lots of reading ahead.
I got the chargeoff recovery system in place last week and even added a little extra functionality today. It is ready for them to use, but their supervisor is going to have to crack the whip a little for them to start using it.
Meanwhile we got the functional specs for the loan app back from the consultants all done up with use cases. I'm sorry, but this seems to be as much work again as just building the app. I'm not a born documenter. I meant to work on documenting the recovery system today but quickly got bored and started working on a small project for marketing that I should be able to finish tomorrow.
Here at the end of the week I can only claim to have migrated the data to my new database. All the interfaces will have to be built next week for the chargeoff/recovery application.
I got to spend the day working on the project that I had hoped to have nearly done by now. I had set a completion date by the end of this month. Since I got caught up in the Loan App thing for three or four weeks instead of the one originally planned, this project got pushed. I want to get enough done tomorrow to phase it in instead of making a big leap over and still meet my original deadline. I've got a lot of little bits in place. We'll see.
Well, I did no better tracking expenses this year than last year. This is due tomorrow. I hope that I find that I have more money this year than I did last year. I am at least richer in my written record.
It's a lot easier to count money than to count spiritual wealth. Just like tithing is one of the easiest "commandments" to keep. When it's reduced to numbers there is less personal cost. There are some spiritual investments to be made and revenue to be reaped this season. We've got some growing times ahead.
Update - 11:45pm
After running the numbers, I'm reporting a net worth this year nearly twelve percent higher than what I reported last year.
I've got a set of Transcender practice tests for the ASP.NET VB certification. I'm going to give my books a look through during the next week and then take the first one to see just how much I'd need to study to pass. I'm getting to the place where the people that I want to hire me do not have the ability to assess my skills. They therefore rely on certifications to prove those skills exist.
I'm telling you this because, as absent as I've been from writing meaningful stuff here lately, you ain't seen nothing yet. Nothing is on the way. Closer to nothing anyway. I mean, you think this post doesn't really have anything to say, but, well, you get the idea.
I woke up this morning at four and knew that I would not be able to fall to sleep again. Or if I did it would be just in time to get about fifteen minutes into my cycle before a rough awakening. So, I got up and checked email and read blogs and other web stuff. I got a shower just before Lex got up and was at work at twenty to seven.
I've got this project that I'm doing everything but the coding on. So, today I did some coding. The final product is a web application and I wanted the folks I was working with to have a feel for how it will look. I wrote a demo of the first few web pages complete with some dynamic controls. I chose some horrifically bad implementation techniques that are more quick and dirty that I would usually ever consider.
I quit around twenty to six this evening when I got a call from the men who permit me to join in their fellowship. Before I left work I showed the results of my efforts to my MOR. I have to admit that it was mostly to rub his nose in the fact that he's not paying me enough. Funny how the moral high ground rarely impacts the paychecks.
The process improvement committee declared that its "work here was done" in regards to the loan application process redesign. All that's left is implementation, so the core group is looking for new vistas. The visionaries need not bother about whether their ideas make sense or are actually possible. External consultants don't, why should we?
Of course some of us have day jobs that are necessarily part of the implementation. The core group member leading the web application chunk of the new process was not one of them. She's in deposit operations. There came a point yesterday when someone pointed out that it didn't make sense to continue to be a drain on her time. Unfortunately, there didn't seem to be anyone from the loan side with time or understanding necessary to take the reins.
I put myself forward. I'm going to be the handoff guy after the consulting group develops the application. I want to be in on as much of the design and construction as I can so as to be better prepared to handle future maintenance. I can also anticipate the kinds of questions the developers will have and can push until I uncover sufficient answers.
So, I'm really busy. Probably through the end of February. Luckily, the week long training class starting January thirty-first I had signed up for didn't make. The training company offered to pay for my plane and hotel to take the class in Phoenix the following week. I declined in favor of seeing if the next local run of the class would make in April.
The good news is that a lot of folks reacted favorably to my self appointment. Of course the lady whose burden I'm lifting was grateful, but the folks I'll be working with were happy, too. Someone said they were pleased because, "He thinks like us." That is, the clients see me as understanding and sympathetic. High praise for an I.T. guy.
One of my current projects at work is the creation of a new system to increase efficiency in the overdraft department by automating parts of the chargeoff and recovery system. Chargeoffs are when we give up on people repaying their account balances. Recoveries are when they surprise us by actually sending us money.
There's a fair amount of retyping and manual evaluation that I hope to reduce. In addition, our audit department has notified the operations group that we can reduce our loss accumulation if we code unrecovered fees separately from hard losses. This is accounting magic as far as I'm concerned, but it will be challenging to implement.
Oh, so that's why I was doing that project. Glad to be useful.The definition of an applicant has been a dilemma for employers. Over the years the US Equal Employment Opportunity Commission has tried to define who is considered an applicant. The definition can be important in the record keeping requirements for federal contractors who must annually file an affirmative action plan with the Department of Labor. The definition also comes into play when there are disputes regarding unfair hiring practices.
In 2004, the EEOC along with the assistance of other agencies such as the OFCCP, published guidelines to clarify for employers the definition of an applicant. These guidelines stress the need for employers to develop detailed written procedures for jobseekers to follow so that the jobseekers qualify as "applicants" under the definition. As other employers are doing or have already done so, we have written procedures for the application process that will be posted on our website, on external internet job boards, and in the HR area.
As a result of these actions by the Department of Labor, beginning in 2005 Human Resources will require all those seeking to apply for a position with the bank to complete a full employment application (not just submit a resume). Applications will only be accepted for current open positions and we will not accept unsolicited resumes.
In addition, our employment application is now available to be completed on-line and automatically sent via email to Human Resources. A huge thank you goes to [jmmj] in the IT Department who spent many hours developing this for us!
For some reason they wanted to add titles and related position information to our internal web phonebook. They gave me a spreadsheet with the information on it and asked me to make it happen. I got around to it today.
I went to replace the dynamic SQL with stored procedures and found that it is difficult to pass a sort parameter to a proc. When I googled to discover a way to do it, I read a blog entry that said stored procedures were bad which was something I'd never heard before. There is some sense there but I will have to think through the implications, particularly regarding SQL injection attacks.
The Employment Application went live today and garnered it's first user. Whee.
My employment application is nearing prime time. If you know where I work you can go to our home page and add /EmploymentApp/ to the address to check it out now.
I got the .NET framework installed on our internet servers today in preparation for deploying the employment application. I started to put some security measures in place and then realized that things were going to be different here. Since the internet boxes are in the DMZ I'm going to have think carefully about how I talk to the SQL Server on the inside domain.
The apps I've built on the inside use a service account I've created in the <identity> tags in the web.config file. I don't know if I should create that as a local account on these external boxes or if I need to set up a user on the SQL server from the local domains of the web boxes.
Hmmm... guess I'll just have to play with it and see what works.
The process improvement committee has come up with it's first project plan. It'll be interesting to see if it actually is worth anything. Our best hopes lie in it driving away fewer potential customers. Meanwhile it's going to cost quite a bit up front.
There are reasons this was the first project that are pretty political. In some ways the driver's purpose may ruin the group's future. Things may work out okay, though. My pessimism has proven wrong before.
Ack. Trying to get the fool employment application to render the same way in IE and Firefox is making me nuts. I'm going to throw in the towel soon and just start using tables.
I did get the user control for prior job info to replicate dynamically. English: You can click on an "Add Job Info" button and the web page will show another set of input fields for prior employment history. This way you can list as many or as few as necessary.
Remember that project I decided to start working on two days ago? Well, the client called out of the blue this morning asking for something to see. It's a web project, so I sent her some links. I included the caveat that these were just rough layouts and were entirely non-functional.
Her response, "These look great! Publish them so we can start using them."
Um. I only had the first of five pages of layouts done. None of the code. None. Nada. No backend database. No links between pages. Nothing. I thought that I conveyed that with "entirely non-functional." Apparently what I do is too arcane.
I replied. "I'm typing as fast as I can."
I've kind of been out of sync with work. I spent some time today uncovering my desk and getting the folders for my current projects front and center. I actually began to work on a web page for the employment application. I'm trying to work inside the constraints of strict XHTML and CSS. This will require some under the covers work since I'm using ASP.NET. I've been doing some reading on the subject and have more to do before I can work it all out.
All the webmaster geeks spout this "separation of presentation and content" propaganda: "Tables are for tabular data, not for layout!"
I like trying to be compliant with possible future standards as much as the next guy. But how the heck can I emulate a table with div tags?
Specifically, I want to emulate the behavior of a 2x2 table that is centered on the page with left aligned text. In my right hand column are labels -- each a different length -- and in my left hand column are two pairs of radio buttons -- also of varying lengths. I want the overall block to stay centered no matter what text size the user picks. I want the first radio button in the lower cell to be directly under the first radio button in the upper cell. I don't want to use a fixed-width font. I want it to act like a table.
Anybody got Strict code that works in IE and FireFox to do this?
My friend who works for a large communications company sent an email asking if anyone knew of "any IT positions that need to be filled." She wrote, "One of my friends here is losing his job. He can program, script, anything. He's very analytical.
"What they did here is take the very best we had and lump them in their own group. [Then] they decided to cut that group... Go figure. Mark is the guy I go to when I have problems I can't figure out and I really hate to see him lose his job. He's like a microsoft knowledge base in a human body. It sucks because I can think of quite a few other people over here that don't know a computer from a rock and several are on the server team."
Now they're asking her group to document how they spend their every minute. She suspects this is all prelude to outsourcing. Welcome to the revolution, comrade.
Yesterday the group met. You know, the one that's supposed to harvest the process improvement ideas from the rest of the bankers and then recommend new plans of action. The one that's supposed to act as an advisory group that facilitates the cross-workgroup process improvements. The one that doesn't want to be called anything like "process improvement committee" since that carries connotations of retooling and reassignment.
After about an hour's debate the group has tentatively decided to use the moniker "WINnovation Partners." At the last meeting I suggested "Corporate Capability Advisors." When we were brainstorming for words or ideas to include in the group's mission statement before the naming session, I threw out "capability" and "maturity." No one seemed to comprehend either of these terms, so I searched my brain for synonyms. This time I offered "Corporate Innovation Partners." I'd love for the group to have been referred to as CIP, for reasons obvious to the Manasclerk readers among you.
Joe the Vice Chairman joined our group. He's a welcome addition. His contribution during the mission statement brainstorming: "it all comes down to revenue and expense. Customer focus, efficiencies, all those things are a level or two away from the point." His suggestion for the name of the group: "How about the Slash and Burn Committee?" Joe: 2 Bullshit: 0
Continue reading "The Last Pre-Meeting?"Yesterday I got the authentication changes to the smaller web app completed. I thought that I had it done before lunch. When I came back from lunch I discovered that not only did it authenticate with correct passwords, but also with incorrect, even blank, passwords.
It took me about two hours to track down the problem.
Continue reading "Case and the Uninitialized String"I've been working on a couple of our intranet apps which were built by a couple different vendors. Specifically, the authentication and authorization portions which operate by querying unencrypted databases. These are two more sets of logins and passwords for our users to remember. After I'm done the applications will be accessed using network credentials.
I wrote a little webservice to login to Active Directory (AD) and get a few details about the account on success. You pass a SOAP envelope with the login ID and password and receive one back with first name, last name, email address and group membership. There are a couple issues with this (1 Not SSL so Network credentials are sent in the clear. We could mitigate this by making the application subwebs SSL and it's intranet only as it is. 2 I use a CDATA wrapper on the password, so passing "]]>" would cause an error.), but it's better than it was.
The reason I put the webservice together was that I didn't know how to do the AD login from vbscript and COM, but I had good documentation and practice doing it with .NET. It was not hard to figure out how to "POST" HTTP SOAP requests and read the responses from vbscript. I didn't want to rewrite the intranet applications, just interpose my own authentication code.
Oddly this was much easier in the larger app. The main reason is that accounts are entirely created and maintained by administrators.
The smaller application let users create their own accounts. This led to people creating multiple accounts. Worse, if you forgot your password, you had only to click a link on the login page and a window would pop up to tell the password to you. The registration page has a note saying that the IT department recommends that you use a unique password for this application and not one you're using elsewhere. I'm sure that every user took that to heart.
Anyway, it turns out that this smaller app is requiring me to recode stuff on practically every user page. I shouldn't have to touch the data entry pages, but when I looked at them I found no authorization checking code. Since the user ID was passed to the database from a cookie, the fact that the page could be accessed without checking for the cookie seemed like something that I ought to fix.
We had what turned out to be the third pre-meeting of the Process Improvement Committee this morning. Six weeks ago was the kickoff meeting. Three weeks ago we received some training. At today's meeting we discovered a bit about each other's personalities and set a regular meeting time.
We will be meeting on the first and third Thursdays of months ending in either l, e, t, h, y, or r. Our first agenda will consist of deciding on a name and writing a mission statement.
You thought that the Process Improvement Committee had a name? Silly you. Apparently "process improvement" is culturally associated with "corporate restructuring" and thus "headcount reduction." Our fearless leader suggested that we come up with a name that was descriptive of our function while being devoid of frightening connotations. I probably should have saved it, but I went ahead and offered "Corporate Capability Advisors." I was encouraged by the fact that the silence that greeted this suggestion appeared to come from folks actually digesting the idea, rather than just trying to leave enough space that they wouldn't appear to be associated with me by speaking in too quick succession.
Mom emailed me about the new policy and faulty crappy computer application for same which has folks at her office feeling even further devalued.
I'm afraid I'm playing "compare the scars" second hand here, so I'm posting my response so you can play along.
Manasclerk frequently references articles about why IT projects so frequently fail or get enormously buggy. There's a lot of material on the subject as you might well imagine.
Of course, you're just complaining about the technological implementation so you don't weep openly about the policy behind it.
Either way, you have to point the finger (your choice which) at management.
Let me tell you how bad it is getting at my wife's school.
The teachers have been instructed not to deal with discipline issues themselves. Students are not to be sent to the hall, they are to be sent to the office. And the teachers are to be satisfied with whatever actions are taken by the disciplinarians.
Can you imagine the small minds that came up with this one? Teachers officially have no authority in their classroom.
This from the same administration that has offloaded a number of their responsibilities on to the teachers, asked them to give up half of their conference periods each day for extra duty, and invented new requirements such as "teachers shall make five positive parent phone calls each week."
The only part of her job that doesn't make my wife ill is when she's teaching the kids. I wonder what the alternatives are. If she got into the district to which we pay property taxes they would likely place her at Gang Central High, rather than the nearby Well Reputed High.
The new high school in her district opens next year and she has enough seniority that she'll probably have the option of going. She'll have to weigh the benefits of a modern classroom against the cost of a considerably longer drive. And the administration will be from the same pool anyway.
How the heck comparing test scores will help the public overseers to do anything about the state of education is lost on me.
I had an interesting conversation with my real boss. She used to be my manager once removed, but both of us have moved and she's now my boss's peer. Nevertheless, I take most of my issues to her. I'm trying to remind myself to include my boss more often. He's not without value, I just value her more on a lot of subjects. She's not on the Process Improvement Committee and she's got a history of being honest with me about management issues. When the new performance reviews were presented to us as being more objective I asked if that meant that they didn't trust their managers to make good subjective evaluations. She's the one who told me that was exactly so.
I told her what I was thinking about the PIC. She caught on very quickly. Her advice was very similar to manasclerk's. Ask these questions, but gently and nicely. Play the ingenue to put the thoughts in the other folks' heads. They'll think it through.
She knows the people and gave me some more information. For instance, the CFO, who is the lead executive sponsor, will not allow the project to fail. She expressed a few doubts about whether we had the right people on the committee and noted, as a few have, that finance is heavily represented and retail not at all.
She also suggested that I not despair, for cultural change may be just what this committee is here to do. Apparently the bank has made a number of organizational changes in the past in response to the external consultants' recommendataions. One of the latest was a classic SNAFU.
The IT department had just been overhauled when they switched to the new consulting firm, so IT was left out of the analysis. Then they implemented changes and told IT only as people were moving. When access times were increased and zany remote control solutions had to be slapped in place everyone acted surprised. You can't leave out IT or Audit, ever.
My problem is that I'm just the sort of person you'd love to play poker with. Subtle as a sledgehammer. Suddenly I'm thick in the political fray.
She also admitted that the only way to make money at the bank was to come in at a high level. This explains why she's left and returned three times. I should make clear plans about what to get out of this experience and then leave the bank, burning no bridges.
It turns out that the vendor for the chargeoff system was just quoting us a first installment price. After they added in all the things we wanted from them the price came to $12,000. So my mere existence was only worth three grand.
The upshot is that I will have to actually create the new system for them. Bob mentioned the possibility that I would create it in VB.NET. I'm not leaning that way until I have some success with creating and distributing Crystal reports. There's no reason I couldn't have an Access front end to a SQL Server database. I haven't done it, but I have to figure that the learning curve there is shorter and steeper.
I spent today in training. The folks were teaching some process improvement vocabulary, tools, and methodology. There was some value in what they taught, but I felt it missed some of the larger issues. They warned about people holding out on us, but didn't have a lot of good recommendations about how to get at implicit knowledge. They pushed the Deming wheel and "continuous improvement." I wish that we might have made the point that we should continuously look for new process improvement projects, but that each project should be clearly delineated.
My fears for the failure of this whole venture are only balanced by the competence of the people in the group. I have had first hand dealings with most of the people in the core group and they are some of the finest folks that I have met in the bank. If I were to guess, I'd say that they range from high Strat III to low Strat V.
Speaking of people I respect and admire...
I must say that it is a wonderful thing to meet with men over bread and beverages and share freely. To speak of things great and small with equal enthusiasm. Praise God for the fellowship of the saints.
What an unparalleled wonder to be safe in sharing half formed thoughts and failings. Bragging and self debasing with freedom comfort and joy.
All right, I'm riding a little high. The beer was good. But more importantly I took my own advice and invested a little. It takes some to make some. "To prime the pump you must have faith and believe, you've got to give of yourself before you're worthy to receive." (Desert Pete) There are some spiritual earthly rewards.
"You saved the bank ten thousand dollars." My boss went on to explain how merely being willing to do my job had an easily measurable result.
Five or six years ago a consultant created an application for the overdraft department to track payments and chargeoffs. While I was still in a tech support position I was called on to fix it when it was used outside of it's design parameters. At the time I suggested that we replace this poorly designed Access application with something that better fit the way the people worked. Admittedly, I was pitching for work like I wanted since I hated my assigned position.
The overdraft manager finally started the ball rolling to get the app replaced. The vendor of the chargeoff system that our loan department is using put together a show and tell on how they could adapt their product for use with deposits. They gave us a quote of $15,000 to do the work.
Bob and I talked it over and decided that we could probably build a scratch system in about six weeks. "We" mostly meaning "me" in this case. It was a project I wanted when I had only daily work, but with more interesting things on my plate I wasn't too jazzed about it. Still, I professed willingness to take it on.
When the vendor was informed that we thought we could do the work in house for a lot less than they wanted, they dropped their quote to $5,000.
It's not a done deal yet, but in any event, my mere employment has saved the bank at least $10,000 in this single instance.
I've been messing with Index Server for IIS today. For some reason on the development server it ignores all the FrontPage extension directories (/_vti_cnf). On the production server it indexes them.
I googled.
I searched support.microsoft.com.
I'm not getting anywhere with this.
I want someone to come fix it. I don't want to be an administrator.
It turned out not to be that hard when I took the right approach. The rate information was stored in packed number format in the large character field. I ran my query on the AS/400 to avoid the EBCDIC to ASCII translation and was able to substring out what I needed.
Trying to do a little homegrown middleware, I want to make a single entry point for our rates. Right now the Assets and Liabilities Committee (ALCo) determines what we will pay for deposit products. And a couple other guys determine our loan rates based on various competitive research.
The process in place was that a secretary gathered this information and put it in a spreadsheet that is saved on a share on the intranet web server. Then she opens an active server page to read the spreadsheet and put the data in a SQL Server table. This table is the source for the internet and intranet versions of the rates. She also emails the spreadsheet to retail administration for distribution to the branches, and to central operations where the new rates are entered in the core system.
I did some research and found that the rates are all entered into the core system. It seemed natural to me that we should restructure the process to have the core system updated first with automated processes to flow the changes to the various presentation points.
The problem with this plan is that the table that stores the rate information on core is not human readable. It doesn't have separate fields for each data item. Rather there is one big field which is in some native OS/400 format that is decrypted programatically.
Maybe this is EBCDIC packed decimal or something. I don't really know. I don't know anybody who might be able to help me figure this out. But I don't want to have to use some kind of 5250 screen scraping emulator either.
The Process Improvement Commitee met for the first time today. So far we've managed to begin a debate about the value of a team studying processes versus creating a culture where innovations "bubble up" from the worker bees. I think that the core committee members are generally in the first camp while the CEO is in the second.
The core group is made up of smart folks. These are the people who tend to add value and innovate and work hard. So of course they're the people who you go back and ask more of. It's like fundraising at church where the same people who give regularly are the ones you rely on to send kids to camp or pay for new buildings or teach sunday school or wash dishes or whack weeds or whatever.
Yeah, these are the folks who want to see the group succeed. But you don't want to burn them out, either. They're too valuable to overuse.
I cranked out the rest of the little web app for the tablet demonstration on Friday. It's basically an electronic sign in sheet. The customer is presented with a welcome screen containing about ten options for them to choose from to say why they've come in. Most of the options take them to a sign in screen where they can enter their name, which when submitted will put an email in the sales associates shared inbox showing the name and reason for the customer's visit. If they choose "Open New Account" it will further query the customer to learn if they are a new customer. If they are, it will present them with a screen for them to submit their personal info after emailing their name and purpose into the queue. The personal info screen is also sent as an email.
It's quick and dirty. I don't do the sort of things I would in production. Most notably, you can click the "back" button and see what previous users have entered in the identification form. It's strictly to get ideas flowing in the heads of the retail chiefs, so it doesn't need to be perfect. As far as shark fins, well, the whole bloody idea seems like one to me, so I'm done with it for now.
Remember last Friday when my priorities got changed? This morning I got called in and asked about the progress on the Tablet PC stuff. Yeah, the stuff he told me not to spend any time on. A little more weight on the "flighty" side of the argument.
It turns out, though, that I'll get away with just developing a plain old little web app. The tablet's built in functionality was enough for the purposes of the "proof of concept." And I found out after lunch that the timeline extends to next Friday, rather than to say, this afternoon like the CIO made it sound this morning.
My boss gave me some advice on application development a few months back. I think it applies to other deliverables as well, you web developers and grant proposal writers let me know what you think.
Customers often feel that they need to give input long after you want it. The idea then is to give them something obvious and easily remedied so that they don't wrack their brains for some fanciful and difficult change to your otherwise perfectly acceptable product. The example my boss gave was a web developer he knew who would put a shark fin on the web pages he developed. This usually solicited the comment, "It looks like it will be just great if you can get rid of that shark fin."
This feels like a Dilbert concept. Implicit is the idea that we, the authors, are smarter than our fruity and untrustworthy editors/bosses/clients. Arrogant and yet, too often, right on the mark.
I returned to work today to find an email soliciting input on a mission statement for our department. Mission statements seem like good things for missions, that is action plans with specific resources, time spans, and achievable goals (eg. "F-Troop will hold the Seine bridge against all forces for the next five days.") The wisdom of the exercise aside, I went ahead and took a shot at it since creative writing is more interesting than a lot of my other duties. I told Bob that my "shark fin" was the omission of the words "customer" and "service."
The mission of the Information Technology department is to add value to [the company] by increasing its efficiencies and protecting and improving the quality of its information flow through the proper application of communication, networking, and hardware and software computing technologies.
I spent almost all of my workday in meetings about middleware. The CIO wants Biztalk. One of the meetings today was supposed to be about Tablet PC and signature pad applications. It was converted into a BizTalk meeting. At the end of the day I asked the CIO about the Tablet stuff and he told me not to spend too much time on it. The priorities have changed. I'm trying to have faith that he's working at a couple levels removed from me and so I just don't understand his motivations and considerations. I'm trying to believe that he's not just flighty and out of his depth.
In the "be careful what you ask for" department: When there were noises made about creating a process improvement committee I made it known that I was interested in being a part of it. Of course I've just read in the last couple of days some disparaging comments about teams without clearly defined tasks, resources, and deadlines. Perhaps this committee can task select groups within itself to address the opportunities for improvement which it uncovers.
Continue reading "Process Improvement"I talked to Vicki this morning and she told me that the folks were apparently in a big rush and have lined up a contractor for the position. Vicki said that she didn't have a lot of confidence in the temp-to-perm thing last time, and sure enough, it didn't work for them. She told me that she would follow up in a couple of weeks and see how things were working. Vicki told me that the folks had said positive things about my resume. Since this was the first feedback this manager had given her on any candidates she'd passed her way, this fact was worthy of note.
Here's a classic dilemma.
I like my job. I get to do a lot of fun stuff. In the last year I've improved my SQL writing in several dialects, learned a little JavaScript, written a couple of ASP.NET applications, gotten a bit more steeped in IT security ideas, and recognized for adding value to the company through my innovative ways of making data useful.
I have some interesting projects on my plate for which I am solely responsible for everything from analysis to design to code to implementation to maintenance: I'll be creating a mini web portal for employment applications (with a view toward making it reasonable to integrate with technologies that the HR department may not implement for over a year). I'll be recreating from scratch a deposit chargeoff system which is currently a fragile and quickly degrading access application.
This morning I was given a Tablet PC and an LCD electronic signature capture device (like you sign for credit card authorizations at so many stores) to play with and write a proof of concept demo app for.
I like my job. I get to do lots of different stuff. I enjoy the problem solving and big-fish-small-pond recognition. The only thing that's out of line is my pay.
This afternoon I got a call from Vicki. She's this great gal I've enjoyed talking to from time to time over the last six years. Back in June of 1998 I was still at Pace Foods. On the second of that month Lexie and I closed on our house and Campbells revealed to us that they would be closing the plant in 13 months. This was when Vicki first reached me. She's a recruiter and she had a job at La Quinta's corporate office she wanted to talk to me about.
Vicki has never yet placed me, but every once in a while she'll give me a shout. Usually the job just isn't quite fit to my skill set. I did get money from her for recommending Silver Ventures use her as recruiter for the position that I didn't get.
The job she told me about today is one I could start doing without blinking. The hiring company needs a strong MS Access and Excel person for their financial department. The one Microsoft Certification I ever got was on passing the Access 97 programming test. I missed two questions. I have a good grounding in Access. At Silver I spent most of my time creating Access or Excel solutions for their accounting group.
The financial/accounting group is behind the manufacturing group which has all of its stuff on Oracle. Long term, they would like the person who takes this position to facilitate the migration from Access to a real database management system. Short term, though, it will be all about Access and Excel for accountants.
Look, I don't have problems with accountants. I usually get along pretty well with them. I remember my results on a cheesy job-preference / personality-alignment tool that they gave us in high school: First choice: CPA, second choice: CPA.
I'm just saying that for a while this will be a pretty focused position. Oracle skills are valuable and I wouldn't mind having them. I'm also more likely to get them in an environment with people who know it than I am by starting from zero plus books.
The offices are also across town over in the I-10 and 1604 area. The drive would add a lot of time to my work days. In my current position I'm working 7-4. If I couldn't do that there, I'd see probably a hundred minutes a day less of my kids.
Here's the hook. The position pays over 35% more than my current salary.
I think the best outcome would be a Dilbert-like reward for disloyalty that results in more money in my current position. Still, I've got to go see what's up at the big company.
I think I'm also nervous about the trade off of people understanding the value of what I do. I've always been in places where my clients didn't know what was possible, so I appear to do miracles. This company has experience with people who do this kind of work and they understand the value. This means their expectations are higher. I'm not sure if my ego is ready to take the hit.
I wrote a little utility for Paul (the Network Administrator) today. He has a set of scheduled batch files that do daily database backups to files in five directories named "MON", "TUE", "WED", "THR" and "FRI". His conventional backups are set to send him an email to report their status. He wanted email notification on this backup as well, and came to me asking for a command line emailer.
I took the opportunity to write my first VB.NET Console Application. I made it more flexible than it had to be. That was the tricky part: adding command line arguments. It works though.
Now he just needs to get .NET Framework v1.1 loaded on the target server.
Continue reading "Directory E-Mail Utility"Last night Lexie and I watched Matchstick Men. It is a story of redemption. The lead characters are con artists. The protagonist of John Varley's The Golden Globe, which is my current read-aloud book, is an actor who is also not above a con for ready cash.
When I got in this morning I found this email in my inbox:
Thank you! Thank You! Thank You! I have verified the information on this report. It includes some closed accounts but that's ok. I have the info I need. You are terrific. Thanks. JaniJani called yesterday at noon to tell me that the monthly report she just received had made her realize that she never got the report for last month. Could I just run that one off again for her? Her report is generated from a query against month-end libraries which are flushed and replaced every month. The fact that she had just recieved a new report meant that the data for the prior month's report was no longer there.
The report runs against the data warehouse which is on an Oracle database on a Solaris box. I don't have authority or any concept of how to do restores from backup on Oracle or Unix. The DBA for this box is at our vendor's office.
I told Jani that I'd open a ticket with the vendor's helpdesk and see what the feasability of getting our data back would be. But, mostly I gave her the impression that the data was gone and she was out of luck. She was devastated at the prospect of having to try to look up and figure prior balance and interest payments on over two hundred accounts.
After I shot off the email to the vendor, I realized that the data might be stored in other fields. Some investigation in the warehouse showed me that it wasn't there, so I turned to the core system. I managed to piece together her data from fields that I found there.
I told the client that they were asking for the impossible and let them feel guilty about not noticing the missing report. Then I delivered the data anyway. Just how much of client management lies in the art of the con?
A looming project that's been sent my way involves putting our Application for Employment on our internet site. I imagine letting applicants create an account under which they can keep their application current and upload files like resumes, cover letters and so forth.
I'm still pondering and scoping the project. Today I had some questions for the HR folks. I don't write this much and not post it. Here's my email:
I got to run the update today. It took about four and a half hours (nine-thirty to two). Next week I do the smaller bank.
Back in mid-March I was working on cleaning up our customer information file. I wrote a couple of posts describing my attempts to execute the updates on the AS/400.
I ran into a wall where the sort of update that worked so elegantly on SQL Server would not run on DB2/400. I ran into another wall after I wrote a procedure using a cursor on the 400 only to find that the "CALL" verb was not allowed to me.
The project lay dormant until I got a call a few days ago from Jerry in marketing who "thought this update would happen at the time of the May pre-merger maintenance."
My work on the Do Not Contact web application and overdraft spreadsheets inspired a couple of service award nominations. I've been hearing for a while now that I should expect to win a service award. I don't know exactly what the back-channels were that were spreading this information. Perhaps I'll try to discreetly find out.
Marketing always makes a bit of a silly show for the Sales and Service Award employee meetings. This time they had some employees impersonating various "celebrities" who gave out the awards. For added interest, they handed out numbered tickets at the door and the honoree drew from the bucket of corresponding tickets to select a helper. The m.c. then read some facts about the next celebrity arranged from obscure to obvious and the pair of folks would guess who would come out next. The awardee would be given an envelope with cash, and the helper would get a goofy prize related to the celebrity.
I received my prize early on. The very next awardee drew my ticket. Thus have I come into posession of Jennifer Lopez' "This is Me ... Then" CD.
I had to listen to some of it just for the experience. I thought, maybe it's not a style of music I listen to, but it could be good in it's own way. I was wrong. It's just so bad. The lyrics are childish and the music has the complexity of a Casio keyboard accompaniment track.
Vern pointed out that one of the songs was titled "I've Been Thinkin'" which gave us all a big laugh. I do have to give her points for prophecy, though. At the end of an incredibly sappy song called "Dear Ben" she sings
There's no way I'd leave you
It's just not a reality,
Sometimes I feel like I'm
Living in a fantasy.
Moving the app to the production servers was half accomplished today. The main problem was that those servers did not have .NET framework 1.1, just 1.0. It turns out they haven't seen windows update in a couple years.
I played network administrative assistant and, two hours and four reboots later, got the backup box set up with Win2K SP4, IE6 SP1, and 19 other critical updates in addition to the framework upgrade. One of the folks with "network" in their title will dial in tonight and perform the same work on the live intranet box.
There were a few implications of impersonation that did not show up as a problem on my box for some reason. Only in deployment. I'm sure that's just good old Microsoft making sure there's enough employment to go around.
I went looking in the patterns and practices stuff from Microsoft. I found a book called Building Secure ASP.NET Applications and figured that it might help. Scanning the contents I saw that chapter 5 has a section called "ASP.NET to SQL Server". Sure enough at the end of the section (search on the page for the first instance of Q&A) was this enlightening question and answer:
Continue reading "Hint About Impersonation" I'm having trouble with getting credentials to flow through the web application to the database. I'm not sure what I'm missing.
A lot of the bank's income is from fees. We encourage you to spend more than you have so that we can hit you up for a $22 fee for each transaction that takes you in to the red.
We don't actually post transactions in the order that they occur in time throughout the day. All transactions are posted to customer accounts during nightly processing. Each transaction type has an associated posting level. Within those posting levels we sort by amount with the largest occuring first.
Currently, once this order is determined, we then post the largest amounts that will not cause an overdraft and set aside the ones that will. The set aside transactions are then posted at the end. Paying as many large transactions as will fit is advantageous to the customer, since these frequently carry greater implications if unpaid. Actually, this is a little misleading since we do not return a large percentage of items. We pay as many as we feel like the customers will eventually be good for. The only direct implication is the number of OD-fee items.
I had my first day of the ASP.NET class. This is the one that I got in addition to the SQL admin class I won and gave away. When I looked over the syllabus, I wasn't sure that it would be a very valuable class. I'm happy to say that I've gotten more out of it than I expected to. Yes, I had figured some of it out. But I'd been doing it the difficult manual way. There is something to be said about knowing that all the code is code you wrote for a reason (ever developed a web page with Front Page and seen the bloated HTML?). But with broadband becoming more prevalent, like storage space and processor speed before it, programmers can choose speedy development tools over optimized code. So, the class really should mention Visual Studio in the title, since it relies so heavily on it. Simple as it is to use, I may rely heavily on it too.
Paul asked me to look in to removing the server name from the HTTP headers on the bank's internet servers. I, being like most folks, use a browser and don't normally see the headers. I had to do a little research even to figure out how to make an HTTP request from telnet.
It wasn't Paul's idea. It came from some recent audit. Yeah, we can use URLScan to block the fact that we're running IIS. But, as Microsoft points out, that's hardly the only giveaway. Paul asked me later, "Can you run ASP on other OS's?" You may be able to, but why would you do it? "Wouldn't the .asp extensions sort of give us away?" I didn't mention that it would be possible to change the extensions to, for instance, .php, and then associate that extension with the same program that runs .asp pages.
I had a report to create for a meeting on Friday which would include the top guys from both banks. I actually was concerned about getting it done in four days this week. After being out Monday and Tuesday I had planned to work late today to try and get this thing banged together.
When I came in today I found out that the meeting had been moved to 1:00pm today. And the project that Bob had asked on Friday for my help with on Monday was still unfinished while Bob is on vacation for the next week and a half. And there was another quick query they needed for the meeting.
I sent the results of the query off, but got no feedback on its usefulness. I got Bob's project put together as best I could, but it took until 4:00pm.
So, I was in clear conscience able to email an apology to the CIO and COO stating I simply couldn't get the report together in such a short time.
I've been working on some data to reinvent the wheel here. I thought it was necessary. This morning I remembered where the car was. Instead of running a 20 minute query against the data warehouse, copying the results to and excel file, doing some manual massaging, and running a couple macros I spent a few hours last week creating, I've remembered that this data was already available in the AS/400 core system. I just have to query the one file.
Because information was not clearly communicated to me I am personally out $255.
Continue reading "The UnBenefit"Yeah, I need to mow the yard, but that isn't what this is about.
Madeline came home from Comanche sick. I stayed home with her on Monday. The doctor said her ears and chest were clear, it was just the tail end of the "crud" season.
On Tuesday I retrieved a voice mail message from Jeff, the bank's Director of Operations. He had called Monday and asked for me to get back with him or Rosemary about some data they wanted to see. He recommended I call Rosemary. So I called and left her a message. I never heard back from her.
When I called Rosemary again on Wednesday morning, her voicemail informed me that she would be out of the bank for the day. So, I called Jeff. He told me that they had spent the last couple of days manually working through some data that Megan in Finance had provided for them. I don't think he was expecting me to do much more than they had. Still, out of desperation, generosity of spirit, or morbid curiousity, he told me what he really wished that he could have. Late yesterday morning I gave him my first pass with a request for corrections.
After talking to a couple people, I decided that the SQL Administration class wasn't really where I wanted to spend five days. I figured on giving it to someone else in the department, and Vern was excited about going. When I called to tell the guy that I was trading it away, I mentioned, that "if I had won that ASP.NET class it would have been a different story."
He asked me to hold on while he consulted a colleague. When he came back to the phone, he told me that the person offered the ASP.NET class had turned it down. They had to give it to somebody, so I got a class much more up my alley.
The extra nifty bit is that I didn't have to give up Vern's SQL class. So we got two full five day classes for the price of none!
I went to another of the free Microsoft Events at the Quarry last Thursday. This one was done by the security team. The network admin stuff was in the morning. Paul and Debbie were signed up to attend, but Debbie had to stay home with a sick kid. Paul forgot and came to work. He went over there after I dropped by his cubicle and asked, "What are you doing here?"
The afternoon session was more developer oriented, but I talked Paul into coming to that one too. Good thing I did, since he won me one of the "Writing Secure Code" books they were giving away.
When I checked my email this morning, I found that I had also won the raffle from SMU for a free class: "MS 2072 Administering an SQL Server 2000 Database April 19-23 2004". The price is certainly right for getting management appproval.
I got the test tables set up on the AS/400 this morning. But the update query that worked so nicely on SQL Server isn't working with DB2/400 SQL. As far as I can tell, it doesn't want to look at the FROM clause. It can be done with cursors, but I haven't had a lot of luck doing that from ODBC. I guess I'll have to get with Bob about using the scripting product to feed it into the screens. What an ugly proposition!
Trying to do an update of one table with another is something that has always been a little elusive to me. I have to blame my MS Access roots. Doing this with a query by example (QBE) grid just doesn't work. This made me think that the process was going to be difficult.
I added the ability to search by name or TIN for customers who have expressly declined mail from us. I went back and integrated all four searches with a set of radio buttons.
After I did the new mail page on Friday, and before I integrated all the searches on a single page yesterday, the Marketing department went ahead and created links on the intranet. I won a minor battle when I got them to approve my integrated page.
So here's the deal. I put together that nifty little "Do Not Call" app and people liked it. A lot. The CIO sent an email to the bank presidents and the CEO just to let them know about the cool stuff I'd been doing on web projects. The bank president, replied that he liked the "Do Not Call" ease of use and utility. He wanted to know if it included our internal list.
Well, it didn't and I told them so. It was simply based on downloads from the Texas and national lists. The marketing guy who is going to be doing those downloads, put together a query from the data warehouse to get a list of numbers for customers who have indicated that they do not want us to call them. So, I went to work on integrating that data.
I'm trying to get some stuff working with the SQL Helper object and it is not working yet. I'm going to bed now. I'll tell you more later.
Got the Do Not Call project done today. After Thursday's training, I wanted to see if I could do it Three-Tier with ASP.NET. I managed to make it work. I have a stored procedure on the SQL Server, a business object that calls it, and a separate presentation layer to call the object. Whee.
I wanted to make sure that the security info for the database, which is, yes, hardcoded, did not appear in a easily human readable format. I brought up the compiled .dll in a text editor and there it was. I realized that the literal strings were all there, so I translated the character codes for the string to the ascii number equivalents. I put them in an array and wrote a routine to put them back into string format. There was a little hold up with the chr function which is not part of the system assembly. After some googling I found that I had to reference the Microsoft.VisualBasic assembly. Or I could have done it the .NET way with System.Text.Encoding objects.
With Madeline's dedication looming this weekend, we need to clean up the house. Lots of family and friends will be over. Chris is making what may well be her only trip ever to our house.
Went to a free MSDN event today about ASP.NET. Got a free t-shirt. Learned a little more about implementing security.
Did a little work on the tiny site I've been asked to create for a conference that the bank is hosting.
I recently wrote in my job review that I wanted writing and training to be part of my job. Since I am unlikely to be assigned tasks like this, I am just going to stick my neck out and do them. Yesterday I wrote up an email to position myself as the trainer (and by implication resident expert) for our Data Warehouse power users.
I got my review today. Bob got me the coveted "walks on water" mark. Which means I got 1.2% more than the usual raise. Yes, if you sacrifice your life for the bank, you get an extra dollar or two a day over what you would get for doing acceptable to really great work. I told him how much I appreciated what he had done and then immediately asked, "so how do I get a new position?" Obviously the big increases are in promotions not in regular performance evaluations. The problem is that we are not likely to add to the programming staff any time soon.
We discussed the value of certifications. We discussed finding the sweet spot in the CIO's plans. We discussed a systems analyst type of role.
Bob's very supportive. I told him how I appreciate him. We gave each other some genuine feedback. It was an unusually positive review experience. If I was making another $10K/year I would be very happy with this job and my future prospects at the bank. As it is I have very few complaints.
This evening I had dinner with Gordon before the elders meeting. We talked about television and food and the stresses of wealth. It was good to commune about anti-consumerish stuff. The more I hang out with thinking people, the more this "wisdom" thing is bound to rub off.
Madeline and I are getting better. Lexie and Kevin are now getting hit with the crud.
I had one of those business meetings tonight. Both banks filling the Alzafar Shrine hall. Dinner and a speaker. Former head of Disney University. "Excellence" "World Class Service" those kind of words. His made up word for the presentation was "inculturate." He also used the forms "inculturated" and "inculturating."
Please provide a better word for indoctrinating and infusing your corporate culture into your employees.
As an officer of the bank I'm required to give them my complete financial picture on an annual basis. The net worth section wasn't too hard to come up with, but cash flow for the last two years will have to involve some guesswork. It's a useful review. It sure would be a lot easier if I had kept up with my MS Money entries in that time. I really should start again. I know that the next three years will be particularly tight with two kids in full time daycare. Tracking expenses is a good way to figure out what to control.
I spent a good while today getting the music together for tomorrow. The gal who coordinates music at church (essentially an unpaid minister of music) is in the hospital. She's been there a while, and though she hopes to be out on Monday, she had the same hopes last week.
Continue reading "Music and the book"I started working at the bank on February 11, 2002. My current job began on the first of June, 2003. We're going to do my yearly review in early February. My boss has asked me to respond to several sections of the review, so I figured, if I was going to be writing, I might as well post it.
Continue reading "My Year In Review" Wrote this little something today to make the life of a network admin a little easier.
The desire was to restrict all tellers from receiving external email. They had determined that the way to do this was to set each teller's Message restrictions to Accept messages Only from the All Email Users group. It turned out that setting that restriction on the teller security group only worked for those messages sent to the group. The setting needed to be made on all 200+ tellers.
For those of you playing along at home, you'll also need to create a REG_DWORD key in HKLM/System/CurrentControlSet/Services/Resvc/Parameters on your Exchange 2000 server called CheckConnectorRestrictions and set the value to 1. Oh, and reboot the Exchange server.
Anyway, with a little research and testing I created this little subroutine to do the trick. I used VBA in Excel and added references to CDO and CDOEXM.
Set TelSec = GetObject("LDAP://cn=All Tellers, ou=Special Groups, dc=OurCompany, dc=com")
For Each Teller in TelSec.Members
iPer.DataSource.Open Teller.ADsPath
Set iMRep = iPer
iMRep.RestrictedAddressList = Array("cn=All Email Users, ou=Recipients, dc=OurCompany, dc=com")
iMRep.RestrictedAddresses = cdoexmAccept
iPer.DataSource.Save
Next
End Sub