Programming News

Brocade Execs Offer Look Under OpenScript Engine's Hood
Can customers predict the future? Brocade is suggesting the notion as it launches its latest switch innovations.

This week, Brocade rolled out software advancements to its Brocade ServerIron ADX Series of cloud-optimized delivery switches. Brocade's stated goal is to help customers gain greater application control and service scalability.

The latest iteration of Brocade's ServerIron ADX comes equipped with a new OpenScript engine, an open platform that sets the stage for innovation. That is where the "predicting the future" comes in. The OpenScript engine can intelligently predict the effect of a script on a network before the script is deployed into production.

"Basically, we ported the Perl programming language to the ADX application processor so that you can use APIs to control application delivery with a script," said Greg Hankins, a global solutions architect at Brocade. "This means you get all the Perl goodness that you know and love for writing custom scripts to read or write layer three to seven headers based on your particular application needs."

Customizing Services

Keith Stewart, director of product management at Brocade, stressed that OpenScript allows network operators to bring new services to market faster, and tailor them to the specific needs of their customers and business models.

"Unlike other closed and proprietary systems, Brocade OpenScript provides the scalability that network operators need, built on top of an open, standards-based Perl platform," Stewart said. "Brocade OpenScript gives operators the flexibility they need without locking them into a proprietary implementation."

Brocade OpenScript and Brocade ADX are key elements of Brocade's strategy for next-generation data centers, according to Stewart. He pointed out that Brocade is an active supporter of the Open Networking Foundation, and is building the enabling platforms for a world where applications and data can reside anywhere in the cloud.

IPv6 Improvements

IPv6 increases the pool of global IP addresses and simplifies...

www.cio-today.com | 2/3/12 9:27 PM
Brocade Opens Up Cloud-Optimized App Delivery Switches
Brocade and Cisco are making a big splash in cloud-optimized switches this week. While Cisco is pushing 100-gigabit Ethernet capabilities to its switch portfolio, Brocade is rolling out advancements to its ServerIron ADX series of cloud-optimized application delivery switches.

Dubbed OpenScript, ADX now offers an open platform that paves the way for intelligent predictions of network impacts before developers introduce scripts into production. OpenScript is built on Perl, a standards-based programming language, and allows ADX customers to customize service delivery to drive performance and scalability improvements.

"Brocade has been dancing around the application delivery controller space for years -- since they acquired Foundry. F5 has been the run away leader in that market for some time," said Zeus Kerravala, principal analyst at ZK Research.

"Brocade's core competency was historically on the network side while Foundry was always focused on performance. The traditional app delivery space went more down a path where application prowess started being more than pure horsepower and raw speed, which was Foundry's strength."

Critical Customization

With its latest innovation, Brocade is showing that it understands how critical service customization and traffic manipulation are for businesses as they move to deliver cloud-based services. The OpenScript engine promises network operators the freedom they need to deploy custom capabilities to meet their individualized needs.

And the Brocade OpenScript Performance Estimator lets network operators estimate the performance impact of custom scripts before implementing them in live production environments. That opens the door for more accurate service capacity requirement planning. Customers are responding positively to the new version.

"Application delivery performance, scalability and flexibility are critical requirements for our customers. These requirements have a direct effect on our ability to scale our business while exceeding customer expectations," said Rob Jackson, solution line leader for networking and security at Rackspace.

Jackson said the ADX solution would let Rackspace implement "stable,...

www.cio-today.com | 2/2/12 7:18 PM
Brocade Leveraging Perl to Boost ADCs

"The programming language behind OpenScript is Perl, which offers the advantage of a large base of developers as well as access to the Comprehensive Perl Archive Network libraries.

www.topix.net | 2/2/12 3:03 AM
Murach's Java Programming (4th Edition) Book Review

If you're looking for a Java programming book that does a good job of getting you programming Java code quickly then you might be interested in the latest edition of Murach's Java Programming. It's aimed at complete beginners and programmers who are coming from another programming language who want to get up to speed with Java.

...

Read Full Post

java.about.com | 2/1/12 12:25 AM
Java.net Weblogs: Guest Post: Is Java the best language to meet my needs?

This email came into our site feedback alias this morning, and I thought this would be a great topic to ask the community.  I'm a big believer in using the right tool for the job, even if it's not Java at the moment.  I asked his permission to post it here, so please meet Mike: 

To whom it may concern,

I need your advice.  Back in 2000 I was a post-doctor at the University of Caledonia in Berkeley.  While there, I became ill with a type of brain cancer called a medulloblastoma, and was forced out of research.

After release from the hospital, I started programming rehabilitation games similar to the ones used in brain injury rehabilitation.  I decided to do this because these types of games, although a medical tool, are quite expensive.  I wanted to produce my own version of these games that were free.  The results of my efforts can be seen at http://www.msty-neurotraining.com and are registered at the Brain Injury Association of America (http://www.biausa.org/) as a rehabilitation tool.


However, I have a serious problem.  These programs were made using Microsoft’s Visual Basic 6, and the programs made with it will soon become obsolete and no longer run modern versions of Windows computers. Therefore, I am looking for an alternative.  Preferably one which is open source (like Java) to keep in spirit that the games are a free medical tool.   Do you have any suggestions as to what open source programming language would be appropriate for my needs? I need something that can produce programs capable to manipulate 2D graphics, save and retrieve files and use a joystick.  I am not restricted to using a programming similar to Visual Basic; I can also program in C++ (the programming language we predominantly used at Berkeley).

Would Java be a good alternative to Microsoft’s Visual Basic?  If not, what other programming tool would you advise using?

