The New Wallpapers and Theme of Ubuntu 10.10

Marcus Nestor, Softpedia, talks about seventeen new beautiful
wallpapers and a lightweight and eye-candy theme the he says will
please every existing and future Ubuntu 10.10 users!

To see the screen shots of these new looks for your desktop go to:

http://news.softpedia.com/news/The-New-Wallpapers-and-Theme-of-Ubuntu-10-10-153934.shtml

Ten criticisms of Ubuntu 10.04

Ubuntu may be one of the best operating systems around, but that does
not put it beyond criticism, says Jack Wallen. Jack Wallen looks at
the following:

1. The new themes
2. The lack of Samba
3. No Gimp
4. New init system
5. No PayPal for Ubuntu Music Store
6. Nouveau drivers
7. New logo
8. Gwibber problems
9. No Google Chrome
10. Still no welcome screen

For more information go to:

http://www.zdnet.co.uk/news/desktop-os/2010/08/27/ten-criticisms-of-ubuntu-1004-40089938/

Microsoft won’t stop .Net on Android

Oracle’s patent and copyright lawsuit against Google for its use of Java in Android won’t be repeated by Microsoft if .Net is used on the Linux-based mobile operating system instead.

Director of the open source technology centre at Microsoft Tom Hanrahan said the Community Promise allows projects like Mono to fully support its technology.

“The type of action Oracle is taking against Google over Java is not going to happen,” Hanrahan said.

Microsoft’s Community Promise has made the .Net runtime and C# specifications available to Miguel de Icaza and the Mono project developers.

“If a .Net port to Android was through Mono it would fall under that agreement,” he said.

Hanrahan is visiting Australia for Microsoft’s annual Tech.Ed conference.

Novell has already developed MonoTouch for Apple’s iOS-based devices like the iPhone and iPad, and a Mono port to Android, dubbed “MonoDroid”, is on the roadmap, due for a preview release in Q3 this year.

“Mono for Android will have an entirely different set of APIs, at most you would be able to reuse business logic, but any user interface and device specific code will have to be rewritten,” according to the Mono developers.

Oracle’s complaint against Google centres around its development of the Dalvik virtual machine that can run applications written in Java.

Dalvik is not an officially sanctioned Java runtime environment, however Sun did initially praise Google for supporting Java on Android.

Potential conflict between Sun and Google over Dalvik was also predicted back in 2007, but did not eventuate until Oracle acquired Sun.

With Java use in Android under fire, Microsoft is unlikely to disrupt any port of C# to the mobile platform, however, Microsoft’s Community Promise has been criticised by the Free Software Foundation for not going far enough to protect open source implementations from patent litigation, which is at the heart of the Oracle-Google case.

“The Community Promise does not give you any rights to exercise the patented claims. It only says that Microsoft will not sue you over claims in patents that it owns or controls,” according to the Free Software Foundation.

“If Microsoft sells one of those patents, there’s nothing stopping the buyer from suing everyone who uses the software.”

Mono developer Miguel de Icaza is not concerned about legal challenges by Microsoft over .Net implementations and wrote on his blog that Google could switch from Java.

“Google could settle current damages with Oracle, and switch to the better designed, more pleasant to use, and more open .Net platform,” de Icaza wrote.

Rodney Gedda is Editor of TechWorld Australia. Follow Rodney on Twitter at @rodneygedda. Rodney’s e-mail address is rodney_gedda@idg.com.au. Follow TechWorld Australia on Twitter at @Techworld_AU.

References

Automatic Resource Management in Java

Part of Project Coin is the ability to deal with Automatic Resource Management, or simply ARM. The purpose is to make it easier to work with external resources which need to be disposed or closed in case of errors or successful completion of a code block. Consider the following trivial file-copy operation, from the Java Bytestream Tutorial:

FileInputStream in = null;
FileOutputStream out = null;
try {
  in = new FileInputStream("xanadu.txt");
  out = new FileOutputStream("outagain.txt");
  int c;
  while ((c = in.read()) != -1)
    out.write(c);
} finally {
  if (in != null)
    in.close();
  if (out != null)
    out.close();
}

