Pharo Morphic View 03

February 14, 2012

Adding up and pushing in the next version .. hopefully I am going to be slower now to get the rigor and correctness in.

So far has been a rush of blood, addiction to something that came along smooth and easier. But should pull back and do the right thing and the right way..

Eventually want to also pull in the Tablet IDE interface, sooner than later, to make it an usable proposition for anyone around..

PharoMorphicView_02

Gofer new
squeaksource: ‘PharoGoodies’;
package: ‘ConfigurationOfPharoMorphicView’;
load.

((Smalltalk at: #ConfigurationOfPharoMorphicView) project latestVersion ) load.

Enjoy…

Advertisements

Innovation: The 3 W’s

February 11, 2012

Innovation is defined and qualified many times over in every form, but to get a simple prescription is impossible. So here goes my moment of epiphany, early morning of one way to look at it from a distance, I have yet to bridge

What, When, Who:

Push in all the effort of thinking, activity, passion on the above..

*   What is the product to create and sell. What is the quality, precision, capabilities , support infrastructure ( the works) around the product vision that ranges from the macro to the micro details.

*   When to launch: Timing is of essence.. and to figure out When and to Whom to launch to as a target should be crystal clear..

*    Who are your people to do the works… Choose carefully and perfectly the right blend of people to work out the details and get the product out the door..

Let the people figure out the exact how ? Get the right people and enable them, provide the complete environment. I mean to go into micro level details of what tech, what platform, is to be left to the actual doers.. give them an enabling environment.

Have been giving a deep thought on this for a long time and it just kind of dawned that it is important to get away from the details of How, to innovate and succeed. Pick the right people and let them define that.. Or.. if you want to be the one involved in the How, find someone else who can be the the driving force of the vision.. To combine the two is really tough if not impossible.

To define the What precisely to the last detail and follow through is itself a huge task, figuring out the How is always going to muddy that vision and goal.

There is lot more to innovation that worries the feeble mind ranging from the fears, lack of right opportunity, capital etc.. but I guess neither is it meant for the feeble mind..

Just do it..!


Pharo Morphic View Framework

February 11, 2012

Nice progress made finally grinding through a whole saturday on this.. hope it should progress to a complete usable framework over the month ahead, with hopefully much of bugs/ issues ironed out. Will post the updated package tomorrow..

Highlights are:

* Clean up of earlier methods to have better layout handling and opening the View

* ValueWrapper to give the ability to call #value: and #value for morphs identified and can be incremented to cover all known morphs therein. Single MorphicViewValueWrapper class to encase this functionality for now..

* Neater example of ComposedViews of most morphs of use..  replicated UITheme>>exampleBasicControls

* SimpleViewImplicitSpec example shows how to construct the view with just setter methods..

Need to plan for:

* Systematic build chain to work with , commit and test weekly progress on this.

* Better and comprehensive Test Suite ( copy from Sam Schuster’s run with Pollock )

* Make the framework rock stable in what it does for now..

* Provide for a template View Class generator to begin with and then

* Progress to come up with a clean View Builder.. that will be hard work ahead.. to get it to usably complete status

* Bring in the the fun of using morphic into the framework.. not the staid repetition of other paradigms

The first 50% of the way is always the fastest and the crawl starts right after. Discovering more n more nuances of the morphic system now.. viz:

* LayoutFrame and nuances of bounds, fullBounds, extent

* hResizing/ vResizing with #shrinkWrap vs others..

* openInWorld for SystemWindow forces a bounds..!..

* Theme as chosen from Settings>>Appearance>>Morphic>> say Watery2.. effects all UI, but we need an invalidation after opening it with World addMorph: aWindowOrMorph..

* Pluggable**Morph all of them do not have defaultBounds and Text** needs defaultExtent also..

* Pecking through TableLayout for all morphs with row/ column layouts.. to ensure a perfect WYGIWYWant..

* plugging in a ValueWrapper is lot more work.. but should be nice and extensible herein after..

 


Pharo Morphic View Framework

February 9, 2012

The updated guide is better posted here and updated…

PharoMorphicView Guide pdf.

Packages are posted in PharoGoodies with Configuration packages:

Core-App + some examples:

ConfigurationOfPharoMorphicViewCoreApp

the complete package, with tests and Examples and Extensions

ConfigurationOfPharoMorphicView

Gofer new
squeaksource: ‘PharoGoodies’;
package: ‘ConfigurationOfPharoMorphicViewCoreApp’;
load.

((Smalltalk at: #ConfigurationOfPharoMorphicViewCoreApp) project latestVersion ) load.


Pharo Application Framework aka Morphic View Framework

January 31, 2012

Sharing this little framework that should go a long way to ease creating large applications ( currently morphic oriented).

AbstractMorphicView subclass: #MyNewView …

#createMorphsSpecs

^{

‘panel1’ -> #SomeOtherView.
‘label1’ -> #LabelMorph.
‘text1’ -> #PluggableTextMorph.
‘button1’ -> #PluggableButtonMorph.
}

layoutSpecsArray

^{
‘widgetNameInMorphsDictionary’ -> {
#fractions -> (0 @ 0 corner: 1 @ 0.5). ” fractional value 0 to 1 range ”
#offsets -> (10 @ 10 corner: 0 @ 0). ” offsets relative to the fractional position ”
}.

“… add other widgetspecs…”
}

Thats it.. you should have a prototype UI neatly laid out.. and then specify: #morphsPrimaryPropertiesSpecs and #morphsSecondaryPropertiesSpecs for full functionality that composes views inside views and scales well.

AbstractSimpleMorphicView can make it simpler for TableLayout stuff without requiring #layoutSpecsArray.

Look through the Tests: TestNewProportionalMorphicFromSpecsView , TestNewSimpleMorphicView and its pairs.. should give a good startup to the system..

Will share a better guide / pdf if anyone sees more value to this framework.. I am currently able to work this out for fairly usable apps and will address creating a UI Builder to spit out specs, a Projects browser and a Single Tabbed Class view browser that displays all the methods in one window and eases switching between methods/ classes as we currently see. Somewhat of a normal IDE people see in the outside world.

***************************************

Intent is to have a quick and easier handle over building UI’s in Pharo that is flexible, scalable and integrates as much of the basic patterns of enterprise architecture incrementally.

PharoMorphicView is an attempt to streamline the morphic composition capability with:

* Spec based and optionally direct composition

* Layout specs/ defaults are clear and easy

* Integrate the basics of constants dictionary , locale translation, logging …

* Bring in the optimization capability of NamedPrototype or qualified combination of singleton, prototype, factory instantiations

* Integrate Configuration based development with a simple ini reader

** Some more extras are also available.. notably the XML-RPC-Jdbc that will require the counterpart server code in groovy that I have.. to couple up effectively

* Eventually extend this and integrate it into a Pharo Tablet / Desktop Runtime IDE that allows a marketplace like system to simply pull in applications in Pharo and work with akin to the iStore … that of course is a longer term goal..

***** Read the class side comment methods of ApplicationFrameworkDocumentation in the Core package to get a description of the intent, vision, roadmap and where this is now..

Load the following to get started and play with and then choose what to keep and work with..

Examples and Tests should be self explanatory for most..

All of it is shared in : Do check and load the latest version of the package(s) next week onwards.. as it maybe updated..

http://www.squeaksource.com/PharoGoodies/

PharoMorphicView-Core-skrish.4.mcz

PharoMorphicView-Tests-skrish.3.mcz

PharoMorphicView-Examples-skrish.3.mcz

Support packages:

Table-Support-SKR-skrish.3.mcz
Toothpick-skrish.7.mcz

As also if interested in the XMLRPC stuff.. that will incrementally become central to the distributed computing pic…

These will be from their proper locations..  in squeaksource..

XML-Support

XMLRPC-Client


Ubuntu Natty Narwhal Review

May 1, 2011

Linux version for mass consumption has finally made its mark. I have followed all versions of linux for the past should I say 10yrs and more.. Ubuntu for the last 3..

Natty Narwhal confirmed my first love for the netbook interface..back in 2009, is the future. Its nice, simple, unintrusive and almost ready for the mass non-geek world. Well some loose ends still remain: VCD/ restricted DVDs and the Sun/Oracle JRE.. or other lil stuff that non-geeks will bump over.. and will need help.

Looks great on a 19″ screen.. Not sure if that is by design.. but 14″ and lower actually reduces the launcher menu appeal tad lower than one a 19″..! Simple n efficient with the dots on left, switch to the window you desire, 4 desktops by default with easy switcher and a search which is for now buggy , sure it will be fixed in a short run from now..

The right upper corner access to cop out, suspend, log out and the System Settings is just right. That top bar has finally worked out just perfect. Cant ask for more simplicity.. overall. Nothing of the zany feeling from Windows 7 , overburdened, artificial pizzazz which many do like.

Corporates.. well Evolution is just a long haul away.. If only Cannonical can do something about that..? or Libre Office takes over to give it the same overhaul as the Libre Impress… that one is real neat.. Unless Outlook can be booted out, Ubuntu will wait on the doorsteps where it ought not to.. Its got all the rest right there, from Samba networking, to Libre Office to Terminal Services Client et als.. Wine too where it matters.. Outlook on Cross Over office/ Wine is ok to talk off.. but that is not Linux pure and simple. That is hacky push to Linux and a workaround. Even a complicated Banking app thick client built for pure windows show.. worked well from Wine.. so there are its usefulness…

Dell needs to push back on its Inspiron Zino and the laptops and the rest..  I love the Lenovo – Linux Mint combo so far.. I guess can move over to core Ubuntu now.. not much that Mint will offer beyond tiding over some minor irritants for a non-geek. Maybe there is something Mint will offer post Natty … to keep its tilt  going..

DVDs of the full stuff, EasyLinux tips blogs , support et als.. have to go up..

What have I done so far over the virgin Narwhal:

1. Medibuntu all restricted stuff..

2. SMPlayer and DragonPlayer ( I love this actually though does not for now play the VCD.. that SMPlayer fulfills..)

3. Sun/Oracle JDK/JRE.. java6-plugin..

4. Chromium Browser

5. Changes in the /etc/default/grub for the GRUB2 changes: quick 3 sec boot, a splash image setup.. lower vm.swappiness to 10

6. On the laptop: use powertop and all tips to reduce battery burn downs..

7. Compiz settings manager and then settings there of for transparency and twiddling thereof.. on the gconf-editor a wee bit

Way Ahead:

1. Back to all tools and stuff I run on including Pharo , Groovy, maybe the others: python/ ruby I dont do much of now.. Tomcat, Spring Eclipse, et als…

2. Evolution.. will keep chugging and trying to use it.. till I find a day when I can throw Outlook away..

3. Use of  Ubuntu One.. 2 GB is way too small for longer term goals.. but nice to experiment my type of use..

4. Ubuntu on the Cloud with Spring+Groovy+Pharo.. here I move on…

Bugs:

Well there are many if I have stumbled on few on the first day.. tiny ones..

* .deb files downloaded dont install all that perfectly.. as it hops to a Software Download screen and then to prompt for Install that does not work well.. but then for geeks dpkg –install always works..

* try some more fancier stuff of multiplexing the Software Center operations.. and you can get a freeze..

* app shell from the compiz settings manager and others disappear.. compatability of stuff not in the virgin install could be moot for many..

* Skype pulse audio has never worked from a get go ever in Ubuntu.. but right now I am having issues with Del Zino back audio outs.. not recognized.. so no mike/ no sound from the back for now..

* Webcam: Iball F2F works ok.. but it aint as good as it might be in Windows.. but then i should use Creative in Linux..

* Wireless USB plugin: will probably have to repeat the old stuff of windows driver wrapper to get it working if I need it.. but dont for now with a wired connect..

Lots of great stuff.. so this is minor change for now..


Pharo Spring

January 21, 2011

Pharo Spring and Java (Groovy) Enterprise Integration:

Caveat: Enterprise integration as in through WebServices though a given in the SOA world is not a trifling to work with and is a non-integrated connection. Major Smalltalks do have it, but neither Pharo/ Squeak have it currently in a stable manner near term.

Smalltalk in general has been the most insular to integrate to the enterprise world of computing, due partly to the arrogance/ perceived superiority of its platform vis-a-vis the enterprise world of Java or .Net computing. Past now the decade of denials, all smalltalkers now should find it relatively easier to accept that there is undeniably large asset built in Java/ JVM / J2EE ( primarily Spring ) that is impossible to ignore any further.

To leverage the best the Smalltalk offers in its productivity, efficiency et als, I firmly believe a tighter and more inclusive integration with the Java/ JVM world is to be forged. Primarily what this means is

Direct call interface with JVM as in:

  • JNIPort
  • Redline Smalltalk

Integration with the J2EE stack

  • Integration with Spring Architecture
    • Callable to and from the bean descriptors transparently
    • Utilize the interface to transparently use the now highly proven frameworks of JDBC, MQSeries, Reports as in Jasper or Cognos or thousands of other frameworks that we do not need to reinvent the wheel of.

The primary argument we have to make is that the business logic, complex enterprise development be doable from the Smalltalk environment while all the interfaces that is stable and proven in the enterprise world can be leveraged transparently.

Also this will give rise to the argument that smalltalk work can be safely integrated as a module in a larger context of existing framework of the enterprise IT architecture and be capable of using and sharing the end points as is required.

Pharo Spring: Post this preamble, to introduce this term, as it clearly suggests is deep integration of the Spring Architecture and Pharo Smalltalk. Spring Architecture greatly simplies the enterprise computing in the Java world for standard GUI interfaces, web world both browser/ non browser or a headless no web world. We may over a period of time see great synergies in our GUI world of morphic, Seaside and headless smalltalk that will offer a great incentive to enterprises to adopt Smalltalk as a module in their larger stack.

All Smalltalkers, despite some inherent dislike for the XML based descriptors and dynamism created by external configuration file, will find a huge common philosophical ground in the invocation patterns and orchestration that it brings in.

To integrate deeper with Spring what is required:

  • Be able to have the Spring bean be transparently linkable between Pharo Smalltalk and the other JVM languages of Java, Groovy or Ruby.
    • Callable / reusable as a bean entity. This is currently proposed using the XMLRPC framework to expose a RMI/ Remote proxy mechanism as in a standard distributed world. Both Smalltalk and say the Java/ Groovy end expose their respective Client-Server XMLRPC systems to talk to each bi-directionally. With the two systems proposed to be in the same box/ LAN the inherent intranet latency will not be of huge concern. We can address additional performance concerns much later down the line for servers situated in different distant LANs in a truly distributed environment and even thereof I believe the latency can work towards optimizing it to less than the true EJB style RMI.

This will instantly enable a huge win-win situation for a smalltalk works to quickly plugin to an existing mass base of Spring systems deployed over their favoured App Servers scalably and interact with the existing assets.

  • For a web world of interacting webservers, have a filter mechanism that allows the two systems to bi-directionally redirect links to each other. So a call to a link in Seaside though arrives at the Spring Server, it will redirect to Seaside/ AIDA and smalltalk server will configurably prefix the server:port and web app name prefix strings to the outgoing web page for all its links. All of this should be configured in a simple manner and through the use of configuration files in the spring stack.

Planned Work:

Stage I:

Currently Spring supports a horde of features that are extremely useful in the larger enterprise context but the minimum that I would intend to start and complete as a proof of concept and is usable as a start point are:

  1. Filter adaptor to redirect calls
  2. Bean transparency: bean definition has the extra tag to identify it as Smalltalk bean and have both singleton and prototype capability to begin with.
  3. Integrate XMLRPC module as a scalable unit that can be used more pervasively. ( The issue of datatypes limitation and various other critical note not withstanding, it is far more performant, easy to adapt to than WS Stack. The CORBA/ RMI alternative is a complexity challenge not alluring currently. JNIPort/ Redline Smalltalk will need to mature and again will themselves present a complexity challenge, but perhaps the best alternative currently on a longer term. Alternatives will be explored as we move on to ensure the most performant mode to channel the Smalltalk-Java communications transparently for an end developer)
  4. Pharo Smalltalk linked to the maven/ ant build script to be startable headless/ with UI as required for runtime deployment/ development. Make it integrated to the environment stack of the spring world
  5. Integrate the Smalltalk code management through SVN to have a common code management mechanism
  6. Integrate the build, Unit test mechanism through hudson borrowing from the existing work in that respect.

I guess this much with a small change here n there .. as we go ahead shall be adequate to be a usable proof of concept.

What do I have currently: ( Will update this as I go ahead )

  • PoC on Filter adaptor
  • PoC on XMLRPC
  • PoC on the ant script to invoke PharoUsing Groovy primarily for all the PoC works.. to utilize the power of dynamic behaviour on the JVM side to the maximum, this can be easily converted to Java where required.

    Need to take it from this point onwards to a full blooded implementation, I can argue for with an enterprise to adopt.

Comments, suggestions… ?