Thursday, December 28, 2006

Polar Rose Search Engine

Polar Rose is a new face recognition system. It makes photos searchable by analyzing their content and recognizing the people in them. It is based on the algorithms developed by CTO Jan Erik Solem during his M.Sc and Ph.D. stints at the universities of Lund and Malmö in southern Sweden. They use 3D representation of an image from regular 2D images so such approach radically improves the short-comings of existing face recognition approaches.

There will be a royalty-free API, which will allow partners to integrate the Polar Rose functionality into existing sites or create stand-alone applications of Polar Rose.
For now plug-ins for browser are available.
http://www.polarrose.com/

Saturday, December 16, 2006

What's new in JDK 6?

According to Danny Coward's Sun Weblog there are several important enhancements:

Web Services
Easy to use APIs for developing web service clients.
Scripting
Mix scripting and Java in your code. Javascript comes as standard, you can add many more languages.
Database
Updated JDBC 4.0 APIs, and an all-Java JDBC database included in the JDK.
New Desktop APIs
Swingworker, JTable sorting and filtering, GroupLayout and more.
Monitoring and Management
All the m&m tools now attach on demand. And there's a new one: jhat.
Compiler Access
Programmatically control the javac compiler.
Pluggable Annotations
Define your own annotations and plug in the code to process them.
Desktop Deployment
Swing's better looking and better accelerated. Revamped runtime and application installation.
Security
Integration with services like PKI, Java GSS, Kerberos, and LDAP.
Performance and Quality
Double digit improvements in performance, client and server. 100,000+ tests for compatibility alone.

Tuesday, December 12, 2006

Google Web Toolkit

Google Web Toolkit (GWT) is an open source Java software development framework that makes writing AJAX applications like Google Maps and Gmail easy for developers who don't speak browser quirks as a second language. Writing dynamic web applications today is a tedious and error-prone process; you spend 90% of your time working around subtle incompatibilities between web browsers and platforms, and JavaScript's lack of modularity makes sharing, testing, and reusing AJAX components difficult and fragile.
GWT lets you avoid many of these headaches while offering your users the same dynamic, standards-compliant experience. You write your front end in the java programming language, and the GWT compiler converts your Java classes to browser-compliant JavaScript and HTML.

Source here.

Saturday, December 09, 2006

My photo gallery - on air!

Picasaweb provided me with some space thus go to http://picasaweb.google.ru/nmedin

Revelation of Norah Jones

At least for me Norah Jones've been revealed recently and A can't realize why A wasn't aware of her!
Her albums:
  • Come away with me;
  • Feels Like Home;
  • Thinking of You (Promo CD is available for now only) [2006].

Find more on http://infostore.com.ua/search?s=norah%20jones&p=0

Thursday, November 30, 2006

Thread locks

Did you know that to set a ctitical section in the static method it is possible to write the following:
class AClass {
...

public static void Method()
{
lock(typeof(AClass))
{...}
}
...
}

Tuesday, November 28, 2006

Security + Reliability = Quality

It is undeniable fact that to be considered high-quality software should be both secure and reliable. Michael Howard emphasis on that there is no need to protect your product from all possible threats that can appear but to decide on what are the most likely threats and then try to "treat" them. He also suggests building threat models in order to decompose the system into blocks.
There are few if any good advices: threat trees, STRIDE, DREAD and so on... but you can find out your own :)

Besides ACE Team - Security, Performance & Privacy has released a free tool for threat modeling.

Saturday, November 25, 2006

Helpful reference

Michael Howard, David LeBlank "Writing Secure Code" (in russian) could be found here

Friday, November 17, 2006

Lectures on Structure and Interpretation of Computer Programs (1986)

This course has been MIT's introductory pre-professional computer science subject since 1981. It emphasizes the role of computer languages as vehicles for expressing knowledge and it presents basic principles of abstraction and modularity, together with essential techniques for designing and implementing computer languages.

Video Lectures by Hal Abelson and Gerald Jay Sussman. For more informaton click here.

WPF talks

Recently on theServerSide.com I've read an article
"Windows Presentation Foundation and your architecture - Where does it fit?"

Brian Noyes' articles discussing the key concepts of WPF and how it fits into your presentation tier architecture. It also discusses the interoperability capabilities of WPF with Windows Forms, and shows an example of using that capability to migrate incrementally to WPF instead of making a wholesale change.

Read!
http://www.theserverside.net/tt/articles/showarticle.tss?id=WPFArchitecture

Friday, September 29, 2006

Threads and UI controls

Did you know that you cann't access to UI controls from another thread but the one the control was created in?
To couple with the problem in .Net controls have an InvokeRequired property so you can easily redirect your call and make it internal for the UI thread using Invoke method.

Clips

Agnetha Faltskog - Sometimes When I'm Dreaming (2004)
For ABBA lovers only :)

Katie Melua - It's only pain (Single)

Friday, September 22, 2006

Computing Thoughts

