Beat down but not broken

March 31st, 2008 by marc

It has been a long three days! Unfortunately my ‘deep dive’ into launching a public site, and establishing the framework of my online application will have to wait. A combination of being struck down by a bout of flu, and being on call the whole weekend sapped any energy or enthusiasm for that matter to do much of anything. At most I managed several chapters of reading but that was it.

I have a little work to do as they say to catch up to where I want to be- which is stressful, but is simply the fact of the matter. I will have more to report on tomorrow, and will hopefully be in better spirits!

And then there was one

March 27th, 2008 by marc

Well, there is officially one more day of the week! Not much to report on today, just carried on making headway into my SQL book- on the plus side I am quite happy with the progress I am making, the syntax and concepts are coming back to me with relative ease, and I am able to parse through the book at a pretty good pace.

This weekend I plan to balance the SQL with some more C#- so that i dont lose touch with that which I have already learnt. I am thinking of looking into the possibility of hosting my site and application through a service provider, so that I have a online project sandbox so to speak…it is definitely time for me to start demonstrating that I am making progress. Something tangible that is.

Time to wrap this up, but in the words of shakespeare I will bid this trusty old yellow dog adieeu until it be tomorrow.

Jumper cables anyone?

March 26th, 2008 by marc

Well…what can I say….absence makes the heart grow fonder! Lol- just kidding, I have returned after a long time- i think my last post was on the 14th, or in and around then. Vegas was a blast- it has been a long six years since I last saw my brother! It always amazes me though, even after such a long time apart, how 15 minutes is all it takes to get right back into the swing of things. On the flip side of the coin however saying goodbye provides a low that takes some time to come to terms with- but we have memories….and great memories at that http://www.n9negroup.com/#/playboy/photos/?currentGalleryItem=0&gallery=2339¤tPhotoItem=70&photo=0

Then it was back to work on the 20th…..say no more…x10 more work than when I left- weird how that always happens, a cruel twist of fate that lady luck sees fit to bring you back to earth with a thumping crash. And now here I am, and yes I admit the thought of getting back into my project was one I could not bear until now. Now I am ready, my mind is clear, and my xen is near ‘pre holiday’ (lol). 

 So- I thought I would briefly recap on where I am: I have been reading through my C# sharp book and doing excorcises, as well as reading bits and pieces from books I have on Silverlight, LINQ, & ASP.NET AJAX - just to get an idea of these new technologies / improvements to the current framework, in the hope I guess that i could integrate them. On a really positive note my belongings finally arrived in the states after 3 months on the high seas- and with them all my books…and that gives me a really strong sense of security, in that I have all the material I could possibly need to answer some of the random questions I have.

 In so far as my overall strategy is concerned I have started getting back up to speed on SQL, and am starting to actively tackle the back end! My feeling is that the database developement is probably the area that i am most comfortable with, and that if I can anchor the project with a database it may make the front end easier to build- more importantly it will give me an initial sense of achievement! Technically it should should also give me an intial idea of the class I need. The dynamic of my project has changed so much since I first started- and I dont know whether it was arrogance, an ill conceived idea, or the notion that i had something to prove to myself that led me on this journey? My initial plans, my fervour, and the perception of what would lie ahead now seems mislaid- it is not that i am overcome with skeptism, on the contrary I am still really positive, but I am now approaching this with a lot more realism in terms of what I think I can achieve. I really wanted to approach and complete this project with clinical precision, follow a text book methodology, and develop an application like a top flight software house…but that lofty aspiration was clearly misguided, and I need to accept that trying to make this ‘perfect’ could be my downfall, most importantly prevent me from enjoying the process.

So the ‘new’ plan is to carry on learning, and create form from chaos- for want of better words. I need to stop trying to build up to a point that clearly will never come! I am going to try develop the idea/s I have in my head without referencing a design or blueprint- my application will evolve on the fly, as I learn, and as stumble through the unknown. I guess the realisation I have come to, in my situation, is that there is no right or wrong. The most important learning that will come from this whole project is the understanding of what works, and why- having the ability to reflect over the entire thought process, the ideas that were had, the plans that were tried and tested, and the reasons some were succesful and others failed. That knowledge could then potentially be used to build an effective learning model for someone who may fing themselves in my situation.