Not only is there a lot of boiler plate, but the documentation for InputStream.close() suggests that it can throw an IOException. (An exception is far more likely on the OutputStream but in any case, there needs to be an outer catch or propagation in order to successfully compile this code.)

The lexical scope of the try-catch-finally block also requires the variable for FileInputStream in and FileOutputStream out to be declared lexically outside the block itself. (If they were defined inside the try block, then they wouldn’t be available inside the catch or finally blocks.)

To eliminate this boilerplate code, and to tighten the lexical scoping of the resources used inside the block, a new addition has been made to the try block in the Java language. An initial specification of the try-with-resources blocks (or ARM blocks) was made available via an ininitial implementation, which has subsequently made its way into build 105 of JDK 7.

A new interface, java.lang.AutoCloseable, has been added to the proposed API, which defines a single method close() which throws Exception. This has been retro-fitted as a parent of java.io.Closeable, which means that all InputStream and OutputStream automatically take advantage of this behaviour. In addition, FileLock and ImageInputStream have also been fitted with the AutoCloseable interface.

This permits the above example to be written as:

try (
  FileInputStream in = new FileInputStream("xanadu.txt");
  FileOutputStream out = new FileOutputStream("outagain.txt")
) {
  int c;
  while((c=in.read()) != -1 )
    out.write();
}

At the end of the try block, whether by completion normally or otherwise, both the out and in resources will have close() called automatically. Furthermore, unlike our original example, both out.close() and in.close() are guaranteed to be executed. (In the original example, had in.close() thrown an exception, then the subsequent out.close() would not have been executed.)

There are some subtle aspects to this which are worth noting:

  • As it currently stands, a trailing semi-colon is not permitted after the final resource in the resources section.
  • The resources block is separated with () rather than the more usual {}, to separate it from the existing try body. If present, it must contain one or more resource definitions.
  • Each resource definition is of the form type var = expression; you can’t have general statements in the resource block.
  • The resources are implicitly final; that is, they behave as if the final modifier is present. Any attempt to assign to the resource variable is a compile-time error.
  • The resources must be a subtype of AutoCloseable; it is a compile-time error if this is not the case.
  • The order of closure is the reverse order in which the resources are defined. In other words, in the refined example, out.close() is called prior to in.close(). This permits nested streams to be built and then closed from outer-in, which makes more sense than in order (e.g. for flushing buffers before the underlying stream is closed).
  • Each block may generate n+1 exceptions, where n is the number of resources. This can occur if the main body throws an exception, and each resource closure throws an exception as well. In this situation, the body’s exception will be thrown, but the others will be added to the exception’s suppressed exception list. They can be accessed via getSuppressedExceptions().
  • Exception stack traces may now have code prefixed with Suppressed: in these cases; the format of the serialized Throwable is now different as well. (This may impact Java 6 clients invoking remote services on Java 7 runtimes, or vice-versa.)
  • javax.swing and java.sql do not participate in ARM at the current time; classes need to opt-in by inheriting from AutoCloseable to be used by ARM. JDBC 4.1, if part of JDK 7, will support ARM but it’s not clear when this will happen.

The ability to remove boilerplate code from the Java developer’s work-flow is likely to be a minor productivity boost; but although it’s available in JDK 7, it will be sometime before source code can be written to take advantage of that fact. Many libraries will need to be compiled to run against Java 6; and any use of the automatic resource management will only be applicable for code compiled with -target 7 (or similar). Once Java 6 is EOL and Java 8 has been released, then using ARM will become an automatic way of working.

Original article here

What Is Coding Dojo

A Coding Dojo is a meeting where a bunch of coders get together to work on a programming challenge. They are there have fun and to engage in DeliberatePractice in order to improve their skills.

The ParisDojo focuses on coding in front of others, most often something from scratch, in a very short amount of time (1 to 1.5 hours). They use various languages, various tools, various exercise formats. They consider the outcome of an exercise successful when it is completed within allocated time AND audience can repeat the exercise at home by themselves.

Maybe the CodingDojoPrinciples help to understand what the CodingDojo is about.

Read more…