Pages

8.27.2013

Make the call...

What's the deal? 

I've always had the impression that institutions, people want to take my money here.  Don't get me wrong, I love the UK... but Hidden fees, extra fees, forgot to mention fees, if in the contract fees.

Anyways, these few days I've noticed too much tax being deducted and the highest E.ON heat tariff applied to us.



Example one.
Before we moved into our flat we were told our heat tariff had a standing/service charge of £1 per day but could be reduced to 27p per day. I called E.ON and the operator said they couldn't help yet because it was too soon. A few weeks later I sent out an email, after not being able to go through E.ON.

Hi,
We would like to change our heat/electricity tariff to a reduced tariff of 0.27 per day. We have been informed we have an excessive charge of £1 a day!!
This is a new build development with energy efficient products and I don't understand why we must have this excessive charge. £1 is not justified. I have tried contacting EON via phone 2 or 3 times and no response.
Thank you.
To which they replied...

Thank you for your email.

With reference to the Energy Service Charge, E.ON is contracted to operate and maintain the network on behalf of the developer for the term of our contract with them. This means it is our responsibility to carry out all routine maintenance, repair, and replacement of any part of the network and or the technology that provides heat to your home. It is part of the terms and conditions of our residential heat supply agreement that the proportional cost of the above is paid by the owner of a property. To further clarify, it also includes maintenance, repair, and replacement of the heat Interface Unit within your property.  The Service charge amount will not be reduced down to 0.27 per day.

Please find a copy of the other tariffs we have available that you may want to consider changing to, these other tariffs may benefit you depending on whether you are a high user or low user . I have also included a copy of the residential supply agreement that we have sent to you.

If you require any further information please give me a call.

Since I thought our bill was too expensive, I called E.ON, once again... this time.. all of a sudden, we can be switched to the 27.72p daily standing charge instead of the £1 but that they couldn't refund our money. What!? Really? Anyways... I set up my direct debit (really didn't feel like paying that on principle) and switched to the 27p tariff.. I also made a claim on the first bill.

Why set people up with the most expensive tariff anyways? Is that even legal?

Example two.
My husband. Recently noticed he was being deducted between £150 and £200 extra the last few months. He asked his employer and got a spreadsheet without any details. Then he called HRMC (that is why we were late to work this morning) and it turns out he's being deducted because he's been using private health care instead of the public one. Say what!? Shouldn't we pay less for social security because we DON'T using public health care?

Hold on, it gets better... Now, after my husband call the guy on the other end of the line said that from next month onwards, instead of deducting £150, they would only deduct £50.  

From now on... every time I set up an account, sign a contract. I will call their help desk and see what "deal" I can get... 

Cheers!

Vocabulary:
Deal - noun.  Call that stops people from ripping you off!

Sprint Planning Meeting



The sprint planning meeting is a 4 hour meeting, for a two week sprint. We prioritise the Product Backlog before we go into a sprint planning meeting. During this meeting we choose the prioritised user stories, estimate them and select the ones we commit to work on during the sprint.

As lists make life easier, for me, this is how I have organised the sprint planning.


[ Before ]

  1. Ask everyone to take their holiday plans to the sprint planning. 
  2. Checkout Systems holiday’s too!
  3. Cards, markers, pens. 
  4. Clarify any user stories during the PB grooming meeting.
  5. Confirm with PO via email, top X user stories. 

[ During ]

  1. Writing board.
  2. Sprint Goal (what will be our goal during this sprint? Then, in theory, we shouldn't work on anything that doesn't support this goal.)
  3. Holidays need to be taken into account.
  4. Steps:
    1. Write out user stories (everyone participates)
    2. Estimate user stories
    3. Prioritise user stories
    4. Choose which ones we can get done
    5. Commit
    6. Developers write out tasks for user stories