Good to be back, and more tomorrow!  

Nothing to report today

March 14th, 2008 by marc

Well good day sports fans, and welcome tonight’s spectacular showdown…..Errr…wrong game I am afraid! Today was very low key, I did not have much time for anything but focus on my Interim Project Report- pulling all the information together, and formatting it for submission (tomorrow).

I did a little reading, which always proceeds the exercises- and to be fair I started to read up on some AJAX for ASP.NET. Admittedly I did not get too far, being a new concept an all.

So tomorrow it is back to business, and I am looking quite forward to it actually- and I feel a little disappointed that I did not get to do any coding today. And that about wraps this post up…until tomorrow I guess.

Still on a slow train to loopville

March 12th, 2008 by marc

Well another long day…at the office…working for the ‘man’…and then for the other ‘man’! The dichotomy of my brain into these two opposed factions has ironically created somewhat of a comfortable balance in my life…I look forward to 4:30pm, that watershed, when I down tools and slip quietly in the world od academia. Could it be that I have stumbled upon ‘Routines’ door? I hope so!

Okay, lets get down to business- and what I accomplished today! Don’t expect a novel because it was pretty slow moving- the exorcises are getting much tougher and more complex…nonetheless I pretty much understooD everything I did and again am happy with my progress…little things are beginning to click! Don’t turn the lights off though because we still do not have sparks.

So I pretty much carried on with for and while loops,  and if/else statements. I built a few nifty little applications one of which was a form based application- when you clicked on a button it checked whether a check was checked and then changed the color of the form! The second one was also form based- this time however when you checked a box it the form went all psychedelic  i.e. cycled through all the colors possible. I added another loop to cycle back down, and manipulated a few .NET statements to delay the changes etc. etc. The final application was the ‘Big Daddy’…very excited about this one..MMmmmmmm real good!!! Essentially I created a form based application, a new class, and linked the two together  so that when you entered text into a text box, and the number of times you wanted to say it, the button that you then pressed hooked up with the class and made that happen. Finally I did a few exercises where a desired output was presented to you and you had to fill in the code to get you there

….i did cheat a few times and look at the solution!! I guess this leads me onto my concerns at this point- i am getting comfortable following exercises and thinking about what I am doing (importantly understanding the code as I go), but I do not know for the life of me how I will get to that point where I can take the training wheels off and run like Forrest Gump!! So i guess what I am trying to say is that this is still quite daunting, which is probably expected, and I am still a little skittish about my task ahead.

Rightie O - time to go…I can hear the train and I most certainly don’t want to miss that. 

I am going loopy

March 11th, 2008 by marc

ahahahahahahahahah…such a comedian huh? There are no prizes for guessing that the topic covered today was all about: loops; if/then statements; logical operators; conditional tests; and variables. Oh and I almost forgot to add that i made it a step closer to the fire escape, and my realising my hidden desire to launch this laptop from the rooftop…..I spent an hour trying to investigate, with no help from the IDE, why I could not circumvent the original main method in a new program I created i.e. replace one main method with a new one that I created! At the end of the day the lesson learned was that the word ‘main’ should have been written ‘Main’

-and then everything worked! At least the IDE was kind enough to make my indiscretions in the curly bracket arena a little more clear and intuitive to resolve.

 So what did I do- a bit of reading i.e. going back over what I did yesterday, and then I created two new form based applications, one of which had several buttons and when you clicked on a button loops, and if/then statements ran performing conditional tests- and finally producing an associated output. Most of the results were based on mathematical / name comparison.

 That is it in a nutshell…not much to report really. I will say this though I am feeling quite pleased with myself, and my general understanding of the basics- which bodes well for the future. I am hoping that in the next week or two I will be better predisposed to understanding how I may apply my knowledge to the problem domain I have chosen. The last thing i would say to anyone in my position, my final swansong for the evening, is that the only way you will ever grasp a programming language is through doing all the associated exercises that you will stumble accross in the book of your choosing- NO MATTER HOW SIMPLE OR BASIC THEY SEEM! I cannot stress enough the fact that when I read through these simple little exorcises I thought that I understood them perfectly, but doing them was entirely different- actually being forced to think about the semantics of the program, the syntax, and the end result…IT IS AN AWESOME FEELING TO ACHIEVE SOMETHING EVER SO SMALL!!