Also, how do I go about starting an Open Source project to create a rehabilitation tool like the one the I created with VB6?  Starting such a project would be preferable to working alone, because I feel that a team working together always gets better results than an individual working alone.

Sincerely,

Michael Tarsitano (PhD)
Bruchsal, Germany

 

www.java.net | 1/31/12 5:08 PM
2012 Conference Planning: Key Events for Your Radar (31-Jan)

Our industry event planner gives you the heads-up on what key industry events are coming around the corner. If we’ve missed something, don’t hesitate to add your event to the list. (You can see all events here.)

www.cmswire.com | 1/31/12 5:05 PM
Pro .NET Best Practices Book Review
I personally do not find software development an art form. It is not an unpredictable activity driven by crazy business users that come to work every day inventing a new way to operate their businesses just to savagely changing your requirements. Project teams that use changing requirements as an excuse for their dates constantly slipping and bugs being pushed to production are simply not good development teams and they are poorly managed. Even when you're in an environment where requirements are volatile, proper architecture and process engineering can level the playing field.

One of the reasons for incompetent software development teams is what I like to call home brewed enterprises. A company that does not welcome external resources to the table when they are changing to meet the demands of today's hi-tech requirements for doing business will usually create a home brewed mess. The attitude that 'we have figured out how to run our business over the past 30 years and can figure out how to move forward on our own', is shortsighted and destine to fail. If your people are not continuously learning what the newest industry standards, best practices, programming language features, process engineering techniques, and management skills that have become available are, then you need to turn to outside consultants that are doing that to help you through changing times.

One other thing, you have to actually take and execute their advice. I don't know how many times I have seen consultants brought in, asked for their opinion, only to have their advice ignored because the internal team did not have the skillset to execute their advice. If you don't have the skillsets available for building software right, you should not be building software, period.

There is a much bigger gap between the professional software engineer and the average company software developer than most companies realize. They miss it because they have no one on their team that has experienced an actual software development project run right. Most company's IT departments are hitting about 10% of their potential. The reason the business doesn't know any better is because some improvement, no matter how little, is better than no improvement.

The business simply believes the productivity gains they are getting for the half million dollar projects are what they have to pay. When in reality a shop that is practicing best practices could deliver five to ten times more functionality with a much higher quality for the same cost. Getting the message through to them after years of developing garbage is tough cookie to crack. That would mean a lot of people, from IT to the business, would actually have to say I was wrong. It would also mean that things would need to change, and home brewed enterprises hate change.

The author of this book has done every software developer who does not want to be just another home brewer a great service. He has taken today's best practices from the .NET world and compiled them into one place. Granted a lot of the topics he covers will require further reading, but he has done a great job of introducing a ton of best practices along with the tools and resources you need to implement them.

He does not just give you a bunch tools with an example, he also gives you sound advice on how to determine whether or not the tool or practice is right for your environment. This author has a very clear understanding of the fact that there are different teams with different skillsets in different environments and not every practice is right for every team.

An example is his advice with agile processes, which is that you must have an open and trusting environment for agile to succeed. I have repeatedly seen agile process jammed down team's throats that couldn't handle it. They were not mature enough. They should have first been run with an experienced architect and project manager in place under the unified process in order to gain experience.

The book starts out with a chapter that introduces several healthy concepts that should be understood about best practices in general. They include Practice Selection, Target Areas for Improvement, and Overall Improvement.

The book continues with 12 more chapters. They include .NET Practice Areas, Achieving Desired Results, Quantifying Value, Strategy, .NET Rules and Regulations, Powerful C# Constructs, Automated Testing, Build Automation, Continuous Integration, Code Analysis, Test Frameworks, and Aversions and Biases.

The book covers a ton of topics some of them include Technical Debt, Retrospective Analysis, Prospective Analysis, Application Lifecycle Management, Patterns and Guidance, Research and Development, Microsoft Security Development Lifecycle, Success Conditions, Documented Architecture, Improving Manageability, Increasing Quality Attributes, Personal Process, Commitment to Excellence, Coding Standards and Guidelines, Code Smells, Brownfield and Greenfield Applications, Boundary Analysis, Test Code Maintainability, Unit Testing, Automated Integration Testing, MSBuild Fundamentals, Automated Deployment, The CI Server, CI Lifecycle, Static and Dynamic Code Analysis, Mock Object Frameworks, Dunning-Kruger Effect, Ostrich Effect, Gambler's Fallacy, Ambiguity Effect, and Focusing Effect.

The downloadable code is very well organized and usable. Each chapter includes a readme document that describes the code samples. The download also includes an Excel spreadsheet of the .NET Best Practices Scorecard that is found in Appendix B.

Appendix A is a nice collection of all the resources used in the book including books, articles, guides and tutorials, and tools.

My wife has accused me of going to work and speaking a foreign language and that is why no one understands what I am saying. The foreign language I have been use is called Best Practices and Industry Standards. It is a language that is constantly evolving. This book has the most current version of it as it relates to .NET. If I get my way, this book will be mandatory reading to be able to join my team. I suggest your team do the same.

I highly recommend this book to any role involved with developing .NET software.
Pro .NET Best Practices

read more

dotnet.sys-con.com | 1/28/12 6:38 PM
computing: A basic introduction to Java

Java was first released in 1995 by Sun Mircrosystems as a type of programming language and computing platform, and quickly became one of the leading IT technologies.

