Dynamic languages have changed the landscape and their only downfall is speed compared to native languages like C and C++. C/C++ have had a bit of a resurgence with embedded devices and such sucesses as the iphone and ipod touch. To get the most out of these devices native is the way to go. Both iPhone SDK and Android NDK are native based. The best games and graphically intensive applications need hardware rendering and the fastest way to get there is native. Larger companies like Google need to take advantage of speed to market and fast execution. The outcome of that appears to be the Go language.
Native applications are more complex to manage, so lots of work like Unladen Swallow getting Python running with LLVM, PyPy and others to make CPython faster. Google has supported Unladen Swallow. But a company the size of Google has massive scalability problems to solve, and maybe they are looking to go more native? The go language is now available from Google and it is deemed “Python meets C++”. Where Apple has Objective-C (which is actually as old as C++) which is a bit more message and event driven, Google has Go which is much like Python and other dynamic languages but much closer to C++ speeds.
We will learn more about Go over time but it looks like it is taking the best of both the dynamic and native/static worlds in programming languages which is a great evolution in technology.
This script returns the count of the files in a folder. This is especially useful if you are on a machine that has too many files in a folder to read from Windows Explorer.
Mono 2.2 has been released. Mono is a really great open source version of .NET and it is finding its way into many platforms that need to support multiplatform code such as Unity3D.
This update brings in some great stuff like routing controllers to use the ASP.NET MVC architecture, csharp inteactive shell and other great performance enhancements to an already speedy C#.
This is a handy list to have. This is the top 25 most dangerous programming errors relating to the web and keeping websites (and user data) safe. Be sure when you are building and using frameworks that you do test or expect these types of behaviors.
The Top 25 is organized into three high-level categories that contain multiple CWE entries.
Insecure Interaction Between Components
These weaknesses are related to insecure ways in which data is sent and received between separate components, modules, programs, processes, threads, or systems.
The weaknesses in this category are related to ways in which software does not properly manage the creation, usage, transfer, or destruction of important system resources.
CWE-119: Failure to Constrain Operations within the Bounds of a Memory Buffer
Python 2.6 was released not too long ago as an update adding great stuff like simplejson within python. But Python 3000 might be the release that draws lots of usage and programmers new and veteran.
Mono 2.0 the open source .NET framework has been released. Mono has made it’s way into many great systems by now from websites to even 3d engines such as Unity3D. It is great to have a toolkit that is powerful, has a great language set from C# to Boo and that is available on multiple platforms. From Windows, to *nix to of course Mac OSX built on unix, it all just works.
Having 2.0 solid and complete is a great step to making production apps run off of it.
Microsoft Compatible APIs
ADO.NET 2.0 API for accessing databases.
ASP.NET 2.0 API for developing Web-based applications.
Windows.Forms 2.0 API to create desktop applications.
System.XML 2.0: An API to manipulate XML documents.
System.Core: Provides support for the Language Integrated Query (LINQ).
System.Xml.Linq: Provides a LINQ provider for XML.
System.Drawing 2.0 API: A portable graphics rendering API.
Mono APIs
Gtk# 2.12: A binding to the Gtk+ 2.12 and GNOME libraries for creating desktop applications on Linux, Windows and MacOS X.
Mono.Cecil: A library to manipulate ECMA CLI files (the native format used for executables and libraries).
Mono.Cairo: A binding to the Cairo Graphics library to produce 2D graphics and render them into a variety of forms (images, windows, postscript and PDF).
Mono’s SQLite support: a library to create and consume databases created with SQLite.
Mono.Posix: a library to access Linux and Unix specific functionality from your managed application. With both a low-level interface as well as higher level interfaces.
Third Party APIs bundled with Mono
Extensive support for databases: PostgresSQL, DB2, Oracle, Sybase, SQL server, SQLite and Firebird.
C5 Generics Library: we are bundling the C5 generics collection class library as part of Mono.
Compilers
These compilers are part of the Mono 2.0 release:
C# 3.0 compiler implementation, with full support for LINQ.
Visual Basic 8 compiler.
IL assembler and disassembler and the development toolchain required to create libraries and applications.
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.