Oh and make sure you get a good book….

 See you tomorrow. 

Pop the cork on the bubbly stuff, we have a result!!

March 10th, 2008 by marc

Well if it must be said I was a little apprehensive yesterday…going back to the drawing board is never easy, and what I found after completing Sundays post was that slowly but surely little thoughts, negative thoughts, crept into my mind as to whether I had bitten off more than I could chew! I guess the jury is still out on that one, but after today I think we are a step nearer to a ’hung’ vote. I set myself a goal, and followed it verbatim…sure it has only been a day, but I do feel like I accomplished something, and it scheduling aspect of it was a whole lot easier than the ‘other’ plan.

 So what did I achieve? Well I built my very first data driven application that I have aptly named the ‘Citrix Systems Contact mate’. Admittedly I did have to follow through a series of exercises to get here, but hey…I understood everything I was doing, and was able to track through a lot of the code that the IDE added- or at least identify where it added code. In fairness I am still struggling to understand the code, but that hopefully will come in time. A big positive that cannot be overstated enough is that I actually enjoyed what I doing, even though there were a few occasions where I visualised my laptop base jumping from the 5th storey…minus a parachute! Luckily we didn’t get as far as the fire escape.

 So lets surmise today’s work:

Time Spent- 2.5 hours…clearly not enough, and attributed to the fact that I got tied up racking new servers, a switch, and router. Tomorrow I need to be more precise.

Key Learning’s-C# and Visual Studio have prebuilt structures that handle the tedious code. I worked with form objects today and the IDE automated a lot of the visual elements that I added…reducing the amount of code that I had to add by x100 times!! Something like that anyway. I was actually amazed at how much more coding you would have to do with the IDE’s assistance. I also worked with the .NET framework and Data Access objects.

So my form had several .NET Visual Objects, and a middle layer or data layer that interacted with a database- that layer comprised of .NET Database objects. On the back-end I had SQL database for data storage, and finally packaged all of it neatly so that my little application could be deployed. The application itself simply keep track of contacts.

Some of the key files that I need to remember are:

Form1.cs (contains my code, and defines the behavior of the form); Program.cs (code that starts my program and displays my form); Form1.Designer.cs (file that contains the code that defines my form and its objects); and finally my Form1.resx (keeps all my resources i.e. pictures, audio files etc. that are associated with the program).

There is stil la long way to go, and hopefully these files will all become like second nature to me. What else did I do today…Mmmmm…I also started reading a book on Microsoft LINQ, which I thought was very interesting- have a standard language/syntax that you could use to query multiple different data domains. It also seems much more flexible than SQL and I am thinking that it could be interesting to try and incorporate into my project. I have a lot more to read and understand on this subject before I jump to any conclusions.

Oh no- I have just tried to upload my files for my little application and they seem to violate the security guidelines of Yellow Dog Linux..I will need to find an alternate way to share my magic with the world!

 This is me signing out until tomorrow.

Watch out- slippery surface ahead!

March 9th, 2008 by marc

How many times are we forewarned about the dangers that lurk ahead? And how often do charge ahead preaching the doctrine of “it will never happen to me”, only to burned in the very fire that you could so easily have avoided. Boy oh Boy….in my defense I have just gotten used to the fact that mothers are always right, but i have not yet learned to heed that little voice in my head- call it stubbornness, the need to tackle something way out of my comfort zone to prove myself, or is it possible that i enjoy setting myself up for a fall…lol…i will be sure to ask the ‘Big Guy’ when we eventually meet (amongst other things).