[ After ]

  1. Book Meeting rooms.
  2. Add meetings to calendar.
  3. Meetings:
    1. Product Backlog Grooming
    2. Sprint Review
    3. Sprint Retrospective
    4. Sprint Planning
    5. User communication
    6. Daily Stand-up
    7. PO/Stakeholder shape-up meeting. 
  4. Create Change Requests for Sprint and add deployment dates.
  5. Printouts:
    1. Calendar
    2. Goal
  6. Scrum board set up.

8.24.2013

And this is where GitHub fails...

I need to merge some old code that has been lying around on a branch for around six months. I fear using git merge will make me lose important stuff. So, I created a testMergeBranch to test and lost a lot of things.


This is what a git diff branch branch gives me...



What does that even mean? Anyway... one of my colleagues suggested going old school, and it turns out, old school is good.

  1. Downloaded BeyondCompare.
  2. Copied both branches onto a TestMergeFolder.
  3. Made it happen!


and this is where GitHub fails.

8.22.2013

Agile - How to determine the appropriate length of a Sprint

The more the environment changes, the more the requirements change, the shorter the length of a sprint. This would help minimize risks and allow those changes to take place without messing up the frozen Sprint Backlog.

In my team we have recently adopted Agile.

Our first 2 sprints were getting used to the new team and the Agile process, so we don't count those. These along with our first official sprint were three weeks long.

The last sprint and this current one are two weeks long. We were told by our Agile coach to try different time frames during our first sprints to see the ideal one for the team.



Here are my findings:
1. We always have an extra "emergency" release at the beginning of the sprint. People always want things ASAP and this is not always (never, in my experience) with the sprint timeframes and we end up having a release at the beginning of the sprint.

2. In our case, with our ITIL process and Platform complications. Release Notes, UAT, test UAT (have users test and sign-off), Release Notes, Live release (testing one node at a time - clustered architecture) and notify users can take up at least 24 hours. All this takes up development time from the sprint.

I find two weeks is too short for such a changing environment and the time spent preparing deployments.
I find three weeks gives us a bit more breathing space.

Maybe the solution is to keep two weeks sprints. This way the business gets changes a lot quicker BUT we need to find a way to freeze our sprint backlog and avoid "emergency" releases mid sprint.



8.21.2013

Tiramisú

(Italy Dec. - Jan. 08/09)

Many Tiramisú lovers do not know what it consists of; whether or not it is baked and the risks in enjoying this dessert.

This is a simple recipe from an Italian friend. Enjoy!

Ingredients:
Coffee
500 gr Lady fingers
500 gr Mascarpone
4 eggs
8 tablespoons sugar
Cocoa Powder


