For those of you who haven't noticed these past three months, I tend to blog about the FSDNUG meetings relatively shortly after. Since the meetings happen on the first Monday of every month, guess what time it is?
Since the dawn of time (ok, for as long as there have been databases and programmers that could connect to them), man has searched for ways to get database ... data ... into a usable form that programs could use. One of the solutions to this problem, in the land of object-oriented programming, is to use an ORM (see title) tool to help. There are a variety of these available, probably as many as there are motivated, capable people who have different ideas of how to do things. Of the many, the .NET world includes NHibernate (a port of Hibernate Core for Java), the ADO.NET Entity Framework (which hasn't quite been released yet, I believe), and SubSonic.
Tonight, Michael Paladino gave a presentation on ORMs and, in particular, SubSonic. SubSonic is an open-source (free as in speech and free as in beer) ORM tool designed for use with ASP.NET websites. From the demos offered, it looks like an incredibly useful tool if you set you database up properly (it's definitely possible to use configurations to get some functionality out of it, but at its base it relies on certain conventions being followed). They even include some fairly handy web forms controls, even if some of them are only really useful to accelerate your RAD processes at the earlier stages.
It really sucks, IMNSHO (that's right, look it up), that I'll probably never see use out of any tools like this at my current office. First, we'd have to find something that supported DB2 (I jokingly asked during the meeting, "So we won't be getting LINQ to Mainframe?"). Then we'd have to convince the DBAs and the cpu-efficiency folks that it was a good idea.
By the way, Paladino, you should at least update your blog to mention/discuss the presentation. For those interested in the PPT or the sample project, click the Fort Smith .NET User Group link to the right and then go to "Previous Meetings". Until next month, it should be the first meeting at the top of the page (for future reference, it's the June 2, 2008 meeting).
June 2, 2008
Object-Relational Mapping
May 11, 2008
Output, Part 5
This is actually going to be the last part of this. I know I said six parts, but the sixth is really just about software development in general and not about my current situation in particular.
I find that there are certain things beyond my control that still manage to frustrate me. Most of the time I'm able to adopt a certain stance about such things that lets me live with them, but some I just can't.
The biggest one of these is that, at work, we're expected to shepard projects through the entire software development life cycle. Sure sometimes it gets broken up because the person who got the requirements, designed, and estimated the thing has higher priority tasks, but generally speaking we have "teams" with very few team projects - even those team projects we do have rarely require high levels of interaction between more than two people. Ideally, we'd have true business analysts who'd get requirements, designers who do the design, and programmers who work with the guts of the applications. Honestly, I think I could deal with being the last two, possibly even any two of the three, but being all three at once puts a bit more of a strain on me than I'm entirely comfortable with.
Also: we have no standards for automated testing. Currently, most testing is done by hand. Admittedly, this is probably largely due to barely having set foot into the modern era of programming. The company is still a mostly COBOL shop with some ASP (not .NET) and Javascript. Only in the last 3 or 4 years did they start dabbling in VB.NET, and any sort of entrenched business position is going to take quite a while to ramp up to more modern practices. It will take some of our people's retirements before it can ever fully happen.
Anyway, I hope I can find it in myself to accept my current position for what it is, whatever that may wind up being to me.
May 9, 2008
Output, Part 4
For today (I wrote this all on Wednesday, in case you didn't know), I think this will be the last part of this series. Not just because this incessant worrying has tired me out, but because I'm struggling to come up with more things that have to do with my current situation (I think I've got one more part in me somewhere though).
Ever since High School, at least, I've been a definite procrastinator. Not usually the "get things done the last possible second" type, but more of a "start things when I think I have just enough time" type of procrastinator. To give an example: my freshman year of college, I waited until the last week or so to truly research and write an 8 page (I think, my memory's fuzzy) history paper that was supposed to be our "final" project for the class.
I've worked out a few semi-effective semi-habits for dealing with this (since obviously this approach shouldn't/doesn't work in my current office environment). I call them semi-habits because I lapse periodically from adhering to them. These include a slight auto-prioritizing and self-prioritizing of my inbox, and keeping track of things that need to be done on my whiteboard. It's always a good sign if I can strike one or two the sub-tasks on the board out in a given day. It means that I've effectively used my time (usually) and that I broke the parent task down into at least one achievable sub-task. Unfortunately, not all my tasks are SMART.
Sometimes the procrastination has to do with my social anxieties (I'll put off meeting with users or other developers if I have other things I can work, sometimes even if I don't), sometimes it doesn't. Sometimes I think I have ADD with the way I flit around between ideas and tasks. It's an odd brain I have overall, and I hope that this has given you some insight into it. Now I think I'm going to finish listening to the BSG episode 403 commentary podcast I started earlier.
May 8, 2008
Output, Part 3
One of my friends, a different one from the one mentioned last time, has occasionally reminded me that they think highly of me because I "don't change myself for other people". This much is true, for the most part. I do avoid certain topics around people who've expressed strong disinterest, but that's about it.
What you don't see from that description though: I crave validation. So, I may not change to make people like me but I really, really want them to.
I also don't believe in myself all the time. One of the "slides" on the TV's at the entrance to my office building this week has a quote from Liberace, "Nobody will believe in you unless you believe in yourself." To which I retort in my head, "But how do you start believing in yourself if no-one believes in you?"
I suppose it may be more correct to say that I don't have particularly high self-esteem either, although that depends. In general, I tend to not think highly of myself, but I think the reason that I don't is because of the standards that I set for myself. They're so high, I think it's rare that I ever meet any of them. Admittedly, they may only be too high once you factor in my limitations (see the other parts of this series).
To repeat what I once told someone years ago, this morning I felt that "the world had fallen out from under me".
Output, Part 2
I haven't mentioned that the only reason I'm doing this is because one of my friends thought that if I went home "sick" because of this I shouldn't treat it like I did last time where I just distracted myself for about a week (and took some Xanax, though I still dislike the idea of psychological-use medicating when not necessary). So instead, I'm trying to voice these issues I have, over the medium that has the most potential for advice. So what if it gets me labeled as a "emo" kid.
So last time I mentioned that I have a tendency to try to do things by myself, even if it's not necessarily the best idea at the time. For example, I moved my TV and its stand up to my second floor apartment all by myself (it's a 37" LCD, so not the worst it could've been). Looking back at my admittedly short-so-far life, I think I know why this is.
I picked it up during my K-12 days. I was always one of the best performers throughout my schooling and I was always irritated by how slow some people seemed. I got griped at during "read-aloud" sessions of class because I read in my head faster than another kid did aloud; this meant that when I got called on to read, I may have read the section in question, but I didn't know where the last kid had left off. Anyway, those two attributes combined to make me highly likely to just do all the work if the group I was in didn't have firmly delineated tasks for each member and/or the other members were disinterested in actually doing the work.
That changed in college, when generally people (at least past the first year or so) were as motivated to get things done as I was. It didn't help me unlearn my bad habit though. I'd learned too well that I was the only person I could depend on to get anything done.
This is something I need to overcome as well, but I'm really not sure how.
(edited in prior to publication but after writing: for those wondering, this is probably going to be a 6 part series. I've written and set up scheduled publishing on 4 of them, and have "focus" topics for the other 2)
May 7, 2008
Output, Part 1
As I've said before, I have some major anxiety issues. They've come to a head again today. Those of you who know me well, also know this isn't the first time it's happened.
Obviously, because of my anxieties I find it hard to talk to people. Mostly those I'm not familiar with, but also people in positions of authority above mine. That second group isn't too bad if they've managed to prove to me that they're normal people too. That sounds a little odd, but what I mean is that they've proven their someone who's been in the trenches - someone who's been where there subordinates are.
As an example of the former group: I once spent three days on a couple of beaches in Southern California and it wasn't until the near the time we left the beach that I asked if I could borrow someone's board - after the first day, we were pretty much on surf-only beaches too. For the second group, I only have to point to my immediate supervisor. I'm sure he's a perfectly normal guy who knows what I'm going through - I have reason to suspect he takes a while to open up to people - but I never see much of that (to be honest, I don't see much of him anyways since at most talks to me once a day). Since I haven't connected with him, it's hard for me to talk to him about some of the problems I have. A year and a half ago I had a project that was destined to go way over-estimate, and it took me breaking down - I was basically away from work for a whole week or so of sick-time - to get me to talk to him about, to get some help, and finally put the project to bed.
I've come to a point like that one again. In this case though, I'm don't think the issue is that I need help to bring things to a close; I just need someone to understand where I'm coming from. I work on the project for over a month and suddenly, after one demo with a user, my whole sense of direction on the project is swept out from under me. I haven't been able to find it since, despite the non-result of one poorly organized/unnecessary meeting and suggestions from my supervisor. I'm to the point that I'm thinking maybe it needs a fresh pair of uninterested eyes turned to it for a redesign/reorganization of ideas.
I honestly don't know how to overcome these anxieties, but they're there and right now they're crippling my ability to enjoy life and do my job.
This is getting to be quite the ramble, so I'm splitting it up. Thanks to Blogger's recently added "scheduled publish" option, I should be able to type all of this up and then just schedule the pieces to let themselves out over the next day or so.
May 5, 2008
Going Mobile
So, tonight was the third meeting of the Fort Smith .NET User Group, and the second time I've attended. First things first, I got no swag. I suppose that's what I get for winning that copy of ReSharper last time.
Tonight's speaker was a someone from my place of work, a man by the name of Kerry Jenkins, talking about the .NET Compact Framework. It was a good, though quick, look at what is and isn't available along with some of the challenges involved in programming for the varied Smartphone/PocketPC landscape. Just some general notes follow.
- Get access to Battery level and other system related information
- Tap into the received SMS messages to trigger program execution. To more securely handle this than Kerry did, you'd probably want to setup the interception based on the "Sender".
- PocketPC and Smartphone environments differ, although the Smartphone environment maybe a subset of the PocketPC environment.
- Due to varying aspect ratios and resolutions, if you want to make a truly universal application you'll need to do some multi-platform setup and testing.
- There are actually internal database setups available/deployable in the environment.
While I was there in the room and while I've been typing this I was thinking: you could totally set this thing up to help you/the police track down someone who's stolen your phone. Like I said above though, to prevent erroneous starts, you'd want to tie the interceptor to the sender of the message, and then scan the text of the message to determine what to do. Once you've done that, if it's a "start tracker" message, start the application and periodically send GPS data to a website, a personal email account, or even the phone that sent the text message. Read More......
April 28, 2008
Miscellany
It's a little late for a morning post, but this is it. Due to a confluence of events it managed to take this long. Mainly due to getting caught up in completing some hunts (FFXII, because the only way to get access to the Bubble, Reverse, Bravery, and Faith spells is to have killed at least 14 or so marks) while the dishwasher was using up all my hot water.
While I've been spending time on FFXII, I've been listening to Pandora Radio. It's an interesting idea: take the "genome" of music you like - melody, harmony, rhythm, instrumentation, etc. - and try to match that to other music. Personally, I find its efforts on that front a little vague, but I have been enjoying the "Alternative Pop/Rock" genre station.
In somewhat sad, but still good news, one of my co-workers is leaving us. I have to say that it sounds like quite the learning experience, even though I've never put much, if any, stock in certifications. It's too easy to have a lot of knowledge and no experience - though I know Brian won't fall into that category/trap. I suppose they are good for giving clients a warm, fuzzy feeling, though.
April 25, 2008
Security Measures
I'm not gonna answer that question I posed in the post before this just yet. You can add "Epilogue (Nothing 'Bout Me)" by Sting to the list though.
So, the one of the more recently implemented security measures in a lot of places online are "personal" or "secret" questions. They're used for retrieving lost passwords and as another layer of password-like security, and are generally made of the standard questions: "What's your mother's maiden name?", "What's your city of birth?", "What's your favorite sport?" (I love that one: questions like these should be something factual. That one is just begging to be forgotten or to change.), etc.
As I pointed out up above, some places don't choose good questions. What's worse in some places is that they never let you change the questions or answers, meaning your stuck with what you picked. WoW, I'm looking at you. I realize they do this so that accounts can be recovered from theft, but there should be some sort of recourse. Luckily when I had to recover an account's password today their account support accepted my spoken version of the security question's answer.
There has to be a better way than this. I just don't know what it is.
April 22, 2008
Revelations
Ever have one of those days where something just snaps into place? I had a moment like that today, regarding some of my own strengths and weakness in software development.
For instance, I'm positively no good at estimating the time it will take to do anything. It's not even an issue of guessing an incorrect figure, frequently it's just that I have no idea how long something could/should take. As such, I feel kind of bad whenever I have to give one, especially if it's a big project of any sort.
Even taking it a step back from that, I'm only moderately good at extracting requirements out of users. I do tend to think that I'm decent at determining potential requirements after the fact, but that doesn't really help.
One thing I am pretty good at, and I think anyone in my family could vouch for this, is knowledge of the systems I work with regularly. Odds are pretty good if you asked me about my "primary" system, I could answer any question or know almost exactly where to look to answer it. It started with a tendency to accumulate encyclopedic knowledge of my interests. I think I picked it up from my Dad - we both have a pretty good knowledge of actors, and could probably play a good game of "spot the Vancouver actor" on shows filmed up there.
As a result of that tendency, I'm also a pretty good storage point of the way things can be done. Not always the way they should be done, but if it works and I've used it, odds are pretty good that I remember it. I probably remember it when it doesn't work too - it helps when you don't make the same mistake more than two or three times.
My biggest "failing" of all though: anxiety. I have the hardest time actually bringing up anything to someone I'm not comfortable with. At work, that consists mostly of my area and three of my users. Luckily they're the three users for whom I do most of my work. When I lock up about something, I tend to stay that way too. It really sucks.
April 10, 2008
On Brief Scares
My manager at work has a good way with spooking me when we wants to talk about, well, anything.
If it's something that can be discussed publicly, like the projects I'm working on, he has a very quiet way of just walking into my cube. Luckily, this doesn't scare me as much as it could, due to my conveniently placed rear-view mirror. Sometimes he even does this as the start to a more private discussion (i.e., those dealing with performance and salary).
When it is something private, it's quite a bit scarier. He either walks into your cube or phones you and asks if you have a moment to talk in one of the conference rooms. At that point, you know your in for something bad or something good, not likely anything between. Lucky for me, it's all been good - including today. Even if I'm not supposed to talk about it yet.
Failures to Communicate
That works on so many levels. I'm working on this particular post 0500 local time, but it probably won't be posted until later on in the day, if then (I hope I have internet at home by the time I get off work if not by lunch)(edit: lunch it was).
Anyways, some pretty big storms passed through our area throughout yesterday evening and today - I saw where the storms are supposed to pick back up around 6 or 7 this morning (edit: they did, but they weren't as bad) - and managed to knock out my cable, which took my internet with it. In and of itself, it wouldn't be much to talk about, but where I work we're on-call for the applications we develop whenever they run (with some rotation depending on frequency of abends/number of supporting developers). I happen to have a pretty big job that runs at 0230 to get some numbers crunched on the previous day. Guess what? I got a call this morning at 0340.
Due to communication failures on mine and the computer room guy's end, I gave him incorrect instructions to restart the job, which resulted in getting another call about 20 minutes later. Due my other communications failure (re: cable internet), I had to drive into the office to diagnose the issue. All in all, not a fun way to start your morning. (edit: I even managed to cause more trouble for myself by driving into work and had to fix it when I went back for real.)
April 7, 2008
Issues of Scope
I was originally going to make a post this evening about the bizarre creature that is Japan's CD rental industry, but work has made a rare intrusion into thoughts. I'm a little peeved/angry/upset/whatever, so you'll have to deal with it.
For whatever reason, we have a design that had been sitting around for, oh, a year or so that I got assigned to deal with a few months ago. So I finally get the thing to the point that I'm comfortable demoing it (which was longer than normal likely - I'm not used to dealing with this particular user), and suddenly I get all this crap I hadn't heard word one about sprung on me. It doesn't help that something I'm sure worked earlier is suddenly broken when I show said user how to do it.
So it looks like I've run into a pretty nice wall with no real clue where to start. I've been redirected to a design document that, if I have seen it, I apparently didn't look at long and hard enough. Lord knows I've batted this thing around enough since I took it on. Taking a closer look at it, I only notice one thing in that design that's not handled (integration with another project area's system - which makes me ask the question, why aren't they doing this?). I'll say that some of the other suggestions are good ideas, but even some those I wonder if they work at cross-purposes to what I thought we were intending to do.
So, a combination of apparent lack of research on my part and some not too unreasonable requests and I'm back to what feels like square one. It's not, I've gone too far to scrap much, but it sure feels like it. Why do I feel like I've just managed to get screwed by some sort of user-politics game that sat this particular system in my lap? But they can't take all the blame - I didn't read close enough.
