Tuesday, November 17, 2009

Software Disclaimer Sample

I’ve found this text:

This SOFTWARE PRODUCT is provided by THE PROVIDER "as is" and "with all faults." THE PROVIDER makes no representations or warranties of any kind concerning the safety, suitability, lack of viruses, inaccuracies, typographical errors, or other harmful components of this SOFTWARE PRODUCT. There are inherent dangers in the use of any software, and you are solely responsible for determining whether this SOFTWARE PRODUCT is compatible with your equipment and other software installed on your equipment. You are also solely responsible for the protection of your equipment and backup of your data, and THE PROVIDER will not be liable for any damages you may suffer in connection with using, modifying, or distributing this SOFTWARE PRODUCT.

(taken from: www.deq.louisiana.gov)

just have to replace “THE PROVIDER”  with your name or company name, and hopefully it should be ok.

if anyone knows about a better generic disclaimer for software, i would really appreciate a tip.

Monday, November 16, 2009

Crafting blog

I've revived my old “practical art” blog with some things I've done lately.

Lately I have been spending my time either on the White Rabbit project or in my studio, making pots and bowls.

This is the link to my crafty blog: http://practicalart.blogspot.com/

And here is a screen shot from the new White Rabbit version:

wr

In this version I thought it nice to use the spring-graph by Mark Shepherd. I’m not sure its the best concept, but its lots of fun.

I’ve also been playing around with the skinning, but i haven't mastered it yet ( as one can see )

Saturday, September 12, 2009

Scala, the java of the future

The tug-o-war of software development languages gets really confusing; it’s hard to decide what language would prevail and become the new standard in application development. Why is it important? Because we are application developers, and our relevance in the business landscape is linked to the tools we are skilled in operating.

I have heard Professor Martin Odersky say that Scala is the java of the future. Although I cannot vogue for such a promise, I can certainly say that Scala is the most compelling language I have encountered.

Scala has incorporated many ideas, new and old from the other existing languages. Scala functional and object oriented. It has cool stuff like traits (aka mixins) and Actors (erlang style threads) and advanced pattern matching. Most of all, Scala is expressive and esthetic. Clean and comprehensible code means easy and efficient maintenance, and that is important.

Scala runs over the JVM. Hence Scala can call upon java functionality and vice versa. Scala also has a .net support but that is not my scope at this time. According to professor Odersky, the overall performance is not hampered and the results are usually as fast as Java. Michael Galpin posted some figures about Scala performance on his blog here and Nick Wiedenbrueck compared Scala, Java and Groovy here.

Following are some interesting links I found for getting into Scala top down:

Presentations:

Articles:

