general
HPEL – A fast binary logging for WebSphere v8
Nov 29th
Troubleshooting Java EE apps running on WebSphere just got a bit easier with WebSphere v8′s new binary logging and tracing mechanism: HPEL (High Performance Extensible Logging).
HPEL provides logging/tracing run-time performance boost (x3.5-x5 claimed) increasing the chances that you’ll be able to turn on tracing on a production system.
HPEL comes with two offline viewing tools: A crafty command-line tool for log analysis, and a web based traces viewer on the Web admin console (handy for remote servers).
The command line utility has a tail function and can filter by: Logger/Thread ID/Time/Server startup instance/etc. Which is a good enough reason for me to get rid of my (slow performing) custom Python based filtering scripts.
Good old legacy text based logs are still supported but are recommended for development mode only.
10 things I like about Android development
Apr 5th
- Java – Write in Java on both the Client and Server sides. Simplifies development and presents a low learning curve for newcomers.
- Paid apps culture - Unlike when using web apps, mobile app users we’re tamed to pay for the apps they like (Thank you Apple for cracking the ice). Developing for Android might be the first time that you’ll sell a piece of software directly to your users (it is my first time, and I’ve been programming since 1996).
- TTD – When creating a new Android Eclipse project it auto suggest to create matching test project. Proves to show that the Eclipse perspective designer had TTD in mind.
- API Demos – Good samples project to copy code segments from. Bundled with the SDK.
- No single point of entry - No single main() function. Your application can have multiple entry points (Activities), which can be used to service the user’s Intents. Different from what I’m used to.
- Construct UI using XML - specifying UI elements using a markup language makes more sense than doing it programmatically (attention Swing).
- Multiple App markets – More choices for us developers.
- Coping with multiple device resolutions – using density independent pixels worked well for my modest needs.
- App Inventor - Ridiculously easy to build your first app. Go try it.
- What’s your 10th? Comment if you have one.
My first App:
My first app is the Weight Watchers Points Tracker (diet related), that I’ve initially created for my own usage, then later posted to the Android Market. Surprisingly it has been doing pretty good (>10K installations). I’ll need to see what comes next…
Spice up your tests – execute in (repeatable) random order
Mar 25th
We have a series of SIPp tests that periodically runs against a SIP server we develop. The tests repository keeps on growing and we’ve gathered up a nice pile of tests.
As good tests should be isolated from one another, their order of execution is arbitrary by definition. The tests should produce the same results consistently regardless of where they are located in the execution chain. I thought I might take this to the test, and perhaps find a bug or two along the way.
Working in Python, I now simply shuffle the list of tests prior to execution:
random.shuffle(testList)
executor.exec(testList)
Nice. Now what happens if a certain execution order fails? I would find the issue and fix it, what else?! Right, but how will I reproduce the same exact execution order that failed before, in order to validate the fix?
One naive option is saving the entire execution order as a list of indices, this is not very comfortable. A simpler option is to simply seed your random object with the same seed int value used during the execution to reproduce. Here’s the code:
import random
seedValue = options.get('shuffleSeed', random.randint(0, 10000)) # Seed is provided by the user in an attempt to reproduce, otherwise it's set to some random value.
random.seed(seedValue)
random.shuffle(testList)
print 'Shuffled with seed=' + str(seedValue)
executor.exec(testList)
Software development podcast in Hebrew
Mar 24th
Having recommended podcasts before, I now want to recommend Ran Tavori’s and Ori Lahav’s great (in Hebrew) software development podcast: רברס עם פלטפורמה.
Some of my favorite episodes include:
50. Content acceleration and CDNs
42. Garbage Collection (including myself with a guest appearance)
39. Designing products for the military
22. Internet products and usability in general
10. SundaySky real-time video generation
8. think twice before you debug instead of trace
If you know any other good software development podcasts in Hebrew, please comment here to let me and the world know.
New Java blog out there
Jan 4th
A new baby blog was born: Java Tech Sharing.
Proud father: Guy Moshkovich.
Google is pregnant again – Noop
Oct 5th
After the zillion new dynamic languages that had flooded the earth
(groovy, ruby, …), Google is concocting Noop; a new type-safe language to join Java, Scala, and the rest.
The new language sets out to excel in testability, dependency injection, and readable code (see the proposed features). More interesting than whether Noop will gain a crowd of enthusiasts, is the language’s dynamic and lucid development process; made available through Google code (Sun’s JSRs, are also transparent but here it’s a whole new language).
What do you think?
My first question at Stackoverflow.com
Jun 12th
Could stackoverflow.com, or any other programming Q&A service, be the alternative for a serious think process, in which you just put in your question and immediately granted with the perfect answer? Hopefully it is.
To test that I’ve submitted the following “how to regulate the amount of logging printouts” question. Let’s wait, pray, and see if I get any smart/unpredicted answer from any of the 6 billion inhabitant of planet Earth.

question-mark
Increasing the site’s posting rate – new paradigm
Jan 20th
I’ve been promising myself to post and publish much more frequent than the current rate of publishing.
Except from reserving more time for the actual posts authoring. I’m also counting on changing the nature of the post as a primary means of increasing the posts rate to once a week or more. From now on, I’ll publish stories from my day-to-day work as a software developer, interesting technical things I come across, questions that I don’t always have an answer for, general discussion, etc. The post will be less educative, less articles like, less accurate, with less checked facts, but on the other hand, much more real life related, much more up-to-date, and presented in an open discussion inviting format.
So, I’ll be writting to you soon as promised






Via e-mail