KakimotOnline

May 26, 2008

Microsoft TouchWall

Filed under: innovation, news — Tags: , , — nandokakimoto @ 5:49 pm

The TouchWall is a Microsoft technology that lets you turn a vertical translucent wall in a sensitive touch surface, very similar to the screen used by Tom Cruise in Minority Report.

This sensational interface was demonstrated by Bill Gates in Microsoft CEO Summit 2008, and is made with lasers and infrared. As incredible as it may seem, the TouchWall should not be launched as a commercial product by Microsoft

Below, there is a video with a demonstration of Microsoft TouchWall.


Fernando

May 15, 2008

Design Patterns for Distributed Systems

Filed under: software design — Tags: , , — nandokakimoto @ 11:57 am

Introduction

In the last post we talked about Design Patterns as a strategy used for writing reusable code. The patterns listed are famous in general software development. However, you can find patterns for a specific kind of software like embeeded, distributed, real time softwares and so on. Today, we will be talking a little about patterns used to describe distributed systems, which are known as Remoting Patterns.

Distributed system is defined as set of computers connected to a network, working together to achive a single objective and equipped with a distributed software (middleware). They are commum used in nowadays’ solutions because of some basic advantages: performance, scalability, fault tolerance, location independence, maintainability. In the other hand, we get a lot of challenges in a distributed systems design, such as network latency, concurrency, security. To face with them, and with the same purpose of Design Patterns, Remoting Patterns help developers with cases of success in middleware design, demostrating approaches that worked in later projects and that are strictly recommeded. So, let’s start.

Remoting Patterns

The picture above shows the interaction among the basic Remoting Patterns. So, to develop a basic object-oriented middleware you should use the patterns:

Requestor: hides the details of the client side distributed object communication from clients. So, use a REQUESTOR for accessing the remote object. To invoke an operation on a remote object, the client passes the data necessary to invoke the operation to the REQUESTOR, who then send this invocation across the network. It handles the details of crossing the process/machine boundary.

Client Proxy: supports the same interface as the remote object. So, clients only interact with the local CLIENT PROXY, which represents the remote object from the client application. It uses the REQUESTOR to construct and send the remote invocation.

Invoker: accepts client invocations from REQUESTORS. REQUESTORS send requests acrros the network, the INVOKER reads the requests, demarshals it and dispatches the invocation to the remote object implementation. Result are returned as replies in the reverse direction.

Client Request Handler: responsible for opening and closing network connections to server applications, sending requests, receiving replies, and dispatching them back to the appropriate REQUESTOR.

Server Request Handler: deals with all the communications issues of a server application. So, it reveives messages from the network, combine the message fragments, and dispatch the messagens to the correct INVOKER for further processing.

Marshaller: use compatible MARSHALLERS on the client and server side that serialize invocation information.

Interface Description: serves as the contract between CLIENT PROXY and INVOKER. So, syncronize client and server with the existing remote invocations.

Conclusion

Distributed systems are becoming a very commun strategy in software development because of its skills like scalability, high performance, location independence. As a normal software application, designing distributed sytems is in the most of times a great challenge for programmers worried about reusability and maintainability. Because of that, Remoting Patterns were created to facilitate the development of this kind of systems with good practices and known design cases of success.

More information can be found in the book Remoting Patterns: Foundations of Enterprise, Internet and Realtime Distributed Object Middleware.


Fernando

May 4, 2008

Designing Reusable Sofware

Filed under: software design — nandokakimoto @ 7:07 pm

Given the problems we face with in the real world, designing objected-oriented software became a difficult activity for programmers. In addition, designing reusable and extensible software is even harder, at same time it is essencial for the dynamic software industry that exists today. Because of that, Design Patterns gained popularity in computer science in 1994, after the book Design Patterns: Elements of Reusable Object-Oriented Software, with the promess of speed up the software development process. But, what does it mean and do?

What is Design Patterns?

“Design Patterns describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice.” This definition, given by Christopher Alexander, can be applied to every single envinroment, including an arquitecture environemnt or a software development one. So, the purpose of Design Patterns is to leave recorded a solution to a problem that occurs more than once. Thus, when someone faces with a problem that was already recorded, or similar to it, it’s not necessary to lose the same time thinking about its solution. The solution for that problem already exits and you just have to reuse it. That is Design Pattern!

Design Pattern Elements