IT Consulting becomes extremely popular. But there is no common opinion on what consulting is. Bruce Eckel thinks consulting is when you have some kind of special expertise - come by through hard struggle and learning - that you transfer to a group of people, in a relatively short period of time, and in a way that is unique for that group.
He also considers there is quite enough consultants and consulting companies which don't provide value for the customers effectively and the reason for that lie in the scalability problem.
Perhaps the problem comes down to this: consulting doesn't scale. It involves a lot of study and struggle. The consulant needs to pay for the time he spends on his own while struggling with these ideas, he must charge a premium when he visit a client.
Bruce also thinks consulting is first and foremost a human activity, and I agree with him that the primary motivation must be in improving the quality of the client's experience. One reason that the consulting fee must be relatively high is that this experience is a rare thing, both for the consultant and for the client, and the consultant is being paid for the unpaid time that he or she invests. But this form of consulting doesn't scale, not even on an individual level. A consultant who spends all his time on the road is not allowing the time for reading, communicating and reflection that I consider essential to maintain quality. Installing the same techniques in the same way from company to company is something, and it may have value, but it isn't what I would call consulting. This is a craft.
Resources:
http://www.artima.com/weblogs/viewpost.jsp?thread=122020
http://www.joelonsoftware.com/articles/fog0000000024.html

Wednesday, September 20, 2006

Weak References in .NET

Did you know that WeakReference class represents a weak reference, which references an object while still allowing that object to be garbage collected?
The common language runtime garbage collection mechanism reclaims inaccessible objects from memory. An object becomes inaccessible if all direct and indirect references to that object become invalid (for example, by setting those references to a null reference (Nothing in Visual Basic)). A reference to an accessible object is called a strong reference.
A weak reference also references an accessible object, which is called the target. A user creates a strong reference to the target by assigning the value of the Target property to a variable. However, if there are no strong references to the target, the target becomes eligible for garbage
collection even though there is a weak reference to the object.

Sunday, September 17, 2006

"The Steppe Wolf" by Herman Hesse

"The Steppe Wolf" is written by Herman Hesse. The book fell into my hands quite by chance. As they say it reveals the principles of postmodernistic culture... even if that's the case I found the book praiseworthy. That's in short. Just read it.

Saturday, September 16, 2006

Smart Pages

Scientists at Xerox's research laboratory in Webster, NY, are making progress with a technology that automatically protects and selectively reveals information contained in documents, without creating multiple versions of them or hogging as much memory as today's encryption programs do. In essence, the Xerox software analyzes language to determine whether words and phrases (like "alcohol abuse" or "HIV"), taken in context, are private and should be reserved for doctors, or whether, say, a string of nine digits--potentially a Social Security number--should be seen only by a personnel officer. A single stored form or document reveals its parts according to users' authorization levels: someone in the hospital scheduling office might see only a patient's address and phone number.
The researchers are working to make the core technology compatible with existing formats, including PDFs and customized hospital forms. "We've scoured the landscape, and there is no technology out there that marries content analysis with encryption so that the whole process becomes automated," says Shriram Revankar, who heads Xerox's smart-document lab in Webster.Such technology is badly needed, says Kenneth H. Buetow, director of the National Cancer Institute's Center for Bioinformatics in Bethesda, MD. Current privacy laws make it difficult for researchers to share patient data from medical trials. "It represents a potential solution to the sharing of information in compliance with human subjects' privacy protections," says Buetow, who is assembling a cancer research database. He cautions that the technology is still unproven; but Xerox hopes it will be ready to commercialize in two to five years.

Friday, September 15, 2006

Robotics Studio

Did you know that Microsoft is working with robots too?

Microsoft Robotics Studio targets a wide audience in an attempt to accelerate robotics development and adoption. An important part of the offering is the simulation runtime. It was immediately obvious that PC and Console gaming has paved the way when it comes to affordable, widely usable, robotics simulation.
Getting Started you can reed here
And the video

Monday, September 11, 2006

Vista and Windows Version Compatibility

When it comes to run applications under the new version of OS there is no guarantee everything will go correct. To lessen the threat of such behavior in Vista it is possible to follow next steps:
1. Run Program Compatibility Wizard.
2. Choose your App from the list.
3. Choose compatibility mode – i.e. Microsoft Windows XP (Service Pack 2).
4. Set Disable visual themes flag if needed.
5. Save custom settings.

Sunday, September 10, 2006

Common Ways of Data Synchronization

The problem of data synchronization is critical when it comes to develop disconnected systems. Although there are several ways to solve it, there are no good decisions. They can be only worse and the worst.
The article Making your smart client application work in a disconnected environment By Steve Joubert considers the problem from the smart application architecture angle.
In the article the application can work both on-line and off-line. The second way is much more problematic.
The user starts creating new data and modifying or even deleting existing data. When the application connects back to the network, how do you get the new and modified data from the client data store to the server? How do you know what has changed? How do you deal with identity field assignments on the client that may not match those on the server?
First, be sure to synchronize only the data that has changed. A few approaches you can take include database delta, change logging, or data flagging.
Obviously in all three approaches you must consider identity fields because the ID assigned to a record on the client will probably not match the one assigned on the server. In fact, in a busy system, the ID will likely have been used before you synchronize. Another consideration is the order in which the tables are synced. If a hierarchy or table exists, you must respect that structure and start at the appropriate place.
In the database delta approach, the system must look at each database table that can be synchronized and evaluate if a record has been changed, inserted or deleted. Changed records are easiest to identify and update. New records need to take into account identity fields, particularly if the ID field is referenced in other places. It then becomes the responsibility of the data synchronization controller to ensure that the new ID, assigned by the server, cascades to the referencing tables before the data is synchronized.
Deleted records are more problematic. You can’t assume that if a record exists on the server and not on the client a delete should be performed. If someone added a record while you were disconnected, it would be wrongfully deleted.
One way to implement database delta synchronization is to use a time-stamped field on each record and note the time of the last synchronization. Then any record whose time stamp is greater than the last synchronization is either updated or inserted. Any record that exists on the server with a time stamp that is less than the last synchronization time and does not exist on the client can be deleted. While this approach is workable, it isn’t very elegant and can be dangerous if not implemented carefully.

