Archive for the ‘market formats’ Category
Friday, July 25th, 2008
Great news! Mono has made it to .NET 3.0 support and this includes some of the latest stuff like LINQ expressions.
I am pleased to announce that Mono C# compiler (gmcs) has now full C# 3.0 support. Most of the features has been available since Mono 1.2.6 release. However, with the upcoming Mono 2.0 release we will also support complex LINQ expressions and mainly expression trees which is fairly overlooked new feature with a lot of potential.
For anyone interested in compiling and running this LukeH’s slightly extreme LINQ example I have good news. It compiles on Mono and it runs as fast as on .NET.
Tags: .net, 3.0, baseplane, code, dev, development, linq, mono, open, open source, platform, programming, source
Posted in announcement, baseplane, languages, market formats, news, open, programming, source, standards, technology | 1 Comment »
Friday, June 20th, 2008
Finally rest for all that boilerplate in Java. At each turn of lots of Java frameworks you are bombarded with layers. I felt this long ago and see it in the developers eyes that work with Java. Java can be easy, it can be RESTful and it will make you look sharp.

Lightweight REST framework for Java
Do you want to embrace the architecture of the Web and benefit from its simplicity and scalability? Leverage our innovative REST engine and start blending your Web Sites and Web Services into uniform Web Applications!
Java is making things more lightweight now with lots of emerging kits that compete with other web ready platforms like Python, Ruby, .NET, PHP etc. After this many years things get bloated and need to be simplified. I think this will start winning people over in this direction.
Tags: java, jax, REST, RESTful, Restlet, service, servlet, web
Posted in baseplane, formal, generation, howto, languages, market formats, programming, services, standards, technology, toolkits, utility | No Comments »
Saturday, May 17th, 2008
Well Mono has finally reached 2.0. This is great news! .NET skills now can span *nix, OSX, and Windows platforms. But is your app or assembly capable of running on Mono? Find out with MoMa.
Of course this is just a heuristic check and only finds out if your application on the surface has issues with running on a mono platform such as calls to p/invoke to windows apis or unsafe code that uses native calls but it is a great place to start.
The Mono Migration Analyzer (MoMA) tool helps you identify issues you may have when porting your .Net application to Mono. It helps pinpoint platform specific calls (P/Invoke) and areas that are not yet supported by the Mono project.
While MoMA can help show potential issues, there are many complex factors that cannot be covered by a simple tool. MoMA may fail to point out areas that will cause problems, and may point out areas which will not actually be an issue.
Use the results provided as a guide to get you started on porting your application, but remember the true test is actually running your application on Mono.
For a description of the errors that MoMA detects and how to deal with them, see MoMA – Issue Descriptions.
I have recently been really interested in making platforms and applications that aren’t limited by the OS they are contained in. Thus mono is a very interesting platform now that it supports 2.0 fully and all the generic goodness to limit boxing/unboxing, common code between .net 2.0 apps (which are pretty much mainstream now) and developing for more of a standard that ensures your apps are portable.
Granted .NET 3.0 and 3.5 (pretty much the same version really with the addition of new frameworks such as WCF, LINQ which is very cool and functional as well as Silverlight) but most places deployed code is still .NET 2.0 and the poor souls working on very constricting .NET 1.0 and 1.1.
Also, recently Moonlight the Mono version of Silverlight has been released for alpha.
Tags: 2.0.moonlight, moma, mono
Posted in announcement, baseplane, languages, market formats, open, programming, standards, technology, toolkits | No Comments »
Monday, April 7th, 2008
Tenjin is a great templating library that gets not only cross platform but baseplane ability to make templating very similiar (and FAST) across many languages. pyTenjin and phpTenjin is currently what I am using but there are executions for Ruby, Perl and Javascript.
Here is a list of the Tenjin Templating engines:
- Changes
- (Python) (Ruby) (PHP) (Perl) (JavaScript)
- User’s Guide
- (Python) (Ruby) (PHP) (Perl) (JavaScript)
- FAQ
- (Python) (Ruby) (PHP) (Perl) (JavaScript)
- Examples
- (Python) (Ruby) (PHP) (Perl) (JavaScript)
- Presentation
- 2007 LL Spirit LightningTalk (full-version) (Japanese)
Here is what the template markup looks like:
This
<table>
<tbody>
<?py i = 0 ?>
<?py for item in ['<foo>', 'bar&bar', '"baz"']: ?>
<?py i += 1 ?>
<tr>
<td>#{item}</td>
<td>${item}</td>
</tr>
<?py #end ?>
<tbody>
</table>
Produces This
<table>
<tbody>
<tr>
<td><foo></td>
<td><foo></td>
</tr>
<tr>
<td>bar&bar</td>
<td>bar&bar</td>
</tr>
<tr>
<td>"baz"</td>
<td>"baz"</td>
</tr>
<tbody>
</table>
Here are some speed results
MacOS X 10.4 Tiger, Intel CoreDuo 1.83GHz, Memory 2GB
| Language |
Template Engine |
Test#1(sec) |
Test#2(sec) |
| Python(2.5.1) |
pyTenjin (0.6.1) |
6.96 |
5.61 |
| Cheetah (2.0) |
20.36 |
19.82 |
| Django (0.9.5) |
71.33 |
59.80 |
| Myghty (1.1) |
107.88 |
19.30 |
| Kid (0.9.6) |
380.24 |
378.96 |
| Genshi (0.4.4) |
560.30 |
271.69 |
| Mako (0.1.9) |
17.78 |
13.49 |
| Templetor (web.py 0.22) |
428.19 |
61.53 |
| Ruby(1.8.6) |
rbTenjin (0.6.0) |
7.34 |
4.52 |
| eruby (1.0.5) |
12.29 |
11.53 |
| ERB(def_method) (Ruby1.8.6) |
36.73 |
5.85 |
| PHP(5.2.0) |
phpTenjin (0.0.1) |
5.39 |
3.64 |
| Smarty (2.6.18) |
10.84 |
10.21 |
| Perl(5.8.8) |
plTenjin (0.0.1) |
10.42 |
5.72 |
| Template-Toolkit(XS) (2.18) |
103.58 |
26.30 |
| HTML::Template (2.9) |
46.70 |
30.21 |
| JS(spidermonkey) |
jsTenjin (0.0.1) |
19.00 |
12.98 |
| JS(Rhino, JDK5) |
jsTenjin (0.0.1) |
24.29 |
19.15 |
| Java(JDK5) |
Velocity (1.4) |
22.80 |
11.41 |
| Velocity (1.5) |
20.01 |
8.42 |
Tags: javascript, js, jstenjin, perl, php, phptenjin, pltenjin, pytenjin, python, rbtenjin, ruby, template, tenjin
Posted in baseplane, generation, languages, market formats, technology, toolkits | 5 Comments »
Saturday, March 29th, 2008
PureMVC is quite a versatile MVC kit. With implementations for AS3, .NET (c#), Python, PHP, Silverlight and other platforms it is quite a system and domain to spread that far and have consistency. There are small changes but for the most post the MVC is the same structure across the platforms. This can be very beneficial for a service firm or for a product base that needs to support many different platforms.
PureMVC is a lightweight framework for creating applications based
upon the classic Model-View-Controller design meta-pattern.
This free, open-source framework is implemented in ActionScript 2 and
3, Java, C# and a number of other popular programming languages.
This allows development on a wide variety of platforms including:
- Mobile Environments: FlashLite, .NET Compact Framework, J2ME
- Server Environments: ColdFusion, J2EE, PHP, Python
- Browser Environments: Flash/Flex, JavaFX, Silverlight
- Desktop Environments: .NET, AIR, FLASH, J2SE
For Flex PureMVC happens to be my favorite MVC kit. I only use one if absolutely necessary but PureMVC keeps it clean. The great thing is that is works with or without Flex unlike Cairngorm and it is always up to date. It is just an added bonus that is spans so many other platforms. There are a few things I don’t like about it in other platforms like the url naming but it is much better than kits out there now and Microsoft’s ASP.NET MVC most likely wont’ be cross platform *wink*.
Some info on the PureMVC framework (caution PDF):
Ports
Tags: actionscript3, architecture, as3, c#, controller, flash, flex, model, mvc, php, puremvc, python, silverlight, view
Posted in baseplane, market formats, open, programming, standards, technology, toolkits | 1 Comment »
Saturday, March 22nd, 2008
Big O Notation is based on complexity theory and is something engineers and architects should know about do determine complexity and orders of magnitude in their data and scalability formal blueprints. Whenever you use any algorithm or port a formal function into code, math and reducing the orders of magnitude is what separates the fast from really fast.
Optimization can be evil, but solid base starting points are desired. Many times formal knowledge can be as needed as logical or physical separation and understanding service and standards format layering in your applications for the best evolution and versioning as well as performance. Formal engineering is what is separating companies like Google from the pack. Do you do formal?
Orders of common functions
Here is a list of classes of functions that are commonly encountered when analyzing algorithms. All of these are as n increases to infinity. The slower-growing functions are listed first. c is an arbitrary constant.
| Notation |
Name |
Example |
 |
constant |
Determining if a number is even or odd |
 |
inverse Ackermann |
Amortized time per operation when using a disjoint-set (union-find) data structure |
 |
iterated logarithmic |
The find algorithm of Hopcroft and Ullman on a disjoint set |
 |
logarithmic |
Finding an item in a sorted list with the binary search algorithm |
 |
polylogarithmic |
Deciding if n is prime with the AKS primality test |
 |
fractional power |
searching in a kd-tree |
 |
linear |
Finding an item in an unsorted list |
 |
linearithmic, loglinear, or quasilinear |
Sorting a list with heapsort, computing a FFT |
 |
quadratic |
Sorting a list with insertion sort, computing a DFT |
 |
polynomial, sometimes called algebraic |
Finding the shortest path on a weighted digraph with the Floyd-Warshall algorithm |
 |
exponential, sometimes called geometric |
Finding the (exact) solution to the traveling salesman problem (under the assumption that P ≠ NP) |
 |
factorial, sometimes called combinatorial |
Determining if two logical statements are equivalent[1], traveling salesman problem, or any other NP-complete problem via brute-force search, finding the determinant of a matrix with expansion by minors |
 |
n to the n |
|
 |
double exponential |
Finding a complete set of associative-commutative unifiers[2] |
Not as common, but even larger growth is possible, such as the single-valued version of the Ackermann function, A(n,n). Conversely, extremely slowly-growing functions such as the inverse of this function, often denoted α(n), are possible. Although unbounded, these functions are often regarded as being constant factors for all practical purposes.
Tags: architecture, chaos, complexity, design, formal, mathematics, simulation, theory
Posted in baseplane, formal, market formats, philosophy, programming, standards, technology | 5 Comments »
Thursday, March 20th, 2008
JSON-RPC is the answer to the argument that XML RPC is too verbose and bloated and convoluted. JSON is just about as simple as you can get in data formats and it is becoming a great baseplane standard and is a tool that spans many platforms.
“Does distributed computing have to be any harder than this? I don’t think so.”
Can it be even simpler ?
JSON-RPC is lightweight remote procedure call protocol similar to XML-RPC. It’s designed to be simple!
JavaScript
C
C#
Erlang
Java
Lisp
Lua
Perl
Php
Python
Ruby
Frameworks
Tags: baseplane, data, json, json-rpc, platforms, rpc, service, services, xml-rpc
Posted in baseplane, languages, market formats, open, programming, services, standards, technology, toolkits | 3 Comments »
Thursday, March 13th, 2008
Sun has been on a rampage lately. They recently purchased MySQL (which has some questions with InnoDB) but they also are supporting Python and integrating it into the VM offerings with Jython.
So now we have Google (They employ Guido), Microsoft (IronPython) and Sun (Jython) all turning into Python-istas. Does this mean Python is destined for greatness in the near future? Well I recommend learning it. It is a great language and it has a high productivity rate. Time will tell if it has the ability to be in extremely large code bases. I think it is just a matter of the architecture and organization as with any project.
Jonathan Schwartz at Sun mentioned also taking the “J” out of “JVM” to just make a VM much like a .NET framework. So Microsoft copied Java with C# the JVM and added multiple languages. Then Sun comes back and added multiple byte code compiled languages. And then they both focus on dynamic engines to implement versions of Python, Microsoft doing this within their DLR.
Many times the larger market languages that end up running business or “enterprisey” are heavily influenced by companies, in addition to the other demands from consumers, which here is programmers. So when the big three are all banking on Python as a draw there is a definite market draw there and a tell on the future. But I think it is apparent that Python is becoming a standard market baseplane language.
It is great to be able to use other libraries from .net with IronPython and java libraries with Jython. It has found a way to integrate with the current infrastructure and the language has low bar entry but deep benefits. Python is snaking its way into the market.
Python is so non verbose…
import sys
import clr
from System.IO import Path, Directory, FileInfodir = Path.Combine(sys.prefix, 'DLLs')
if Directory.Exists(dir):
sys.path.append(dir)
files = Directory.GetFiles(dir)
for file in files:
if file.lower().endswith('.dll'):
try:
clr.AddReference(FileInfo(file).Name)
except:
pass
This sample is from IronPython showing adding dynamic references to all dlls loaded.
Check out this HTML/XHTML parser in pure Python.
from HTMLParser import HTMLParserclass MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print "Encountered the beginning of a %s tag" % tag
def handle_endtag(self, tag):
print "Encountered the end of a %s tag" % tag
Tags: baseplane, code, develop, languages, programming, python, technology
Posted in baseplane, languages, market formats, programming, standards, technology | 1 Comment »
Thursday, February 21st, 2008
baseplane: In software development, a set of tools, systems, patterns and designs that allow a system to be easily transferred to many back ends, services or front ends using standards, patterns and ideally non platform specific tools. Typically the baseplane includes both open standards and market standards based on industry usage. A baseplane may also be a way to commonize output to allow better designer and developer production.
A baseplane is a word I termed to describe the current, most technologically advanced set of tools and patterns that are usable across all major programming platforms.
The idea is that a company or programmer is sometimes held hostage by a particular platform or developer mindshare. People loving a good competition boast about platforms over other platforms and how one is better than the other. It is all fun and games but it doesn’t really give you the ‘best’ patterns and solutions. By patterns I mean general patterns not design patterns specifically for OO programming.
The ideal situation is where software is built semantically and from user perspectives with simplified enterprise entities and collections that perform top notch in a data store, no matter the platform or the language used to create it.
That is where true solutions begin, when companies and individuals can use the best platform or framework no matter their legion. A baseplane is a way to create systems that work well in many systems.
For instance JSON is a great example, this allows a layer to make back ends any language and then the front end any presentation from apps, to web to flash to whatever.
There will be more on this but the tools on this site all have this in mind.
Posted in baseplane, market formats, philosophy, standards, toolkits | No Comments »