Definition
Once again a few months have passed since my last update. I've been meaning to do this for a long time, and countless time I've told myself that I'd write an entry that night, but when night actually comes I'm generally wasting my time doing something entirely unproductive and don't have the motivation to begin. Right now, I intended to be at work since I still have five hours left to do for my week, but I got up late as usual, and knowing that I'd get a taxi there and a taxi back, it didn't seem worth it.
I should start with Diana, I suppose, since she was the subject of almost the entire previous entry. Well, first of all we're still together, and it's been enough time now that I've seen what 'normality' between us might be like, as opposed to the excitement of having just met that dominated my last post. The result of that is good; seeing where we differ, and more importantly the effect of those differences, is vital if we're going to be successful. It has occurred to me that I have been more... analytical than emotional in my thoughts towards this relationship, and I know this sometimes upsets Diana, but I think it's what I need to do, for now at least. It wasn't exactly a concious choice, but more of a side effect of the way I've been feeling about myself, and a desire to actually learn from the experiences I've had so far; I'm proud of who I am, and I don't intend to change. In the time I was with Adele, she caused me to question a lot of things about myself that I vaguely knew, subjects I knew I had certain opinions on but had never tried to formally define. She accused me of being inconsistent, and I decided that the only way to prove otherwise was to declare a set of rules that defined my behaviour in all cases. Since that time, I have been trying to do just that, and it's become the strongest part of me, what's kept me going through difficult times. I've made it my goal to describe and live by a consistent set of rules, whatever the consequences. Whether I'm entirely successful is another matter; I'll make mistakes, and people are complicated - there'll always be surprise exceptions, things I didn't foresee - but my intention will always be consistency. Being a programmer, I tend to imagine these things in the way I might implement them in code, and that would certainly be based upon a tree structure, with child nodes representing increasingly specific conditions and rules than their parents. The root, above all the conditions and exceptions, the global rule which applies in all cases not explicitly overruled, I decided on like this:
For every one of your principals, there will be people who think you are right, and people who think you are wrong. Pleasing everybody is impossible, there's no more reason for you to adhere to their ideals than there is for them to yours anyway, and arguing over it tends to be futile, so the easiest and fairest solution is to allow everybody to follow their own rules. This obviously results in chaos as everybody does whatever they want to everyone else, so we need to add the restriction that your actions (or inaction, whichever causes change as opposed to that which causes no change) must never conflict with the ideals of anyone who would be directly affected by your action or inaction. The result of this is that in order to create any change from default state between you and another, which would have effects for either of you, that change must be 'right' to both you and them.
The problem with living by this, is that to work as intended it requires that everybody else also follow it, which just doesn't happen in the real world. However, just following this rule means that my interactions with people who don't are usually limited to those with very little effect on either of our lives. To me, that's a desirable outcome.
How is all this relevant? Stability has always been what I've wanted from any relationship, that has never changed. This drive to define myself and my behaviour brings me stability. Deciding what I am, and consistently being that, is safer and better than attempting to adapt to changing conditions. As well as that, experience with Shanna shows me that causing anybody else to change their behaviour is not safe, and indeed doing that is a violation of my rules (by whom is not important). Diana and I do have disagreements, but that's not what's important - what matters is how they get resolved. I haven't been very... flexible, and I know that; subjects have come up that I haven't been willing to compromise on, several times even leading me to say that if the issue is a critical one then the solution is that she shouldn't be with me. It upsets her, and I completely understand why... it is cold, and it does imply a lack of emotional attachment, but I don't mean it that way. I say it because the only other solutions I see are that I change or she change, both of which break the rule, or we find a way to avoid affecting each other with our different opinions on the matter. The latter is obviously what I want, but the result is usually somewhere between that and Diana changing her behaviour, which scares me. I don't want to change her because I think it's wrong, but what frightens me is my experience with Shanna. I think that people overestimate their ability to deal with things they don't like, and I've come to the conclusion that any of that in a relationship is just asking for trouble later. Of course, not everyone is the same and I can't use one example as proof of a fact; she asks me to trust her that she knows what she is doing, and I will and I do.
I know I could try harder to compromise, and that it's what I'm 'supposed' to do, but I just feel it's dishonest. I don't want to give a false impression that I'm ever going to be anything but what I am now. I want to show that this is a big part of me, and very important to me. I really hope that I am someone Diana can be happy with, because I know she is for me. I just don't want to become that person - either I am now, or I'm not. If I can be that for her now, I always will be, I promise her that - by following the rules I am defining now, it's guaranteed.
As usual, my long analysis has probably given everyone the wrong impression. That's my logical point of view, that's me being practical, and I try to keep emotion out of it. However, all of that would be completely pointless if there was no emotional reason behind it all. In the end, the reason I spend so much time thinking about how to make it work, is because I really want it to work. I want it, at the most basic and selfish of reasons because it brings me happiness. I always find it hard to explain in detail, but there are things about her that give me a lot of hope. Like I said last time, I love her because she is everything I need for that to be true - I feel the freedom and safety in sharing everything with her. I could add the cliché bits (you know, "she's smart, she's funny...") - but I kind of like to think that those should be standard, not extras. Anyway, lets just say that's all there, and other things I probably shouldn't write about...
As for what we've actually been doing all this time, until recently we were seeing each other roughly once a month, which has been good. At the time of my last entry I had a trip to Germany booked, and since then I've been twice and she's been here two more times. The time we've spent together has been wonderful, and as usual I'm regretting that I didn't record all the details whilst it was still fresh in my memory. Like it always is, all idea of time has been completely lost and I just remember things we've done, but don't have a clue when they were. The long distance thing has been strange to return to - it creates a kind of pressure during the times we have together which I'm not particularly fond of. I prefer to forget that there's a time limit, and just act as though everything is normal, but I agree that it's wasteful that way - we should try and make the most of our time when it's limited. We're currently in a period of a few months where we won't get to see each other because she's gone back home to Romania during holiday from university. I was supposed to be getting on a plane tomorrow to visit her for a week, but unfortunately some unexpected things happened that end, and it wasn't possible any more. I don't know when the next time will be, but I hope it comes soon.
One of the places we went, was to the Counting Crows concert, which was (eventually) excellent. I say eventually, because it was cancelled and rescheduled twice before we finally got to see them. It was originally supposed to be in December, and Mum bought me two tickets (one intended for Shanna, but I gave it to Graham when she left) on my birthday. However, it was cancelled and changed to May instead. Originally, those going had been me, Graham , his parents, and Connor. Since it had been moved though, we realised that it would be during the time that Rachel was staying with us. She quickly tried, and succeeded, in getting a ticket. On the day it was supposed to be, we all went out for a meal at The Goat before the show, only to be told at the last moment that it had been cancelled again. The meal out was still great, but it was disappointing to be let down again. The date was changed to a few days later (I don't remember exactly), and then I realised that it coincided with when Diana would be here too! I tried to get her a ticket, and luckily (possibly due to cancellations because of the changing dates), I was able to. So, in the end both Rachel and Diana were able to come too.
It was a good show. The only other thing I'd seen live at the BIC was Bill Bailey, so I didn't know what the sound would be like for a music concert, but I was very impressed. I'm sure it helped that we were standing right at the front by some speakers, but it sounded better than where we'd been sitting in Wembley, when we saw Dream Theater. As is typical for Counting Crows, there were a lot of 'songs inside other songs' and changes and additions, which I like about them; I think it's nice for a live performance to be something more than just a live recreation of studio albums. We bought ridiculously-priced t-shirts at the end, of course, all part of the experience. Unfortunately, so was the journey home - originally, the December date had been on something like a Wednesday, but the final date was on a Saturday night. Saturday nights in Bournemouth town centre... let's just say they're not something I like to experience.
At work, I did what I said I was going to down. Vantage is now built on top of RAWR, and RAWR has grown to accommodate it. The way things work now is basically that we have RawrObject, on which all Vantage objects are based. Any RAWR object has a RawrType associated with it, which describes a set of fields, their types, and bindings to various storage engines. Storage engines implement IRawrStorage, and must provide a means of storing and retrieving RAWR objects by certain criteria. RawrObject provides functionality for objects to populate their fields only when actually needed. It also provides specialised field types beyond simple values, such as collections, references, serialised data, all of which are handled automatically, with clearly defined and enforced rules for their persistence. All in all, it works, and works very well. Most of the hard work falls to the storoage engines, so far of which I have one that uses a SQL Server back-end, for Vantage Server, and on the client side SQLite (local disk), memory (persistent for application lifetime), and cache (using weak references). Recently I've been working on integrating it with the System.Transactions namespace; previously the SQL Server engine used transactions internally, but now all storage engines will be required to accept a RawrTransaction, which can instruct any requests to enlist themselves in a distributed transaction. All business logic is implemented server side by callbacks in the relevant RawrTypes (OnPreInsert, OnPreUpdate, OnLog, etc), giving each type of object a chance to validate, perform any operations, log any information or audit records, or anything else they need to do before or after a write.
There are some further changes I'd like to make, but I'm not really able to - they're too big for a system already in live use - I'll have to wait until I reach a stable point where I can freeze all features and start an entirely new branch. In particular, I'd like to stop using an auto-incrementing ID in my SQL tables, and stop exposing storage IDs publicly at all (since they're not necessary - any object which has a field of another RAWR type already has enough information about the join to populate without the ID being exposed). Then I would introduce GUIDs (again, not public) as a storage identifier, but across all storage engines. I want to do this, because it would solve a problem I'm having with the offline storage feature. Currently, if the software loses connection, it can 'seamlessly' carry on working by using offline versions of data, stored in local SQLite files. A background synchroniser keeps local data such as the menu up to date, and when the connection is regained, it forwards any orders that were taken offline to the remote server. The problem I'm having is that local storage has to be treated as a special case, because it cannot generate IDs. Existing (synchronised) data that already had an ID is fine, but any new orders (or anything else) that's temporarily saved offline cannot be used again until they've been forwarded to the remote server and given an ID by SQL Server storage. Local storage has no way of predicting what ID will be allocated, and cannot guess because it risks a conflict. Using GUIDs, any storage engine is free to assign them as necessary, and I will be able to treat both offline and online storage as equal, and the synchroniser can do it's job in both directions simply by comparing that last update times of objects and their fields.
My time at Market Close, and indeed in Poole, is coming rapidly to an end. Graham decided many months ago that he would be moving back to his parents, so he could concentrate more on university and less on working all the time to afford this house. I can't afford it by myself, other possibilities such as my sister moving in didn't happen, and I don't want to live with strangers, so I'm leaving too. Then there was the choice of whether to look for another flat of my own right away, or whether to also return to my parents for a while. I decided to go back, because it will give me an opportunity to save some money, and also it means that when I do look for somewhere of my own again, I won't be pressured to find one quickly - I can take my time until something good comes along. It should also be a good chance to do some things I should've done by now, such as learn to drive.
This entry could do with a bit more detail, and I've missed some things out, but honestly I'm getting too tired, and I need to work tomorrow/today. Possibly I'll add some more later, but for now, goodnight.
I should start with Diana, I suppose, since she was the subject of almost the entire previous entry. Well, first of all we're still together, and it's been enough time now that I've seen what 'normality' between us might be like, as opposed to the excitement of having just met that dominated my last post. The result of that is good; seeing where we differ, and more importantly the effect of those differences, is vital if we're going to be successful. It has occurred to me that I have been more... analytical than emotional in my thoughts towards this relationship, and I know this sometimes upsets Diana, but I think it's what I need to do, for now at least. It wasn't exactly a concious choice, but more of a side effect of the way I've been feeling about myself, and a desire to actually learn from the experiences I've had so far; I'm proud of who I am, and I don't intend to change. In the time I was with Adele, she caused me to question a lot of things about myself that I vaguely knew, subjects I knew I had certain opinions on but had never tried to formally define. She accused me of being inconsistent, and I decided that the only way to prove otherwise was to declare a set of rules that defined my behaviour in all cases. Since that time, I have been trying to do just that, and it's become the strongest part of me, what's kept me going through difficult times. I've made it my goal to describe and live by a consistent set of rules, whatever the consequences. Whether I'm entirely successful is another matter; I'll make mistakes, and people are complicated - there'll always be surprise exceptions, things I didn't foresee - but my intention will always be consistency. Being a programmer, I tend to imagine these things in the way I might implement them in code, and that would certainly be based upon a tree structure, with child nodes representing increasingly specific conditions and rules than their parents. The root, above all the conditions and exceptions, the global rule which applies in all cases not explicitly overruled, I decided on like this:
For every one of your principals, there will be people who think you are right, and people who think you are wrong. Pleasing everybody is impossible, there's no more reason for you to adhere to their ideals than there is for them to yours anyway, and arguing over it tends to be futile, so the easiest and fairest solution is to allow everybody to follow their own rules. This obviously results in chaos as everybody does whatever they want to everyone else, so we need to add the restriction that your actions (or inaction, whichever causes change as opposed to that which causes no change) must never conflict with the ideals of anyone who would be directly affected by your action or inaction. The result of this is that in order to create any change from default state between you and another, which would have effects for either of you, that change must be 'right' to both you and them.
The problem with living by this, is that to work as intended it requires that everybody else also follow it, which just doesn't happen in the real world. However, just following this rule means that my interactions with people who don't are usually limited to those with very little effect on either of our lives. To me, that's a desirable outcome.
How is all this relevant? Stability has always been what I've wanted from any relationship, that has never changed. This drive to define myself and my behaviour brings me stability. Deciding what I am, and consistently being that, is safer and better than attempting to adapt to changing conditions. As well as that, experience with Shanna shows me that causing anybody else to change their behaviour is not safe, and indeed doing that is a violation of my rules (by whom is not important). Diana and I do have disagreements, but that's not what's important - what matters is how they get resolved. I haven't been very... flexible, and I know that; subjects have come up that I haven't been willing to compromise on, several times even leading me to say that if the issue is a critical one then the solution is that she shouldn't be with me. It upsets her, and I completely understand why... it is cold, and it does imply a lack of emotional attachment, but I don't mean it that way. I say it because the only other solutions I see are that I change or she change, both of which break the rule, or we find a way to avoid affecting each other with our different opinions on the matter. The latter is obviously what I want, but the result is usually somewhere between that and Diana changing her behaviour, which scares me. I don't want to change her because I think it's wrong, but what frightens me is my experience with Shanna. I think that people overestimate their ability to deal with things they don't like, and I've come to the conclusion that any of that in a relationship is just asking for trouble later. Of course, not everyone is the same and I can't use one example as proof of a fact; she asks me to trust her that she knows what she is doing, and I will and I do.
I know I could try harder to compromise, and that it's what I'm 'supposed' to do, but I just feel it's dishonest. I don't want to give a false impression that I'm ever going to be anything but what I am now. I want to show that this is a big part of me, and very important to me. I really hope that I am someone Diana can be happy with, because I know she is for me. I just don't want to become that person - either I am now, or I'm not. If I can be that for her now, I always will be, I promise her that - by following the rules I am defining now, it's guaranteed.
As usual, my long analysis has probably given everyone the wrong impression. That's my logical point of view, that's me being practical, and I try to keep emotion out of it. However, all of that would be completely pointless if there was no emotional reason behind it all. In the end, the reason I spend so much time thinking about how to make it work, is because I really want it to work. I want it, at the most basic and selfish of reasons because it brings me happiness. I always find it hard to explain in detail, but there are things about her that give me a lot of hope. Like I said last time, I love her because she is everything I need for that to be true - I feel the freedom and safety in sharing everything with her. I could add the cliché bits (you know, "she's smart, she's funny...") - but I kind of like to think that those should be standard, not extras. Anyway, lets just say that's all there, and other things I probably shouldn't write about...
As for what we've actually been doing all this time, until recently we were seeing each other roughly once a month, which has been good. At the time of my last entry I had a trip to Germany booked, and since then I've been twice and she's been here two more times. The time we've spent together has been wonderful, and as usual I'm regretting that I didn't record all the details whilst it was still fresh in my memory. Like it always is, all idea of time has been completely lost and I just remember things we've done, but don't have a clue when they were. The long distance thing has been strange to return to - it creates a kind of pressure during the times we have together which I'm not particularly fond of. I prefer to forget that there's a time limit, and just act as though everything is normal, but I agree that it's wasteful that way - we should try and make the most of our time when it's limited. We're currently in a period of a few months where we won't get to see each other because she's gone back home to Romania during holiday from university. I was supposed to be getting on a plane tomorrow to visit her for a week, but unfortunately some unexpected things happened that end, and it wasn't possible any more. I don't know when the next time will be, but I hope it comes soon.
One of the places we went, was to the Counting Crows concert, which was (eventually) excellent. I say eventually, because it was cancelled and rescheduled twice before we finally got to see them. It was originally supposed to be in December, and Mum bought me two tickets (one intended for Shanna, but I gave it to Graham when she left) on my birthday. However, it was cancelled and changed to May instead. Originally, those going had been me, Graham , his parents, and Connor. Since it had been moved though, we realised that it would be during the time that Rachel was staying with us. She quickly tried, and succeeded, in getting a ticket. On the day it was supposed to be, we all went out for a meal at The Goat before the show, only to be told at the last moment that it had been cancelled again. The meal out was still great, but it was disappointing to be let down again. The date was changed to a few days later (I don't remember exactly), and then I realised that it coincided with when Diana would be here too! I tried to get her a ticket, and luckily (possibly due to cancellations because of the changing dates), I was able to. So, in the end both Rachel and Diana were able to come too.
It was a good show. The only other thing I'd seen live at the BIC was Bill Bailey, so I didn't know what the sound would be like for a music concert, but I was very impressed. I'm sure it helped that we were standing right at the front by some speakers, but it sounded better than where we'd been sitting in Wembley, when we saw Dream Theater. As is typical for Counting Crows, there were a lot of 'songs inside other songs' and changes and additions, which I like about them; I think it's nice for a live performance to be something more than just a live recreation of studio albums. We bought ridiculously-priced t-shirts at the end, of course, all part of the experience. Unfortunately, so was the journey home - originally, the December date had been on something like a Wednesday, but the final date was on a Saturday night. Saturday nights in Bournemouth town centre... let's just say they're not something I like to experience.
At work, I did what I said I was going to down. Vantage is now built on top of RAWR, and RAWR has grown to accommodate it. The way things work now is basically that we have RawrObject, on which all Vantage objects are based. Any RAWR object has a RawrType associated with it, which describes a set of fields, their types, and bindings to various storage engines. Storage engines implement IRawrStorage, and must provide a means of storing and retrieving RAWR objects by certain criteria. RawrObject provides functionality for objects to populate their fields only when actually needed. It also provides specialised field types beyond simple values, such as collections, references, serialised data, all of which are handled automatically, with clearly defined and enforced rules for their persistence. All in all, it works, and works very well. Most of the hard work falls to the storoage engines, so far of which I have one that uses a SQL Server back-end, for Vantage Server, and on the client side SQLite (local disk), memory (persistent for application lifetime), and cache (using weak references). Recently I've been working on integrating it with the System.Transactions namespace; previously the SQL Server engine used transactions internally, but now all storage engines will be required to accept a RawrTransaction, which can instruct any requests to enlist themselves in a distributed transaction. All business logic is implemented server side by callbacks in the relevant RawrTypes (OnPreInsert, OnPreUpdate, OnLog, etc), giving each type of object a chance to validate, perform any operations, log any information or audit records, or anything else they need to do before or after a write.
There are some further changes I'd like to make, but I'm not really able to - they're too big for a system already in live use - I'll have to wait until I reach a stable point where I can freeze all features and start an entirely new branch. In particular, I'd like to stop using an auto-incrementing ID in my SQL tables, and stop exposing storage IDs publicly at all (since they're not necessary - any object which has a field of another RAWR type already has enough information about the join to populate without the ID being exposed). Then I would introduce GUIDs (again, not public) as a storage identifier, but across all storage engines. I want to do this, because it would solve a problem I'm having with the offline storage feature. Currently, if the software loses connection, it can 'seamlessly' carry on working by using offline versions of data, stored in local SQLite files. A background synchroniser keeps local data such as the menu up to date, and when the connection is regained, it forwards any orders that were taken offline to the remote server. The problem I'm having is that local storage has to be treated as a special case, because it cannot generate IDs. Existing (synchronised) data that already had an ID is fine, but any new orders (or anything else) that's temporarily saved offline cannot be used again until they've been forwarded to the remote server and given an ID by SQL Server storage. Local storage has no way of predicting what ID will be allocated, and cannot guess because it risks a conflict. Using GUIDs, any storage engine is free to assign them as necessary, and I will be able to treat both offline and online storage as equal, and the synchroniser can do it's job in both directions simply by comparing that last update times of objects and their fields.
My time at Market Close, and indeed in Poole, is coming rapidly to an end. Graham decided many months ago that he would be moving back to his parents, so he could concentrate more on university and less on working all the time to afford this house. I can't afford it by myself, other possibilities such as my sister moving in didn't happen, and I don't want to live with strangers, so I'm leaving too. Then there was the choice of whether to look for another flat of my own right away, or whether to also return to my parents for a while. I decided to go back, because it will give me an opportunity to save some money, and also it means that when I do look for somewhere of my own again, I won't be pressured to find one quickly - I can take my time until something good comes along. It should also be a good chance to do some things I should've done by now, such as learn to drive.
This entry could do with a bit more detail, and I've missed some things out, but honestly I'm getting too tired, and I need to work tomorrow/today. Possibly I'll add some more later, but for now, goodnight.