1. Prepare coffee (use while lukewarm).
2. Beat/Mix egg yokes, sugar and mascarpone (with spoon or beater at low speed, don't liquefy).





3. Beat egg whites until firm snow (start and lowest speed and increase speed gradually).
4. Mix #2 and #3 with spoon and slowly, so that it doesn't lose consistency.





5. Layering:
   Odd layers: Biscuits dipped in coffee and places on pan.
   Even layers: Cream mix.
   Top: Top by sifting the chocolate over the cream layer.







6. Refrigerate and wait at least 12 hours before enjoying!


8.16.2013

Potatoes á la Parsley and Butter

Very simple and fast recipe for cooking potatoes.

Ingredients:

  • Potatoes
  • 2 tablespoons butter
  • Parsley
  • 1 tablespoon parmesan cheese
  • Salt
Prep:
1. Cook the potatoes in boiling, salted water until tender (about 20 minutes). Drain them well.

2. Mix parmesan cheese and finely chopped parsley.


3. Add potatoes to baking tray and add parsley mix and butter.
4. Bake for 20 minutes, or until butter melts. Mix/stir once or twice.

Et voilá! The final result:

8.15.2013

Hiding Elements on Liferay

Here it goes, my first Liferay related post...

These are the different ways and places you can use to hide content.

Example1:
For example, say you would like to add an article that shows a download button for a document available to registered users only. One approach would be to use a web content structure and template duo and add the logic to hide the button on the web content structure.


Web Content Structure:
#if ($request.remote-user)
  <div id="downloadResource" class="downloadResource">
      <a id="documentDownload" href="$URL.getData()" onclick="addLead('$Title.getData()', '$URL.getData()', $jq(this));">
         <img src="/shp-theme/images/download.jpg" />
      </a>
  </div>
#end

Example 2:
Another example, would be to show certain plugins on a page only to registered users. In this case a Layout template with an embedded portlet and hiding logic is useful.

Layout Plugin - Velocity Template:
#if($user.isDefaultUser() || $permissionChecker.isCompanyAdmin())
  <!-- Place code for embedded portlet here -->
  $theme.runtime("userregistration_WAR_userreg_")
#end
Example 3:
This is probably the most useful example for a lot of developers. Using mobile device rules, we can change layouts and themes for mobile devices. You can either embedded portlets on the regular layout and remove them for the mobile theme or layout. Another approach is to prevent the portlets (image marquee, etc) from rendering on page when a mobile device is used.

Hide Portlets from Mobile Devices:
We don't touch Liferay ext or source code, instead we used a hook for render_portlet.jsp:
First determine if request is made from a mobile device:

if (BrowserSnifferUtil.isMobile(request)) {
MobileRenderingConfig mobileRenderingConfig = MobileRenderingConfigLocalServiceUtil.findByLayoutId(previousScopeGroupId,layout.getLayoutId());
String portletIds = mobileRenderingConfig.getPortletIds();
showPortletForMobile = !portletIds.contains(portletId);
}
Then we added the showPortletForMobile boolean to the condition:

if (portlet.isActive() && portlet.isReady() && access && supportsMimeType && showPortletForMobile && (invokerPortlet != null)) {
}
...


8.14.2013

Recipe - Meatballs with Tomato Sauce

Meatballs with Tomato sauce. That is all I wanted for lunch last Saturday. My husband wanted pizza, but we got into a huge argument and I finally won.  I googled meatballs and found this recipe on the BBC website.

1. To make the meatballs, just place everything in a large bowl, and then, using your hands, mix to combine, before shaping into small balls. 

2. Place the meatballs on baking sheets or plates that you have lined with clingfilm, and put in the fridge as you finish them. 




3. To make the tomato sauce, put the onion, garlic and oregano into the process and blitz to a pulp. 

4. Heat the butter and oil in a deep wide pan, then scrape the onion-garlic mix into it and cook over a low-medium for about 10 minutes. Don't let the mixture catch, just let it become soft. 







5. Add the bottle of passata and then fill the empty bottle half full with cold water. Add this to the pan with the pinch of sugar, some salt and pepper, and cook for about 10 minutes. The tomato sauce will appear thin at this stage, but don't worry as it will thicken a little later. 



Extra step: Fry the meatballs in two tablespoons of olive oil.


6. Stir in the milk, and then drop the meatballs in one by one. Don't stir the pan until the meatballs have turned from pink to brown as you don't want to break them up. 

7. Cook everything for about 20 minutes, with the lid only partially covering it. At the end of cooking time, check the seasoning as you may want more salt and a grind or two more of pepper. 




Cook up pasta of your choice...





Enjoy! We sure did!

Desktop friends


Why do we keep so much stuff on our work desktops?
Is it because we are lonely? Then talk to your neighbour.
Is it because our computers ( I bet everyone has one) are too ugly and boring?

Anyways, here are my Mon. to Fri. buddies.

1. Despicable Me McDonalds toy.
2. Origami color box.
3. Origami box with wings.
4. Origami box with rabbit ears.
5. Stress Ball.
6. Rubber Duck for Problem Solving or Debugging.



What do your desktops look like?

8.10.2013

To my dearest page viewer using IE

Dear IE reader,

In my analytics I have only one IE user reading my blog entries. If you are using IE, then this post is for you.

What are you doing? What were you thinking?



For a better Inoa's experiences, click here or even here.

Thank you.

Regards,

Inoa's

about.me is all about you

Ever seen about.me?

It is a site where people can set up a page about themselves. Instead of a professional CV on LinkedIn it is a laid back version of yourself and an electronic business card with a vive.

They have currently rolled out two versions:

1. Basic. A free offer of their service.
2. Premium. For $4 /month you can use your own domain, get analytics and remove the about.me navigation bar. 


If you need inspiration, here are some interesting profiles:

My page... well need to set it up now!!!


8.01.2013

Notes on... Programming Interviews Exposed Part I

If you state on your CV that your Java knowledge is advanced, the least you can do is answer what is the difference between a primitive type and an object at your job interview!

Fine, if you don't know, then you don't know.  As part of your interview prep is to google search for common java interview questions.


There are also many great books, and online blogs and forums that provide great interview questions.

One of these books is Programming interview Exposed.


These are a few notes on it:



Chapter 1, 2:
  • Sanitise online profiles.
  • Sanitise CV.
Chapter 3: Approaches to Programming Problems.
  • Talk through questions before starting to write.
  • Write: function or method, class definition or a sequence of related code modules.
  • Brush up on the languages you expect to use and write you best code.
  • If you mention a technology, make sure you have brushed up on it.
  • During the interview demonstrate:
    • logical thought process.
    • knowledgeable about computers.
    • communication skills.
  • Solving questions
    1. Make sure to understand the problem.
    2. Once you understand, try an example to solidify your understanding.
    3. Focus on the algorithm and talk throught the process.
    4. Explain the solution to the interviewer.
    5. While coding, explain what you’re doing.
    6. Ask questions.
    7. Trace through code with an example.
    8. Check for errors, special cases and boundary conditions.
  1. When stuck
    1. Maintain interest and keep trying to solve it.
    2. Go back to an example.
    3. Try a different data structure.
    4. Consider a less-commonly used or more advance aspects of language.
  2. Analyzing your solution
    1. Understanding of big-O analysis.


1. Big-O Analysis.
Example: Consider a simple function that returns the maximum value stored in an array of non-negative numbers.
- input size = n (find out what n means in terms of the input). ex. number of elements in an array.
- times the input items is examined (what does examine mean). ex. compare two array values.
  • when the comparison is done once for each element. O(n).  
  • when comparison of one to all. O(n2).
Procedure:
1. Figure out what the input is what n represents.
2. Express the number of operations the algorithm performs in terms of n.
3. Eliminate all but the highest-order terms.
4. Remove all constant factors.


Chapter 4: Linked Lists


Programmer Competencies Matrix on Data structure (More on this in another Post):


2n (Level 0)
n2 (Level 1)
n (Level 2)
log(n) (Level 3)


Doesn't know the difference between Array and LinkedList
Able to explain and use Arrays, LinkedLists, Dictionaries etc in practical programming tasks
Knows space and time tradeoffs of the basic data structures, Arrays vs LinkedLists, Able to explain how hash tables can be implemented and can handle collisions, Priority queues and ways to implement them etc.
Knowledge of advanced data structures like B-trees, binomial and fibonacci heaps, AVL/Red Black trees, Splay Trees, Skip Lists, tries etc.


There are three basic kinds of linked list:
  • singly-linked lists - linear list where each element has a next pointer (link) to the next element.
    • can be traversed only in the forward direction.
    • need a pointer to the first element (head) of the list.
    • first element (head), last element (tail).
  • doubly-linked lists - list where each element has a next and previous pointer.
    • can be traversed in either direction.
    • can be traversed from any element.
  • circularly-linked
    • no head or tail.
    • primary traversal problem - cycle avoidance.


Basic Linked List Operations:
  • tracking head element - always keep track of the head element
  • traversing the list - always check for the end of the list.
  • inserting or deleting list elements - use to pointer for the element and previous element.


A stack is a LIFO data structure and a particular kind of abstract datatype or collection.
It is restricted because a limited number of operations can be implemented and these happend at one end of the stack, the top.
Operations:
Push
Pop
Top or peek

This is just a glimpse... more will come soon. At least we hope!