Now that we know what Design Pattern is, we want to know how to find a pattern to resolve our problem. For that, each pattern has 4 elements used to describe it.

  1. Pattern name: is a handle we can use to describe a design problem, its solutions, and consequences in a word or two.
  2. The problem: describes when to apply the pattern. It explains the problem and its context.
  3. The solution: describes the elements that make up the design, their relationships, responsibilities, and collaborations.
  4. The consequence: are the results and trade-offs of applying the pattern

Reading this 4 elements, you are able to identify the puporse of each pattern and if it can be applied to your problem. If so, congratulations, you have been awared.

Catalog of Design Patterns

The existing Design Patterns are grouped into the following categories:

  • Creational Patterns: Abstract factory, Factory method, Builder, Lazy initialization, Object pool, Prototype, Singleton, Utility.
  • Structural Patterns: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
  • Behavior Patterns: Chain of responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State,Strategy, Specification, Template method, Visitor, Single-serving visitor, Hierarchical visitor

I will not explain them in details now, but I’ll reserve some future posts to the most importants patterns so we can learn their aplicability.

Conclusion

Design Patterns is a good aproach to solve software’s problems in a reusable way. It happens because some software design requires considering issues that may not become visible until later in the implementation. In this case, it’s important to look at the past, see what had been done to solve problems like the ones that you are having now and, thus, reuse past work (don’t reinvent the whell). Therefore, reusing design patterns helps to prevent subtle issues that can cause major problems, and it also improves code readability for coders and architects who are familiar with the patterns.


Fernando

May 3, 2008

Search Engine Optimization

Filed under: news, web — nandokakimoto @ 5:26 am

As a marketing strategy for increasing a site’s relevance, SEO (Search Engine Optimization) became one of the main worries of web designers, who tries to find the perfect harmony between the site’s content and SEO techniques. SEO, as you already noted, is the process of improving the volume and quality of traffic to a web site from search engines via natural search results for targeted keywords. So, depending on how a site is structed, more it will be at the top of search results, providing more user acess.

A lot of people say that SEO is about tricking the search engines, however I prefer to look at it as a knowledge of how them work, understanding their algorithm and what are search engines looking for. In this way, it’s possible to make adjustment to better present your page and improve your rank for a search term.

Now, I’ll show some techniques used to do this improvement, but remember that will likely take more than a month before seeing the results of your workcan, due to the fact that it takes time for the search engines to update their databases.

Domain Name: the first thing to consider is what hosting company to use. When choosing a domain name, make sure that it is short, easy to remember, and easy to spell. Another important consideration is that having keywords in your domain is not a major consideration, so you already have a domain name, don’t worry about switching just because it isn’t packed with keywords.

The Title Tag: an essencial practice is putting keywords at the beginning of your page, such as int the TITLE tag. Your title should include keywords that describe your site (in the most of times keywords are more importante than your company name). When people are viewing a list of search results, they typically will scan down the list, so make sure your title tells them what your page is about. Here’s how to use the TITLE tag most effectively:

  1. Put the TITLE tags below the <HEAD> tag.
  2. Use 40-60 characters (including spaces) between <TITLE> and </TITLE>.
  3. Put the keyword phrase at the very beginning. You can repeat them once, if you like. Make sure you limit the number of small, very common words (the, a, as, of, etc.).

Description Meta Tag: these tags are also in the head section of the code of a web page, describing it to the search engine. You should place the DESCRIPTION tag directly below the TITLE tag, using the same guidelines as for the TITLE tag, but this time you can use up to 250 characters. Here’s an example of Meta Tag use:

<head>
<title>Your Page Title Here</title>
<meta name=”Description” content=”Your Description”>
<meta name=”Keywords” content=”Your Keywords”>
</head>

ALT Attribute: Images are an important part of making your site visually attractive to your visitors. But, search engines do not understand the image’s content. This is why ALT Tags can be useful. ALT Tags are text descriptions that are used to describe an image on a page. This provides another opportunity to include keywords and keyphrases on your site. For example:

<a href=”pagename.html”>
<img src=”image.gif” alt=”image description”></a>

This are just a few of basic knowledge about SEO and what search engines considerer when returning a search result. For now, keep them in mind and designing your site. This little things can make the difference in the number of visitors and maybe in your bank account.


Fernando

Blog at WordPress.com.