www.topix.net | 1/28/12 1:21 AM
Syntax of the day: IS TRUE and IS FALSE
What makes for a true statement? We usually test statements using a WHERE clause: SELECT * FROM world.City WHERE Population > 1000000 The "Population > 1000000" statement makes for a boolean expression. Using WHERE is just one way of evaluating it. One can also test with IF(): SET @val := 7; SELECT IF(@val > 2, 'Yes', 'No') TRUE and FALSE The two are keywords. They also map for the numerals 1 and 0, as follows: mysql> SELECT TRUE, FALSE; +------+-------+ | TRUE | FALSE | +------+-------+ |    1 |     0 | +------+-------+ Like in the C programming language, a nonzero value evaluates to a true value. A zero evaluates to false. A NULL evaluates to... well, NULL. But aside from 3-valued logic, what's important in our case is that it is not true. However, simple value comparison is incorrect: mysql> SELECT @val, @val > 3, @val > 3 = TRUE as result; +------+----------+--------+ | @val | @val > 3 | result | +------+----------+--------+ |    7 |        1 |      1 | +------+----------+--------+ mysql> SELECT @val, @val = TRUE as result; +------+--------+ | @val | result | +------+--------+ |    7 |      0 | +------+--------+ To test for the truth value of an expression, the correct syntax is by using IS TRUE: SELECT @val, @val IS TRUE as result; +------+--------+ | @val | result | +------+--------+ |    7 |      1 | +------+--------+ Likewise, one may use IS FALSE to test for falsehood. However, if you wish to note NULL as a false value this does not work: SELECT @empty, @empty IS TRUE, @empty IS FALSE; +--------+----------------+-----------------+ | @empty | @empty IS TRUE | @empty IS FALSE | +--------+----------------+-----------------+ | NULL   |              0 |               0 | +--------+----------------+-----------------+ If you're unsure why, you should read more on three-valued logic in SQL. To solve the above, simply use IS NOT TRUE: SELECT @empty, @empty IS NOT TRUE; +--------+--------------------+ | @empty | @empty IS NOT TRUE | +--------+--------------------+ | NULL   |                  1 | +--------+--------------------+ In summary, use IS TRUE and IS NOT TRUE so as to normalize truth values into a 0, 1 value range, C style, including handling of NULLs. code.openark.org | 1/26/12 6:09 AM
2012 Conference Planning: Key Events for Your Radar (24-Jan)

Our industry event planner gives you the heads-up on what key industry events are coming around the corner. If we’ve missed something, don’t hesitate to add your event to the list. (You can see all events here.)

www.cmswire.com | 1/24/12 5:05 PM
Java vs. JavaScript: Similarities and Differences

Java is an Object Oriented Programming language created by James Gosling of Sun Microsystems.

www.topix.net | 1/24/12 11:41 AM
The Rust Compiler 0.1 Released
"Today Mozilla and the Rust community are releasing version 0.1 of the Rust compiler and associated tools. Rust is a strongly-typed systems programming language with a focus on memory safety and concurrency. This is the initial release of the compiler after a multi-year development cycle focusing on self-hosting, implementation of major features, and solidifying the syntax. Version 0.1 should be considered an alpha release, suitable for early adopters and language enthusiasts. It's nifty, but it will still eat your laundry." osnews.com | 1/24/12 12:10 AM
Q&A: An Introduction to the Scala Programming Language

What is the Scala programming language, how does it work with Java, and what is its role in high-performance computing? We learn from the language's inventor, Martin Odersky , who is also the chairman and chief architect of Typesafe , which packages Scala, Akka middleware, and developer tools into an open source stack.

www.topix.net | 1/23/12 11:37 AM
The Polybius Square Encoder / Decoder 1.0

The Polybius Square Encoder / Decoder software was designed with the help of the Python programming language as a small script that allows you to encipher / decipher a plaintext / ciphertext.

www.topix.net | 1/21/12 11:04 PM
The Server Side: Why Polyglot Programming Stinks.
Did you, programming language creators ever try to teach a new programming language to “normal”, 9 till 5 programmers? I’m not talking about 9 (am) till 9 (pm) programmers who love to learn new languages every day. It is definitely tough to be proficient in one programming language.

www.pheedcontent.com | 1/20/12 11:26 PM
25+ Cloud, Social, E2.0 and CXM Events for Your 2012 Calendar

Our industry event planner gives you the heads-up on what key industry events are coming around the corner. If we’ve missed something, don’t hesitate to add your event to the list. (You can see all events here.)

www.cmswire.com | 1/18/12 5:04 PM
Summer Coding: U.S. CTO Wants You to Get Tech Skills This Year (Mashable)
Mashable - Missed out on that New Year's resolution to learn a programming language -- the goal that 300,000 people signed up for, including New York Mayor Bloomberg? Too busy with school to make it happen? You'll get another, even easier shot at that goal this summer. Codecademy, the brand-new entity behind that plan, has announced "Code Summer +" -- a condensed version of its curriculum, starting this May. The announcement was part of an event with U.S. Chief Technology Officer Aneesh Chopra. us.rd.yahoo.com | 1/18/12 3:09 AM
R in Action: Data Analysis and Graphics with R reviewed at TechBookReport

R is a programming language and software environment for statistical computation and graphics.

www.topix.net | 1/17/12 1:11 AM
Planet Eclipse: Stefan Winkler: Separating the Wheat from the Chaff — Or: How to Sort Bugzilla Mails

One challenge in my daily work with my email is dealing with automated mails from Hudson or Bugzilla. As I am involved with several customer projects, I cannot keep track of all the Eclipse committer-related mail during the day.

