Rob's profileWelcome to the 'Entertai...BlogLists Tools Help

Blog


    Questions for the Development Team

    There is a very good blog entry located here which lists questions every development team and team leads should ask themselves during development cycles.

    From the article:

    Whole team

    1. What can we automate?
    2. where are we "Reinventing the wheel"?
    3. what are the tools that slow us down?
    4. what tools can we use better?
    5. are there bugs that I could have found earlier? how do I make sure I find them earlier?
    6. when do we find out we built the right thing?
    7. when do we find out our code\design sucks? how can we make that earlier?
    8. How do we show progress at the team level? at the management level?
    9. How many meetings does each dev have every week? how can we remove them?
    10. Are we building by feature or by layer?
    11. can we make all our team sit in the same place?

    Team Lead

    1. daily: what bottlenecks exist in the team? what have I solved?
    2. will my devs be better in a month or two than they were before? if not, how do I make that happen?
    3. what prevents my devs from working? what am I doing about this?

    Some of them are very useful, but I thought I’d expand on the list from my own experiences:

    Whole team

    • What is our focus this week?
    • How do we effectively communicate who is doing what?
    • Do we have any change requests or outstanding requirement clarifications?
      • Can these be satisfied in a reasonable time frame?
    • Are we ‘on track’ to meet agreed deliverables?

    Team lead(s)

    • How can we make our work more visible & available to the customer(s)?
    • What resources (physical/technical) do the team require?  Are they available/scheduled?
    • Do we have any ‘single points of failure’?  If so, how can this be mitigated?
    • Are client expectations being met?  If not, what can be changed to fix this?

    It’s really important to understand what is a “team responsibility” versus a “team lead responsibility”.

    Some forms of Agile development practice make this a little unclear, but in my experience, someone needs to be responsible for ensuring team goals and responsibilities are being met on a weekly (or daily) basis.

    Some of this could be shared by a project manager as well as a team lead/architect, but the important take away is to ensure someone is asking these questions on a regular basis.  Keeping client expectations in mind is a critical step.

    Absence makes the heart grow fonder..(?)

    Well, it’s been some time since my last decent technical article.  There have been some distractions lately, but I’ll be back on deck with some fresh content shortly.  I’ve got some SQL Reporting Services goodness and also some tips and tricks on getting the most out of SQL Integration Services.

    Lastly, I’ll attempt a foray into developing a meaningful working solution on the back of Windows Azure.

    July is creeping up very quickly (thankfully) so hopefully I’ll get a chance to put more thoughts into the blog.

    Lastly, I hope winter isn’t dampening your spirits (or that summer is a bliss for the northern hemisphere types) and that you’re getting geared up for the second half of 2009.

    Always../R

    Dynamic SQL, Identity columns and T-SQL Migraines

    Well, this week I was routinely contributing to the massive indentations in my forehead (banging my head against my keyboard) due to an old SQL Server favourite.. “An explicit value for the identity column in table '[Table]' can only be specified when a column list is used and IDENTITY_INSERT is ON”

    Basically, to facilitate inserts (mirroring data) I had to switch off the use of an identity column on the target table.
    To do this you normally use the SET IDENTITY_INSERT <Table> ON statement. 


    The scenario?  In order to support the use of changeable (rather than hardcoded) server and schema names, we needed to prime dynamic T-SQL statements and execute them.  The problem?  An EXEC() statement operates in a separate environment.

    In other words, executing a
    SET IDENTITY_INSERT [' + @DB + '].[' + @Schema + '].[<Table>] ON;
    statement is only going to be effective if it is used within the same command batch (the same statement executed by the exec statement) – in other words, it should precede the required insert operation within the same statement, and then executed.

    SET @statement =
    'SET IDENTITY_INSERT [' + @MirrorDB + '].[' + @MirrorSchema + '].[<Table>] ON;
    INSERT INTO [' + @MirrorDB + '].[' + @MirrorSchema + '].[<Table>]
    …(snip)’
    exec ( @statement )


    The problem I was encountering was actually unrelated  to the error message!  After batching the SET statement, it turned out I was using an INSERT INTO statement between two databases (Fully Qualified) – the schemas were the same (the tables both had identity columns and same columns etc), but for some reason the column *ordering* was not the same.  Thus, fully addressing the columns works fine:

    INSERT [TargetDB].[Schema].[<Table>]
    ( <columns> )
    SELECT
    ( <columns> )
    FROM [SourceDB].[Schema].[<Table>]
    WHERE ( <criteria> )


    However, rather than returning an error indicating a column mismatch (when using INSERT INTO), we got instead the old familiar “An explicit value for the identity column in table '[<Table>]' can only be specified when a column list is used and IDENTITY_INSERT is ON” – despite the SET statement!

    Anyhow, I consider this a lesson learned.  Perhaps it will help someone else out there…

    Journalism, Social Media and the Internet in the 21st Century

    There have been frequent not-so-subtle attacks on social media (in particular, blogging and Twitter) by mainstream journalists in recent times and quite frankly, I’m sick of hearing about it.  350169275b2e5e0b6dao508tq4

    There is hardly a day that goes by without reading the same old boring rhetoric coming from these ‘Traditional News Outlets’ about how bloggers do not deliver the same calibre of content, or how irrelevant a social network (e.g. Facebook, Twitter) is. 

    An example?  This isn’t a credible technology news report, it’s junk journalism.

    Sorry guys, that isn’t news.  Journalists are so busy trying to discredit sites like Twitter that do they have time to do any real reporting?

    The comic on the right is probably an accurate representation of how big media feels about Internet bloggers.

    Obviously, I’m aware of the inherent conflict of interest – complaining about journalists who complain about bloggers by writing a blog entry about it – however, my aim is offer a challenge to these professional journalists: create better content to demonstrate to us why there is a difference between blogging and professional journalism.

    We hear so much about how bloggers are generally useless (leaving people perhaps under the impression that the common blogger hasn’t the slightest modicum of integrity) – I’d like to challenge members of mainstream journalism to actually live up to their own billing and provide us with some journalistic integrity and reports on real news,

    We’ve been witness to some shockingly biased “news” coverage in the past eight years, especially post-9/11, and I think we deserve better journalism.  Sites like Twitter allow information to flow more freely, but the signal-to-noise ratio is very high. 

    The quality is sketchy, but again you get what you pay for. 

    If news outlets demand a price for news, they should provide newsworthy content.  The rash of garbage we’ve been subjected to as ‘news’ is simply unacceptable, and the attacks on social media are juvenile to boot.

    [Comic Source: http://carocat.co.uk/2007/11/14/consider-it-blogged-why-bloggers-cant-be-trusted/]

    IIS 7: Internet Information Services (IIS) Manager

    It’s just getting to the point where you have to have to say that it’s pretty much unacceptable for major mainstream software to not support resizable windows. 

    Today I went to adjust the bindings for the default web site on my local IIS 7 service using IIS Manager.

    image

    Sorry, but it’s 2009 and IIS Management was rewritten in 2007.  Somehow resizable windows escaped the redesign? 

    Personally, I find IIS 7 Manager to be one of the worst organised consoles, it’s exceptionally counter intuitive.  Where else do you find an option for “Basic Settings” and a little bit below it.. “Advanced Settings”?

    While we’re on the subject, the SQL Server Team found time to improve SQL Management Studio.  The once-inflexible dialogs mostly sport resizing – even the odd Browse dialog – however the Dialogs remain pretty large.  If you’re on a screen resolution of 1024x768 or less, you’ll have a hard time using SSMS.  We’re glad they did it though :)

    image

    Still hideous after all these years..the Browse window in SSMS

    At least we can say the interfaces, consoles and management tools are getting better with age.  From the early previous, Visual Studio 2010 is going to give Developers the kind of excellent layout options which Designers have bathed in for many years.  Can’t wait!

    Things I Hate About VS2008

    Visual Studio is an advanced programming environment for those wishing to develop software for the Microsoft platform.  From web applications, mobile phone applications and database analysis projects to Xbox games and windows applications and services - this is the one stop shopping solution.

    By request.. a shortlist of things I hate about Visual Studio 2008 (sometimes with Service Pack 1).

    #1 – Help re-indexing after new product installations (i.e. the old “updating to reflect recent changes”),  This occurs to integrate all help into one big index (for some reason) - MSDN + SQL Books Online integrated together, for example.

    This should be “please wait forever while we re-index all the help files on your local machine even though this is a stupid feature which you didn’t ask for and can’t opt out of.  Hope you aren’t in a hurry”.  It’s your fault for having more than 2GB of help files.  Use online help.

    #2 – Pressing F1 locks the VS IDE into waiting until Help loads (the hang of death).  Help is for sissies apparently.

    #3 – Reloading a Test Project, for some reason, loads tests into the list of Unit Tests and grinds the IDE to a halt.  Why, oh why, can’t this be an asynchronous process?  WTF?

    #4 – Initializing Toolbox grinds the IDE to a halt.  Again, are we asking too much for this to be done asynchronously?  It takes an unacceptably long time.

    #5 – The Add References Window takes far too long to load – again.. do we need to load all the damned tabs at once?  Why not load the Projects tab (likely to be the least amount of items and arguably the most used) and load the rest in the background?

    #6 – Sometimes, after a ‘Get Latest’ from TFS, the Solution reloads but loads empty Test projects (project is loaded but shows no files)! WTF?
            6a) Then you have to experience #3 as you unload and reload the damn test projects yourself

    #7 – Underline errors in the editor + show live semantic errors (both on by default) - this can be annoying as it does this while you are writing a line of code which is obviously not complete.  It costs too, because of the little compilation going on all the time.  Not recommended for slow machines.

    #8 – TFS: Team Explorer seems to randomly want to check out the solution file.  If you refuse to let it do so it won’t run unit tests!

           8a) If you relent, and let it check out the solution file, it makes no changes!  WTF?

    #9 – Being able to search (CTRL + F) Team Explorer Windows (it’s just not there in a number of windows, and it’s annoying).  This action used to crash the IDE on 64 bit versions, so just ignoring the operation is an upgrade.

    #10 – Recompiling everything in the #%$# solution, all the time (especially when running unit tests).  This one is for those who use the “Any CPU” configuration instead of a platform specific configuration (e.g. x86).  When you run a set of unit tests (without changing any code), Visual Studio will recompile the solution.  Why?  Nothing has changed!

    #11 Pressing F5 when the Source Control Explorer window is the active window (in Team Explorer) starts debugging the active solution instead of refreshing the active window!  - This doesn’t happen with a TFS workitem query window, why the inconsistency?

    #12 – Using keyboard shortcut to cancel a build (CTRL + Break) stops Find in Files from working.  OK, a bug, fair enough.  Please fix :)

    [More To Come]

    Instant Celeb

    So if you’ve missed it some how, there’s been an interesting clip from Nine Raw – live reports from a shooting in King’s Cross on the weekend.  Here’s a link to the NineMSN article on the report.  Here’s the original footage:

     


    This has quickly shot ‘round the globe courtesy of YouTube, and has now also been remixed, as below..

     

    To top it off, how’s this for inspirational?

    jake

     glock

    Just another day/night/early morning in the Cross…

    About JJ Abram’s Star Trek

    Well, as you might have known, a select few were lucky enough to see the new Star Trek film when it premiered world wide in April 2009.  I was, in fact, one of those lucky few (you can read my entries for April to get a feel for what it was like).  I’ve maintained a relative silence (except for a review I posted on IMDB) since that time.

    Now that the film has been released to the masses, I believe I can talk fairly and freely about the film, and give you my objective views – ** with spoilers **!

    So some background.. I’ve been a fan from my childhood through until when The Next Generation wrapped up production in the mid 1990s.  I took a “fan hiatus” from about 1997 and for various reasons I remain more attached to Gene Roddenbury’s original vision for the future, manifestly through the original series and the Next Generation series.

    Star Trek (2009) – My Thoughts (includes massive spoilers – you have been forewarned)

    So.. where do we begin?  At the beginning, of course. 

    • Time Travel

    Many fans hate time travelling plots especially within the Star Trek franchise where it has been repeatedly abused and used as a vehicle for various plot devices. 

    However, some of the more popular (and successful) storylines (City on the Edge of Forever, Yesterday’s Enterprise, All Good Things..) have used time travelling including Star Trek IV: The Voyage Home which was (commercially) one of the most successful of the Star Trek movie franchise. 

    So this isn’t a new concept, and in order to create an alternate reality to portray the original characters, you would have been hard pressed not to use a timeline altering event.  So let’s make peace with this, plus it’s not a bad storyline, as we’ll discuss.

    • Kirk

    Okay, so obviously from the very beginning, this film completely alters James T Kirk’s life by removing the influence of his father.  This has a trickle down effect and turns him into more of a rebel/renegade/troublemaker – hardly the makings of a successful star ship Captain.

    However, what makes it for me is that he can’t escape his genes.  Kirk is obviously made of the right stuff, and even with a more troubled past, it is clear that he is destined to command and I can live with that (whether other fans can is entirely their business).

    Oh and just what about Bill Shatner’s Kirk didn’t exude overconfidence, cockiness, disregard for authority and arrogance exactly?  That’s 90% of the James T. Kirk character right there.

    • Spock

    What a fascinating thing: Spock as a child.  It never occurred to me that he would have a hard time given his half Human/half Vulcan heritage, but now we know: he did.  I think it’s fair to say that (altered timeline or not) we probably got to view life for young Spock much as it would have been.  Interesting that Vulcan adolescents would choose to bully, one might consider that an emotional concept?  I guess they were too young for Kohlinar..

    The real surprise is his back story leading up to Starfleet Academy.  That scene with the Vulcan Academy of Science’s admission board: priceless.  Probably a little too much emotion in his decision making process, but hey, he was young and half human..  Great scene.

    His relationship with Uhura was totally unexpected and I think very much out of character to display affection in public (and certainly within proximity to the bridge).  It’s quite acceptable for him to take on a relationship with a human I think (after all, his father did) but I very, very much doubt that Spock would ever have been comfortable with any public display of affection – given or received.

    I can only deduce that by the time of the Enterprise’s missions under Kirk, Spock had grown more familiar and comfortable with humans, because he really didn’t seem as relaxed as the earlier Leonard Nimoy Spock in the original series.

    • The Kobayashi Maru

    So we all know from Star Trek II: The Wrath of Khan, that Kirk cheated to beat the “unbeatable” simulation.  What we probably weren’t ready for was Kirk’s overly cocky and cavalier attitude in doing so, or the fact that it was Spock’s simulation. 

    As I mentioned before, this is a different Kirk with a completely different upbringing – it’s not to be unexpected that he might have a different style than Shatner’s Kirk.  What is interesting is that in both realities, Kirk cheated to beat the simulation – Tigers don’t change their stripes :)

    Too bad Lt. Saavik wasn’t around to take notes :)

    • Christopher Pike and the USS Enterprise

    What happened to Captain Robert April (first commander of the USS Enterprise?): a victim of the altered timeline?  Perhaps after the destruction of Kirk’s father’s ship (one less vessel) he got reassigned commands, we can move beyond it I think…

    What a great touch – Pike in a wheelchair at the end of the movie.  True fans will notice the sly tip of the hat to fans of the original series, where Pike is paralysed and “wheelchair” bound.

    As for building the USS Enterprise on land, I can live with it even if it flies against popular official documentation (e.g. the Next Generation’s Technical Manual by Michael and Denise Okuda). 

    I mean, who honestly cares whether the ship was built in space or not?  Is it a significant plot change?  Hardly.  For the sake of argument, let’s stipulate that the destruction of Kirk's father's ship made the Federation/Star Fleet build on land for extra hull durability testing…. we are agreed?  Good.

    • Destruction of Vulcan

    Wow, what a major event!  This, for me, was the largest spoiler and one I didn’t discuss with anyone.  I’m going to elaborate on this point, because it seems like this major plot point has gone underestimated by fans and film goers, probably because the ramifications are so hard to estimate.

    Until this film, it was generally accepted that Vulcans formed the backbone of the Federation, providing amongst other things some of the Star Trek universe’s greatest scientific minds alongside many important diplomats (such as Sarek) who helped to maintain peace and order throughout the Federation and member planets.

    At face value, destroying Vulcan seems like such a big event that will alter the course of star trek timeline forever, however what specific events really came about as a direct consequence of Vulcan being there (or.. as now.. not there)?

    There are a handful of Vulcans portrayed in the future series (including Tim Russ’s character Tuvok in DS9), but how many specific examples can we draw – most references have been just that, background information and the odd remarks here and there.  What affect can this have on the timeline?  Of course, can only draw supposition.. how very.. Vulcan. 

    Here is a list of notable Vulcan characters in case it helps fuel some debate  - note not that many notable Vulcans are listed in the 23rd century (and beyond) besides Spock, Sarek, Sybok (all presumably still alive) just Tuvok,, Valeris and Saavik really.

    This is the kind of plot change which gives writer free reign to rewrite the Star Trek universe, and where contention arises blame it on the absence of the planet Vulcan.. In other words, this one event tragically alters the Star Trek universe in a way which can not be easily fixed (without a time travelling intervention… ha ha).

    • Death of Amanda

    So, okay, Kirk loses his father and Spock loses his mother.  The only difference here is that we actually got to see a lot more of Amanda in the original series & movies than we did of Kirk’s father (who we did not see prior to this movie).  At least we still have Sarek (a nice portrayal also)..

    The loss of Spock’s mother was, in fact, a major plot device to allow Kirk into the Captain’s chair, since the destruction of Vulcan might not have been enough for Spock to “lose it”.

    …and here I was secretly hoping she got locked up for shoplifting, how ironic would that have been? *snortle*

    • Spock meets Spock

    No controversy on my end – I just think it was a really awesome scene.  Leonard Nimoy is a classy actor and I really enjoyed his presence in the film.

    Leonard Nimoy gets the best line in the whole film (to young Spock).. "Since my usual farewell seems strangely self serving, I shall only say this...Good luck."

    The Wrap-up

    So.. in terms of issue contention, that about sums it up for me.  I really enjoyed the new film and honestly think that true fans won’t have so many hang ups with the new direction the franchise has taken. 

    We still had a red shirt as cannon fodder (tell me you didn’t see that coming!), Spock is still logic before emotion (just don’t tease him) and McCoy is as dry as always.  Scotty still provides the funny lines, as do Chekov and Sulu.

    The enemy still is to be battled (as opposed to reasoned) with and the USS Enterprise continues on its voyage to seek out new civilizations and new life forms – and to boldly go where no man/woman/child/other has gone before!

    Discuss.

    Aussie Wine Guy® is Back

    Hi All..

    Finally, after a couple of months of sheer procrastination, I’ve re-launched Aussie Wine Guy® with a new look website.  I moved the hosting out to a VPS and gave the site a major face lift.  It’s still in blog format, which I’m hoping will attract the attention of wine enthusiasts like myself.

    All wine related news will be on the website so please, if you enjoy a good drop, do yourself a favour and drop by the site

    I’ll be doing a review of the 2003 Penfolds St Henri Shiraz soon(ish) after I was lucky enough to win a bottle at last weeks’ Queensland SQL User Group/WardyIT SQL Breakfast (door prize).  SQL User Groups have all the best door prizes and giveaways!

    Many thanks to Peter Ward & WardyIT for the donation :)

    Need help automating Reporting Services?


    image

      Well I have found the perfect accompaniment for you – Reporting Services Scripter.


      Key Features:

      - Quickly and easily extract all RDL from a Report Server

      - Automatically generates scripts to load reports, data sources, resources, linked reports and folders
        with all their associated properties to enable report migration between servers with no manual
        intervention, e.g. avoids having to try and copy execution options between servers manually
        using Report Manager which is prone to mistakes and not as repeatable or efficient as scripting

      - Automatically generates command files to load scripted items onto a new server
      - Automatically transfer items from one server to another (including from
                                                     SQL2000 to SQL2005 to SQL2008)

                                                    - Generate scripts for Shared Schedules
                                                    - Generate Scripts for System and Item Level Roles
                                                    - Generate Scripts for Normal and Data Driven Report Subscriptions

                                                    - Easily generate loader scripts to load existing RDL files e.g. if RDL is kept under source control
                                                      then it can just generate the scripts to load the reports rather than extract the report
                                                      definition as well

                                                    - Automatically backs up reports before overwriting them
                                                    - Easily generate scripts from the command line
                                                    - Reverse engineer Visual Studio Report Projects from a Report Server
     
      Recently we needed the capability to regenerate schedules, and this utility proved to be quite handy 
      in scripting the environment setup. 

      If you wish to duplicate schedule, execution history and the like, you will need to enable a couple of  
      options which are disabled by default. 

      Here are the options I am using at present for Reports, and a folder view of the generated output:

    image image

     

     

    With thanks to the author, Jasper Smith.

    Coming Soon: A review of Windows 7 Release Candidate

    That’s right, stay tuned for my review of Microsoft’s next release of the Windows platform, Windows version 7.  The Release Candidate has been made available to TechNet and MSDN subscribers already, and the public release is scheduled for around May 5th. 

    The Beta release which has been out for a while now, was largely a hit with most users commenting on how stable it was (for a beta).  My review will focus specifically on the Tablet PC features and improvements to the User Interface and the core shell. 

    The Release Candidate does not expire until July 2010 and from what I’ve heard, the RC is almost RTM quality, so this is one operating system we’ll be installing as a native operating system (no virtual machine for this release!)

    Also on the horizon – two entries on SQL Server Reporting Services (SSRS) 2008 and what has changed to the Web Service component.  The new version uses a WCF service and no longer relies on Internet Information Services (IIS) so be prepared!

    SQL Server Tip: Updatable Views

    Sometimes it’s good to refresh.. I keep forgetting the conditions for using an updatable view in SQL Server so I thought I’d publish this info to my blog for reference purposes.

    Updatable Views

    You can modify the data of an underlying base table through a view, as long as the following conditions are true:

    Any modifications, including UPDATE, INSERT, and DELETE statements, must reference columns from only one base table. The columns being modified in the view must directly reference the underlying data in the table columns. The columns cannot be derived in any other way, such as through the following: An aggregate function: AVG, COUNT, SUM, MIN, MAX, GROUPING, STDEV, STDEVP, VAR, and VARP. A computation. The column cannot be computed from an expression that uses other columns. Columns that are formed by using the set operators UNION, UNION ALL, CROSSJOIN, EXCEPT, and INTERSECT amount to a computation and are also not updatable. The columns being modified are not affected by GROUP BY, HAVING, or DISTINCT clauses. TOP is not used anywhere in the select_statement of the view together with the WITH CHECK OPTION clause.

    By the way – in unrelated news - if you’re wondering what a Domain-Specific Language (DSL)…

    In software development, a domain-specific language (DSL) is a programming language or specification language dedicated to a particular problem domain, a particular problem representation technique, and/or a particular solution technique.

    The concept isn't new—special-purpose programming languages and all kinds of modelling/specification languages have always existed, but the term has become more popular due to the rise of domain-specific modelling.

    Visual Studio Tip: “No files were found to look in. Find was stopped in progress.”

    Every now and then this was cropping up as a problem for me, but it was particularly random and I really couldn’t figure out why the “Find in Files” functionality of Visual Studio would just stop working for no apparent reason.

    Finally, I got fed up with this, after a recent occurrence and I did a search on the Internet.  In the end I found this entry which also provided the correct solution to the problem (link to original solution is here).

    “Co-worker tried to "search in files" in Visual Studio 2005 and he got zero results. Even when he searched for simple "a" character, he still got nothing. Then we noticed the message in results pane:

    No files were found to look in. Find was stopped in progress.

    He googled it and fairly quickly found a solution on Franny's Adobe blog.

    Pressing Ctrl + Scroll Lock actually helped! It's important to mention the above solution and error was spotted in Visual Studio 2003 but coworker had same thing in 2005.

    It looks like somehow "Break" command which is Ctrl + C or Ctrl + Pause got stuck. But that has nothing to do with "Scroll Lock".”

    So in summary, if you get the weird “No files were found to look in. Find was stopped in progress.” when trying to do a “Find in Files” try pressing your Scroll Lock or Break key.

    Visual Studio Tip: “Avoid Rebuilding Projects Unnecessarily”

    Visual Studio Tip of the Day

    “Visual Studio will always try to build everything when you run a single project, even if that project doesn't depend on everything. This choice can be changed, however.

    Go to [Tools] –> [Options] –> [Projects and Solutions] –> [Build and Run] and check the box "Only build start up projects and dependencies on Run".  Then when you hit F5, VS will only build your start up project and the DLLs it depends on.”

    Well, I gave this a try and it didn’t do anything.. The only sure fire way we’ve been able to prevent needless re-compilation of projects in the solution is to build with a platform specific configuration – in essence, on an x86 machine, this is to build the Solution in x86 configuration rather than the “Any CPU” configuration (which is default).

    Foregone Conclusion: EU Copyright Extended – again.

    In a vote which should shock no one, the European Parliament voted to increase copyright on musical works from publication/performance date + 50 years to publication/performance date + 70 years.  Keep in mind that this new extension also gives producers extended income as well.

    However, the legislation also makes a provision for ‘use it or lose it’, from the article:

    "Use it or lose it" clause

    According to the approved legislation, if producers, 50 years after the publication of a phonogram, do not make it available to the public, performers can ask to terminate the contract they signed to transfer their rights to the label.
    The producer has one year to make the recording available to the public, failing this his rights will expire. 

    Several other blogger in the blogosphere have picked up on this legislation also and have voiced their dissatisfaction.  There has been some stated justification reported on several websites, like this article here.

    I’ve previously criticised this legislation (and the ongoing extension of copyright terms) for both a) depriving the public domain of works of popular culture and b) making a mockery of the whole point of copyrighting.

    In what world do any workers/entertainers/professionals expect to make income from their their work(s) for 70 years after they were performed or produced?  I’d love for companies to pay me for work I’d had contributed to ten years ago, but it just doesn’t work that way.

    So why should we deprive the public domain to feed money to artists in retirement?

    Is it greed on the part of the producers and the music industry machine?  I believe it is.  Why should musicians not be expected to save their income like the rest of us and plan for retirement?  I think it’s a bit rich that they (and their producers) should expect income when they are in their 70s or beyond.

    Don’t you think that the songs the Beatles wrote have made the ‘fab four’ (or their estates) enough money by now, that we could allow their brilliant albums to transfer into the public domain?

    No, this legislation has very little to do with supporting “struggling” artists in retirement (again, why anyone should expect income from work performed over 50 years ago is a bit of a joke) and much more to do with sustaining the rights of producers and copyright holders to keep on making money for longer periods of time.  I doubt we’ll even see the works of the Beatles or their peers in the public domain in my lifetime.

    Visual Studio Tip: Adding Existing Folders (and files) to a Visual Studio Project

    So for a while I’ve been manually adding items and it finally occurred to me that there must be a faster way to add whole folders to a Visual Studio project.  Recently I came across this blog entry – it’s rather obvious and it works.  Can’t believe I didn’t know this beforehand.

    image

       Visual Studio - Add Existing Folder

       “I've found a fix to a common annoyance I've had in Visual Studio. I always wanted an
       option called "Add Existing Folder" to right next to "Add Existing Item" in the "Add"
       context menu item in the solution explorer. It was always a long drawn out process for
       me to add a folder that already existed (renaming the folder I wanted to add, creating
       the an empty folder with the desired name through visual studio, then adding all of the
       files back into the newly created folder).
       Instead what you can do is hit the "Show All Files" tool strip button at the top of the
       solution explorer, then right click on the folder you want to add and hit "Include In
       Project".  Pretty trivial. Its amazing how long you can use a product and not know about
       all of its features.”

    image image


    Q1 World’s Tallest Residential Tower – At Night

    On Sunday night we ascended Q1 at Surfer’s Paradise, to get a view from the heavens. 


    QDeck – Q1’s observation deck, by night, offers a complete view from the Byron headlands (south) all the way to the hinterland and greater Brisbane (north).

    Towering more than double the nearest complex, Q1 is 322.5 meters high.  The QDeck observation deck is seventy seven stories or 230 meters above sea level.  The ride up to QDeck takes only a mere 42.7 seconds making it one of the world’s fastest elevators.  Yes the .7 really makes a difference..

    Here is a gallery of night photos I took on Saturday night.

    An old gripe… but

    Over the weekend I’ve been working on a query abstraction approach which is interoperable with both LINQ to SQL and the ADO.net Entity Framework (using IQueryable) – with some minor modifications to suit each data model.

    As I was putting this to use on a somewhat semi-realistic search pane, I had a rude reminder of one of the largest problems with the ADO.net Entity Framework – ugly T-SQL. 

    Take this fairly simple search form below.  It supports pagination and sorting and (at present) multiple search terms (just artiist and/or album at this stage).  For the sake of being fancy, we also render the album cover if specified.  Neat, huh?

    image

    This view of the data is denormalized from normalized tables and doesn’t really select much data – a couple of joins and it’s paginated so only a handful of rows are returned.  Tops, this is a small two-query operation to load the results.  Should scale fine assuming the query is done right.  Running a basic query with LINQ to SQL produces this in SQL Profiler:

    image

    This is close to something a decent developer would put together in a stored procedure potentially.  No over-use of joins or sub queries, and this should be fairly straightforward to tune in terms of indexing etc.

    Let’s take a look at the same operation with the ADO.net Entity Framework – the query is constructed identically, except it’s using an EDMX model instead of a DBML model:

    image

    That’s right – the exact same query runs off the page!  Here is the full text copied from SQL Profiler:

    exec sp_executesql N'SELECT TOP (10)
    [Project5].[C1] AS [C1],
    [Project5].[AlbumId] AS [AlbumId],
    [Project5].[Name1] AS [Name],
    [Project5].[Name] AS [Name1],
    [Project5].[Name2] AS [Name2],
    [Project5].[Release] AS [Release],
    [Project5].[Catalog] AS [Catalog],
    [Project5].[C2] AS [C2],
    [Project5].[NumberOfRecords] AS [NumberOfRecords],
    [Project5].[YearReleased] AS [YearReleased],
    [Project5].[YearReReleased] AS [YearReReleased]
    FROM ( SELECT [Project5].[AlbumId] AS [AlbumId], [Project5].[Name] AS [Name], [Project5].[YearReleased] AS [YearReleased], [Project5].[YearReReleased] AS [YearReReleased], [Project5].[Catalog] AS [Catalog], [Project5].[NumberOfRecords] AS [NumberOfRecords], [Project5].[Release] AS [Release], [Project5].[Name1] AS [Name1], [Project5].[Name2] AS [Name2], [Project5].[C1] AS [C1], [Project5].[C2] AS [C2], row_number() OVER (ORDER BY [Project5].[Release] ASC) AS [row_number]
        FROM ( SELECT
            [Project4].[AlbumId] AS [AlbumId],
            [Project4].[Name] AS [Name],
            [Project4].[YearReleased] AS [YearReleased],
            [Project4].[YearReReleased] AS [YearReReleased],
            [Project4].[Catalog] AS [Catalog],
            [Project4].[NumberOfRecords] AS [NumberOfRecords],
            [Project4].[Release] AS [Release],
            [Project4].[Name1] AS [Name1],
            [Project4].[Name2] AS [Name2],
            1 AS [C1],
            CASE WHEN ([Project4].[C1] IS NULL) THEN @p__linq__2 ELSE [Project4].[C2] END AS [C2]
            FROM ( SELECT
                [Project2].[AlbumId] AS [AlbumId],
                [Project2].[Name] AS [Name],
                [Project2].[YearReleased] AS [YearReleased],
                [Project2].[YearReReleased] AS [YearReReleased],
                [Project2].[Catalog] AS [Catalog],
                [Project2].[NumberOfRecords] AS [NumberOfRecords],
                [Project2].[Release] AS [Release],
                [Project2].[Name1] AS [Name1],
                [Project2].[Name2] AS [Name2],
                [Project2].[C1] AS [C1],
                (SELECT TOP (1)
                    [Extent5].[FileName] AS [FileName]
                    FROM [dbo].[Media] AS [Extent5]
                    WHERE [Project2].[AlbumId] = [Extent5].[AlbumId]) AS [C2]
                FROM ( SELECT
                    [Extent1].[AlbumId] AS [AlbumId],
                    [Extent1].[Name] AS [Name],
                    [Extent1].[YearReleased] AS [YearReleased],
                    [Extent1].[YearReReleased] AS [YearReReleased],
                    [Extent1].[Catalog] AS [Catalog],
                    [Extent1].[NumberOfRecords] AS [NumberOfRecords],
                    [Extent1].[Release] AS [Release],
                    [Extent2].[Name] AS [Name1],
                    [Extent3].[Name] AS [Name2],
                    (SELECT TOP (1)
                        [Extent4].[MediaId] AS [MediaId]
                        FROM [dbo].[Media] AS [Extent4]
                        WHERE [Extent1].[AlbumId] = [Extent4].[AlbumId]) AS [C1]
                    FROM   [dbo].[Album] AS [Extent1]
                    LEFT OUTER JOIN [dbo].[Artist] AS [Extent2] ON [Extent1].[ArtistId] = [Extent2].[ArtistId]
                    LEFT OUTER JOIN [dbo].[Country] AS [Extent3] ON [Extent1].[CountryId] = [Extent3].[CountryId]
                )  AS [Project2]
            )  AS [Project4]
        )  AS [Project5]
    )  AS [Project5]
    WHERE [Project5].[row_number] > 0
    ORDER BY [Project5].[Release] ASC',N'@p__linq__2 nvarchar(4000)',@p__linq__2=N''

    Wouldn’t you agree that there is a significant difference between the two frameworks?  I just don’t think you could risk taking the Entity Framework into a high volume system architecture the way it stands now.  Is anyone out there suffering the Entity Framework with this garbage SQL?

    We can only hope that this is the number one improvement in Entity Framework v.Next.  In coming blog entries I will b walking you through the approach I’ve taken to create a query design approach.

    If you are having trouble with either LINQ to SQL or the Entity Framework don’t hesitate to drop me an email rob.sanders@gmail.com with the problem in the Subject header (to avoid my skipping the email).

    An Easter Message

    Greetings from a rain soaked Gold Coast. 

    It’s this time of the year that we’re either:
    a) travelling overseas,
    b) ‘spring’ cleaning, or,
    c) visiting relatives

    This year we are doing none of those three things.  Having just relocated from Brisbane’s south-east to the Gold Coast, we need a break from cleaning/unpacking, we were unable to plan an Easter getaway and most of our relatives are inter-state.

    This affords me some time to reflect upon 2009, and wonder (ponder) what direction 2010 may take us.  In light of everything which is going on - (Global Fried Chicken) the global financial crisis – this seems like a good time to take stock of everything.

    In any case, all the best for Easter from the ‘Entertain Us Nation’ please take care, and stay safe.

    Sincerely
    /R

    Sydney Star Trek World Premiere – Part 2

    Well, I’ve landed back home on the beautiful Gold Coast in Queensland, and it is at this time I can continue my previous writing about the World Premiere at the Sydney Opera House of J.J. Abram’s new film “Star Trek”.  This is Part 2: The Movie.

    IMG_0085

    Having described the surreal nature of the setting (in Part 1, below), I turn my attention
    to the film itself. 

    The film in many ways matched the venue – unreal.  You have doubtless heard or seen
    other reviews (as I have) and they probably say the same thing: this is (in every sense
    of the phrase) a second take on the Star Trek universe, from the beginning.

    From the opening sequence, JJ Abrams asserts his authority in a plot twist which will
    shake the very fabric of the Star Trek universe. In a sudden (plot) twist, the very
    nature of the film becomes clear: this is a new Star Trek.

    However, the opening sequence delivers more than just this "statement" - it also gives
    us a taste of what is to come: action, drama, solid performances and an outstanding introduction to a new era.

    Little by little we are introduced to the main characters, starting with Kirk, Spock, McCoy and Uhura as we briefly navigate their early lives including events at Starfleet Academy before hitting a plot crescendo which brings all the cast together – and to the starship Enterprise, NCC 1701!

    This is a movie strong on character development, and each of the actors deliver brilliant performances – nothing less would be appropriate given the shoes each has to fill.

    IMG_0087  The movie moves along at an agreeable pace, never slow enough to be tedious, nor too 
      frenetic so as to be judged another “run n’ gun” style Sci-Fi action flick. 

      This is a movie with cutting edge special effects, but they serve more to frame the
      storyline and characters rather than to be the show entirely. 

      Star Trek has always been tied to models and great visuals, so this is something which
      we’ve come to expect from this groundbreaking franchise.

      Since I do not intend to introduce spoilers in this review, I can only really say that the crew
      of the USS Enterprise is brought full circle to face the film’s dark enemy, a Romulan by the
      name of Nero who is portrayed by Australia's own Eric Bana (who is not given nearly enough screen time in my humble opinion).

    By now you’ve probably heard that the movie also features Leonard Nimoy – reprising his role as Mr (please, not Doctor) Spock.  This is indeed true, however you may be surprised to learn that this is no token cameo role. 

    Leonard Nimoy’s Spock plays a pivotal role in the film, and in a way bridges the franchise from the original series to the new film version.  He also has delivery of my most favourite line in the film.. IMG_0091

    Each actor holds their own with the roles we know so well. It would be unfair to single out
    any specific actor.. but I have to say that Simon Pegg and Zachary Quinto are simply outstanding amongst a group of very talented actors in a movie which is (perhaps a little surprisingly) carried by strong character development.

    In summary, this film is likely to appeal to a wide audience including die hard Trekkies
    and those new to the Star Trek universe.  This is a must see film, even if you couldn't
    tell the difference between a Tribble and a Tholian!

    Plot Keywords (may hint at spoilers)

    • Starfleet Academy
    • Kobayashi Maru
    • Vulcan
    • Sarek/Amanda
    • George Kirk
    • Captain Pike
    • Red Shirt
    • Pointy eared hobgoblin

    Photos on this page © 2009 Paul Doessel