No this is not me after a night on the tiles, and I have not been nibbling on a mushroom that i found growing wild, these are in fact the ramblings of a man who has started to realize the full scope of the project he has undertaken- and admittedly a man who has failed to post a blog in over a week! There is a positive I can take out of this though- i now know that I suffer from the ‘Ostrich Syndrome’ …you know one? When faced with a terrible situation you dig a hole and put your head in it, hoping that things will fix themselves, that when you lift your head out again all predators would have disappeared and the sun will be shining! Okay so I don’t have Lion charging after me, but Father time can be equally as ominous in the human world….lol!

 Okay- so what has happened in the last week, what is causing me to stumble, and this be corrected? The most important answer first: Yes I do believe this can be corrected!!! So in a previous post I laid out my plan, and mapped out the hours I was going to commit to working on the project- all of which were in the morning…that in a nutshell was ‘nail in the coffin’. Let me explain that I did start off positively waking up on Monday and Tuesday at 5am, and working until 7:30am before getting ready to go to work….but on Wednesday it got to me…i hit a ‘wall’…and found myself falling asleep at my desk around 11am! Personally I found it quite amusing. Thursday and Friday were doomed to fail  because I had to be at work early. So what about working at home in the evenings? Well that to does not work- i run after work, which is important to me, and when I get home i normally like to unwind in the pool, do a couple of lengths, and then cook dinner, and prepare for the next day! So by the time I can sit down to study it is almost ten and I am exhausted! That is reality of the situation! So the plan, or should I say the corrections, I am making to the way I do businessare based on several realizations and amendments:

  1. Probably the biggest realization that i have had, specific to the nature of the work at hand, is the manner in which I am currently trying to get up to speed with programming…which despite all my wishes will never get me to where I want go! I have been reading like crazy, and understanding most of what I read- which let me tell you lulled me into a false sense of reality…I had visions of turning on my computer after getting through several  books, bringing up Visual Studio, and ‘belting’ out a wonderful program. Looking back to my first year in college, and being faced with the task of programming for the first time, I had the same mentality…and it got me through with an ‘A’ in the final exam! But that ‘A’ could have, and should have, been a ‘F’….because I had no concept of how to program- or an appreciation of how to solve a real world problem! Maybe that is why I have undertaken a programming final year project- to right the wrongs of the past? Lol- of course not…I am doing this because I would dearly love to have the ability to use the tools that understanding a programming language /IDE provides you with, so that in turn can be empowered to solve real problems, relate to developers, and build little applications to make my working day easier (i.e. automate those repetitive tasks that could better accomplished by a program). Simply put I am doing this project to learn- which is the strongest reason of them all! Alrightie then…back to where I was before I got side tracked. So what is it that I have learned- I need to be doing exercises, and working with visual studio, as much as possible- PRACTICAL MAGIC….no this is not a Nicole Kidman movie, so let me revise that PACTICAL APPLICATION…..EVERYDAY!! Reading is not good enough- I need to immerse myself in as many tasks that I possibly can that results in small min programs…it does not matter how complex they are! The deliverable i.e. how am I going to track this? I am going to upload all the programs I work on, on the day that I complete them- yes, I am saying it again, I am going to write a blog a day- more on that later. I justified putting this off by saying that I needed the ‘professional/developer’ edition of the software- and that I needed Microsoft SQL 2008…but you know what that I an excuse…today I downloaded the express edition of both and i am ‘diving’ in…my only hope- that this (programming) is like riding a bicycle…hard at first but once you get it, something you never forget
  2. Get up at my normal time which is 6am, shower and head straight to work…but if I get to work early, like 7:30am, I can call it quits at 4pm. I plan to on my project Monday though Friday from 4pm - 7:30 pm, and then head home for a swim. My run will now happen during lunch. I will then aim to get 3-4 hours done on a Saturday and Sunday. On the daily blog I mentioned, I am going to log how many hours I get don each day, and try to detail what it is that learn.
  3. The final step I have taken which will not come into effect for 10 days, but which should help, is that I have signed with a company called Nutrisystem (look it up it is pretty cool), and they will deliver a balanced and planned meal system to me which includes Breakfast, Lunch, and Dinner for everyday of the month….preparing the meals takes a lot of time, as does shopping for them! That however is only half the battle- not eating properly affects your concentration, you mood, and your well being…so by doing this not only am I saving time, and money, but I am going to position myself, mentally I hope, for success. We’ll see I guess because I have always been sceptical of these companies that undertake efforts like the one I have mentioned.

