Welcome to Tiltech! Skip to Sections
Last Post
This Months Calendar, Posts for the current week, All Archived Posts
20090302
Justin's Blog & Twitter
So I learned that Justin changed blogs, not abandoned. I've updated the link in my sidebar. Additionally, I've decided that one reason for the lack of updates here is the amount of work to add a post. I've signed up at Twitter to see if the reduced friction leads to more updates. I'll see if I can integrate it into this site some time soon.
Comments for 02 March 2009
Comments for 03 March 2009
Comments for 04 March 2009
20090124
Happily Ever After
So this is by far the longest streak of not updating my blog ever. This is of course because I got married and have been building our new life together. This has taken time and helped me establish priorities. I must say that married life is far better than being single, dating, or especially being engaged. I love Jana very much and she takes real good care of me.
We've got our challenges and obstacles that we face, but I've never felt better prepared to meet them.
Sorry for the delay, but you can find our wedding pictures here
~Tilendor
Comment on this entry
20080815
The Wedding Day cometh
Life is keeping me busy. Work is good, but I should be spending more time at Lawngevity.
I can't ever believe that Erin found event organizing interesting... oy. Planning a wedding involves tracking a lot of different details to completion. You'd think I would be good at that because its a key part of being a programmer. However, the details in particular have a large effect on what is interesting. Weddings are knit from social fabric, which I just don't grok. I am seriously excited about being married, but think planning a wedding is something best done only once.
Also, please drop by our wedding website at http://wedding.tiltech.net
~Tilendor
Comments for 23 August 2008
Comments for 15 September 2008
20080723
Time passes and things change
So another (more than a) month and another blog entry. If I keep up at this rate, my next blog post wouldn't be until after I'm married.
So here are recent highlights:
- Moved to a new apartment located in downtown SLC. I don't have internet there yet, which is part of my lack of updates.
- Went to Uprising in June, was a good time, and Jana enjoyed it too.
- Went to Jana's Dad's family reunion and got to meet the other half of her family. They liked me and I liked them, so it worked pretty well.
- I got my 90 day evaluation at work and got a 30% raise. Very good.
- At work there were 3 programmers, one quit recently, and the other gave his 2 weeks notice, so I'll be the only one left.
- Jana and I are focusing a lot on wedding plans.
Wedding Info
I'll get an official wedding site up at some point, but heres the relevant info:
Offical Date: Saturday, September 6th, 2008
Wedding Location: Salt Lake City Temple at 9:40am
Reception Location: City Creek Canyon, site #27 from 3:00pm to 6:00pm
News to follow.
~Tilendor
Comments for 02 August 2008
20080613
LINQ inheritance in VS2008? sucks
This article is going to be rather different from my regular fair. I'm going to blog about something I've run into that is completely frustrating at work using LINQ.
Family, you're not going to get much out of this post, so proceed at your own risk.
For those who don't know LINQ is Microsoft's version of ActiveRecord?. ActiveRecord? is a great way of working with database information. For example, if I had three tables, Company, Department, and Worker, I could create relationships based on primary and foreign keys between them. If you tell ActiveRecord? of these relationships, you can translate our relational databases into object hierarchies.
To find the department a person works for, I could type "Worker.Department.Name" which would take the worker(which I already retrieved from the database) and get the department's name from the database. All without me needing to make a specific database call or command, it just knows what to retrieve and how to get it.
Likewise I could get a list of all employee names in a department by "Department.Workers.each do |w| names += w.Name end". Many database operations without me specifically calling database code. Very convenient.
LINQ supports this same functionality, in the same way someone with dementia remembers their phone number.
After typing the commands to setup the relationship, you can make use of this power object oriented ability, until you touch the database designer.
The designer is completely ignorant of the ability to link tables in this way. Which is absurd, because it knows about inheriting these classes (more on this later). When you make any change, including something as trivial as dragging a table around a view, it discards any modifications you have made and regenerates everything from scratch. Microsoft's solution to this is to use a partial class to save persistent changes, but this only supports a subset of the attributes needed.
For example, to inherit from a class, you multiple [InheritanceMapping?(...)] attributes, one per class. And on a column, you must include IsDiscriminator?=true in the definition to help LINQ determine which class to sort a row into. The first attribute can be defined in the separate non-generated file, but the second *MUST* be defined in the designer.cs file, which always gets overwritten.
Also, you can use the designer to create Inheritance, but it doesn't insert the required InheritanceMapping? attributes, so the code won't function.
Active Record is so much more flexible. It determines these things at *runtime* so your objects always match the database schema, and you need only maintain the database.
LINQ must have this information at Design time, which means you have the burden of updating the Database AND the project files with any change, and it does so in a broken manner.
The joys of working with Microsoft.