Monday, December 22, 2008
Wednesday, December 17, 2008
Friday, December 12, 2008
Monday, December 08, 2008
define: duress - Google Search
Friday, December 05, 2008
Sunday, November 16, 2008
Health care insurance
- http://cobrainsurance.com/information/articles/5/1/COBRA-Health-Insurance-Explained/Page1.html
- https://www.ehealthinsurance.com/ehi/Consumer-Health-Insurance-Resources.ds?articleId=C1;A1-18;1
- http://cobrainsurance.com/information/articles/3/1/What-is-COBRA/Page1.html
- http://cobrainsurance.com/information/articles/14/1/COBRA-Insurance-Fact-Sheet-2007/Page1.html
- Who had jobs and had employer-assisted insurance. Through employer's group (other employees where lost jobs) and COBRA provider, they can get insurance.
- Who has a job, but employer doesn't pay insurance.
- Family members (spouse, children, ...) can be covered.
- 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).
- 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 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.
Trying OpenJMS, Part 2
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)
- 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
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.
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.
Links:
Friday, November 14, 2008
Why would you use JNDI?
- 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.).
- 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,
- 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 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
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.
Wednesday, November 05, 2008
So many 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.
- 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.
- 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.
Links:
- http://en.wikipedia.org/wiki/Baker%27s_dozen
- http://en.wikipedia.org/wiki/Banker%27s_dozen
- http://en.wikipedia.org/wiki/Decimal_dozen
Wednesday, October 22, 2008
Smoke Testing
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
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
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.
- 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.
Friday, October 10, 2008
Wireless sound system
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.
- 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.
- 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!
Saturday, August 09, 2008
About memory 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
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
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 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.
Friday, May 30, 2008
Scrum
What is scrum
- Part of Agile
- An iterative process
- Management of SW Development Process
- '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'
- '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
- TBD
Thursday, May 29, 2008
Java Externalizable
- 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.
- readExternal(ObjectInput in)
- writeExternal(ObjectOutput output)
Java Prefernece
- 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
Saturday, March 15, 2008
Forget Facebook. The web's platform is Mozilla's Firefox
read more | digg story
Happy Pi Day!
read more | digg story