As I am using GMail, I have become used to the mail filtering mechanism GMail offers to make email sent from Bugzilla or Hudson bypass the inbox and land in a separate IMAP folder (GMail uses a label metaphor, but when accessing mails via IMAP, GMail labels are mapped to IMAP folders).

Until recently, however, there was one problem, which I had not solved for months. As perhaps a lot of people do, I am not only receiving Bugzilla notifications related to bugs for which I am reporter, assignee, or on the CC list, but I also watch other Bugzilla accounts; most notably I, follow the emf.cdo-inbox@eclipse.org Bugzilla notifications to keep myself up to date (at least theoretically ...) with all the current bugs of CDO. The problem was that I wanted to separate the more important notifications (those for which I am reporter, assignee or explicitly part of the CC list) from the less important ones (namely those to emf.cdo-inbox). Most of the time (and here comes practice ...), I have too little time to dig through all the Bugzilla notifications and identify the important ones which I should really care about (or at least read) right now.

 

Of course, this is not a fault of Bugzilla, as Bugzilla sets really useful headers for its emails. In particular, the mails which I denoted as "more important" above can be identified by checking the content of the X-Bugzilla-Reason header. If this header contains CC, Reporter, or AssignedTo, I regard the notification as important. The actual problem is that GMail does not support filtering emails by arbitrary headers (or at least they have hidden that feature so well that I did not find it ...)

To solve the problem for me, I have not installed a small Unix utility called IMAPFilter on my virtual server which I am also using to host this blog. IMAPFilter can be configured via a config file written in the Lua programming language. This way, one can write arbitrary (and sophisticated, if needed) rules and commands to process email stored on one or more IMAP servers. In my case, a quite simple config file does the trick (Note: I still use GMail filtering rules to sort Bugzilla emails into the CDO/Bugzilla folder, because this was configured already, and it makes the IMAPFilter configuration a bit easier):

config.lua myaccount = IMAP { server = 'imap.googlemail.com', username = 'myself@googlemail.com', password = 'S3cr3t!!!', ssl = 'ssl3' } results = myaccount['CDO/Bugzilla']:contain_field('X-Bugzilla-Reason','Reporter') + myaccount['CDO/Bugzilla']:contain_field('X-Bugzilla-Reason','CC') + myaccount['CDO/Bugzilla']:contain_field('X-Bugzilla-Reason','AssignedTo') results:move_messages(myaccount['CDO/Bugzilla-Important'])

(Note: the plus signs have to be read as logical OR)

That's almost it. The config.lua file goes into ~/.imapfilter and to execute the utility on a regular basis, I have created a crontab entry which calls imapfilter all 15 minutes:

0,15,30,45 * * * *     /usr/bin/imapfilter

Naturally, the above is only a simple example. Experiment for yourself to unleash the power of complex mail sorting.

www.winklerweb.net | 1/15/12 8:48 PM
2. List - Cons, Car, Cdr & Co

Lists are the most important data structures in functional languages. it is not for nothing that the first functional programming language, that is by the way the second oldest programming language is called LISP which stands for "LISt Processing languages". LISP is all about working with lists to the point that even its source code is written with ... (more)

www.topix.net | 1/13/12 2:24 PM
What is Ruby on Rails?

From Wikipedia : "Ruby is a dynamic, reflective, general-purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features.

www.topix.net | 1/10/12 7:25 PM
25+ CXM, EIM, E2.0 Events for Your 2012 Calendar

Our industry event planner gives you the heads-up on what key industry events are coming around the corner. If we’ve missed something, don’t hesitate to add your event to the list. (You can see all events here.)

www.cmswire.com | 1/10/12 5:05 PM
Apple iOS strength prompted Objective-C language growth in 2011
Demonstrating continued momentum for Apple's iOS platform for mobile devices, the Objective-C language used to develop applications for iOS showed the most growth in popularity in 2011 as a programming language.

www.macworld.co.uk | 1/10/12 10:41 AM
Planet Eclipse: Ian Skerrett: Support for New Emerging Languages

In the last number of years there has been a boom in the creation of new computer languages.  Some might wonder why we need so many new languages but one thing I have found is that software developers can be very passionate about software languages.

Another gratifying trend is the ‘almost natural’ step for language communities to provide tooling support based 0n Eclipse.   One of the highlights at EclipseCon 2012 is the opportunity to learn and see the support being developed for many of these languages.    A quick summary of the language support you can see at EclipseCon 2012:

Dart is a new web programming language being developed at Google.   Some see Dart as a structured version of JavaScript or even a JavaScript replacement.   Dart in Action is a session led by Dan Rubel from Google who is working on a Dart Editor based on Eclipse

Lua might not be a new language but it certainly seems to be gaining momentum, especially in the embedded and M2M industry. Lua tooling on steroids will demonstrate the current status of the Eclipse Koneki project which aims to provide a first-class Lua IDE.

Ceylon is a new JVM based language, developed at RedHat, positioned as a language for writing large programs in a team environment.  Ceylon – the language and its tools should give a nice overview of the new language and the tools they have built based on Eclipse.

Xtend is another new JVM language being developed at Eclipse.   In the session Eclipse Xtend – A Language for Java Developers,  Sven Efftinge will be introducing Xtend to the EclipseCon attendees.

JavaScript is not a new language but the support being provided by Orion is new.  There is a session and tutorial on Orion that will educate anyone interested in the future of JavaScript and web tooling at Eclipse.

If you want to learn about new languages and their tools, then EclipseCon 2012 will have be a great place to be.

 

 

 

 


ianskerrett.wordpress.com | 1/4/12 6:18 PM
10 programming languages that could shake up IT

