jonny.donker@gmail.com

Qlik Replicate – Simple trick for Source file connectors

Quick post on a trick I use in Qlik Replicate

Qlik Replicate has a Source connector to consume flat files from a drive. 

More details can be found on the Qlik website

For change data capture of these files; Qlik will only consume files that have a newer “Last Change Date” than when the task is started.

So if for some reason you have to stop and reload files that are already present; you have to change the “Last Modified Date”

A simple Powershell command that I got from itechtics.com can be used to reset all the dates in a directory of your choice.

Get-ChildItem -force PathToItem * | ForEach-Object{$_.LastWriteTime = ("yyyy-mm-dd hh24:mi:ss")}

So to change all the dates of the files in the directory C:tempload to the current time (as of writing):

Get-ChildItem -force c:\temp\load * | ForEach-Object{$_.LastWriteTime = ("2023-06-08 11:05:00")}

If a Qlik Replicate task is running and watching this directory; it will reload the file my_load.file.csv.

Scam emails impersonating Church’s bulletin email

This is a page for my church to help them recognise scam emails.

I will update this with new information from feedback and new information

What has happened?

Scammers have obtained the distribution list of the church’s email bulletin.  This could be from scammers obtaining a previous email where the recipients were added to the TO list instead of the BCC list.

They are using this list to send scam and phishing emails impersonating the Church’s email address.

This is a targeted scam because:

  • The recipients are older and less tech savvy so they are easier targets
  • There is a trust from emails appearing to come from the church

Please note that the Church’s email account is not compromised and is safe; it is scammers impersonating the email address.

The Church’s email address is protected by a strong password and two factor authentication

How to recognise a Scam email

Computer security software such as Anti-virus, firewalls and spam filters always help – but the biggest protection and risk to your online security is YOU.

Here are some points to help you recognise a scam email.

The sender's address

The email will come through with a title that looks like the Church’s email title like “Bethlehem Church” – but if you expand up the details of the sender – the sender is not from the @lca.org.au address.

Timing of the email sent

Usually I send out the bulletin on either Thursday or Friday during business hours.

If you receive an email at an unusual time (like 5am in the morning) – this is out of characteristics and this email should be considered suspicious.

Email content

The Church bulletin’s email follows a consistent form and is personalised and specific to the congregation and Christian faith.

Any links or attachments in the bulletin will be explained what they are instead of a vague reference that usually used by scam:

For example:

Today delegates at the General Synod of the Lutheran Church of Australia and New Zealand (LCANZ), meeting in Melbourne, directed the church’s General Church Board and the College of Bishops to explore the theological, constitutional and governance issues involved in establishing ‘one church with two different practices of ordination’. 

Read more from Convention of General Synod

 

Is more focused to the church than a vague content like:

