Posts mit dem Label Technology werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Technology werden angezeigt. Alle Posts anzeigen

Freitag, 16. August 2019

I'm on a mission

So, I haven't posted anything in a while because quite honestly - I wasn't sure anyone was reading this at all. But this all changed today...

My friends and I talked about another blog the other day - like a lot - and I got a bit jealous. So I tried to (not completely serious) lure my friends onto this blog to get more traffic ;-)
One of my friends - well I wouldn't really call him a friend, more like an acquaintance - made it pretty clear that hell would freeze over before he'd ever come to this site. This lead me to making it my mission for the rest of this year to get him to visit my blog.

My ideas so far to get to achieve this are:

  1. Social Engineering - I will try to get him through one of the channels (e.g. Whatsapp) through which we already communicate to click on a link to my blog (I have already tried with url shortening, but he is smarter than he looks)
  2. Phishing - Once I have his EMail-Address I will try sending him great offers that he can't refuse - all leading to this page (I know a certain Nigerian prince who wants to give away some of his money - maybe he is willing to help)
  3. XSS - this one will be a bit harder to pull of because a lot of the web sites that he visits on a regular basis already prevent XSS attacks - and I would probably have to purchase advertising space there which could cost me quite a bit (but hey, it is probably worth it)
  4. Seduction - I will produce so much great content here that he won't be able to resist anymore at one point. I am still collecting ideas on topics but I think one of the following should work:
    • Going Vegan - I could become a vegan and not only that - a raw fruit and vegetable vegan
    • Starting Cross Fit - I'm suspecting him having a secret crush on me which is why he teases me that much - starting to do Cross Fit and sharing my amazing body transformations is a honey pot he won't be able to resist
    • Explaining why flying is good for the environment - He is a frequent flyer (due to business reasons - or so he claims) and he might regret some of that due to the current climate change debate - if I can provide scientific "proof" that flying is actually good for the environment he might stumble upon this page by accident
    • Become a soccer expert - this one might actually be too easy to achieve but he is an enthusiastic soccer fan and if I invest 30-60 minute per week I should be able to provide thoughtful and helpful player analytics in a week or two. That is what he needs to win his fantasy soccer league for maybe the first time ever.
    • Something about nipples - the idea is really at a very early stage but this might actually be the trojan horse he let's into his city
So, the rough plan is defined - let's get to work!

Montag, 28. Januar 2019

Some Updates

It has been a while since my last post so I think it is time to give some updates:
  • TV - I did not get a TV during the Black Friday sale on the various shops because none had the TV I was after on offer. Luckily, the week after christmas a large tech store chain did some early shopping - insane rebates activity - and even though they did not have the exact model I wanted they had a reasonably close one for a good 250€ below the average price - so I had to get it. Consequently I grabbed my father in the early morning hours and we drove to the store - waited in line with like 50 other people (remember, this is december 27th at 8am) - we got in relatively quickly and got the TV. It is a Samsung QLED (THIS ONE). I paid in cash since we had been saving up to it in our piggy bank and I am really satisfied with it. Great picture quality, good sound for built in speakers and all relevant features that I wanted (it even gets support for apple's air play in spring - so everything is golden there.
  • Open Source Software governance - the scans of our software revealed some duplicate and outdated libraries - we updated what we could and got that out of the way - overall way less effort than anticipated.
  • Basketball practice - I got back in the saddle really slowly. The orthopedist recommended not to play basketball like every again. But I love this sport and I need to do some kind of workout that I don't need to force myself to. I got a nice lower back bandage (prescription) and that makes it bearable even though it limits my flexibility and puts quite a bit of weight on my hip muscles - so I tire much quicker than before my back problems. But that should all sort itself out with more practice. I also started running (well, "running" - my pace isn't close to what it used to be) again to bring the weight down and get more fit. You can follow the results here. The first run was good and helped a lot with the back. Lazy as I am it lead to me reducing the back workout routine (because of reasons) and then the second run was not nice and set me back a bit - back wise. I have taken up the exercise part again and am looking forward to doing some running in todays lunch break. This is all part of my new years resolution (more on those later).
  • In unrelated news - my oldest daughter turned 4 on Friday - what a party that was. We prepared for almost a week - she wanted an unicorn-themed party so we gave it our best:

    Decorated the house with unicorns, I even created some unicorn heads (made of plywood) - as part of the party entertainment the kids coloured those and I will finish them up with some varnish and glue sticks to them to create hobbyhorses. Here how they look in their raw form:

