Will Work For … Well, Anything.
Okay, it’s time to start trying to put this blog to some kind of real-world use. As you may be aware, I’m currently looking for work. I’m an experienced web and software developer, but I’m open to pretty much anything — yes, I have applied at McDonald’s, Burger King, Lowe’s, KMart, Circle K, etc. As a friend of mine pointed out, I’m overqualified for those positions and probably won’t get a serious look because of that. Searching the various job posting sites is pretty much part of my daily routine, but El Paso has next to nothing to offer.
That said, I’m offering myself out to the wolves here. I have two resumes attached at the bottom of this post, both in Microsoft Word (2007) format and PDF format. The “Long” resume contains more jobs; I recently created the other resume as a quicker (and prettier) alternative, and it only contains my recent software development experience.
My resume is mostly buzzword compatible
I have experience with Java, C#, ASP.NET, Database Development (mostly MySQL, but a little work with DB2 and MS SQL Server). I’m also quite skilled at HTML, CSS, and JavaScript (including the Prototype.js and Dojo Toolkit JavaScript libraries). I don’t have working experience with Visual Basic of any form, but I can make sense of it and work with it if necessary. I do have some PHP experience as well, though not so much in a professional setting (so it isn’t in my resumes). I’ve been trying to learn it recently, and I can definitely get by with it; however, I admit that I still have to do quite a bit of internet research whenever I’m working with it.
Of course, I’m not limiting myself to just programming work. If you have any kind of position open, or you know someone who might be hiring, please contact me and I’ll look into it. If it’s not in El Paso, then most likely I’ll have to telecommute. And if you are looking for a web or software developer (or pretty much anything — also freelance writing or editing) on a contract basis, I’m willing to oblige; just drop me a line and we can discuss the project and see where we can go.
Resume Downloads:
- Matthew Cory Resume (Long) (MS Word 2007)
- Matthew Cory Resume (Long) (PDF)
- Matthew Cory Resume (MS Word 2007)
- Matthew Cory Resume (PDF)
New Site Section: Software
I’ve added a new section to the site for software I’ve created. Check it out, either from the menu above or via http://matthewcory.com/software/. There’s only one item there now, a simple todo list manager, but I’ll keep you posted on what else might come up. Open to ideas, and if you find any bugs, let me know so I can take care of them.
Catch you on the flip side.
–Matt
Quick Coding Tip: One Use for Extension Methods
Okay, I’m probably out of the loop on the whole coding thing, and this is probably something that’s been discussed many times, but I “discovered” this yesterday and felt I just had to share it with the programming community. As an FYI, this is dealing with C# 3.0 stuff — so you’ll need an appropriate compiler to work with it (i.e. VC# Express 2008).
First off, let me introduce the problem this is dealing with. Personally, I love working with interfaces. I probably overdo it, but it’s great to be able to write a unit test using interfaces (and mock objects), and know that your code will still work (in theory) regardless of how that interface is actually implemented. This concept works great if you break your UI up into controls, and have the controls implement your interfaces, but that’s a story for another time.
One of the main problems with this though, is that a lot of your really simple methods — copying data, equals methods, etc. — can’t be implemented in an interface, of course. Here’s how I used to get around this (and whether this is good design or not is definitely debateable):
First, a simple interface:
[codesyntax lang="csharp"]public interface INoteData {
string Title { get; set; }
string Text { get; set; }
}
[/codesyntax]
To implement a simple copy method, one that you know will work just on the interface and not on any particular implementation, you need to put that method in a different class:
[codesyntax lang="csharp"]public static class NoteManager {
public static void Copy(INoteData src, INoteData dest)
{
dest.Title = src.Title;
dest.Text = src.Text;
}
}
[/codesyntax]
And when you’re using your notes, and you want to copy it, you have to involve this extra class:
[codesyntax lang="csharp"]INoteData src = NoteFactory.CreateNote();
// do stuff with the src note
INoteData dest = NoteFactory.CreateNote();
NoteManager.Copy(src, dest);
[/codesyntax]
Wouldn’t it be cleaner to just do something like:
[codesyntax lang="csharp"]src.CopyTo(dest);[/codesyntax]
Of course, though, you can’t do that with interfaces. At least, not without forcing every different implementation to re-write the code for that particular method.
Here’s where extension methods can help. The code is really simple:
[codesyntax lang="csharp"]public static class NoteExtensions {
public static void CopyTo(this INoteData src, INoteData dest)
{
dest.Title = src.Title;
dest.Text = src.Text;
}
}
[/codesyntax]
Then, when you’re ready to use it, you just call it like above:
[codesyntax lang="csharp"]INoteData src = NoteFactory.CreateNote();
// do stuff with src.
INoteData dest = NoteFactory.CreateNote();
src.CopyTo(dest);
[/codesyntax]
And voila! Instant copy method, that applies across the board to all implementations of the INoteData interface.
Now, this example was assuredly contrived, but I’m sure you can find uses for the overall concept in your project.
Diary Application 1.0 beta
Okay, here you go: some minor proof that I really am a software developer.
It’s a very simple diary application. You’ll need the .NET 3.5 Framework runtime in order to run this, which you can get from Microsoft.
Diary Application 1.0 Beta Release
Basically, unzip the file anywhere on your computer. There’s no installer, so the application that’s in the package is what you run. Here’s the basics:
- It starts off with a fresh diary, but if you ever need to start a new one, go to the File menu and select “New Diary”.
- Type in the title of your entry, your current mood, and the text of the entry.
- Click “Save Entry”
- Go to the File menu and click “Save Diary” (or “Save Diary As…”).
- When you start the program back up again, you’ll need to go to the file menu and select “Open Diary”, then find the file you saved.
- If you want to review previous entries, go to the Entry menu and select “Open Entry”.
- If you want to print your diary, go to the file menu and select “Save As Plain Text”. Save the file, then open that file up in Notepad to print (yeah, it’s a cheap workaround, but believe it or not, writing software that prints isn’t quite the easiest thing in the world. Maybe in the next version.).
Let me know if you run across any bugs or have any suggestions.
Catch you on the flip side.
–Matt
Diary Application Finished
Well, today I wrote my first application in I don’t know how long. It isn’t much, just a little diary app, but it’s something. And from a code perspective, it isn’t anything I’d brag about – no unit tests, poor design, etc. – but it does most of what I want it to do, and what it doesn’t do isn’t that important anyways (i.e. loading a file from command line parameters).
I’ll probably release it for a public beta sometime during the next couple of days, but for now I’m just going to celebrate with a cheap glass of wine and enjoy the moment without any bug reports pouring in
Once it’s released, I’ll probably also go through and refactor the code out for better design principle conformance, and try and get some unit testing under it as well. Should be fairly simple, since it is such a simple program, but that can wait.
It was nice to actually accomplish something today, especially in the world of programming. My current job has kinda beaten me down on that front; I’ve lost a lot of confidence in my abilities there, and doing something even as simple as this helped out a bit in that area.
Anyways, on to the next project (whatever that may be…)

![Reblog this post [with Zemanta]](http://img.zemanta.com/reblog_e.png?x-id=8d0f380b-8065-4535-8e4b-859f3a579d04)
![Reblog this post [with Zemanta]](http://img.zemanta.com/reblog_e.png?x-id=40732fcc-f1da-4a8e-b33b-58874d1c317b)
