Job application – sometimes is a paradox

New tech job vacancy pops up on social media.

She decides to give it a go.

Employer belongs to some Air Space agency.

Clearances are a must.

The online form is worked through until it kicks her out due to not completing the ‘past employment with this company’ box.

Reason is ‘not a resident’!

No option is offered to restart the application.

But the job is too good to be forgotten, ‘just’ because the buggy web form decides to have a mind of it’s own.

A new email address is passed along and a new online form is started.

The happy-web-form-data-filling progresses a bit further.

Then the real questions appear, about real life tech-experiences, which she aims to knock real tight.

Decides to take think it through, decides to take a break, and has to save the application done thus far.

But when Save option is chosen another kicker shows her time is up.. ‘not enough Clearances for this job’!

Now, now.. why would  such a buggy and hope-shattering web application form be put up at all? And why would anyone realistically hope they should be associated with this company at all!



Too many groovy classes were generated

Jasper Reports may throw this way generic error at times:

Too many groovy classes were generated. 
Please make sure that you don't use Groovy features such as closures 
that are not supported by this report compiler.


There is no definitive answer to this – it just seems to me like a blanket error for any syntax error, like:

  • $p instead of $P
  • $v instead of $V
  • bad UUID
  • incorrect XML attributes versus the version of your local JS server


I can’t suggest anything bullet proof to find the cause other than:

  • create a new empty file
  • paste in it the header and the footer plus a minimalist detail zone
  • test it out
  • .. and repeat

Mirage of controlling the bots when playing robot bridge on BBO

I have to be honest with this one, playing bridge on BBO is awesome although a bit muted and feeling kind of a lonely affair. It’s not the bridge you play with real people down at your local club, but you can get your groove going at any time of day or night, and if you play a decent careful game then masterpoints are up for grabs.

However, mastering GiB robots is not an easy task!

Fair disclosure I’ve only been playing on BBO for half a year now. But I did play a sustained number of years of bridge, a while back. Knocking off couple of games with dear old GiB robot (as a partner) proved I had to learn restraint.

There’s been many occasions where I was simply left null over the choices GiB makes during auctions. Recap of strange GiB bidding from past week:

  • To my 1S opener GiB responds 2C, followed by 3C and then by 5C (over my 4S) as he dummies his hand of 5 clubs under 10 and 9 honor points
  • 1S opener from GiB and his hand only has 1 small spade and 11 honor points
  • on my 1H opener followed by 1S on my left then my Gib partner goes Dbl for 3 times in a row, me calling Pass three times in a row, and finally by GiB’s will his hand showing 13 honor points and no handy distribution

At times I get fed up with these bugs, because I reason they must only be programming bugs on GiB’s part, nevertheless you’ve got to play it as it lays, and I find it mostly annoying with a hint of cumbersome to continue and be reasonable and cold inside, in my mind, in order to put up a good declarer game.

Long story short, my hope is to come up with a valid list of advises, for BBO players out there, on how to properly manage GiB auction and contract discovery:

  • Pass a lot
  • 2 level interventions, like 2D 2H and 2S, are very dangerous, better to forget about them when playing GiB
  • remember you always have the best hand and at most your GiB partner can only have as many honor points as yourself
  • quickly jumping into a 5C or 5D contract is taken as a slam invite by your friendly GiB partner, beware
  • slow and constructive auctions are a no go zone for GiB, better figure out the final contract by yourself and call it quickly.. 3NT or 4 majors
  • high level Dlb is considered by GiB to be invitational, which a human player will immediately understand as a penalty double, hence you’ll most likely lose your grip on the auction
  • your first auction call is the most important step to describe how many honor points your hand presents and that’s a big clue to not underbid by GiB’s side
  • with your side having clearly the game it’s better to let GiB declare, when possible, as GiB is a fast player
  • GiB will reply 1NT with 2 cards on your 1 level bid without having stops in all the other colours
  • .. more to come

Jasper reports – multiple queries per .jrxml file

Using a <queryString> tag in a jasper document only allows one SQL statement. In fact you can add as many SQL statements as you like but only the first one will be processed.

But since almost any report will nicely do with more than one query, the way to achieve it is to use <subDataset> and <datasetRun>. Although these 2 can be used as many times as needed, per jasper document, they can only be embedded in certain tags so be sure you check out the manual.


<subDataset name="datasetGroupFolders" uuid="0433f4f3-39f4-4505-841a-e5621c781b01"> 
    <parameter name="GroupFoldersParam" class="java.lang.String"/> 
        <![CDATA[SELECT STUFF((SELECT ', ' + CollectionName FROM GroupCollections WHERE $X{IN, CollectionID, GroupFoldersParam} FOR XML PATH('')) ,1,1,'') AS GroupFolders]]> 
    <field name="GroupFolders" class="java.lang.String"/> 


    <reportElement positionType="Float" stretchType="RelativeToTallestObject" x="0" y="65" width="552" height="15" isRemoveLineWhenBlank="true" uuid="fc7d22c7-8c60-4ecb-974f-c842becc4bf7"/> 
    <jr:list xmlns:jr="" xsi:schemaLocation="" printOrder="Vertical"> 
        <datasetRun subDataset="datasetGroupFolders" uuid="1e20fa2b-bb3a-475f-b721-5a13d3c374eb"> 
            <datasetParameter name="GroupFoldersParam"> 
        <jr:listContents height="15"> 
            <textField isStretchWithOverflow="true"> 
                <reportElement stretchType="RelativeToTallestObject" x="0" y="0" width="552" height="15" uuid="eac696b9-e20f-48a3-b70d-b186f5e649d6"/> 
                <textFieldExpression><![CDATA[IF($F{GroupFolders}.isEmpty(), "", "Group folders: "+$F{GroupFolders})]]></textFieldExpression> 



Powershell – code snipets

  • delete everything from Recycle Bin
$Recycler = (New-Object -ComObject Shell.Application).NameSpace(0xa)
$Recycler.items() | foreach { rm $_.path -force -recurse }
  • generate GUID
  • OS version
(Get-WmiObject -class Win32_OperatingSystem).Caption
  • username
  • SQL instances
(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server').InstalledInstances

IIS error 503: Service unavailable

Very frustrating stuff getting error 503 corroborated with the following entry in the event viewer:

The worker process for application pool ‘DefaultAppPool’ encountered an error ‘Cannot read configuration file
‘ trying to read configuration data from file ‘\\?\<EMPTY>’, line number ‘0’. The data field contains the error code.

This happened to me after a Windows 7 system was upgraded to Windows 10 Pro x64, and enabling IIS. The default IIS page on the localhost wouldn’t show up.

Instead the HTTP error 503 would be front page and center.

Solution: bit of hint to resolve it was from the default IIS pool, DefaultAppPool, which wouldn’t -ever- start!

Navigating on the local file system: C:\inetpub\temp\appPools you should find a folder named DefaultAppPool. In my case I had a shortcut! That needs to be corrected, something like this:

  • run inetmgr
  • locate the default pool (or any other pool that fails to start)
  • click on pool’s name from the right pane chose View Applications
  • change the pool of the application to something else
  • go back to the list of pools and delete the invalid pool
  • then recreate DefaultAppPool / invalid pool
  • click the pool that the application got changed, the View Applications and assign back the default pool to it
  • restart IIS

At this stage the DefaultAppPool foder should appear in the C:\intepub\temp\appPools and the default, or your local website, should load up.

No more pesky error 503!