Do we really need another programming language? There is certainly no shortage of choices already.

www.topix.net | 1/4/12 9:04 AM
Frink 2012-01-03

Frink was developed to be a practical calculating tool and programming language designed to make physical calculations simple, to help ensure that answers come out right, and to make a tool that's really useful in the real world.

www.topix.net | 1/4/12 1:24 AM
Red/System Language Gets Os X, Arm, Android Backends

Red/System, the new programming language that is used in the Syllable project , has reached its next milestone: an ARM code generator backend for its compiler.

www.topix.net | 1/2/12 2:42 PM
Red/System Language Gets OS X, ARM, Android Backends
Red/System, the new programming language that is used in the Syllable project, has reached its next milestone: an ARM code generator backend for its compiler. It supports Android (screenshot) and generic ARM Linux (screenshot on Debian). Earlier, the backend for generating Mac OS X executables was already completed (for x86 CPUs so far). osnews.com | 1/1/12 9:42 PM
Hands-on with Dart

Dart is a new programming language for the web, developed by Google. It's intended to bring more structure to programming for the browser.

www.topix.net | 1/1/12 1:46 AM
Virtual Teachers Provide Lessons on the Go
Do you want to learn to recognize bird calls? Pick up a new computer programming language? Learn Chinese?

Chances are, wherever your academic pursuit takes you, there's an app for a tablet or smartphone that will help. There are 19,000 apps in the iTunes Store's education category.

At the Android Market, there are 13,000. But beware, not every educational app is the ideal tutor. A study by German consumer goods tester Stiftung Warentest, comparing English vocabulary trainers, found many with weaknesses in their contents and approach.

So what should a good academic app look like? "It's important that it's interactive, with multimedia capabilities and individuality," says Michael Cordes, director of the continuing education team at Stiftung Warentest.

Thus, an app that only tutors -- as opposed to one that offers exercises and then quizzes the user about information learned -- will have less value.

The targeted use of images and sound can't be underestimated either; ditto when it comes to the option of making lessons suit an individual's needs.

"The more influence I can have, the more I can use the program in a targeted fashion," says Cordes, who has a background in educational science.

"Change of pace is also important," he says. Some apps that were tested turned boring quickly. Especially when it comes to complex topics, it's important that exercises offer some variety.

When it comes to IT topics, it's best to use a problem-based approach, says Christoph Sahner of video training service Video2brain. "The presentation of workflow is the real strength of video-oriented teaching."

For example, Video2brain offers an iPad app that is not just for use underway, but for practicing new software or learning a programming language at one's desk.

That way you can watch the video on the tablet and try out the same steps yourself, says Sahner. "Tablets are great because they are big...

www.cio-today.com | 12/30/11 4:50 PM
Tim Bray: Type-System Criteria

Starting some time around 2005, under the influence of Perl, Python, Erlang, and Ruby, I became convinced that application programs should be written in dynamically-typed languages. You get it built faster, there’s less code to maintain, and the bugs are no worse. I’ve felt negative not just about statically-typed tools in general, but about the Java programming language in particular. Living in the Android world has forced me to think about this more.

The Old Argument

It’s remarkable that, fifty or so years after “Software Engineering” joined the mainstream, we have so little consensus on these issues. There are many people, including some here at Google, who think that doing large-scale software engineering without recourse to static typing is unprofessional, verging on malpractice. There are others, particularly in the community of Web builders, who think that static typing in general and Java in particular are evidence of old thinking and low skill.

Millions of words have been spent on this debate, but here are a few of the highlights as bullet points; I’ll use “dynamic” and “static” as a shorthand.

  • Dynamic gets systems built faster.

  • Static gives you a richer toolset for specifying interfaces, which encourages modularity, particularly in large systems.

  • Dynamic produces less code. Less code is better.

  • Static programmers use more advanced IDEs with strong refactoring support; this eases maintenance and reduces the burden of the extra code.

  • Dynamic developers have a strong unit-testing culture, partly because they lack the static-typing crutch; this supports fearless refactoring.

  • The Java language in particular suffers from excessive ceremony and boilerplate. Also it lacks important constructs such as closures, first-class functions, and functional-programming support.

  • Static software supports optimizations that allow faster performance.

  • Static software typically exposes shared-mutable-state threads, and experience shows that application developers have difficulty understanding and using these correctly.

Recent News

All that aside, I kept noticing that while I was working on Android apps, the fact that I was writing Java code wasn’t bothering me that much. But I couldn’t work out why.

Then, in the last few months, I’ve been working on a revision of LifeSaver, which involves Android code (in Java of course) and App Engine code, which is in Ruby (Sinatra-based, via JRuby). The contrast between the two couldn’t be sharper. And somehow I’m comfortable on both sides.

This had been rattling around in the back of my mind like a poorly packed object in the trunk of your car. Then last September a gentleman named Ricardo Bánffy, whom I haven’t met, tweeted It’s really interesting how writing Java for Android is not painful like writing Java for web apps.... Which dragged it into the spotlight where I couldn’t not think about it.

These days I’d never consider using Java for a significant Web-dev project; but it seems a comfy fit for my Android app code.

What’s the Difference?

I mean between mobile-device and Web-side programming. Let’s start with API surfaces. In a Web app, at a minimum you have to deal with:

  1. The low-level OS interfaces: files, processes, memory, sockets, and so on.

  2. A persistence layer; files or SQL or postrelational distributed hashes or some combination.

  3. The Web machinery itself: HTTP and cookies and ETags and authentication.

Here’s a picture:

