Wonder if they will make a video game out of the new Max Payne movie?
In this post I talked about how the Java standards are important to ensuring java has a long and fruitful life. This post references Spring as an example but was written before the fallout from the Spring licensing issues. This fallout tends to back up the argument that standards are important, although since there were no standards at the time for Spring to follow, it is not a totally valid position.
Over the years, many people have been knocked for claiming that Spring is a proprietary framework. How can it be when it is open source would often be the argument. Proprietary in its literal sense means that it has one owner or controller which is true for Spring for the most part. A less formal definition when discussing programming, Java in particular, is that it does not follow any open standards. Spring broke a lot of new ground which in many cases, meant that there were no standards or only bad standards to follow. However, a number of developers also bought into using other Spring features like the Templates to aid them in their development.
Now that Spring has penetrated developers code to a large degree, vendor lock in was in place for many companies with large spring based projects and Rod and Co turned off the free beer once everyone was hooked. Again, it’s their business, their platform, and they can do with it as they like.
However, if the Java platform had a set of good standards for defining framework functions, then nobody would seriously bother with a non-standard framework, and nobody would be able to shut off the tap because they could be replaced in an instant by an alternative implementation of the standard. Again, this reinforces the need for good standards (like EJB3.1 appears to be) and also for timely updates to the standards.
One common code pattern that we find ourselves writing time and again is the ability to display tables which are paginated and sortable. Ideally, this is something we should try and be able to re-use throughout our application.
Current Situation
Let’s start by looking at where we are now with the features that come with Seam out of the box. In particular, we will be looking at the dataScroller component and the EntityQuery object. (more…)
Neal Gafter has left Google to join Microsoft working on it’s dot net platform with Anders Hejlsberg. Oddly enough Anders was the father of Borland Delphi which I’ve used for over 13 years, who left Borland to go create C# and dot net. Now when I switch to java, one of the most well known Java pioneers moves to Microsoft to go work with him.
One of the problems faced by Seam users is the disconnect between the session scoped entity instances and using them in more local scopes. A good example is a session scoped User instance that is loaded when the user logs in and is outjected into the session scope. This user instance is available for the duration of the users session.
This user entity is great for displaying who the logged in user is and other information. The problem comes when you
need to use that User entity in conjunction with other entities that are managed by the locally scoped entity manager. If an entity has a property that references the current user (such as a createdBy property), then it might seem obvious to assign the User variable value to that value. However, the User is unmanaged by the entity manager for that conversation and will raise errors when you try and save the entity referencing the unmanaged User.
We could make the instance managed before we save it or assign it to the property, but this is a session scoped instance, and it could be shared among multiple conversations. We may want to compare the instances at different times in the same conversation which will break if it has been altered by another conversation. Also, we don’t want to
have to write code to handle each property assignment or saving each entity type. (more…)
(Note : This post was written before the fallout over the Spring licensing issues which does reflect on the content of the post. However, I didn’t want to get drawn into that issue too much and dilute the point of this article. I have added some additional thoughts here)
In general, there are advantages to choice, but the whole 31 flavors of java development is mostly harmful. People are forgetting about flavour 32 which is to drop java and go use something where the vast majority of developers use the same tools, libraries, frameworks and products. Java becomes massively unproductive when you spend weeks or months examining frameworks and get stuck in analysis paralysis, and then grudgingly move on waiting for the gotcha moment where you realize you chose the wrong one. (more…)
Internet News is reporting that Transmeta is up for sale.The chip maker which first unveiled its products in 2000 was most noted for developing the Crusoe processor and employing Linus Torvalds. When first released, their Crusoe processors were most interesting because of their Code Morphing Software which allowed it to convert software instructions from one hardware platform into instructions that were native to the chip. This meant it could work as a hardware emulator for the x86 platform, and was used in numerous laptops. The complexity of the software on the chip meant that the hardware on the chip could be less complex which meant less transistors and therefore less energy and heat (and presumably faster hardware).
At one point there was much talk of seeing the Crusoe processor used to execute Java byte code natively, leading to grand ideas such as a native Java operating system. Rather than having to build a chip from scratch to understand Java byte code, the Crusoe processor just required the software to translate Java byte code into native code. It would be much easier and cheaper to develop initially without the need for a new chip design and manufacturing processes to build it making it slightly more feasible.
Since the company is up for sale, and the patents along with it, I’m guessing it’s not something we’ll be seeing any time soon.
A great source of computer graphics papers can be found here from the experts at Pixar, the folks behind great movies such as FInding Nemo, Cars, and the recent WALL·E. For those that don’t know, Pixar is also responsible for creating the 3D software PhotoRealistic Renderman (PRMan) that is used to create their movies as well as movies and commercials by other production studios. They are also responsible for the file format that can be used to define the scenes (Renderman Interface Specification).
They have released a number of papers that go all the way back to the 1980’s covering some of the fundamental of computer graphics, including the often sought after paper on the REYES architecture which is the primary rendering algorithm used by PRMan.
REYES (Renders Everything You Ever Saw) is an algorithm for rendering 3D graphics which can be distributed among many processors without the need to pass the whole model around unlike ray tracing and produces images with fast results. Even today it is somewhat of a rock star in rendering algorithms with many people still asking about how it works, and writing implementations of the algorithm. For some odd reason, most graphics books tend not to even cover this technique even though it is one of the most often admired and imitated algorithms. Part of it is the simplicity of the algorithm and the fact that it easily lends itself to being extended using texture and even displacement shaders as well as visual artifacts such as motion blur and depth of field blurring.
Some of the more recent papers cover the finer points of computer graphics built on the fundamentals such as soft reflections, hair rendering, deep shadow maps and distributed ray tracing. Many of the papers describe some of the technical aspects of achieving certain effects in their movies.
As a ray tracing enthusiast, I found a great paper on Ray Differentials and Multiresolution Geometry Caching for Distribution Ray Tracing in Complex Scenes. One interesting aspect of this paper is the possibility of introducing displacement maps and shaders into the ray tracing pipeline. Displacement maps or shaders modify the actual physical geometry of a surface as opposed to simply changing the appearance of the surface to make it look like the surface is displaced.
This is a great set of papers for those that are graphically inclined from some of the the best minds in the business.
Like most people I enjoy Pizza, especially when I order in rather than making my own, and like most people I consult the stack of coupons that arrive in the mail daily. Personally, I live in an area where there are no really good pizza places to capture my loyalty, so price becomes the deciding factor.
One trend I have noticed recently is the tendency to offer deals which are either buy one get one free, or offering value meals with a pizza, wings, salad and 2 liter for $20 or so, or offering a pizza with 1 topping for a low price. Here’s the problems with that.
It’s great for people with large families, or when your kids are having a party or you invite friends over to watch a game or something. However, it does leave a certain demographic out of options. My wife is not a big fan of pizza, so usually I’m the only one eating it (she will steal a slice or two later in the evening though). I usually prefer to have some left over (lunch the next day) and I like a number of toppings on my pizza. If pizza shops are offering to feed a family of 4 for 20 bucks, surely I can get a decent sized pizza with multiple toppings for about $10?
See, if I buy a 12 inch with two toppings for $10, and they have a buy one get one free, I end up with 2 crusts, 4 toppings and 2 cheese toppings. How about you just keep the other crust and throw the extra cheese and toppings on the other pizza? I end up with 4 toppings and extra cheese for $10 and you’ve saved the hassle of making, cooking and boxing a pizzas. Incidentally, Gina’s Pizza in Strongsville does exactly this, I can get a large (16 inch) with 3 toppings for $10 with a coupon. They are also very good.
Also, when you offer a cheap and cheerful pizza at a discount at least make it as good as your standard pizzas. Some pizza shops here have pizzas already cooked and waiting for walk-in customers to stop by and pick one up. Trouble is that there is very little cheese and pepperoni on them, and there is about 2 inches between the start of the cheese and the edge of the crust. Ok, it is a cheap pizza, but at the same time, it’s not great advertising for how well you make pizzas. If you are going to run a loss leader, at least make it something that is going to reflect and advertise your business effectively. Businesses often offer inferior products at a discount, but when doing so, they brand them under a different name, not as a ‘lite’ version. With pizza, it’s a little more difficult to do, but the pizza shops do try and brand them as discount pizzas to distinguish. However, that distinction is not always clear.
How can this translate into something more interesting than Pizza? Well, it’s worth remembering this when you are designing marketing and sales strategies. If you are going to offer discounts, make sure it is something that can apply to smaller businesses as well as bigger ones. If you offer 3 for 2 on training courses, that’s not going to do the smaller company, with only 2 developers, much good. You are giving them a free training course that they are going to throw away, or pay to send someone else who perhaps doesn’t need the training, but they may as well use the free space.
If you are going to offer a home or personal version of software (as opposed to professional), make sure it still does everything the user needs to a degree. You don’t need to include every bell and whistle, but make sure it is usable and doesn’t reflect badly on you and therefore dissuade them from upgrading to the professional version. Also make sure the two versions are clearly marked and the user is aware that there is a professional version that comes with additional functions. Otherwise they might just think that this is the product and the one offered by your competitor for a little more cost has more features.
Which planet? Earth that is. In Europe there is an ongoing court bid to halt turning on CERN’s Large Hadron Collider. The collider is the worlds largest particle accelerator running underground at the Franco-Swiss border in Geneva with a circumference of 17 miles. The concern is that when used, the collider will generate black holes which could grow exponentially to swallow the earth.
Of course, this isn’t the first time the planet has faced such danger. When I was 10, I tried to build my own particle accelerator which failed more miserably than the laser I tried to build from a cardboard tube, aluminum/tin foil, a 2 liter coke bottle, some vinegar and baking soda. it was going to be a carbon dioxide laser since they were used in manufacturing to cut through sheet metal, and at 10 years old, the first thing you want to do with the laser you just built is cut stuff up (also, at the time I couldn’t afford gems to excite the particles). I spent a lot of time as a kid reading my older brothers physics books which was great for my education but not so much for my bedroom.
Regarding the LHC, a safety report from 2003 verified that there were risks of micro-black holes, among other phenomena, and that there was no basis for any danger. This report was reaffirmed in 2008 by the LHC’s Safety Assessment Group.
CERN will be flicking the switch on September 10th 2008, I wish them more luck than I had with my particle accelerator, or as I affectionately called her “Ol’ Lightning”.
Updated 9/13/2008 : We’re all still alive!