just forwarding a few pics (#5 and #9 in particular) http://www.scam_website.com

What do I do when I receive a Scam email?

Most email clients provide a “Mark as spam” function.  If you mark the email as spam; this will help the email servers identify and block future scam emails for you and other recipients.

If this feature is not available in your email client; just delete the email.

I'm still not sure...

If in doubt – don’t open the email.  Treat it as suspicious.

You can forward the email to the bulletin’s email address and I can help you out.

Or alternative see me after church.

Qlik Enterprise Manager – Upgrading from 2021.05 to 2022.11

As a business requirement of developers wanting to take advantage of new features in Qlik Enterprise Manager (QEM); we had to upgrade our system from 2021.05 to 2022.11.

This was not a smooth process and encountered several issues on the way.

First Attempt – Straight Upgrade

Simple to upgrade?

Just download the latest installer from Qlik’s website and kick it off?

Unfortunately when I gave developers keys to our dev QEM box to do the upgrade before Christmas as I was busy with other tasks.  

They gave it a go without a backout plan.  

Couple of days later I tried logging into the QEM console and couldn’t get on.

The AttunityEnterpriseManager service kept restarting every minute and the following errors were in the  C:\Program Files\Attunity\Enterprise Manager\data\logs\EnterpriseManager.log

[START: 2023-03-01 09:40:18 Attunity EnterpriseManager Version: 2022.11.0.335]
1 2023-01-02 09:40:18 [Command ] [INFO ] Executing ServiceRunCommand command.
6 2023-01-02 09:40:19 [Host ] [INFO ] Setting up web host
6 2023-01-02 09:40:20 [Host ] [INFO ] The server will listen on the following location: http://xxxxxxx.xxx.xxx/attunityenterprisemanager
6 2023-01-02 09:40:20 [Host ] [INFO ] The server will listen on the following location: https://xxxxxx.xxx.xxx/attunityenterprisemanager
6 2023-01-02 09:40:20 [Host ] [ERROR] Object reference not set to an instance of an object.
6 2023-01-02 09:40:20 [Host ] [INFO ] Stopping service on error...

I tried the usual desperation tricks of restarting the service and then restarting the box.

In the end I had to uninstall QEM and reinstall 2021.05 as there was no backout plan.

The developers were then subsequently banned from doing anymore work on the QEM upgrade

Second attempt – Two jump upgrade

Next attempt was upgrading to 2022.05 and then jumping to 2022.11.

This time I took a backup of C:Program FilesAttunityEnterprise Managerdata so I could easily backout the change if I had problems.

The upgrade from 2021.05 to 2022.05 went smoothly; but when jumping from 2022.05 to 2022.11 the same error occurred.

I then raised a case with Qlik and also posted on their forum asking if anyone else had come across this problem.

Final Success

With help from Qlik support we developed a upgrade work around.  Qlik said that there is a patch in the works as other users have had the same problem.

If you follow along – note that this method might differ for your system.  In the three upgrades I have done internally; they all differed slightly.

Make sure you TEST and HAVE A BACKOUT PLAN

Upgrade Perquisites

This upgrade was done on a Windows 2019 server.

You will need:

  • Admin rights to QEM’s server
  • Licenses for QEM and Analytics
  • Username/Password that AEM connects to the analytics database
  • Privilege user account for to the analytics database
  • Password for the user that you use to connect QR nodes to QEM
  • A SQLite database client
  • Handy to have – an editor that can validate json format

Method

  1. Log on to QEM console
  2. For each server under the server tab – Right click and go to “Stop Monitoring”
  3. Remote desktop to the QEM server
  4. Stop the AttunityEnterpriseManager service
  5. Back up C:\Program Files\Attunity\Enterprise Manager\data
  6. Run the upgrade to QEM 2022.05
  7. Once the upgrade is done; log onto QEM and ensure that version 2022.05 is working correctly
  8. Back up C:Program FilesAttunityEnterprise Managerdata again
  9. Stop the AttunityEnterpriseManager service again
  10. Run following command from the command line:
    cd "C:\Program Files\Attunity\Enterprise Manager\bin"
    aemctl repository export -f C:\temp\qem_repo_202205.json -w

  11. Script out the postgres database with the following commands:
    cd C:\Program Files\PostgreSQL10\bin
    pg_dump -U <username> -s -C -c <analyticdbname> > C:\temp\analyticdbname.sql

  12. Edit C:\temp\cdcanalyticsp.sql.  Find and replace “<analyticdbname>” with “cdcanalytics_2022_11_p”.  Save the file
  13. Run the following command to create a new temporary database on the postgres server:
    psql -d postgres -U <username> -f C:\temp\cdcanalyticsp.sql

  14. This is where the problem lies in our instance.  Open up C:tempqem_repo_202205.json
    Find any code blocks with “type”: “AttunityLicense” in it and remove the whole code block.
    1. On our dev system it was the section with “name”: “Replication Analytics”, but in prod it was section with “name”: “Replication Management”.  
    2. You may need to experiment to find the correct section
  15. Go to Add/Remove and uninstall Enterprise manager
  16. Once remove – delete the the folder C:\Program Files\Attunity\Enterprise Manager\data
  17. Install QEM 2022.11.  When prompted do not install Postgres
  18. Log into QEM and check that it is up and running correctly.
  19. Stop the AttunityEnterpriseManager service again
  20. Run the following command:
    aemctl repository import -f C:\temp\qem_repo_202205_Fix.json -w

  21. Start the AEM service and check that it is running correctly
  22. Re-add the QEM and Analytics license 
  23. Go to Settings -> Repository connections.
    Enter in username password set the database as cdcanalytics_2022_11_p
  24. Intialize the repository and start the connector
  25. Stop the AttunityEnterpriseManager service again
  26. Open up C:\Program Files\Attunity\Enterprise Manager\data\Java\GlobalRepository.sqlite in an SQLite editor
  27. Browse the table objects
    Look for name = “AnalyticsConfiguration” and modify the json value “cdcanalytics_2022_11_p” to the original analytics database name
  28. Save SQLite database
  29. Start the AEM service and check that it is running correctly
  30. Go to the server tab.  Edit each server and re-add the password.  Click on the button “Monitor this server’s tasks and messages”.  Test the connection and click OK
  31. PVT QEM

If things go wrong

Backout process

  1. Uninstall QEM
  2. Delete the folder C:\Program Files\Attunity\Enterprise Manager\data
  3. Reinstall either QEM 2021.05 or QEM 2022.05
  4. Stop the AttunityEnterpriseManager service
  5. Restore the appropriate backed up data folder to C:\Program Files\Attunity\Enterprise Manager\data
  6. Restart the AEM service

Facebook links + Former Girlfriend and Scam Weight loss pills

I swear I am working hard this close to Christmas!

But I did accidentally check in my Facebook account and saw a suspicious post that I have seen getting around the my feed.

I have seen posts like this before.  A public post with a couple of dozen people tagged in it.  In this case; one of the people tagged in the post was my (very nice) former girlfriend.

I have seen variations of posts like this with sunglasses and shoes; but this seems to be a new type that hit my news feed.

But this one intrigued me.  The picture looks very convoluted with an image transposed over the other one.  If you look carefully you can see tiled floors and other architecture.  I am guessing the author did this to throw off image matching software that FB might use to match known scams or copywrite images. 

Looking down the Rabbit hole

I am not a security or a web design expert but decided to check out the website.

I suspect it is a Facebook worm of some sorts.  

One thing I didn’t want to do when investigating the website is either triggering off the worm propagation process and make matters even worse.

As a precaution I opened up the link in on my home computer in an incognito page with Noscript running.  Last thing I wanted to do was blow up my work computer by opening a malicious link.

Here is the website in all its glory:

The short link resolved to a fuller domain name and I ran a whois check to find out more.

 

This actually surprised me.  Other scam sites that I have checked with whois usually have domain names registered quite recently.

For instance a phishing email I got the other day – the domain name was only a day old when I looked it up in whois.

Checking out the source code behind the site – the actual HTML code was very neat and tidy.  Nice – I like well formed code.

Other things I noted:

  • All the main menu links will jump to a particular spot on the page.  This will link off to another website where you can enter in contact details like name, address, phone, credit card number etc.  I didn’t go in deeper than this to see the response of putting in fake details as this was out of my depth.
  • There were Chinese characters in the html comments.  This by no means implying that people who write comments in Chinese are dodgy – but seems a unusual a “US Today” website would have foreign language comments in it.

Image searching

The website was filled with “Before and After” images and testimonies on their product.

Using Google Lens I searched some of these images

Our dubious website:

Google Lens came up with:

Google Lens found the image on a Dutch city website to a nutritional consultant Stein van Vida Vitaal.  Our subject name has changed from “Gerald” to “Fred”

One more check for the end of the day was our “Before and After” bikini model photo in the comments:

Google Lens returned an Insider article by Emily DiNuzzo about “Before and After Body image Photos”.

The author of this website actually got the photo off Shutterstock that she referenced (link broken) on the website

Summary

A proper web developer and security expert can probably pull apart this website and explain how the malicious part of it work – but I am not at that level.

One of the biggest risks to security is the component that sits between the computer keyboard and the chair.  

For all the diving into the code, checking domains and looking up reused images over the past half an hour; the biggest thing that stood out to me is the language in the Facebook post:

“I use it. I didn’t change my diet or exercise. Photos before and after use”

It doesn’t seem right.  The post is very vague. 

What did she use? Why isn’t there more details?

If she lost a heap of weight; wouldn’t her language be prouder? 

More descriptive?

Wouldn’t she be showing photos of herself instead of some convoluted photo?

Why is my former girlfriend tagged in this post?  She’s doesn’t have the personality to use questionable diet products.  If the poster is her friend – would she really share something in this manner?  If it was for my former girlfriend – why not send it in a private message or a group chat?

Don’t make hacker’s lives easy.  Think before you click.

How to make Toffee Apples (Dentist’s nightmare)

Our kid had his seventh birthday party coming up.

My wife wanted to invite the whole prep class to his party; with the ulterior motive that all the kids in the class will be invited to at least one party for the year.

The sentiment was nice – but the reality was that we had 40+ kids at a party.

I was given the task of making a gift bags.

I wanted to do something different from the usual gift bags that we get in Australia so after a family discussion we decided this is what will be the base of the gift bags:

  • Pokemon cards (you can buy bulk lots on ebay)
  • A custom Geocache location as a treasure hunt
  • Seed bombs
  • A toffee apple

Dangers of Sugar Napalm

Deep frying and molten sugar scares me.  Any liquid that can be heated up hotter than boiling water in my mind is very dangerous (I was burnt by hot soup when I was a kid)

A good YouTube video had some good safety instructions:

  • Wear long pants and shirt
  • Wear enclosed footwear 
  • Have a large container of water on standby so if you get molten sugar on you; you plunge the affected area in the water as quick as possible
I would also keep kids at a safe distance until an appropriate age to help out.

Recipe

Based off the following video with a few modifications

  • I didn’t use cinnamon hard lollies 
  • Added Raspberry essence   

Ingredients

Makes about 20 small toffee apples

  • 20 small “Snacking” Granny smith apples
  • 850g of white granulated sugar
  • 340ml of water
  • 170g of Glucose syrup 
  • 10 drops of red food colouring
  • 10 drops of Raspberry essence (note this might need to be experimented with depending on the strength of the essence  
  • Sturdy sticks for the handle

 

Method

Night before

  1. Wash the apples in very hot water to remove the wax coating
  2. Push the sticks in the base of the apple and ensure they are solidly in place 
  3. Place in fridge overnight to chill

On the day

1. In a heavy based spotlessly clean saucepan; mix together the sugar, water and syrup. 

Pro tip – put the saucepan on the scales and pour the syrup directly in.  If you measure the syrup out in an individual container – you will be forever struggling with a sticky mess of transferring syrup from one container to another 

2. Stir the contents very well to ensure all the water and sugar is mixed thoroughly together

3. Place pan on medium heat on the stove and bring to the boil.  Cover pan with the lid and allow to boil gently for 5 minutes

4. Uncover the pan and insert the sugar thermometer in the pot.  Boil without stirring until the temperature reaches 138°C (280 F)

This step might take a while as first the water have to boil off.  This is why the temperature will stall at 100°C for a while as the water evaporates.  Once all the water has boiled off – the bubbles will change into lager and slower bubbles.

Don’t leave the pot unattended as the temperature rise will happen without warning.

5. When the temperature reaches 138°C; add in the food colouring and Raspberry extract drops.  Distribute the drops in different locations so it is easier for the boiling sugar to mix through.

6. While waiting for the sugar to reach the correct temperature:

  • Take the apples out of the fridge and dry off the condensation.
  • Prepare some trays to put the finished toffee apples on.

7. Once the temperature reaches the “hard crack” stage of 150°C (300 F); remove the pan from the heat.  Wait a short while for the bubbles to subside.

8. Dip an apple in the sugar syrup and quickly but carefully turn it to get the thinnest coat possible on the apple. Allow the toffee apple to drain the excess liquid off before placing it on the prepared tray.

Whether you go right up to the stick or leave a little gap at the top is the dealer’s choice.  

If the sugar syrup is staring to get too sticky – reheat on the stove again to bring it up to temperature

8. Wait until the toffee is cool (should be quick with cold apples) and enjoy.

Notes

  • I think the kids enjoy it as a novelty of something different.  It also brings back nostalgia memories in the older generation.
  • The recipe scales well.  I did a half recipe as a tester and then to make 40 toffee apples we doubled the recipe.
  • A “Candy” thermometer is indispensable for someone starting off making sugary treats.  Well worth the $20 investment
  • To clean the pot afterwards – fill it up in water and bring it to the boil to remove the stuck sugar
  • Once the toffee apples are cooled down and no longer sticky – bag them up or put them in an air tight container.  They should last a couple of days depending on the temperature and humidity – five days is starting to push it.
  • The Glucose syrup can be substituted with honey – although I haven’t tried
  • You can try different flavourings for the sugar syrup – such as almond, strawberry.  I even saw a “Toffee apple” essence in shop that I brought the Raspberry essence from.

Why can’t Qlik Replicate and Enterprise manager be friends?

A nice quiet evening with the family was interrupted with a critical alert coming through my phone.

Once again server patching had knocked off our Qlik Replicate node.

Logging in I could see that Enterprise manager could not reach one of our nodes with the following error message in the log:

2022-12-15 19:15:40 [ServerDto ] [ERROR] Test connection failed for server:MY_QR_CLUSTER. Message:'Unable to connect to the remote serverA connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond xxx.xxx.xxx.xxx:443'.

I have seen this problem before and it is usually resolved by:

  1. Failing over the QR windows cluster
  2. Restarting the new passive node

Our IT team is aware of the problem and have been researching into a cause and a fix.  Their prevailing theory was that when the cluster gets failed over in server patching – there are some residual connections to the previous active node.

But tonight after multiple failovers and stopping and starting the QR roles – still Enterprise manager couldn’t connect to that QR node.

I did the following checks:

  1. The log repsrv.log log file had no error messages and the service Web UI service was active
  2. From the Enterprise manager; I could ping the QR cluster address and the active node successfully 
  3. From a Chrome session on the Enterprise manager server; I could not get to the QR Web console
  4. From a Chrome session on the QR server; I could get to the QR Web console

A senior IT member joined the troubleshooting call and suggested that we reboot the Enterprise manager server.

So we did and then we couldn’t access Enterprise manager console.

At this point I wanted to quit IT and become a nomad in Mongolia.

Then the senior IT member worked it out.

The Windows server was randomly turning on the Windows Firewall

This was blocking our inbound connections; making the console inaccessible from other locations – except when you were logged onto the server.

This also explains why when this problem previously arise; restarting the server will eventually work because the server group policy will eventually get applied and turn off the Windows firewall. 

Lessons learnt

If you come above this problem in your environment try accessing the QR console from multiple locations:

  • From the Enterprise Manager server
  • From within the QR server with a local address like: https://localhost/attunityreplicate/login/

Good luck

Constructive Terrorism – Seed bombs

“Seed bombs” – or their more politically correct name “Seed balls” or “Earth Balls” consists of seeds rolled up with clay and soil, dried and then can used as an easy way to distribute seeds.

Research suggested that the ancient Egyptians used this method to store seeds to then repair and resow farms after the annual Nile floods.

The technique was rediscovered by the Japanese government in WW2; looking for a way to increase food production in mountainous area without taking away land that was used for rice production. 

“Seed Bombs” gained their nefarious name from the “Green Guerrillas” from New York in the ’70s who used “Seed Grenades” to turn vacant or abandon land into community gardens (quite often  choosing to avoid going through the correct authorities)

Making Your own Seed Bombs

Two videos I used to as a guide to make “Seed Bombs”.

Candide – is short and to the point for a quick overview:

Gardener Scott – has more details and gave me the idea of using Clay based kitty litter:

Seed Bomb targets

  • Plant in a pot
  • Throw into a bare part of your garden
  • Throw into Grandma’s garden when she’s not looking
  • Throw into vacant blocks that look a bit bland

No go areas

  • Native bushlands
  • Public gardens
  • Other people’s garden without permission (excluding Grandma’s garden)
  • Medium strips in roads (too dangerous)

Jazzing up a Women’s Weekly slow cooker recipe

Since we have a “No Junk Mail” sticker on our mailbox – we’re deprived of the weekly “Aldi Specials” catalogue.

On the downside – we miss all the Aldi deals of items we didn’t think we would ever need.

On the plus side; when we do venture into Aldi – there is always a nice surprise to find what ludicrous bargains await us.

Recently there was a “Women’s Weekly Complete Slow Cooker Recipe” that I impulse bought for the tempting price of $20.

The recipes are inspirational; but not really refined.  Most of them follow the formula of; “Bung everything into a slow cooker & cook for eight hours.”

So as a challenge and a learning and teaching exercise; my wife picked out a recipe and keeping to the original ingredient list – I tried to bring out the best in the recipe.

Our base recipe #69: "Beef and Vegetable Soup"

Ingredients

  • 1kg Gravy beef – trimmed and cut into 2.5cm pieces
  • 1 garlic clove, crushed
  • 1 medium brown onion cut into 1cm pieces
  • 2 stalks of celery, trimmed, cut into 1cm pieces
  • 2 medium carrots, cut into 1cm pieces
  • 2 medium potatoes, cut into 1cm pieces
  • 400g canned diced tomatoes
  • 1L water
  • 2 cups of beef stock
  • 2 dried lay leaves
  • 1 cup of frozen peas
  • 1/3 cup coarsely chopped flat leave parsley 

Method

  1. Combine beef, garlic, onion, celery, carrot, potato, tomatoes, the water, stock and bay leaves in a 5-litre slow cooker.  Cook, covered on low, about 9 hours.
  2. Add peas to cooker, cook, covered, a further 30 minutes.
  3. Discard bay leaves.  Season to taste.
  4. Serve soup sprinkled with parsley.

Improving the recipe

There are three opportunities to add additional flavour to the recipe:

  1. Browning the meat
  2. Caramelising the onions
  3. Managing the cooking time of the other vegetables.

Browning the beef

This is the most obvious improvement; browning the meat before adding to the slow cooker.  Many slow cooker recipes call for the browning meat step; the Maillard reaction adds extra depth of flavour to the beef and the wider dish. 

So with care I browned the beef cubes in batches well in a fry pan over medium/medium-high heat.  Leave the burnt caramel bits in the bottom; we will use that for later.

Tackling the Onions

The onions are another chance to enrich the flavour of the soup.  Taking a cue from “French onion” soup; the idea is to slowly cook the onions to a rich caramel onion flavour.

Slice the onions thinly and then slowly brown them in the pan on a low heat.

Stir around to lift off any brown bits from the bottom to start forming a beef fond with the sweating of the onions and keep slowly cooking until it is a deep rich brown colour.

If the onions start to stick and threaten to burn; add a bit of water to loosen them off the bottom of the pan.

When the onions are almost done; add in the minced garlic and cook the raw edge off the garlic.

Add the caramel onion and garlic mixture to the slow cooker pot and then de-glaze the pan with a cup of beef stock.

Sacrificial stock vegetables

To preserve the texture of the carrots, celery and potatoes for the end and not cook the vegetables to a pulp; we’re going to use half of the carrots and celery as “sacrificial vegetables” to flavour the soup and then remove at the end; the same when making a stock.

You could when the cooking time is almost over; remove the cooked beef and blend the pulpy vegetables with a stick blender.

But this time I decided to give our worm farms a treat with cooked carrots and celery.

At the end – add freshly cubed potatoes, cook for 10min and then add cubed celery and carrots.

Cook until the vegetables are just cooked through – or until personal preference.

Add the peas right at the end to warm through.

In the end - is it worth it?

The soup was robust, tasty and put a smile on the family’s face.

But how much tastier than the base recipe – I couldn’t say.  I should have cooked the original recipe as a control; but couldn’t bring myself to throw beef into a slow cooker that hasn’t been browned.

One thing that was a standout was the time it took to prepare.  If preparing the original recipe; it could have been done within ten minutes. 

And that’s one of the key advantages of a slow cooker – throw ingredients quickly into a pot, let it run through the day and you have a tasty comforting meal in the evening time with little effort.

With my browning the meat in batches, the sweating and caramelising the onions; all of a sudden that 10min prep ballooned out to an hour. 

Is that extra 50min worth the extra taste; worth the time and effort invested?

I’ll leave it up to you dear readers to cook the recipe and find out yourself.

Power BI and the lost tnsnames.ora file

A distraught user contacted me today with a problem that her Power BI dashboard was not refreshing and returning the following error:

OLE DB:ORA-12154: TNS:could not resolve the connect identifier specified

The problem was not just isolated to her; but common across all her team.

I’m not an expert on Oracle and Power BI; and I kindly suggest for her to contact the Helpdesk.  She came back a few minutes later saying that the Helpdesk just passed her off unceremoniously to another team.

Deciding to give her a hand – I had a think about the error message.

TNS files seem to end up in all sorts of weird and wonderful locations on our organisation’s systems.

I also remembered that there was a patching of the Oracle client just done last week.

I asked her to do a search for tnsnames.ora on her C drive.

Meanwhile I ran the following command through the command line on my own computer; which should be a similar configuration:

echo %TNS_ADMIN%

She got back:

C:\app\product\12.1.0\client_1\network\admin

And I got back:

C:\app\product\19.3.0\client_1\network\admin

My hypothesis that IT installed a new version of the Oracle client and this process updated the %TNS_ADMIN% field.

What the patching didn’t do was to shift the tnsnames.ora file to the new directory of C:\app\product\19.3.0\client_1\network\admin.

When Power BI tried to run an Oracle query; it was using the new client installation and hence not finding the tnsnames.ora file.

After copying the TNS file into the correct directory; right away she was able to rerun her Power BI dashboard.

Salad Jars: You don’t make friends with them

Work Lunches.
 
For ages I never really got a pattern with them.
 
To begin with – I use to take left overs from meals to work and heat them up in the office. 
 
It wasn’t the best solution as sometimes I wouldn’t cook enough the night before and left short and quite often buying lunch out. 
 
With a decent lunch in South Eastern Australia is over $10; this hits the wallet for been unprepared. 

The Salad Jar Idea

Flicking through a recipe book section of a market while on holiday; I came across a book on “Salad Jars”; where you assemble a salad in a mason/preserving jar. Unfortunately I can’t remember the book’s name as I didn’t purchased the quite expensive book.
 
But flicking through the pages – I got the gist of the recipe.  
 
Fast forward a couple years and I have made hundreds of them; assemble the jars on Sunday and then they are ready in the fridge to take to work.
 
They are not glamorous and you won’t make many friends with them; but at least your health and budget might like you.

The basic principle

The idea of a salad jar is to layer salad ingredients in container in a particular order.  When it is time to eat; give the jar a shake to mix the dressing and ingredients together.

With a normal salad; the dressing goes on last so not to leave the ingredients soggy after a period of time.

With salad jars; the dressing goes in first at the bottom of the jar.  

After the dressing – the jars are layered with the rest of ingredients; working from hard vegetables like carrot, capsicum, celery and then moving up to more delicate ingredients.

At the top should be delicate ingredients like lettuce and crumbly feta.

The idea that the dressing can “pickle” your harder vegetable and this layer of vegetables serves as a barrier to the other ingredients.

The Jars

Any jars or containers with a tight lid will do.  After some iterations of different jars; I came to like these squarish mason preserving jars that I found on ebay:

These jars tick a couple of boxes:

  • The right size for a lunch
  • Relatively solid – can survive a few knocks
  • With the jar’s square shape; it packs more efficiently in the fridge compared to round jars

I also brought some plastic lids instead of using the canning lids that came with the jar; as the dishwasher was tearing the protective layer off the metal lids.

A sample assembly

Start off with a couple of tablespoons of a dressing at the bottom. 

I have several bottles of salad dressing in the fridge to use in different jars for the week to break up the monotony.

Also in this layer you can add ingredients to enhance the dressing; such as seasoning, herbs, pickled jalapenos or capers.

Add in your hard vegetables. 

Examples can be:

  • Carrots
  • Capsicums
  • Celery
  • Radishes 
  • Raw beetroot 

These will pickle in the dressing and add as a protective barrier to the other ingredients.

Carrots is one of the cheapest vegetables in South East Australia so I usually use a whole carrot to a jar.

Next layer is the softer vegetables and ingredients; such as:

  • Tomatoes 
  • Hard cheeses
  • Roasted potatoes
  • Cold pasta 
  • Cooked mushrooms
  • Canned black beans 
  • Canned lentils 

For protein in this instance I have a topside roast beef that I thinly sliced.  Other suggestions:

  • BBQ chicken from the shops
  • Smoked chicken
  • Poached and shredded chicken breast
  • Greek butterflied lamb
  • Cooked and sliced sausages
  • Cooked and sliced rissoles 
  • Boiled and peeled eggs

Finally the last layer is where you have your delicate ingredients.  For instance:

  • Softer cheeses
  • Lettuce
  • Avocado
  • Roasted pumpkin
  • A mini quiche 
  • A breadroll (that you can pull out before mixing up your salad)

In the end - How many friends?

An advantage of the salad jars is the range of combinations you can make.

With a little work; salad jars can be rarely monotonous when you can combine different dressings, vegetables, cheeses and meats.  You can have a different jar for each day.

A trip to your local grocers, farmer’s market or what’s currently seasonal in the garden can inspire you on what combination you will make that day.

Give them a try – but save a day in your week to buy hot chips to share with your friends. 

You make friends with hot chips.