Now you can, if you choose, load up on tangled towers of ORM and dependency-injection abstraction and FactoryFactoryFactory joy, but these are often part of the problem not the solution, and you can do anything the Web can do without going near them.

On the mobile side, things are different. In order to use the device’s facilities fully, you have to deal with those same three basic things and a lot more besides:

  1. Touch-screen interactions.

  2. Telephony.

  3. More radio interfaces, potentially: WiFi, NFC, and BlueTooth.

  4. A GPS and compass and maybe altimeter.

  5. Audio gear, including speakers and a microphone.

  6. A camera, with a sensor and lots of controls.

  7. An accelerometer.

  8. Last but not least, a vibrator.

Testing

Another observation that I think is partially but not entirely a consequence of API scale is testing difficulty. In my experience it’s pretty easy and straightforward to unit-test Web Apps. There aren’t that many APIs to mock out, and at the end of the day, these things take data in off the wire and emit other data down the wire and are thus tractable to black-box, in whole or in part.

On the other hand, I’ve found that testing mobile apps is a major pain in the ass. I think the big reason is all those APIs. Your average method in a mobile app responds to an event and twiddles APIs in the mobile framework. If you test at all completely you end up with this huge tangle of mocks that pretty soon start getting in the way of seeing what’s actually going on.

Criteria

Let’s call them the Bánffy-Bray criteria for selecting between static and dynamic type systems.

  1. Static typing’s attractiveness is a direct function (and dynamic typing’s an inverse function) of API surface size.

  2. Dynamic typing’s attractiveness is a direct function (and static typing’s an inverse function) of unit testing workability.

www.tbray.org | 12/28/11 10:17 PM
Remembering Dennis Ritchie, Creator of the C Programming Language and UNIX Co-Creator

Dennis M. Ritchie, co-creator of UNIX and father of the C programming language , died this past weekend after a long illness.

www.topix.net | 12/26/11 6:38 PM
dcm4che 1.4.31

These applications have been developed in the Java programming language for performance and portability, supporting deployment on JDK 1.4 and up.

www.topix.net | 12/24/11 2:38 PM
5 Stunning Art Masterpieces You Won't Believe Were Created with Microsoft Excel

Most Windows users known Microsoft Excel as "a proprietary commercial spreadsheet application written and distributed by Microsoft for Microsoft Windows and Mac OS X; it features calculation, graphing tools, pivot tables, and a macro programming language called Visual Basic for Applications." These five mind-blowing art masterpieces show what else ... (more)

www.topix.net | 12/23/11 2:51 AM
Scala sets sights on top-tier status among the Java faithful

To hear Typesafe tell it, the Scala programming language is about to join the ranks of top-tier development tools such as Java, C++, Ruby, and PHP.

www.topix.net | 12/22/11 11:42 PM
The Lives They Lived: Dennis Ritchie, b. 1941
In a sense, Ritchie, the creator of C and co-author of the book “The C Programming Language,” has enabled us to all become programmers.

www.nytimes.com | 12/22/11 9:12 PM
Java.net Weblogs: The State of Java: Meeting the Multicore Challenge

"The multicore challenge" is the challenge to developers of software products to write code that effectively utilizes modern multi-core / multi-processor computers. Two years ago, I wondered if the multicore challenge was still relevant. In part, I was thinking about how applications were moving from the desktop into the cloud. So, if the apps people are running are running in a browser, does it matter if their desktop system (or pad or phone) is multicore?

Today many mobile phones can really be looked at as being computers. In an article about the contributions mobile phones are making in poor countries, the Economist noted that "Mobile phones are the world's most widely distributed computers." And many of the newer mobile phones are multicore.

So really, whether the target computer for your software is a traditional tower, a laptop, a pad, or a phone, the multicore challenge remains relevant today -- and its relevance will only increase in the coming years. Browsers, one would think, are going to have to evolve to utilize multiple cores and processors. The ones that do so will ultimately take away significant market share from the ones that don't. How they'll accomplish this is another question...

Java already has basic capabilities for utilizing multiple processors -- in the threads library, for example. But, clearly that's considered inadequate for meeting the needs of the future. Which is why we have JSR 335: Lambda Expressions for the Java(TM) Programming Language. The development of JSR 335 takes place in Project Lambda, a component of the OpenJDK project.

At JavaOne 2011, Alex Buckley presented a very well attended session titled "Project Lambda: To Multicore and Beyond" that outlined the vision and plan for bringing Lambda expressions into Java. This will happen in Java 8 -- so, we're still a ways away from having a formal release.

The key element, in my view, is that Lambda expressions (also called "closures") will be implemented largely via a rewrite of the underlying JDK libraries wherein they will "automatically" do the low-level work of divying up the task at hand and passing segments of it to the available processor cores. This will enormously reduce the effort for Java application developers to convert their existing programs such that they can utilize multiple processors/cores.

Writing multithreaded code is hard. I've been doing it for 18 years, starting out on 8-processor Sun machines where we took scientific C and Fortran code delivered by researchers and revised it to parcel out data segments to different threads. Tiny mistakes inevitably result in overwritten data, which produces non-repeatable erroneous results, crashes, hung threads, and other "fun" head-scratchers... Yeah, it's hard to write threadsafe code!

The approach taken by the Java 8 architects and developers is going to in essence hide all that complicated threading stuff from the higher level app developer, by implementing the multithreading and fork/join processing within the Java libraries themselves. This is an enormous effort in itself, but it's a much smaller effort than if every Java application development team had to multithread their apps, having to rewrite function after function to be threadsafe.