Downloads:

    Monday, September 7, 2009

    The NewsWay Reports

    This is the marketing leaflet for the product I am managing for ProImage which is a subsidiary of Agfa. ProImage specializes in pre press workflows with its leading product called NewsWay. The NewsWay Reports is an enterprise solution that complements the  production workflow and facilitates executive decision making.

    nwr b-front  

           nwr b-back

    • Production events analysis
    • Graphical data visualization
    • A production data warehouse

    NewsWay Reports provides easy and quick access and analysis of accumulated production data. This enables you to tune and optimize production for maximum performance, at minimum cost.

    This powerful browser-based report generation software provides the ability to compare planned schedules with actual job completion, track deadlines, evaluate plate consumption and track waste. It allows you to review file input and output time of each NewsWay workflow process, and log user times.

    This facilitates the rapid identification of production bottlenecks and enables you to make real-time adjustments to your production.

    NewsWay Reports integrates with any workflow. The reports generated are easily exported to PDF or Excel formats, making them accessible by other people within your organization. You can even automate the creation and distribution of status reports to the executive management for “first thing in the morning”.

    The production statistics are accessible from the NewsWay Reports viewer and via any 3rd party data visualization tool, providing you with the tools you need for in depth analysis of production.

    Make the right decisions with NewsWay Reports

    NewsWay Reports is a browser based application allowing easy and quick access to accumulated production data. The data is presented in a consistent, easy to read format, enabling statistical analysis to be performed effortlessly and facilitating better decision making.

    Additionally, its advanced querying capabilities enable in-depth analysis of production data, customized to your requirements.

    High Performance Backbone

    NewsWay Reports is anchored on a specialized Reports Data Processor. The Reports Data Processor gathers production information and performance details from the machines without hampering the production flow of events. The accumulated data is reshaped to fit into a data warehouse where the production information can later be queried with simplicity and efficiency, guaranteeing high performance response to queries.

    The vast amount of information gathered in such a data warehouse enables tracking of even the minutest of trends and bottlenecks.

    Comprehensive reports

    NewsWay Reports offers three suites of reports designed to meet your budget and needs. All suites include the NewsWay Reports Data Processor and NewsWay Reports Data Warehouse.

    NewsWay Basic Reports

    Ideal for many, this solution comes complete with a basic set of reports for output statistics and analysis, workflow throughput, and reporting on historical data.

    NewsWay Enterprise Reports

    NewsWay Enterprise Reports provides an extended suite of reports that additionally include reports for enterprise transmission and waste analysis.

    NewsWay First Class Reports

    This solution is fully customizable. It provides a tailored solution to meet the needs of the most demanding print production organization.

    Credits for the leaflet are to Izzet Edige (ProImage) and Richard Hall (Media Matters).

    View in Scribd

    Thursday, August 20, 2009

    Application performance, the highways and the sideways (opinion)

    The phrase “everything should work as fast as possible” describes the wrong way for developing software. Software is a means to an aim. The aim is a functionality of a sort, just like a car or a house. When constructing a solution, one has to take performance in the context of the solution and not as an ideology.

    Imagine how a house would look like if the drive way was paved four lanes wide just for the sake of performance.

    The prioritization of performance is determined by the business requirements. A thorough analysis of the required throughput in each of the application flows reveals by itself the highways and the sideways.

    Marking the road map in such a way is not premature optimization, but the proper use of the information that the architect has from day one. The final tuning can be done at the later stages when performance issues come up. However, developers need to know how wide the road they are paving should be.

    See also “Data Buckets”.


    Tuesday, August 11, 2009

    License security in Java, don’t be the easiest target

    230420091109Java based enterprise products that are not open source have a big issue with Intellectual Property Rights license protection. The relative ease of byte code decompilation makes it easy to copy the product with the license protection disabled. One can measure the magnitude of the problem just by counting the number of products that claim to have the solution. Dongle, code encryption or machine signatures are popular techniques for license security. However, there is always that weak link, that single validation method, returning a Boolean that checks the existence of the license.

    A friend of mine once suggested that instead of striving to be perfect, it’s better to invest just enough to avoid being the easiest target. It’s easy to spot this strategy in nature. If you happen to be a wilder beast, you don’t have to be the fastest runner to survive. Just make sure there are a few others slower then you. If you are a zebra, just go stand next to the wilder beast. When I park next to a Lexus, I don’t bother to lock the doors.

    The way to implement this strategy over software licensing is by understanding the domain of product hacking and license cracking for enterprise installed software. The goal would be to introduce enough complications in order just to become “not the easiest target”.

    Understanding the domain

    A business would choose the illegal options of requesting a hacked product if they are far enough or obscure enough from the hands of the IPR owner and only if the cost of the cracked software is considerably lower than the license fee.

    The basic interaction with a hacker is; “I give you money and you give me a working version of the product without the license verification part”. Since any single method is prone to be broken eventually, sooner or later the hacker will deliver the “goods” as promised; a cracked version of the product.

    The weakness in the hacker’s ‘user story’ is that although the hacker is a master in the technology he employs, he knows nothing about the domain of the product. Thus, obscuring and masking the validation for the license into multiple points in the business logic is an advantage for the IPR owner.

    Create an illusion

    By all means, use all the conventional protections; obfuscate the code so it won’t be a picnic after JAD (Java De-compiler). Encrypt and put signatures on the classes that handle the license, and so on. Make the hacker sweat a little, in his comfort zone, before he delivers a hacked version that is not really cracked.

    Take no immediate action

    The easiest way for a hacker to pinpoint the license validation code, is by the actions that are taken by your software when the license is invalidated. The easy points to spot may be log messages, explicitly stating the lack of license or the point where the system freezes up, that’s where the hacker starts his reverse engineering. Instead, do the unexpected. Randomization of decision (heads to freeze, tails to grace), Postponing the enforcement action, and reusing the validation variables for other purposes would make the hacking task so much harder.

    Dead code

    Implanting license validation code is business logic that is called upon in very specific conditions is probably the best cloaking method. The way to reveal license validations that are hidden in obscured parts of code would be to run every possible scenario. The hacker would have a learning curve to adjust to the unfamiliar domain, in the mean while the business that bought the hacking would suffer more than one production cycle that goes bad on account of licensing.

    No Code Reuse please

    As code reuse makes code more readable, the way to secure the license validation would be the exact opposite. Repeat the functionality of the validation without referencing or even repeating the code.

    In summary

    The bottom line is money. The price of an acquisition of a legitimate license compared to the price and risks involved in deploying a hacked version. All you have to do is break the hacker’s promise of his delivery. Instability and unpredictability in a hacked product, and an expensive hacking process can bring you just far enough from being the easiest target.