Monday, December 08, 2008

define: duress - Google Search

define: duress - Google Search: "When a person is forced to enter into an agreement or to perform some other act against his will."

Sunday, November 16, 2008

Health care insurance

COBRA Insurance
COBRA Insurance (enforced through an act called COBRA) offers temporary insurance (usually 18-36 months max., you can discontinue any time) for people
  1. Who had jobs and had employer-assisted insurance. Through employer's group (other employees where lost jobs) and COBRA provider, they can get insurance.
  2. Who has a job, but employer doesn't pay insurance.
  3. Family members (spouse, children, ...) can be covered.
Coverage:
  1. You can take full coverage you were having before you lost job. For this, you have to 102% of all payments (your premium + premiums paid by your ex-employer + 2% administrative charge).
  2. Or, you can take a lower coverage, resulting lower premium. (I've seen offers like $225/month for a family of four members)

Medicaid & Medicare
Medicare is for mostly for elderly persons. It's a health insurance program by federal government. Pays most of the claims, some copay may be required.

Medicaid is assist program. Can help to pay almost full health care costs. Eligible: pregnant woman or US children or disabled or blind, has low income. You could try even if you don't belong on of the mentioned group.

Proxool 0.9.1

Proxool 0.9.1

Proxool is a JDBC connection-pool provider. Works near-seamlessly with standard way of JDBC. Here is how it works:

Change this
    Class.forName("org.hsqldb.jdbcDriver");
    connection = DriverManager.getConnection("jdbc:hsqldb:test");
to this
    Class.forName("org.logicalcobwebs.proxool.ProxoolDriver");
    connection = DriverManager.getConnection("proxool.example:org.hsqldb.jdbcDriver:jdbc:hsqldb:test");

Thats it.... or, it you want to configure stuff at startup (there are several options), you can do this:
    connection = DriverManager.getConnection("proxool.example");

Not bad... you might find a proper use this someday...

The providers say it's open-source, maintained. I am still not sure who uses it, though.
Blogged with the Flock Browser

Trying OpenJMS, Part 2

In this part, I want to capture my initial knowledge about JMS, not OpenJMS in particular.

The problem JMS solves:
  • Enterprise applications grow at their own will. But, when the point of integration comes, nightmare begins.
  • MOM (see below) allows passing messages (containing information, transaction, etc.) between applications in asynchronous manner.


Characteristics of JMS:
  • Vendor-agnostic Java API for MOM (much like JDBC allows seamless connectivity to different databases)
Description:
  • Message indicates a piece of information, transaction etc.
  • In MOM, there are topics or queues where people share messages. (There is a different between topic and queue; explanation coming.)
  • There are applications called clients who work with specific topics or queues.Those to produce messages are called producers. Those to receives messages are called subscribers. A client can be both producer and consumer at the same time for a topic/queue.
  • For a specific topic/queue, there can be more that one producers, and consumers.
  • When a producer, subscribing to a particular topic/queue, sends a message to JMS,JMS pushes the message to consumer subscribing to that topic/queue. This way the producer and consumer are working asynchronously.
  • JMS Provider (JMS server) can make messages persistent, meaning it ensure that messages are not lost till they are consumed. (Store-and-Forward vs Fire-and-Forget)
  • Topic vs Queue: Topics can have more that one consumer, and each message is sent to all of the consumers. Queues can have more than one consumer, and the contract fulfills when exactly one consumer consumes the message.
  • Usually a subscriber doesn't receive a message if it is not present (i.e. connected) when a message is produced. A subscriber can request to be a durable subscriber (on a topic). If that consumer is not connected when a message is produced, JMS provider will make sure that i sends when that subscriber connects.
    Durability modifies the behavior of subscriber.
  • From the producer side, it can request a particular message to be persistent. When the call from JMS provider returns, it guarantees that the message has be stored on a reliable media (file, or DB, or something else).

The buzz words:
  • MOM - Message Oriented Middleware (a.k.a. Enterprise Messaging System)


Links:
  • Book "Java Messaging Service" by Richard Monson-Haefel & David A. Chappell, from Oreilly - borrowed the book from my colleague Kevin

Saturday, November 15, 2008

Trying OpenJMS

I have become curious to know about processes running in same/different JVM. There are synchronization issues here.

For multi-JVM calls, one of the most common techniques is RMI (Java's implementation of RPC). In RMI, a call to remote machine is blocked. So, your threads are now at the mercy of a different JVM. Enterprise level applications faced this problem long ago. So, they solved the problem by making the call asynchronous. The technical term is Message Queuing (MQ). BTW, enterprise-designers solved on more problem with MQ - connecting legacy applications in a disjointed manner.

For Java, it is called JMS (Java Messaging System), which is a common interface of all major implementation of MQ. The committee for JMS comprised of representatives all major MQ vendors; so JMS essentially covers the common denominator.

OpenJMS is one such implementation of JMS. It came after JMS spec was created. It is open-source. I am using OpenJMS to do my initial R&D on JMS.

My initial comments about OpenJMS are:
  • It is very easy to install. Just unzip.
  • Very easy to run/stop. Run the startup.bat, shutdown.bat.
  • There is a even better way - run the admin.bat. It pops up a small swing-window. From there, you can start/stop OpenJMS instance.
  • Using Admin tool, you can see which topics (a JMS terminology, explanation coming) and queues (another one) are being maintained.
  • Very easy to try to hello-world type thing. Ready to run (you have to have Ant configured, which fortunately I had) sample application can give you scope to do immediate testing.
Q: How do I use JMS in my application?
A: I didn't try this yet. OpenJMS prefers that you get a handle to it (running on same or remote machine) using JNDI (I am also doing some JNDI study; refer to those concepts, I am not going to explain them again here).

I am planning to do some more R&D using OpenJMS with the following setup:
  • Try 2-machine testing using my personal laptop and office-laptop.
  • Try multi-machine testing using VMWare, where I will host 2/3 OS running.
  • Hand-code some JMS client stuff.
I will continue to update this entry.

Links:

Friday, November 14, 2008

Why would you use JNDI?

Basic Stuff
  • JNDI = Jave Naming and Directory Interface.
  • Example of similar services are: DNS, Sun NIS and NIS+, COS (for CORBA), LDAP (decedent from DAP, which ran over X.500) etc.
  • Taking example of DNS, we can locate a server's real location (IP) using its domain name.
  • JNDI enables large java application look up resources (e.g. database location, JMS server location etc.).
JNDI in a stand-alone Java application
  • Let's we have a 2000-class Java application.
  • Think about passing different resoucres to different classes. When you do that, you also have to take care of initializing, managing, scheduling, load balancing etc. issuse.
  • Resources we are talking about can be database connection, logging interface, configurations files, etc.
  • In the bootstrap of the application, we can launch a JNDI instance and plug these necessary resources against different names.
  • Codes, elsewhere in the application, can run a JNDI context to get a handle to JNDI, and then simply loopup objects using pre-agreed names.
  • Now, JNDI has different service providers, enabling access to FS,
JNDI in a stand-alone Java application
  • Now Consider a Java application that doesn't run the JNDI service.
  • No problem, just know where is the JNDI service is running, and then do how you were doing before.
JNDI Service Providers
  • JNDI wants to offers one-stop solution for different lookup services. So, it need service providers to do that. See one of the links for full list of SP (Service Provider).
  • The service providers act as JNDI service.

Examples of JNDI SP are:
  • RMI Registry
  • LDAP
  • NIS
  • File System
  • Windows Registry
  • COS Naming - for CORBA
  • Mirror JNDI - for Object to XML and vice-versa convertion
JNDI Rationale

I've copy/pasted stuff from the links given in the end.
  • As surprising as it may seem, the notion of a card catalog is quite handy in the world of computing, as well. In computing, we call it a naming service, which associates names with the locations of services and with information. It provides computer programs with a single location where they can find the resources they need. In the way, programs don't waste time by performing the electronic equivalent of walking up and down the aisles, and don't require that the locations be hard-coded into their logic, either.

  • Finding resources is of particular importance in large-scale enterprise environments, where the applications you build may depend on services provided by applications written by other groups in other departments. A well-designed naming infrastructure makes such projects possible -- and the lack of one makes them impossible. In fact, many business-process re-engineering efforts begin with the design and implementation of a robust, enterprise-wide naming and directory infrastructure.

Links:

Wednesday, November 05, 2008

So many dozens

While taking an IQ test on Facebook, I bumped into a term called Baker's Dozen. Googling on that revealed some other dozens.

Baker's Dozen
  • During 16th century, bakers in England gave 13 (12+1) items when 12 were asked. There were severe punishment (losing hand) for not giving 12. So they gave 1 extra.
  • In the modern era, the 12+1 rule is followed for different reasons. Assuming 13 items are placed in 3 rows (4+5+4), they can form close-pack hexagon shapes. This makes processing, packing etc. more easy.
  • The concept is used beyond bakery industry.
  • A.k.a. Devil's dozen.
Banker's Dozen
  • It is a pun on the Baker's dozen.
  • Pointing to the ill intentions of the bankers, there are some loan scheme where lender is given the money after deducting the interest in advance.
  • So, the banker gives you less on what is agree upon.
  • Not related to the number 12.
Decimal Dozen
  • It is a dozen of 10 (12 - 2). And it is for a good reason.
  • Invented in Australia around in 1980s.
  • Stats showed that women bought 50%+ of wine.
  • The maximum recommended weight a lady should take was 15kg, which happen to be the minimum weight of 12-pack wine. The weight exceeded up to 20kg sometimes.
  • So, a company came up with the 10 pack solution.
It's all about dozens.. :)

Links:


Blogged with the Flock Browser

Wednesday, October 22, 2008

Smoke Testing

My context: Software Development.

The term comes from plumbing, where smoke is used to check leaks before going into full and heavy duty testing with water.

In software development, "smoke" is used as a metaphor. When we smoke test a software/component, we do minimum testing before applying full-fledged testing.

I can recall where an anti-smoke test was applied. The famous Jamuna bridge of Bangladesh was a multi-purpose one. One of its goal was to carry natural gas across the river. When the engineers wanted to check the pipes, they checked them with water, instead of gas. Water, being many-times heavy, caused the pipes come out from below of the bridge and fell into the river. Irony, hah!

Links:

The Little Book of Semaphores

Even after working with threads (in Java) for several years, I have feeling that I don't understand why Java allowed things in a certain way. In short, I don't feel ok not knowing the design considerations of threads in Java.

My way of address this:
  • Know threads from the basic. I am going back to good old Unix. This will be a one-month project. Outcomes to be blogged here.
  • Know JVM. This will be a three-month project. Outcomes to be blogged here.

There is a free book on semaphore, called "The Little Book of Semaphores". The author is teacher and knows well why students do/don't understand semaphore. This will be my starting point. I've read first two chapters, and I think it is a good one.

Links:

Tuesday, October 21, 2008

Regression Testing

I had a blurred idea about Regression Testing for some time. Anyway, I had to handle an issue at work related to this, and this time I set the records straight.

Very quick and short understanding:
  • The verb regress: return to a previous state, usually worse state.
  • The noun regression: The act of getting back to a previous worse state.
  • Software Regression: The scenario where a previously solved bug reappear (i.e. regress) after some action taken on the software (e.g. a patch applied)
  • Software Performance Regression: The scenario where performance of a software goes back to a inferior state.
  • Regression Testing: A testing scheme aim to eliminate software regression. It involves testing the whole software for previously working features, even though they were not supposed to be affected.
Software Regression has 3 core types:
  • Local: a change introduces a new bug in the changed module or component.
  • Remote: a change in one part of the software breaks functionality in another module or component.
  • Unmasked: a change unmasks an already existing bug that had no effect before the change.
That's all for now. I will try to come back to this post.

Friday, October 10, 2008

Wireless sound system

I was looking for GPS device for my car. While comparing different products, some features came to my notice - hands-free, text-to-speech, FM transmitter .... obviously, I didn't know many of them. So, I started digging and ended up how wireless sound system works. Eventually, it solved one of my problem at home.

The problem - when I watch movie on my laptop, I had to sit near the sound system. I have short cable.

The solution - USB FM Transmitter. Tune my spare FM player. Connect FM player to the sound system.

FM Transmitter

FM Transmitters work as FM broadcasting stations. They work in a smaller range, as they are for personal use. Within the range, any FM player can receive the signal and play. It will appear just another FM channel.

It costs around $20-40 to buy one.

How will it work
  • I connect FM transmitter to my laptop. I will use a USB one, so no extra power source is required.
  • I have a portable FM player. I will tune this player to the transmitting channel.
  • So, anything I play on the laptop, I can listen on the FM player. Anywhere in my home.
    So can people nearby - I don't care.
  • I connect the input cable of my sound system to the FM player, just like I attach headphone.
  • Benefit: No cable is need to reach the sound system.
Issues to think about
  • Even with a highly capable sound card and sound system, having FM as the intermediary carrier, I will get FM quality sound at the end. Ok for me now.
  • Not secure. People in the range of 150ft can pick up the FM signal. Ok for me now.
  • FM player will need separate power, namely battery. Alternative: Connect player to a AC-to-USB power source.
Other products in the market
  • Conceptually, there are products that solve similar problem.
  • One problem to solve: so many cables from the central sound unit to the small boxes.
  • Some products use different frequency range (900 MHz, or 2.4 GHz) to distribute the signal to the smaller boxes. These products will have to operate in the ISM band (Industrial, Scientific and Medical)
  • Some (Bose) offer full 5.1 or 7.1 connectivity over proprietary wireless signal.
  • But you still need to connect your main audio source to the central unit.
  • Some products use WiFi or Bluetooth for the same connectivity.
    My openion - Bluetooth can be too narrow carrier for good quality.
    WiFi - I would love to have this. I already have a WiFi network for the laptop.
  • Some products allow different music on different wireless sound terminal. So, you can have different sound in different room, at the same time :). Neat!
So far ok.. I will add some more, if I find anything more.

Saturday, August 09, 2008

About memory cards

I am planning to buy a digital camera this week; soon, I ended up in analyzing different technologies around. Hence, I started understanding SD cards.

The wikipedia article says it all. I am capturing some of them.
  • SD stands for Secure Digital. Though, the original intention was Super Density Disc.
  • SD is now an industry standard, initiated by Toshiba, Panasonic and Sandisk.
  • The Secure part of SD was introduced by Toshiba, a legacy (good one) from it's MMC cards (MultiMediaCard). Toshiba included a encryption that prohibited music piracy - a movement mostly know as Digital Rights Management (DRM). This was done because of pressure from music industry.
  • SD cards larger than 2GB uses a different technology called SDHC (SD High Capacity).
  • (Read Access) Speed is an issue to consider of SD cards.
  • The form factor of SD cards can vary in all dimentions. Such variants are: miniSD, microSD (aka TransFlash). These require a simple passive adapater (a physical device to fit in SD slot). The electronic interface remains same.
  • SD cards can fit in other cards slots (e.g. CompactFlash, PC cards) via an active electronic adapter.
  • You would want to access SD cards from your other devices e.g. PC, printer etc. So, you will need a card reader. One card reader can support many differnet standards of cards (SD and others). Card readers can be built in, or can be externally connected (via UBB or other methods)

Links:

Thursday, July 17, 2008

Interview of Kazi da

Kazi da a.k.a. Kazi Anwar Hossain of Sheba Prokashoni - everybody knows him in Bangladesh. The Prothom Alo published an interview of him July 18, 2008. Some very interesting information and reality came up from it.

Link: http://www.prothom-alo.com/fcat.news.details.php?issuedate=2008-07-18&fid=MTY=&nid=Mjc0NDU=

Monday, July 14, 2008

Tuesday, July 08, 2008

Sunday, July 06, 2008

What is WiMAX? — WIMAX

What is WiMAX? — WIMAX

I was discussing about wireless network with my wife and then ended up in understanding WiMAX vs WiFi. The attached link holds full details.

WiFi and WiMAX are implementation of WAN (Wireless Area Network).
Wifi and WiMAX are implementation by IEEE, numbered as 802.11 and 802.16 respectively.
Wifi has a range of 30-100m; WiMAX may have a range up to 30 mile.

Wednesday, July 02, 2008

Thread Pooling

I am doing a thread pooling for my assignment.

I will write about the implementation of that.

Just note that, JDK 1.6 has an implementations of Thread Pool. Look inside package java.util.concurrent.Executor interface and its implementations.

Businee Casual Dressing

Tie is running out
http://online.wsj.com/article/SB121253690573743197.html?mod=googlenews_wsj

Definition
http://en.wikipedia.org/wiki/Business_casual

Guide
http://www.career.vt.edu/JOBSEARC/BusCasual.htm
http://www.sartorish.com/modules.php?name=News&file=article&sid=13

Friday, May 30, 2008

Scrum

I have been working for RealNetworks, Inc. since May 19, 2008. I work in a development wing. They follow scrum. This is my quick effort to clear my understanding about scrum.

What is scrum
  • Part of Agile
  • An iterative process
  • Management of SW Development Process
Why? The vocabularies
  • 'Sequential approach' was predominant. It's like 'relay-race', handing over the baton to the next person.
  • It's better to have 'rugby', where team works as an unit, passes the ball back and forth, and achieves the result.
  • The term 'Scrum' came from a term in rugby.
  • Each iteration is called 'sprint'. Can be 15-30 days' cycle.
  • 'potential shippable'
  • 'product backlog'
  • 'sprint planning meeting'
Roles
  • 'Pig' roles - fully dedicated
  • --- There is a 'ScrumMaster' role who plays the PM role, and maintains the process.
  • --- There is a 'Product Owner' role who represents the stakeholders.
  • --- There is a 'Team' role who represents the developers.
  • 'Chicken' roles - outside scrum team
  • --- Users
  • --- Managers
  • - Stakeholders
Reference
  • TBD

Thursday, May 29, 2008

Java Externalizable

Background
  • Interface: java.io.Externalizable
  • Super Interface: Serializable
  • Used to control how you want to do serialization (read/write)
  • Scenario: Some of the fields may not worthy of writing, or the format needs to be changed etc.
  • transient keyword simply instructs JVM not to read/write a variable, one at a time.
  • With Externalization, you can control all variables in one place.
  • During de-externalization, the default constructor will be called. Then readExternal(...) will be called.
Java Methods
  • readExternal(ObjectInput in)
  • writeExternal(ObjectOutput output)
Link
  1. http://articles.techrepublic.com.com/5100-10878_11-6159276.html

Java Prefernece

Java Preference
  • Introduced in JDK1.4
  • Acts like Windows Registry
  • Stores objects in a tree-like structure; items reside on nodes as key-value pair
  • Can be exported/imported to/from XML
  • A replacement option for JNDI/LDAP; but you don't need a server
  • A replacement for properties files also
Links
  1. http://www.javapractices.com/topic/TopicAction.do?Id=155
  2. http://www.ibm.com/developerworks/java/library/j-prefapi.html
  3. http://www.javaworld.com/javaworld/jw-08-2001/jw-0831-preferences.html?page=1

Saturday, March 15, 2008

Forget Facebook. The web's platform is Mozilla's Firefox

The most interesting topic discussed in our meeting was just how compelling Mozilla's Firefox will increasingly be as the platform for much that happens on the web. Forget Facebook, MySpace, the iPhone, and other so-called platforms. Firefox could well prove to be the most disruptive web platform on the market. Here's why.

read more | digg story

Happy Pi Day!

It's the 3/14, or 3.14, so this obviously means just one thing - it's Pi day, a celebration of the mathematical ratio that man has been trying to unlock for millennia. But why are we driven to find the answers behind it?

read more | digg story