Of course, the efficiency of the apps on multicore computers will thus depend on how much of the processing actually occurs within the core Java libraries. It's not going to be a situation where, because of Project Lambda, all apps will suddenly utilize all available cores 100% of the time, and immediately speed up by nC times (where nC is the number of cores in the computer).

Still, Project Lambda is a major innovation, a key step into the future for Java.

If you find all this interesting, you may want to take a look at Mike Duigou's JavaOne 2011 presentation "Bulk Hauling: Parallel Data and Lambdas in Java 8." The PDF for that is available in the JavaOne Content Catalog.

java.net Weblogs

Since my last blog post, quite a few people have posted interesting new java.net blogs:

Poll

Our current java.net poll asks you to respond to The most important Java/JVM related happening in 2011 was. Voting will be open until Friday, December 23.

Articles

Our latest java.net article is SWELL - An English-Like DSL for Swing Testing by Sanjay Dasgupta and Chirantan Kundu.

Java News

Here are the stories we've recently featured in our Java news section:

Spotlights

Our latest java.net Spotlight is Pieter Humphrey's OTN Virtual Developer Day returns! WebLogic Server 12c, Coherence in Jan/Feb 2012 :

Join us for a new breed of free, hands-on virtual developer workshops at Oracle Technology Network's Virtual Developer Day. Java Developers and Architects can attend live moderated sessions and hands on labs at the event, where you will learn about how Oracle WebLogic Server 12c and Oracle Coherence are the foundation for modern, lightweight development...

Previously we featured David Heffelfinger's new article Spring to Java EE Migration, Part 2:

In this part, we continue rewriting the Pet Clinic application, once again fully taking advantage of the Java EE tooling available in NetBeans. We develop Enterprise JavaBeans (EJB) 3.1 session beans that act as our Data Access Objects (DAOs), as well as JavaServer Faces (JSF) 2.0 managed beans and pages...

Subscriptions and Archives: You can subscribe to this blog using the java.net Editor's Blog Feed. You can also subscribe to the Java Today RSS feed and the java.net blogs feed. You can find historical archives of what has appeared the front page of java.net in the java.net home page archive.

-- Kevin Farnham
Twitter: @kevin_farnham

www.java.net | 12/22/11 2:52 AM
Book Review: Sams Teach Yourself Java in 24 Hours

If you want a well rounded introduction to JAVA 7, look no further. This book touches on all the things you would expect in an introduction to a programming language.

www.topix.net | 12/21/11 2:17 AM
Event Planning: Top 20+ CXM, EIM, E2.0 Events for Your Calendar

Our industry event planner gives you the heads-up on what key industry events are coming around the corner. If we’ve missed something, don’t hesitate to add your event to the list. (You can see all events here.)

www.cmswire.com | 12/20/11 5:07 PM
Antlr Ide 2.1.2

ANTLR IDE is an open source and free Eclipse plugin for ANTLRv3 grammars. ANTLR IDE is written in the Java programming language.

www.topix.net | 12/18/11 11:48 AM
UNKNOWN IPTables-0.05 5.8.9 on freebsd 8.1-release

From: brian greenfield Subject: UNKNOWN IPTables-0.05 v5.8.9 FreeBSD Date: 2011-12-15T13:56:34Z This distribution has been tested as part of the CPAN Testers project, supporting the Perl programming language.

www.topix.net | 12/16/11 8:13 AM
Hans Hübner: Learning Ruby, and Ruby vs. Lisp
The company I work for has a lot of legacy Ruby code, and as Ruby has become kind of a mainstream language, I decided to get a book about it and learn how it works.

As my learning resource, I chose The Ruby Programming language by David Flanagan and Yukihiro Matsumoto as that receives great customer reviews, covers Ruby 1.8.7 and 1.9 and is authoritative because the language creator is one of the authors.

The book makes a good read in general. There are plenty of code examples, but not too much to obscure the prose. What I found first interesting, later annoying, was the frequent use of words like "complex", "complicated", "confusing", "surprising" or "advanced" to describe features of the language. I'd rather decide myself about using such attributes to describe something that I've just learned.

Having spent so much time with Common Lisp, I almost forgot that programming languages usually evolve over the years. Ruby is no exception, and the fact that there are significant differences between Ruby 1.8.7 and Ruby 1.9 kind of bothers me - I'll probably never write code in Ruby 1.8.7, but the differences between the two versions seem to be rather subtle and I'm curious to see how much that is going to be a bother in the future, working with legacy code.

The common theme for Ruby seems to be succinctness. This comes at the expense of making the syntax rather complex, with several special case rules required to solve ambiguities. I don't have the practice to judge whether this is a problem, but from the book, it seems there are quite some things to remember.

It seems that Ruby started off as a purely object oriented language and only later discovered that function-oriented programming is nice, too. The deep roots of object orientation made it rather hard to actually get free functions (which are not member functions of an object) integrated. Contrary to what I am used to, member functions are not a special case of free functions, but rather something quite different. It requires explicit conversion steps to convert a member function into a free function (called procs in Ruby), and invocation syntax is also different between the two. Again, the description may sound worse than it is in practice.

What I really liked was the generalization of code blocks into fibers. Ruby does not have full coroutines, but the restricted form that is available is generalized well and seems like it could be useful for building pretty wild asynchronous systems. Also, it is nice that the bindings of closures can be accessed.

