Of Cisco, Tcl and Java

Whilst busily reading up on Scala and Groovy and other languages that ran on the JVM, I had a thought with regard to the scripting language that the network architect at work now advises is included in the Cisco ISG/ASR’s.  Cisco now have the Tcl scripting language installed on the IOS.  One application is used to control phone IVR and voicemail systems which is a pretty neat feat. 

Tcl itself doesn’t seem to be much of a mystery language either and should be easy for anyone coming from another scripting language background.

There is a Jacl for the JVM as well and also a means to bring Java code to a Tcl interpreter via Tcl Blend.

You can use Tcl to script EXEC level commands on a router such show version and int fa0/0 type stuff as shown here.

There is also a Cisco article about getting started with Tcl on the routers.

JavaPuzzlers Talk

This is a great talk with Josh Bloch and Neal Gafter with a whole lot of cooky Java-ness.  Programs that look like they should behave but don’t…. or even worse, work as expected, but not because they are following the line of execution you intended to.

http://www.javapolis.com/JP04DVDContent/talks/Puzzlers/index.html

Edit: If you look on Parleys.com and also Javapolis.com (now called Devox) you’ll be able to find the 07 talk (parleys) and the 05 (however wasnt able to find a direct link for that one on Devvox)

Of Technology and Death

My Dopod 838 Pro (aka HTC Tytn aka Hermes 100) decided it was time to provide me an infamous whitescreen problem that affects various HTC variants.

XDA Developers suggest that the fix is to open the unit, and put foam over certain parts around the dpad and b/ween the dpad and the screen.  Other users have added more of this double sided sticky foam to other areas of the unit where the suggested areas dont work.  In addition, tightening or loosening the screws in the unit seems to work too.

Its not a 100% surefire way, some users have reported after that they still get the problem just less often.  The most surefire way to fix seems to replace the DPAD housing or the motherboard or use hot air and re-solder the ATI graphics chip.  I think when it comes to hot air gun or precision soldering, then I’ll consider the experts, however the HTC authorised repairer ‘Phonetec’ does not have a good reputation whatsoever.  I hope I dont need to excercise this option and can perhaps use an alternate phone repairer (since its not a warranty fix.)

I’ll probably address this next weekend when I have a bit of time.  Some good links I found in the meantime:

Spare parts for sale from a US repairer

HTC Dismantling guides

Review of the HTC Touch Pro – the phone I’ll get if its uneconomical to repair this one…. though it now seems I’ll have to seriously consider the support options

Pocket Informant 8 – A tool I’ll be getting once the phone is fixed that shows your agenda on today screen and other useful calendar/task/contact helps.

T-Minus

8 September – Important testing for product release

12 September – One week till eye surgery (no more contacts, if I had any to wear)… features for release need to be done!

17 September – Software Product Release

19 September – Eye Surgery

23 September – Major Event following fruits of product release

So True

From the excellent online book Getting Real

Smaller Tasks and Smaller Timelines

Software developers are a special breed of optimist: when presented with a programming task, they think, “That’ll be easy! Won’t take much time at all.”

So, give a programmer three weeks to complete a large task, and she’ll spend two and a half procrastinating, and then one programming. The off-schedule result will probably meet the wrong requirements, because the task turned out to be more complex than it seemed. Plus, who can remember what the team agreed upon three weeks ago?

Give a programmer an afternoon to code a small, specific module and she’ll crank it out, ready to move onto the next one.

Smaller tasks and smaller timelines are more manageable, hide fewer possible requirement misunderstandings, and cost less to change your mind about or redo. Smaller timelines keep developers engaged and give them more opportunities to enjoy a sense of accomplishment and less reason to think, “Oh I’ve got plenty of time to do that. For now, let me finish rating songs in my iTunes library.”

—Gina Trapani, web developer and editor of Lifehacker, the productivity and software guide

Asus M51Sn and OS X

Just some links related to getting OS X Leopard running on the M51Sn.

Hardware still not fully covered, but there is a bios update so that the second CPU core doesn’t get aliased which prevents OS X from identifying the 2nd core.  Read the thread for more info.

Anyhow, someone on InsanelyMac forums claimed to get it working using Leo4All v3

Bertrand Meyer, ETM, Java Byte Code, Eiffel

Bertrand Meyer is the author of a classic software development book Object-Oriented Software Construction.  He is also the father of the Eiffel language.  I have a lot of respect for his work, it was quite heavily plugged when I was at Monash.

In looking for a Bertrand Meyer home page, I came across Betrand Meyer’s ETM homepage.  ETM is where he was working during mid 2007 when the page was written.  He plays a part in co-teaching many of the subjects there (lucky students!).

There are many pieces of gold linked to his site, though these two subjects seemed of most interest to me.

+ “Languages in Depth” series: Java programming, with Manuel Oriol (bachelor’s/master’s) Java

The lectures about the class loading and bytecode were very informative.

+ “Languages in Depth” series: C# programming, with Lisa (Ling) Liu (bachelor’s/master’s) C#

You can also find a link the ECMA Eiffel language specification.

In addition, there are a few interesting tools linked to from this page, as well as a few from the Dept of Computer Sciences download page.

Autotest is a tool that generates tests automatically by looking at the source code, in particular, the way that Design by Contract is used, gives a lot away about what a human tester would be writing, but also tries to make up for the shortfalls that would not normally be apparent in the source code and the fact that developers aren’t perfect to begin with.

The text for the next lot appears directly from the school’s download page.

Contract Wizard 3.0
Description: Regrettably Design by Contract is still a specificity of the Eiffel programming language. Contract Wizard 3.0 is a GUI application that enables adding contracts (preconditions, postconditions, and class invariants) to any .NET assembly, whatever .NET language it was initially written in.

The Pattern Library contains patterns that are usable as components. For the patterns that could not be turned into components the download contains the Pattern Wizard, that let’s you generate the patterns according to your input.

Eiffel library to generate Java bytecodes

Description: This Eiffel library is able to generate Java class files that can be executed by a Java Virtual Machine. A simple language with a corresponding compiler that uses the library as backend was created to test this library and also to give examples of how to use the framework. This language is similar to the Java language, but much simpler.

Funnily enough, the java references I mention in this blog all make reference to the following sites:

The universe is telling to learn about the bytecode behind the JVM…  javap My.class

UML and CRC and Agile References

CRC Cards (Class Responsibility Collaborator cards)

Class Name
Responsibilities Collaborators

A very good UML diagram reference (I may have referenced this one before).

http://www.agilemodeling.com/essays/umlDiagrams.htm

And a page of useful agile resources, from a process standpoint.

http://www.agilelogic.com/sp_resources.html

I particularly like the ones about Missing the Point of the Daily Stand-Up? and eXtreme Adoption eXperiences of a B2B Start Up

The Self-Shunt unit testing pattern in short is a way to think about your tests so that you are not testing more than one thing in a test. It talks about passing the object you are testing to itself. Here is a quote (paraphrased) from the document about when to use it "Methods such as testScanAndDisplay scream testing two things."