So that my friends is it for now…and I will leave you with two fantastic quotes:

“All things are difficult before they are easy. ”

(Thomas Fuller)

“Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. ”

(Samuel Beckett)

The Shift Scheduling and Notification System

March 1st, 2008 by marc

Okay, so now we are getting to ‘nitty gritty’ of my intentions, my purpose, and the effort upon which my degree will rest!! The ‘Shift Scheduling and Notification System (SSNS for the discerning reader) is a system that is geared towards the automation of employee timetable creation.

Why you may ask? Well it is simple really…timetabling is rarely an isolated event, on the contary it is inextricably linked to holidays, absenteeism, training events, promotions, hiring etc. etc. More importantly is a practice that incurs a huge amount of overhead on the manager with whom the responsibility lies.

This system will have the ability to account for each of those events/anomalies, and create the timetable automatically, which could then adjust dynamically to change- or via manual intervention, and then notify the employees concerned (mail, SMS).  The overall business objective of this system is the creation of a centralized framework that will make the task of staffing more efficient, and scalable, in the face of increased and more complex scheduling requirements- thereby facilitating the smooth and efficient running of people related process. 

 The following content provides a rough outline of the intended system usage from the perspective of the two main stakeholders i.e. the Engineer (user) and the Manager (administrator). Whilst the description does not provide an in depth explanation of the system events, triggers, and configuration, it does shed light on the interactions of the respective stakeholders, necessary to validate the system and make it effective. Key aspects of this design have yet to be worked out, most notably the inclusion of SMS related technology- an inclusion which is wholly dependant on the cost associated with that implementation, as well as realizing the core feature set / functionality first.

As mentioned the two main stakeholder are the ‘Engineer’ and the ‘Manager’ and what follows is an attempt to detail their possible interaction with the intended system:

Engineer (End user) must logon to the system and upon succesful authentication can:

  • View schedules: Either Personal, Group, or Team (The view will be based on a calendar format)
  • Status update: This refers to their current working status i.e. meeting, lunch, research etc
  • Change requests: This refers to engineers who want to change any scheduled shift. Rules would apply. Upon management approval the shift would be altered accordingly (see manager shift modification)
  • Edit user details: Certain details would be editable, others would not. The exact details have yet to be decided.
  • Message board: This would provide engineers with a forum through which they could advertise shifts they wanted to change or relinquish. Any other shift related notification could be posted here.
  • Filter & Search: Engineers will have the ability to filter and search for particular days in the week month to view the person assigned to a particular shift. Engineers will have the ability to filter and search for the names of engineers who have worked on previous shift

Manager (Administrator) must logon to the system and upon succesful authentication can:

  • Manage users: Add, Remove, Modify engineers and their details; Categorize engineers by classification (i.e. senior or junior; online or offline; 24×7 or not); Change the status of engineers (i.e. available, absent, vacation, training, exam, or shadowing);Add engineer shift preferences
  • Administer Groups: Create groups of engineers based on product supported and/or function; Modify groups by name, or engineers assigned to the groups
  • Administer Shifts: Create shift categories based on the week, public holidays, weekends, early/late shift; Define and assign times to shift based on start and finish time; days of the week and/or month; Modify shift times; Add rules to shift categories based on the number of engineers required and/or categories of engineers, max/min number of shifts that can be worked in week and/or month by individual engineers
  • Administer schedule: Publish schedules for an engineer, group, and Team (weekly or monthly); Creating the shift schedules will parse the shift, user, group definitions and produce draft schedules (calendar); Approve the shift schedule. Once the draft schedule (above) has been approved a directed email / SMS to all of the engineers concerned. The email will be sent as a meeting request and populate the engineer’s outlook calendar.
  • Maintain schedules: Can modify the engineer shift assignment. If the manager modifies the shift schedule the same action as above will follow this time updating the appointment in the respective engineer’s calendar; The manager will have the option of then automatically updating the schedule, or making a manual change; Changes could be status related based on whether an engineer is available, absent, vacation, training, exam; The manager would also have the ability to add notes to particular engineer schedules and/or related files.
  • Filter and Search: Managers will have the ability to filter and search for particular days in the week month to view the engineer assigned to a particular shift; Managers will have the ability to filter and search for the names of engineers who have worked on previous shifts.
  • Reporting: Number of shift changes; Engineers who changed shifts; Reason shifts were changed; Days shifts were changed