But then, Ruby is an interpreted language and this fact is re-stated throughout the book. With Just In Time compilation, this could become a non-problem, but I'm not sure how well Ruby can be optimized due to its very dynamic nature. Just to see how fast it is compared to Common Lisp, I implemented the Sudoku solver from chapter 1 of the Ruby book in CL and gave the two implementations a puzzle to solve. It took the Ruby solver 0.890 CPU seconds (Ruby 1.9.2p290), whereas the Lisp solver (Clozure CL 1.7) used 0.087 CPU seconds to solve the puzzle. Ten times slower, whatever you'll make of that.

In the book, it is mentioned how little code the Sudoku solver actually uses. This is true, but then, the Lisp version is not longer. It does not seem as if adding syntax is actually the best way to add the possibility to write succinct programs to a language, and the price of the complex grammar is rather high.

Writing the CL solver, I found myself not writing tests again and then poking around in problems of my implementation without knowing what works and what does not. As I want to practice more TDD, I stepped back and added tests. This led me to solve a problem that I had with my previous attempts to practice TDD in Lisp - I do not want to export all the symbols that the tests exercise from the packages that I use, but I also don't want to import the unit testing library into my own library packages. Thus, I wrote a deftestpackage macro that creates a new package to contain the tests that I write and automatically imports all symbols from the package being tested. That way, I can easily keep tests and library source separate and don't need to qualify internal symbols in the tests.

My overall takeaway on the Ruby is this: Ruby seems to be a language that has grown from being purely object oriented to supporting functional programming. That growth was not completely natural, and it seems that if Ruby is not used as a pure object oriented language, the syntax becomes rather messy and hard to grasp. This is similar to C++, which in its first versions was relatively nice (I hear you "ow"!), but has grown into into an incomprehensible mess once people recognized how templates can be abused for metaprogramming.

I can see the appeal of Ruby, but there seems little it has to offer to me that Common Lisp cannot provide. The lack of a formal specification and the ugly grammar put me off. Then again I'm pretty sure that Ruby is more enjoyable than many other popular languages. I'm looking forward to see my theoretical conceptions be shaken by actual practice.

netzhansa.blogspot.com | 12/11/11 1:15 PM
Why We Need More Programming Languages
Fatal Exception's Neil McAllister writes in favor of new programming languages given the difficulty of upgrading existing, popular languages. 'Whenever a new programming language is announced, a certain segment of the developer population always rolls its eyes and groans that we have quite enough to choose from already,' McAllister writes. 'But once a language reaches a certain tipping point of popularity, overhauling it to include support for new features, paradigms, and patterns is easier said than done.' PHP 6, Perl 6, Python 3, ECMAScript 4 -- 'the lesson from all of these examples is clear: Programming languages move slowly, and the more popular a language is, the slower it moves. It is far, far easier to create a new language from whole cloth than it is to convince the existing user base of a popular language to accept radical changes.' osnews.com | 12/11/11 3:35 AM
RIM gets licensing deal with Dolby, ends BlackBerry lawsuits
RIM put an end to Dolby's lawsuits over audio Monday by negotiating a patent licensing deal. BlackBerry phones and the PlayBook tablet will now have a license to use Dolby's mobile-friendly HE AAC audio format. Neither side said how much the deal costs, although RIM had quietly obtained the license on August 4....

www.electronista.com | 9/12/11 8:05 PM
Scientists build WiFi hunter-killer drone and call it SkyNET... Viene Tormenta!
You'd think scientists would proscribe certain names for their inventions -- you wouldn't be taken seriously if your supercomputer was called HAL 9000, WOPR or Proteus IV would you? Well, a team from the Stevens Institute of Technology isn't listening, because it's developing an aerial drone and calling it SkyNET. A Linux box, strapped to a Parrot A.R. Drone, can fly within range of your home wireless network and electronically attack it from the air. Whilst internet-only attacks are traceable to some extent, drone attacks are difficult to detect until it's too late -- you'd have to catch it in the act and chase it off with a long-handled pitchfork, or something. The team is working on refining the technology to make it cheaper than the $600 it currently costs and advise that people toughen up their domestic wireless security. We advise they stop pushing us ever closer towards the Robopocalypse.

Scientists build WiFi hunter-killer drone and call it SkyNET... Viene Tormenta! originally appeared on Engadget on Sat, 10 Sep 2011 05:58:00 EDT. Please see our terms for use of feeds.

Permalink   Crave  |  SkyNET Paper (PDF)  | Email this  | Comments www.engadget.com | 9/10/11 12:58 PM
Facebook to delete prison inmates' active accounts
Social-networking giant is working with prison officials to prevent inmates from using their user accounts to deliver threats or unwanted sexual advances. digg.com | 8/10/11 7:10 AM
Teenage Hacker Breaks Into Norway Shooter's Email
Hackers have reportedly broken into Norway shooter Anders Behring Breivik's email account and turned the contents over to police in an effort to help their investigation. digg.com | 8/10/11 3:17 AM
Anti-Piracy Lawyers Accuse Blind Man of Downloading Porn
As the mass-lawsuits against BitTorrent users in the United States drag on, detail on the collateral damage this extortion-like scheme is costing becomes clear. It is likely that thousands of people have been wrongfully accused of sharing copyrighted material, yet they see no other option than to pay up. One of the cases that stands out is that of a Californian man who's incapable of watching the adult film he is accused of sharing because he is legally blind. digg.com | 8/10/11 12:54 AM
Students Love Technology: Infographic
Is the idea that students love technology surprising? No, but this infographic sheds a little light on this gadget-addicted generation. digg.com | 8/10/11 12:15 AM
Hacker group vows to 'kill Facebook'
Apparently, "Anonymous" won't be accepting your friend request. digg.com | 8/9/11 11:01 PM