Freitag, 16. November 2018

And hello again.

It has been a while since I wrote something here and wanted to give an update on all major things:

  • Weight is a topic not to be talked about - I went up to around 105kgs beginning of August and started doing "interval fasting" - so I only eat (or consume calories for that matter) between 8am and 4pm. So far my weight has dropped to around 96kg - still too much but a bit better. With a bit more workout it should go down some more (needless to say I never reached the 82kg that I targeted an eternity ago)
  • Basketball is also a bit of a sore point these past 2-3 months. My back has been in a really bad shape - hardly allowing me to walk fast - not to think about running and jumping. Went to see a doctor and he recommended not to play my most favorite sport any more. So, since my back has been much better this past week I am going to basketball practice tonight (because I love this sport and am a bit stupid) - updates to come on how this went.
  • Marriage went great - never looked back. Even got two little offspring as well by now - but this is about me! And nothing else (besides basketball and technology).
  • That brings me to the technology part: My love for JSF has died down quite a bit (as it has for most of the industry, I think). The new hype is Ansible and Docker (at least for me) - but I don't want to bore my 10s of readers with this now - more on this in a couple of days.
What else is there to say: Tomorrow is weekend which is great - this week felt a bit like two weeks with a lot of things going on work-wise and private-life-wise. I am a bit surprised that this blog still exists but I guess it is true: The internet never forgets.

Dienstag, 4. Mai 2010

Java Server Faces and added complexity

Having worked lately on an extremely generic component for one of our JSF (ICEfaces) based products I must really say: You have to jump through a lot of hoops because some useful functionality is missing in JSF. This list is not meant to be complete. It's just what came into my mind today:
  • No parameters for method bindings
  • Insufficient enum support
  • Constructors for Pojos
  • Dynamic method/value bindings using the Expression Language
No parameters for method bindings
I really think this is the worst one - anyone who ever tried to call an action with a parameter came across this issue and used one of the workarounds to actually get it done:
  1. Create an additional parameter object and work with f:setPropertyActionListener (only works for actions and not for parametrized getters)
  2. Use the Map-Hack: Create a Bean that implements the map interface and put all your fancy business logic in the get method - you can call the get method with one parameter (usually the key for the entry you want to access). I must admit I have used this once or twice and it gets the job done - needless to say that it's bad design and I've even read a couple of times that it has some pitfalls (that I haven't encountered so far).
  3. Create a map property on your backing bean: I actually think this is the only valid approach (ok, the parameter object is fine for actions as well) if you need to access data in a parameterized way. Your parameters become the key(s) for the map property and the object you're needing is the value. This has the only downside that you have to initialize the whole content of the backing bean's map when the data is displayed to the user - whether it is really needed or not because you can't control the calling of the getter from the backing bean.
Insufficient enum support
So maybe I'm wrong on this one but I couldn't find a simple way to use enum instances in JSF pages. I couldn't create instances of an enum "on-the-fly" to access certain data or provide it as a parameter. Here are two ways to handle that:
  • Completely abstract from enums in your pages and use String data fields instead (You would then have to transform the String objects into Enum constants on demand)
  • Use a utility bean in that populates Map members on startup with all the elements of your enum. You can then easily get the enum instances by using the members fo this bean with ['enumInstanceName'] to actually get the objects you want right from the start
Constructors for POJOs
Say you want to provide not just a simple parameter/value to your backing bean but already an object (to limit the number of properties for your backing bean) - I didn't find a way to initialize an object from a JSF page and fill some properties. There is some sort of workaround with providing a dummy managed bean for this - the JSF framework takes care of initializing it when you access it for the first time - but it was really a drag. I tried to use this with a request scoped bean - but it kept the value during partial page submits (because for JSF a request ends only when you leave the page - it spans over different partial page submits). So I needed to cleanup the request scoped bean after having retrieved the data. I didn't really find a solution for this and sticked to using multiple properties in my backing bean.

Dynamic method/value bindings using the Expression Language
What I mean by this is: Let's say you have a bean 'A' with the String properties 'a' and 'b'. It is now not possible to use one input text component and link it to either one of them depending on a boolean value (e.g.: #{not empty bean.c ? bean.a : bean.b}). The only way to achieve this is to duplicate the text component and use the rendered flag or create a dynamic value expression in your backing bean and set it on the component programmatically.