What is this thing called Software Developement

March 1st, 2008 by marc

Okay so here goes- I have reached out to that good old publisher (O’Reilly) that brought the ‘Head First’ series into my life for an insight into the subject of software development…and I am going to use it as a guide- get me thinking of the right things, and equally so prevent me from doing the wrong things, and help me move in a structured fashion to produce the kind of quality artifacts necessary to complete a successful project.Once again I want to digress for a second, and just say from a software development / programmatic novice’s perspective, how refreshing it is to have a series of books like the ‘Headfirst’ series. I am hooked- truly!! And it would be my recommendation that anyone wishing to take a leap of faith into the unknown does so clutching one of these books.

Lets make no bones about this, I am not a experienced developer, I have very limited experience in art of software development, and I find that most books present the subject in such a dull and boring fashion that I am asleep or irritated after the first few chapters. This however is different…and I am loving it!

 Okay so what are the initial landmines that I need to dodge:

Mmmm not so much for this project, but in a real world scenario definitely!

A B S O L U T E L Y….and for those that cant see me right now I have just turned a pale, sickly, shade of grey. Time is a difficult one, as I have mentioned several times in the posts that precede this one…and let me use an analogy to help clarify my position: Imagine you are asked to drive across the country to a particular destination, at night, without a map (Google Maps these days..lol) or compass (now I am showing my age), and having barely learnt how to drive??? It is a tough call to determine how long that would take…do you see what I mean? All the best laid plans in the world could amount to nothing.

O’Reilly does elaborate on the ‘Big Bang’ approach to software development, which essentially amounts to taking on a project, documenting the requirements, and going ‘dark’ until you have the finished product- and then giving the customer the first glance at what you have produced. I can see how this would cause issues, and I can most definitely see how you could miss achieving the customers requirements…it is an interesting thing perception, because perception is by and large determined from an individual or group perspective, and if my experience has taught me anything it is that if you leave someone long enough, that perspective changes. To bring it all together I guess what I am trying to say is that documenting a customers requirements, and even mapping them, verbatim, to a software application, without any consultation along the way, may still be an unsuccessful endeavour! 

People change, as do perceptions, and so to will the requirements of any project.

I truly appreciate the O’Reilly perspective that the success of a software development project depends does not depend on fancy development processes, but rather finding a process that work for you, and assists in producing great software- on time, and within budget. I guess that is the essence of most successful people, not that they do things exactly by the book, but rather they find what works for them and they do it well.

So far the guiding principle that I am going to use in my development process is going to be that of regular ’I - T - E - R - A - T - I - O - N’ . Considering my experience I need to make sure at all costs that the project stays on track, aligns to the customers requirements, and that risks are identified and mitigated early on. My project need to be built on an established platform!!! 

The way I see myself achieving that is through the following process:

  1.  Through decomposition breakdown the requirements into modular blocks
  2. Identify dependencies and the natural sequence of events
  3. Prioritize
  4. Tackle each of them in turn iteratively- designing, coding, and testing.
  5. Reviewing each deliverable in turn with the customer
  6. Their verification and validation against the requirements specification will signify that I can move onto the next module

I am going to steer clear of putting any specific time delimiters against the modules for now…obviously I am still learning C#, Visual Studio, and getting to grips with the .NET classes. Furthermore I may change my customer review periods as the project evolves- depending on what feels right for the project….and so long as I don’t jeopardize the project. 

 Next step…lets map out those requirements!!