Last night my battery and my MacBook Pro decided not to talk to each other anymore. The battery was full but as soon as I unplugged the AC, the laptop shut down immediately, fairly useless ;-)
Have a look at Apple's support case MacBook Battery Update.
This patch apparently prevent the synchronization failure to happen, saving you a WFT moment and few hours of downtime.
I have been fairly impressed by the Genius bar support. It took me 1h to figure it out the problem in the morning (The Apple support website roughly described my problem), I made an appointment right away, another hour later I had my new battery operational (travel time included).
At least, they don't argue with you and don't ask if you know how to turn the power on. It's a big plus compared to other support organizations.
Tuesday, June 12, 2007
Wednesday, June 6, 2007
From a Bug blooms a thousand Features
When a severe bug hits a product, you have to fix and release quickly (at least I feel I have to). But, especially in the beta phase, it's fairly humiliating to release with one single ticket resolution.
Call it pride, pair pressure, ego, unwillingness to face reality, teenager knee jerk, I just can't release a beta with one single lonely closed ticket.
This is what happened on Hibernate Search. Beta2 introduced a severe bug in object retrievals. So I ended up coding a few new features, fixing a few additional annoyances to hide the obvious.
That's one of the things I like in the Software as a Service model, transparent bug fixing, but that's another story.
Obviously, such aggressive release cycles can only work as long as a Product Manager don't look over your shoulder.
Who said bugs were a bad thing? ;-)
Call it pride, pair pressure, ego, unwillingness to face reality, teenager knee jerk, I just can't release a beta with one single lonely closed ticket.
This is what happened on Hibernate Search. Beta2 introduced a severe bug in object retrievals. So I ended up coding a few new features, fixing a few additional annoyances to hide the obvious.
That's one of the things I like in the Software as a Service model, transparent bug fixing, but that's another story.
Obviously, such aggressive release cycles can only work as long as a Product Manager don't look over your shoulder.
Who said bugs were a bad thing? ;-)
Hibernate Search freshly baked features
I had to release Hibernate Search Beta3 early after we discovered a fairly severe bug in Beta2. But I had time to inject some new features. After those introduced in Beta2, that a fairly good week :)
batch size limit on object indexing
If you don't pay attention when initially indexing (or reindexing) your data, you may face out of memory exceptions. The old solution was to execute indexing in several smaller transactions, but the code ended up being fairly complex. Here is the new solution:
Native Lucene
The APIs were never officially published (until beta3), but Hibernate Search lets you fall back to native Lucene when needed. All the needed APIs are held by SearchFactory.
Finally you can optimize a Lucene Index (roughly a defragmentation)
batch size limit on object indexing
If you don't pay attention when initially indexing (or reindexing) your data, you may face out of memory exceptions. The old solution was to execute indexing in several smaller transactions, but the code ended up being fairly complex. Here is the new solution:
wrap that into one transaction and you are good to go.hibernate.search.worker.batch_size=5000
int batchSize=5000;
//scroll will load objects as needed
ScrollableResults results = fullTextSession.createCriteria( Email.class )
.scroll( ScrollMode.FORWARD_ONLY );
int index = 0;
while( results.next() ) {
index++;
fullTextSession.index( results.get(0) ); //index each element
if (index % batchSize == 0) s.clear(); //clear every batchSize
}
Native Lucene
The APIs were never officially published (until beta3), but Hibernate Search lets you fall back to native Lucene when needed. All the needed APIs are held by SearchFactory.
This one is the brute force and gives you access to the Lucene Directory containing Orders. A smarter way, if you intend to execute a search query, is to use the ReaderProviderDirectoryProvider provider = searchFactory.getDirectoryProvider(Order.class);
org.apache.lucene.store.Directory directory = provider.getDirectory();
Smarter because you share the same IndexReaders as Hibernate Search, hence avoid the unnecessary IndexReader opening and warm up.DirectoryProvider clientProvider = searchFactory.getDirectoryProvider(Client.class);
IndexReader reader = searchFactory.getReaderProvider().openReader(clientProvider);
try {
//do read-only operations on the reader
}
finally {
readerProvider.closeReader(reader);
}
Finally you can optimize a Lucene Index (roughly a defragmentation)
SearchFactory searchFactory = fullTextSession.getSearchFactory();
searchFactory.optimize(Order.class);
//or searchFactory.optimize();
Tuesday, May 22, 2007
Lucene feedback from Atlassian JIRA and Confluence
Mike Cannon-Brookes from Atlassian has posted (some moons ago) two interesting presentations related to Lucene and Atlassian's feedbacks from Confluence and JIRA.
My favorite is the first one: Lucene: Generic Data Indexing. It's a nice introduction to the benefits of Full Text search engines, as well as the gotchas you will face.
I found their use of FilterQuery as a cross-cutting concern implementation for security fairly interesting.
The first presentation also quickly address some of the indexing strategies (synchronous / asynchronous) depending on the product requirements. Mike goes a bit deeper in the second one by describing some clustering solutions and the one they choose.
JIRA has gone very far in its use of Lucene, I am not sure I would have gone that far, but that's definitively a very interesting extreme use case, and very successful :)
My favorite is the first one: Lucene: Generic Data Indexing. It's a nice introduction to the benefits of Full Text search engines, as well as the gotchas you will face.
I found their use of FilterQuery as a cross-cutting concern implementation for security fairly interesting.
The first presentation also quickly address some of the indexing strategies (synchronous / asynchronous) depending on the product requirements. Mike goes a bit deeper in the second one by describing some clustering solutions and the one they choose.
JIRA has gone very far in its use of Lucene, I am not sure I would have gone that far, but that's definitively a very interesting extreme use case, and very successful :)
Wednesday, May 16, 2007
Demo of JBoss Seam DVD Store powered by Hibernate Search
Many asked me if the DVD Store demo powered by Hibernate Search that I ran at JavaOne was available online.
The answer is not yet, but it will. My plan is to package it nicely and release it when the beta 2 of Hibernate Search is out.
This will hopefully happen fairly soon. JavaOne being behind us, I can focus back on the code base.
I had some very interesting discussions with some of you about Lucene and the features you need, it's good to see the community growing around the project.
The answer is not yet, but it will. My plan is to package it nicely and release it when the beta 2 of Hibernate Search is out.
This will hopefully happen fairly soon. JavaOne being behind us, I can focus back on the code base.
I had some very interesting discussions with some of you about Lucene and the features you need, it's good to see the community growing around the project.
Wednesday, May 9, 2007
Hibernate Search and JSR-303 at JavaOne
I will be presenting Hibernate Search at JavaOne.
I will be demoing a live migration of the JBoss Seam DVD Store application from a classic SQL based search engine onto Hibernate Search with Google-like search capabilities. If your user pressures you for a decent and useful search feature or your DBA asks you not to kill the database perfs, you might want to take a look at it.
It's Friday at 10h50:
TS-4746 - Hibernate Search: Googling Your Java Technology-Based Persistent Domain Model
I will also give an update on JSR-303 Bean Validation (and Hibernate Validator) about the goals, the expectations and where it fits in the Java ecosystem, with a demo too ;-)
Friday again at 14h50 ( 2:50 PM in our local hosts language ;-) )
TS-4112 - Declarative Programming: Tighten Enterprise JavaBeans (EJB) 3.0 and JSR 303 Beans Validation
See you there
I will be demoing a live migration of the JBoss Seam DVD Store application from a classic SQL based search engine onto Hibernate Search with Google-like search capabilities. If your user pressures you for a decent and useful search feature or your DBA asks you not to kill the database perfs, you might want to take a look at it.
It's Friday at 10h50:
TS-4746 - Hibernate Search: Googling Your Java Technology-Based Persistent Domain Model
I will also give an update on JSR-303 Bean Validation (and Hibernate Validator) about the goals, the expectations and where it fits in the Java ecosystem, with a demo too ;-)
Friday again at 14h50 ( 2:50 PM in our local hosts language ;-) )
TS-4112 - Declarative Programming: Tighten Enterprise JavaBeans (EJB) 3.0 and JSR 303 Beans Validation
See you there
Sunday, April 22, 2007
Hibernate Search talk at JAX '07
One feature request for Hibernate Search has been surprisingly pretty popular: support for indexed embedded collections and hence correlated queries involving collections.
This is no longer a request and is available in SVN :-)
Imagine a Movie having a list of Actors, the following query is now possible:
I am going to talk about Hibernate Search at the JAX 07 conference in Wiesbaden on Tuesday. Let's have a beer if you are around.
By the way, I think De Niro did a not so great job on this movie, too much is suggested (probably too many details too fast). I know that was the intend, but he went too far in my opinion.
This is no longer a request and is available in SVN :-)
Imagine a Movie having a list of Actors, the following query is now possible:
give me the movie talking about Central Intelligence Agency and having one of the Baldwins in the castingor in Lucene language
description:"Central Intelligence Agency" authors.name:BaldwinOf course the drawback is to potentially increase drastically the size of your index. So use it when the collection size is under control.
I am going to talk about Hibernate Search at the JAX 07 conference in Wiesbaden on Tuesday. Let's have a beer if you are around.
By the way, I think De Niro did a not so great job on this movie, too much is suggested (probably too many details too fast). I know that was the intend, but he went too far in my opinion.
Subscribe to:
Posts (Atom)