Sunday, November 25, 2007
Tuesday, June 05, 2007
I was thinking more about what I said about patterns. I was thinking about another example of how my comments last time about them were justified in frameworks that I have seen. The BREW API strives for consistency but it uses a couple of different patterns for callbacks from methods. These amount to style. The language that a developers uses to talk with each other never covers style. We always just talk about the callback and worry about the implementation later. The implementation has different names for the pattern used for the callbacks in the API. In fact even in our shop we give a name to the style based on the project it came from. That may be unusual but it works. We say something like, "You should use the style of callback used in the GIR project." We never use the pattern names for this stuff. Pattern names are confusing they don`t clue a developer into an implementation of a pattern. Different languages and different implementations of languages is MS C++ or GNU C++, is it on Solaris, is it on the emulator, is it on the device...all these things muddy the waters about patterns. On Solaris we use roguewave. On the device we use BREW. In windows we have to deal with what part of emulation. All affect patterns. It is to difficult to talk about patterns of implementations. So patterns like in the GOF book are not used. This is like discussing style at a time when you need to dispense with the structure and talk about the high level behavior. So API structure like in the GOF book is not practical for use as a communication mechanism or for reuse of well known implementations because these things depend on too many other things. The objective is to have one codebase with conditional compiles for different environments. This is so that the same code used for load generation on Solaris, is the same code used for handset emulation on windows, is the same code used for firmware implementations on the handset device even though the implementation of some of the behavior is different and conditionally compiled in. GOF patterns are not used the way that they are taught they are used in the real world. They are not as generic as they seem they have implementation dependencies even though they may seem that they don`t. This is evident in the multiple implementations I saw for `Visitor` and the arguing over what was better. GOF cannot be the definitive reference on patterns. Patterns of implementation don`t make sense. Patterns of behavior do make sense but with different implementations. As I said in the last post you would not talk about the sentence structure of a message that you were trying to relay to another person when you could say that sentence in a couple of million different ways. Look at your SPAM folder sometime. Did they say that message in a couple of different ways? Did they come of with those sentences on their own or did they have to look in a book for them? Did the first caveman read about the wheel in a book or did he slip on a log and it rolled? I am sure implementation of a wheel does not mean you talk about the spokes. So saying a singleton is a class that only every has one instance is sufficient to talk about. You don`t have to go into that it has a private member with a reference to itself and a private constructor and a static get instance method that returns a new reference to a new instance on the first request and the same reference on subsequent requests. The implementation may be different in other environments. For instance in BREW you are not allowed to have static data. Singletons look totally different but the idea of a singleton looks the same. An yes a developer can come up with an implementation on his own. I like the first caveman creating a wheel have had times where I wanted to use a pattern but had to come up with my own implementation because of the restrictions of the environment.
Thursday, May 24, 2007
Work is going really well. The patent needed my signature yesterday to move ahead. This is the last stage. The lawyers just needed our signatures as inventors to put the final touches on this. I have been involved with patents in the past but the patent search always showed prior art. This is the first one that will actually go all the way through and be recorded. I am kind of excited to be on the inventors list.
The API for the government is also going well. I started the domain model yesterday showing the division of responsibilities. I needed to show the deferred decision line since the firmware development will not be done by our company but will be done by the hardware manufacturer. It seems kind of funny that the term `deferred decision` is still popping up after all these years since my work at IBM. The framework development experience then is so helpful now. This is stuff you don`t get in school. The black art of framework development. This will just be an API from our point of view as application developers but I still have to publish the whole framework. It all depends on your point of view. Framework design is kind of like visually represented as a sort of Venn Diagram where the work that is created by the applications developer is put in the middle surrounded on all sides by the framework and the framework calls into the application developer provided code. From the point of view of the application developer it may still be seen as an API or class library. The analogous diagram would be a layered diagram not a Venn Diagram of sorts. When I talked about deferred decision that is usually thought of in the context of layers and is very much more complicated when talking about things from the context of a framework. What was a line becomes a circle. The question is `At what level do you make the decision to defer the implementation to your users?` So I make this kind of decision several times during the day shifting classes or interfaces over this boundary of concern. Strictly speaking frameworks call into the code provided by the application developer and class libraries are used in the opposite manner where the application developer calls down into the library. Just looking at the implementation of Java will show you that both characteristics exist in different parts of the SDK. The important part of the domain model diagram needs to show what they need to implement and what I as an application developer need to implement. I have done that. The design document will help in our effort to work with the hardware manufacturer.
Well I don`t expect to have a post for a while. I will be gone on business for some time and will have to be working on getting ready for our new edition. I expect to restart and continue my school work in a few weeks.
Saturday, May 19, 2007
As I was working on my API last week a few times I looked up implementations of the patterns I was using. The number of different ways to implement a pattern often times makes me wonder how can you call each of them the same pattern. The GOF book can not be the definitive reference. The number of things written about the quality of patterns in that book is enormous. Everybody has got a better way. The reasoning why one implementation is better than another really comes down to quibbles. In the end it is a way to solve a problem. When doing embedded devices you always want to eek out that last little bit of performance because everything real-time can depend on it. I tried a couple of the different patterns that are similar. The profiler could not pick up the difference. It was a bit time consuming to write the examples but in most cases the efficiency gains were minimal. Why would knowing these differences make a difference in anyones life?
So I thought about the test. I thought about how many questions I could ask about these quibbles I spoke of earlier. The test wasn`t like this but it did ask to compare two different GOF patterns. Patterns are usually thought of as being architectural pieces and naming them for better communications among different people on a development team. The architect writes a pattern name on some classes on a class diagram and the end developer reads that class diagram and implements something well known. Well in my experience, somewhat loosely exemplified by what I wrote above, is that pattern implementation is not the well known thing that a door or a window is in building architecture. First the pattern is not something that is implemented every time the same exact way. Also, generally a seasoned developer can come to a similar implementation without knowing that they used a pattern and may have never heard its name anyway. I think that patterns are really a better way to teach software programming concepts. But, after you learn say...what double dispatch is, and how it is used in the pattern then you can forget the pattern name and just continue to do that unnamed concept. People don`t really talk in patterns. The confusion that that would generate is too great. I have an example.
I was reading my son some children`s books yesterday before bed. He got the bright idea to have me read the books backwards. So I did. The first few pages were easy to read but I started to try and understand the story also. To think in reverse is kind of easy for me. I have some affinity for it probably because of how information is stored in my learning disabled brain...in the form of unnamed objects and not word networks. So it took me a few pages to get the structure of sentences but after getting the structure I could understand the story in reverse and see how it went from the whole to the part. Pieces of the story work removed for each page that I read one after the other until I came to the first page. I even made mistakes like guessing words and reading them in the wrong order because the sentence idea would come to me before the words would. I do this reading forward. Reading forward gets me into trouble because I don`t read carefully enough and often get the wrong idea after reading something. Therefore my comprehension goes down because I have interpreted something that was not there. This was similar but because I had to go through a translation of reverse I think I actually read better. This would be a good technique for understanding. It would be better than me typing my entire texts to slow the interpretation process and gain understanding that way. Now I have noticed some of my learning traits in my son. During this reading backwards I wondered if he was getting the story. I think that he was because he had no complaints and enjoyed the reading just as well as I did. I kind of did this on the fly. It made me realize that patterns are not something that we use for communications it is something we use for understanding. To be able to recognize pieces of code and how they are joined together to get an overall picture of a program or system. This idea that somehow they add in reuse and better design through well worked algorithms is false...at least for me...and I think for others. I understood the sentence structure in reverse quite quickly. The pattern of English sentence structure in reverse is not something that I will use to share an idea to others. I am not even sure I could articulate the pattern. But in my head I understand that pattern well and can recognize it and understand the meaning of the text....I will say that part again for emphasis....I can understand the `TEXT`...paragraphs, plot, genre. So unnamed patterns of understanding reused over different software systems is how we use patterns. Clever implementations are not as the result of using patterns. They are the result of good programming skills. Skills that are unnamed. We don`t really talk in pattern names. You would not talk about sentence structure to get your point across about a concept you wanted to convey to another person, would you? Don`t use software patterns for that either. Naming a pattern is useless.
Picking a new swim locations is coming down to 2. I will be able to keep swimming this summer. Three years and I have only missed a handful of MWF`s. I will be able to keep my regimen. Running is going well also. You know not in the winter but summer is always good.
Tuesday, May 15, 2007
Lab continues to be fruitful but in very small increments. My protocol EVDO Rev A enhancements have been working since December. The problem is that the lab infrastructure software is a moving target. The latest is a timer that keeps going off in the network that causes QOS reservations to not be granted. I have had things working in emulators since December. It is just a slow process. My client in an emulator has been talking to non QOS handsets off our server and talking to other emulators since last year. I have moved on to working on productizing until more tests are passing in the lab...when the infrastructure starts working better. I was told yesterday some good news that Qualcomm wants us in their lab in the near future...weeks away, not months. The HSUPA/HSDPA handsets are on hold but RevA may be the priority.
My father has been in a semi-retired working state for some time. He is a pharmacist and has been working in a small pharmacy to make extra money...actually a lot of extra money. This small town has a number of ADD people. So much that it prompted him to buy some books on the subject because a pharmacist has to be able to council patients on their medications. It has been good for him to start to study this condition. He has read many aspects of the condition and classifications of the condition. It is interesting because he has started to see the characteristics in my mother. Funny I have never thought that ADD was my label but some autistic spectrum disorder. ADD is what I was diagnosed as having. ADD and how it is acted upon by stress was the focus for my petition for taking the exam again. It is kind of funny to hear my father talk about things. He even said that one classification does not have a sense of smell. I have not had a sense of smell for as long as I can remember. He has always denied that I have had any condition. Maybe he is starting to understand or maybe he always thought that it would be better physiologically for me to think that he thought I was not affected. Anyway this past mothers day it came up. He showed me the books. These were very heavy books, not your usual Barnes and Knoble special. These were medical type books. Books I am sure he ordered. I am sure that this may even help him understand her better. It was a terribly stressful weekend with this kind of talk even though it was not very long...only over the course of an hour or so...partially dinner conversation. I am glad that it has become a subject of conversation. It is just painful to talk about in relation to me or my mother. Talking about someone else is easier.
I have neglected my website. I think that It will have to wait until I am finished with the babies room. I don`t have that much free time. It is important to keep up my workouts over the summer to avoid a depression. I need to find a place to swim in the morning. Only two more weeks to go. We really don`t have the money to join a health club with a pool. Three years of MWF, lets hope I don`t have to quit. Our park district stinks for dis-continuing the morning swim sessions. There is talk that they won`t start up again in the fall. I am running 5-6 miles at lunch with the guys from work. So MWF I do 2 workouts. It is really good for my head. I feel great. Vacation in 2 weeks. I cannot wait.
Still no word on my test results. I know that the graders must be involved in finals week. I hope for the results before I go on vacation.
Thursday, May 10, 2007
Tuesday, May 08, 2007
There has been a shakeup at work. Projects come and go. One of our larger project hopefuls from Homeland Security we lost. A few other projects have been delayed as is the norm at the beginning of the summer. So, we are experiencing some belt tightening during the time before our next project. My projects are generally unaffected. Oh, my research was to go into those other projects. It was especially going into Homeland Security project. Even so, I continue to work on the technology because it is vital to other similar projects to that one. My research is central to a lot of projects. Since I am the only one in some parts I think that my efforts will continue to go unchanged during the belt tightening. It is just uncomfortable to see others in discomfort. New projects are coming. It is just a stressful time for me seeing everything that is happening. The rumor that IBM will layoff 130,000 US employees is also alarming. As a stock holder I don`t like it much. As a member of that industry I am especially uncomfortable. This comes from a report by Robert Cringely on the PBS website. It seems unlikely but it shakes worker confidence in the economy and jobs reports.
So I have not been working on my website. I am planning for our vacation in a few weeks and reading. I have to find a new place to swim for the summer. The park district will be closing the indoor pools at the high school. I am kind of upset about this. They say it is not cost effective. It is not a matter of cost effectiveness. The park district has said in the past that it is there to provide recreation to all in the city. If that is so then it should be like AT&T in the early days of the telephone levying a tax to cover wiring rural areas. It was not cost effective to wire rural areas but they found a way to make it work for everyone. That meant that everyone had telephone. Everyone should be able to take advantage of something that they are taxed for. If it only works for people that are home during the day then that does not work for everyone. I need to recreate. I pay taxes. I expect to be able to use the facilities.
Below is what I published to the PhD status subcommittee:
PhD Progress Report 2006-2007
Student: TheStudent
Adviser: TheSudent`s Adviser
Dr. {head of progress report subcommittee}, I am writing this to inform you of my progress for the past year and to discuss my plans for the next year. You have ask for me to discuss my progress in 3 specific areas:
1) Discuss any significant progress towards the completion of your dissertation proposal or defense.
2) List any significant publications or other research activity during last year.
3) Describe your plans of the upcoming year.
I trust that this document will fulfill the requirements of me. The last year has been a frustrating year. One in which I look back over the amount of work that I did to get to today and am overwhelmed by what has happened. Without the materials I have kept along the way to tell me what has happened and this very exercise of writing this review I would not have believed it myself. Although, today I feel that I could do it all again based on my feelings about the situation, I still look in disbelief back at what I have done. You can see a time line of events at the end of this document.
Going into the last Candidacy Exam of April 2005 I had completed about 8 months of survey work over my intended area of research. I had not written anything for publication because I feel that this area is a new twist on old ideas and had not gotten my advisers direction on any of it. I have talked to {TheStudent`s Adviser} and presented my ideas at his student gatherings. I still think that there is work to be done before any of it is written for publication. I intend to do something with Financial Engineering models and Model Driven Development. I`d like to bring Formal Language Constructs to the "R Language". But, more on that later. I have not been able to proceed because of my position in the program. I hope to explain in this paper. I have been many times turned away for my request to continue working with my adviser on my dissertation, publications or just taking classes. Because of your request I still feel a need to explain myself and my plans for the next year.
To explain myself I need to give you some history. The history leading up to the 2005 exam is known by the PhD committee in my petition for continuance after the 2005 exam. For a little review, after the 2005 exam I waited for my results. When I had learned I failed I was very upset. Since I had prior job experience as a Software Architect for the largest bank in the world and had management and technical control over one of the largest architectural departments and projects there, I believed back then that I had done what was on the test in the real world. I had also done a very thorough study for both of my past exams. I, some time before the test, had lost my job, had a very sick son born and had an uncle die and waked on the day of the test. But, I also believed that it was because of a learning disability and the affects on it by stress where I was influenced to failure by circumstances in my life. You can see this information in that document for petition on file with DePaul University. Through the DePaul PLuS Program I began my appeal.
After the test I acted very quickly to petition. It took a little time to get an answer for my petition for appeal and an action plan from my adviser. I needed the information from my adviser on how to carry out the results of the appeal and what should be done to return to school. After getting that appeal action plan I needed to find a doctor and setup the assessment of my learning disability. By the beginning of 2006 I was attending doctor visits to gain an assessment of my learning disability and also working with the PLuS program. I had already been working with the PLuS program from years before. Both of these activities are emotionally painful, exhausting, and costly visits. I have been evaluated many times but every time it is just as painful. With the assessment and submission back to my adviser and the advisement office sometime during the fail quarter, either very near or after the fall exam date, I was granted the right to take the exam again. This right was given based on the PLuS program and the results of the testing and doctor`s analysis.
Since I had not gotten the desired results on the other two exams, this time was going to be different. I planned on studying the same way and duration I had before but this time I would make everything public. I had nothing to hide and everyone needed to know the effort. I had been told that after the second exam it was difficult for the committee to gain any information about me because I had no website. I have recently looked at other students of my adviser and haven`t found their websites. I didn`t know this at the time but, back then I started a website to be published near the test date. I also started a blog of my experience. They sites are: http://endofdayexperience.blogspot.com/ http://thestudent.fateback.com. They were published on April 9th, 2007. The sites were up before then but I had not told anyone about them until April 9th. They were not google-able until about that time either. I am working to get a link off of digg.com. I also plan on putting up the answers to the questions I remember from the 2007 exam.
In my website I have done every answer on every pre-test exam back to April 2003. In my blog I talk about my experience with each question. There are things in the blog like, how I emailed the authors of the books and papers on the testing portion of the reading list about Equivalence Term Testing. Equivalence Term Testing is a term that is difficult or near impossible to find. The authors of the literature on the reading lists think that this is a DePaul colloquialism. They have never heard of it. I eventually took the answer given to me by others obtained from a DePaul staffer. Another example is the question about Structured Analysis versus OO analysis from previous exams. The information is not in the reading list. The depth needed for the Structured Analysis question meant that I had to get a book written by Tom De Marco. The book is out of print from 1978. I had to get it from a guy in Canada off of the Amazon used books list. I was unable to answer the question before getting this book, the depth I needed could not be obtained by using the books on the reading list or any other books at my disposal. I have other examples of problems with the test written about in the blog.
My website and blog in some respects mirrors an experience with the test. The way that it mirrors it is the 2007 test has several questions not on the reading list, actually considerably more than the pre-tests. As I wrote before, "It was like taking a 14 century literature exam and getting Ian Fleming and Clive Barker, I would have at least done a littler better if you had chosen Neil Stephenson." That analogy is "right on" in its variance of era, genre, and expression of selectivity of vast knowledge. The expression of selectivity warrants another example. This example is not on the test. Lets say the question on the test asks what is the "Third Manifesto"? Are you clued into what to write about? If I ask you about the authors Christopher J. Date or Hugh Darwen are you clued into what to write about? If I told you that the authors book is widely regarded as the standard text on the subject and has sold over 700,000 copies do you know what to write about? If I told you that the authors worked with the father of an associated technology at IBM are you clued into what to write about? If the section on the test is Object Oriented Programming are you clued into what to write about? If I ask you about Object-relational Impedance Mismatch are you clued into what to write about? You get the idea. I am not clued in by those early questions but maybe you are, especially if the questions were not on the reading list. These questions were not on the reading list, including the last question. I and the test writers can ask a question in a way or make it obscure enough that it cannot be answered. The question could be on or off the reading list. If it is on the reading list there is a better chance that the student will be clued into what is being ask. That extra piece of information makes the test more appropriate because the knowledge breadth is finite. In the 2007 exam things like AOP, the Open Closed Principal and Fragile Base Class, as well as others were clearly not on the reading list. The questions either came from another decade and/or the books on the reading list were exceptionally rudimentary to cover those topics in the needed depth. This was echoed in emails and other sentiments from people that I know that took the 2007 exam.
My website and blog in some respects don`t mirror the exam in some way. The way that the site is different than the 2007 exam was that tests from at least 2003 up through 2006 were very consistent. The exams were asking similar questions with similar answers over consistent specific narrow parts of topics. Most questions have come from the reading list provided in 2002. I have been collecting test since the beginning of my masters degree at DePaul. I have the pre-tests that go back from the present to 2003 and farther and the change to have consistent tests is very apparent with consistency of the tests in 2003 to September of 2006. I, and others I have talked with, did not expect the in-consistency of the 2007 exam. The consistencies we expected because of the pre-tests were not there. The topics and depth of topics that we were prepared to be tested over were not what we were tested over. One of my friends left after the first 20 minutes of the exam. He was at least prepared for some portion of the exam but was not asked those questions. The exam was so different with data that was either so new or obscure that I can see his frustration. With his concentration in Software Management, I would not have expected the breadth he would have needed for the 2007 Software Engineering exam.
Enough about my website and study, during 2006 I spent time strategizing about the program. I needed a way to continue progress. I have now been doing research at my current job of doing embedded device development and Push-To-Talk protocols for nearly 3 years. That information is in my website too. I thought that with all of the trouble with DePaul and my situation that in the end I may need to change advisers. {TheStudent`s Adviser} may be wounded in this process of petitioning. Also, I thought that my current job may bring resources to a networking dissertation. I worked hard to make contact in the networking program. I had work contacts that had people that worked for them at Bell Labs and now working for DePaul. Through {Work Contact} a former Bell Labs/Lucent executive manager and {Second Work Contact} a former Bell Labs/Lucent engineer`s wife I met {Networking Professor}. {Work Contact} thought I was perfect for the PhD and thought {Networking Professor} would be a good match. {Second Work Contact} didn`t know {Networking Professor} personally but gave reference to my work ethics and professional research. I contacted {Networking Professor} in networking but he could not work with me until I had passed the third exam. With this experience I decided to not make my problems known when working through future directions and just to plow ahead. I learned enough to know that to pursue this option was going to be difficult. I was told that I was not allowed to switch tests to the networking exam. I was told that I must take the Software Engineering exam for the third time. I decided this would just be an option if other options didn`t work out. This side track took three to four months of diligent talking to people and followup.
With my original work with {TheStudent`s Adviser} I had done 8 months or so of work on MDD/Financial Models/Formal Methods direction. I am very much still interested in doing this. For me to do this I will need to take some more classes in Financial Engineering. {TheStudent`s Adviser} never really was excited about this. I am not sure he ever really understood it. He kept trying to link it back to {formal methods programming language name} project. It looks like {formal methods programming language name} is dead. The website has not been updated since 2003/2004. His students do not have websites of there own that show there current work on the project. Maybe he will be more interested now.
After the networking side trip, for me to plow ahead, my plan was to make contacts inside quantitative analysis and begin there. Having worked in an investment bank in Foreign Exchange and Historical Data I know something about this area. When I saw that ISP 121 was in need of lecturers I jumped at the chance. I had repeated false starts in getting into teaching a section. I did make contact with {Quantitative Analysis Professor}. He may be a useful contact in the future, I thought. I saw in the hallway one day while waiting for something a post of a group doing quantitative finance with a contact {Quantitative Finance Professor}. I thought, now this is the contact that I want. Later, while doing a sample lecture for ISP 121 I met Dr. {Quantitative Finance Professor}. I am glad I made the attempt at ISP 121. The pain of preparing for multiple sample lectures paid off. I have since sent email to {Quantitative Finance Professor} asking to see him when I have finished my exam. I think that this is really where I want to be. Math and Formal Methods really turn my crank. To put these disciplines together for a dissertation in Software Engineering will be the right place for me to finish. I think working with {TheStudent`s Adviser} and {Quantitative Finance Professor} could possibly work.
The R Language is the foundation for starting my research. Adding formal methods to it is the simplest macro idea. The idea is that financial modelers want to devise strategies for trading. Be careful here the word model is used two ways. There is a model that describes the software system and a model that describes a trading scenario. We are talking about a model of a software system implemented in an augmented `R` to describe a model of a trading scenario. The models would be fashioned together in a single unit. This is my new definition of model. The reason for pursuing this augmented `R` angle for dissertation is financial modelers need a framework for specifying, developing and verifying systems in a systematic rather than ad hoc way. They need a formal basis for precisely expressing consistency and completeness, specification and correctness. They would like to realize a financial mathematical model without the necessity of running a system to determine the systems behavior. The ability to specify behavioral and structural properties without the need for a running system cannot be stressed enough. Financial Modelers want to compare multiple models against each other without needing running systems. They want to reuse their models across different environments such as a spreadsheet for pricing and a real-time system for settlement. Financial modelers want to be assured that the models in different environments behave the same and be able to prove it with some mathematical rigor if needed. With formal methods, Model Driven Development, model checkers and theorem provers these things can be done. By using formal methods a mathematical foundation in set theory can be applied to the R language for reasoning about system level concerns. The R language already uses set theory for developing financial models. My ideas pertain to the augmentation of the R language to include formalisms to apply rigor to the properties of the system and not just properties of the data.
My intent is not to write my dissertation proposal right here. My intent is to talk about what I have been thinking about and doing over the last year preparing for my dissertation. I have many books on the subject of `R`. Over the years I have been working through the language for a complete understanding. But, the distraction of the test this last year has been enough to consume a great deal of my time. I am a part time student. I have been studying and preparing a website since September of 2006. Three to Four hours a day since September have been spent preparing for a test that didn`t even have the information that I studied. I have a great deal of breadth and depth that I cannot even show. Even though I have positive feelings about the exam, once again the exam failed to test my knowledge. This was my complaint on previous exams. The time spent away from the real work reminds me of a story called "The Big Brag" by Dr. Seuss. Lets get to the real work. I have done this work over the last year because I believe that it is valuable to continue in the program. T.S. Elliott once wrote, "Only those who will risk going too far can possibly find out how far one can go." I hope I have provided the information you require for assessment of my progress.
{TheStudent}