On the other hand, change logging is a safer method. Think of it as implementing your own SQL Server transaction log. Every action you take against the local database is logged as a synchronization record. When you are connected to the server again, the synchronization records are played against the server and the data is synched.

Data flagging is another option. It is safer than the database delta approach, and while less elegant than change logging, it is simpler to implement. With data flagging, each table that can be updated is given an extra column—a flag that tells the status of the record, whether it is unchanged, updated, inserted or deleted. In addition, any table with an identity field has a GUID field added to it.
When the application inserts, updates or deletes a row, the status of the record changes appropriately. When a record is inserted into a table with an identity field, however, a GUID is used instead. The GUID relates to other tables rather than to the identity key until synchronization occurs. Then, during synchronization, the identity field is assigned on the server and can be matched to related records via the GUID. Synchronization is simplified because each record that needs to participate is clearly marked and indicates the operation that needs to be performed.

Another approach is data locking. You create a flag alerting the server that a record or set of records is locked by a user; all other users have read-only access to the information. This approach is restrictive, but it enables you to identify the data sets that need to be loaded onto the client and eliminates concurrency issues.
When synchronizing data back to the server, you must have a set of rules by which the data is transferred. Problems can occur when the record you are updating or deleting has already been altered. Do you overwrite the data? Discard new changes? Let the client decide?
The “last-in” method is the easiest to implement but also the best way to lose valuable changes. In this method, the last person to synchronize or save his or her data controls the values in the record. Your updates overwrite previous updates and your delete removes records—even those that have been modified.
“First-in” disallows changes to records that have been modified since the start of the disconnected work. The idea is to flag records that need to be reviewed and enable the user to view the new version of the record and re-apply his or her changes. You may also want to build in more intelligence and enable the user to do an on-the-spot, side-by-side comparison of the two records and select needed values from each record before updating.

Thus, connected and disconnected data access mechanism is not a small task anymore...

Saturday, September 09, 2006

UML 2.0 is not a newish thing but nevertheless...

Regardless the fact that UML 2.0 was released long time ago many people are unaware of it. That's was the reason I decided to bring some info about new features and enhancements that were made in the new UML 2.0.

Here is a short summary:
  • Nested Classifiers: This is an extremely powerful concept. In UML, almost every model building block you work with (classes, objects, components, behaviors such as activities and state machines, and more) is a classifier. In UML 2.0, you can nest a set of classes inside the component that manages them, or embed a behavior (such as a state machine) inside the class or component that implements it. This capability also lets you build up complex behaviors from simpler ones, the capability that defines the Interaction Overview Diagram. You can layer different levels of abstraction in multiple ways: For example, you can build a model of your Enterprise, and zoom in to embedded site views, and then to departmental views within the site, and then to applications within a department. Alternatively, you can nest computational models within a business process model.
  • Improved Behavioral Modeling: In UML 1.X, the different behavioral models were independent, but in UML 2.0, they all derive from a fundamental definition of a behavior (except for the Use Case, which is subtly different but still participates in the new organization).
  • Improved relationship between Structural and Behavioral Models: UML 2.0 lets you designate that a behavior represented by (for example) a State Machine or Sequence Diagram is the behavior of a class or a component.
Sources:
http://www.uml.org/#UML2.0
http://www.omg.org/gettingstarted/what_is_uml.htm
http://www.softwarestencils.com/uml/index.html - Addons for Visio

Windows Vista pricing policy, what does it look like?

Windows Vista - it has been spoken about for a long time and the windows community wait for its final release. But despite the fact that the brand new OS is promising and challenging there still is an issue with the pricing policy.

According to the polling on http://channel9.msdn.com which sounds like that
"What do you think of Windows Vista pricing?"
26.7% of respondents answered "Much too high"
52.6% - "A bit too high"
16.3% - "Quite reasonable"
3.7% - "Cheaper than expected"
.7% - "Dirt cheap"

Introduction

Dear reader,
I'm Nick Medin and this post is about myself.
On my blog I'm going to post information about IT and other things which can rouse smbd's interest, I hope.
Why IT? I think you'll understand after viewing my profile.
Have nice time while reading the blog!

P.S.
And this is my photo

Hello, world! Again?

Hello to everybody. This is the first post on the InfoTech-Live blog.