general, ObjectStudio8

Twitter for ObjectStudio

December 4, 2009

James just posted a new video.

It’s about the new Twitter code in the public Store repository and how to use that in ObjectStudio 8.

The code was not specifically developed for ObjectStudio, but since we share now the same base as VisualWorks, we can share the same code.

It seems, that more and more applications have an interface to facebook and/or twitter. According to some users, those sites are going to take over marketing in the very near future.

We sure live in interesting times.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

String Concatenation vs. Streams

December 4, 2009

I've seen several ObjectStudio applications, that do heavy String manipulation. Most of the time, String>>+ is used to concatenate two strings.
This method is pretty expensive. Like an Array>>add: a new String is created and both Strings are copied into.
Especially inside a look, this overhead of creating and destroying temporary instances just adds up.
Instead of String>>+ or String>>, I recommend to use Streams.

IMHO, the easiest way to create a WriteStream is
writeStream := String new writeStream.

In order to prove my statement, I rewrote String>>breakUsing: using Streams.
Before:
oldBreakUsing: aString
    | ans subpart |
    ans := OrderedCollection new.
    subpart := ''.
    self do:
            [:ch |
            (aString includes: ch)
                ifTrue:
                    [subpart notEmpty ifTrue: [ans add: subpart].
                    subpart := '' + ch]
                ifFalse: [subpart := subpart + ch]].
    subpart notEmpty ifTrue: [ans add: subpart].
    ^ans asArray


After:
breakUsing: aString

    | ans subpart |
    ans := OrderedCollection new.
    subpart := String new writeStream.
    self do:
            [:ch |
            ((aString includes: ch) and: [subpart notEmpty])
                ifTrue:
                    [ans add: subpart contents.
                    subpart reset].
            subpart nextPut: ch].
    subpart notEmpty ifTrue: [ans add: subpart contents].
    ^ans asArray


The test is very simple:
Time millisecondsToRun: [100000 timesRepeat: [
 'abbbbbbbbbbc-dfffffffffffef-gggggggggggggggghi-jjjjjjjjjjjjkl-mmmmmmmmmmmmno-ppppppppppqr-stu-vw-xzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyz' breakUsing: '-' ]].


Time millisecondsToRun: [100000 timesRepeat: [
 'abbbbbbbbbbc-dfffffffffffef-gggggggggggggggghi-jjjjjjjjjjjjkl-mmmmmmmmmmmmno-ppppppppppqr-stu-vw-xzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzyz' oldBreakUsing: '-' ]].


The new code takes 1683ms vs. the 6148ms it took the old implementation to run.
Now I know, ObjectStudio still uses String>>+ all over the place, but when something catches our eye, we try to change it.
Maybe you can tell us, which area is especially painful for you?


posted by Andreas Hiltner

general

Snarl, Growl

December 4, 2009

Throught the lifehacker blog, I found the following two services:
Snarl and Growl, two universal notification servers.

What does that mean?

Well, think about some applications you have, that just linger in the background and you have to check periodically. Most of these applications like Email and IM clients have one way of notifying you, when something happens. But all of those nottifications are individual and there is no central location, where you can decide the duration, the style and maybe even log those events.

Apple uses Growl for quite some time now. Rather than implement your own notification service and struggle to make it just like the user wants it, simply send a message to the notification service and let it handle the UI. Firefox for example sends out a notification when a download is started or finished.

What does that have to do with Smalltalk?
I know several applications, that would benefit from such service.
Probably not your average user driven application, rather the type, where the application does a specific job without user interaction.

Unfortunately, Snarl and Growl only offer libraries for C#/C++, Ruby, Perl and some other languages, but not Smalltalk. That's why I took some time to write my own interface to Snarl. Now I can send any kind of notifications and messages to Snarl and they get displayed in the style I like and where I like them.
Especially nice, when you have some long running build scripts, so you see the stage of the build and know as soon as it's done.

If you're interested, just write an email to ost-dev@parcplace.net and we send you the small parcel.

If you have some suggestons, what we should blog about, please let us know.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?


Technorati-Tags: , , ,

posted by Andreas Hiltner

ObjectStudio8

New ObjectStudio Transcript

December 4, 2009

Jim Robertson, our product evangelist, posted how to replace the standard, read-only, transcript of OS8 with a transcript implemented in VW.


This is a nice trick, for everybody who wants a different Transcript in ObjectStudio.

Howwever, there are a few things, you need to know:


  • the Transcript only catches statements sent in Smalltalk. Messages in Primitives will, most likely not show up.

  • code that you select and excute will not know about ObjectStudio compiler, inspector and namespace

  • This new Transcript is not effected by the settings in the Settings dialog



Beside these issues, those overrides are a simple way to get more out of your Transcript.

Please tell us, if you like the idea and what you expect from a Transcript in general

Is this the right track?



Andreas

---------------------------------------------

Quis Custodiet Ipsos Custodes?


Technorati-Tags: , ,

posted by Andreas Hiltner

ObjectStudio8

Multi-Core Experiments

December 4, 2009

Since we've lost the native multithreading in OS8, we were asked how to handle multi-core CPU's.
Arden Thomas, our product manager, made some nice experiments and comments about multi-core CPU's.

You can find his comments right here

Enjoy,

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

Technorati-Tags: , , ,

posted by Andreas Hiltner

ObjectStudio8

Mapping of Network -Drives

December 4, 2009

I just hate it, when a script simply stops working, 'cause Windows lost the mapping to a network drive.
Especially, when you have to use another userid and password, so the connection cannot be restored automatically.

Recently I found a solution to my problem.

Apparently you can use OLE Automation with the Windows Script Host (WSH)

So I've written the following workspace script:
/>
| params objNetwork |
params := (Array new: 5)
                at:1 put: 'U:' ;
                at: 2 put: '\\remotemachine\Share';
                at: 3 put: false;
                at: 4 put: 'myuserid';
                at: 5 put: 'mypassword';
                yourself.

objNetwork := (OLEObject newLongTypeName: 'WScript.Network') dispatcher.
objNetwork call: 'MapNetworkDrive' params: params.

The WSH has several useful methods and properties. More information about the WSH can be found here.
Some other examples are:

objNetwork := (OLEObject newLongTypeName: 'WScript.Shell') dispatcher.
objNetwork at: 'CurrentDirectory'.


or

objNetwork := (OLEObject newLongTypeName: 'WScript.Shell') dispatcher.
objNetwork call: 'Exec' params: (Array with: 'calc').

Have fun,

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

Technorati-Tags: , ,

posted by Andreas Hiltner

general

Cool, continued

December 4, 2009

Mark Driver's recent post at gartner says

        Smalltalk is cool again.

but we say it's still cool. And thanks for noticing.

posted by Mark Grinnell

ObjectStudio8

ObjectStudio 8.2 EVOL

December 4, 2009

We're happy to announce that after some upgrades to our tools (a new version of InstallShield and a new C/C++ compiler for the VM) we have brought the EVOL (evolutionary version) process to ObjectStudio 8.2.

You can get it here:

http://www.cincomsmalltalk.com/pub/cstnc/ostudio/osnc8.2/osEvol.zip

As with previous EVOL versions of ObjectStudio classic, this is not a supported version in any way. It is a snapshot of development in progress, and as such there is always a chance that any given EVOL version won't work at all. It is intended to be a way for the ObjectStudio developer community to see some of what we're up to. You may want to verify that specific fixes you require are in there, and we would love it if you can verify that nothing that we've fixed to date has an unintended adverse effect on your code. Or let us know if something has.

Problems that are specific to behavior that is different between the EVOL version and the most recent commercial release should be reported to the ost-dev@parcplace.net  mailing list.

Enjoy!

posted by Mark Grinnell

ObjectStudio8

Camp ObjectStudio

December 4, 2009

You may have seen photos of the recent ObjectStudio meeting in Cincinnati on James Robertson's blog:

http://www.cincomsmalltalk.com/blog/blogView?showComments=true&printTitle=ObjectStudio_in_Cincinnati&entry=3399628067

http://www.cincomsmalltalk.com/blog/blogView?showComments=true&printTitle=Camp_ObjectStudio_at_Cincom&entry=3399808941

Everyone had a great time, although really, how many restaurant meals in a row can we all be expected to eat? ;-)

We were working on three current projects. The Modeling Tool on OS8 was one, although that is actually in very good shape now, thanks to the efforts of Dirk Verleysen. So we spent more of our time on project #2, the Mapping Tool. We were learning about glorp, working on the mapping tool GUI and retargeting the mapping tool to use glorp as the back end. With the Modeling and Mapping tools back and better than ever, we will have gotten back to one of ObjectStudio's traditional strengths - the ability to move very quickly and easily through design, implementation and delivery of a finished application.

Last but not least was the DLLCC GUI project. The purpose of that effort is to give a major facelift to ObjectStudio. The initial step though is to move all the behavior that lives in the many many GUI oriented primitives up to Smalltalk, using DLLCC to call the Windows API. Once complete, you'll have the same native widgets you love (and the same class hierarchy and protocol) but with everything finally visible in the Smalltalk image.  That will be our platform to move forward with adding shiny new widgets to our toolkit. This should also be of interest to VisualWorks users interested in Windows native widgets.

The other fun part of the meeting was that although it was conceived as a technical meeting only, we organized it with overviews of the current state and direction of those three projects, so we ended up getting good participation from support, marketing and STAR team as well. It felt great to get different areas of the product team all together in the same place.

posted by Mark Grinnell

general, ObjectStudio8

Hello? Anybody out there?

December 4, 2009

We haven't heard anything for quite a while now.

Nothing on the OS8 mailing list (BTW: the list still exists. If you want to subscribe, please email Jim Robertson), comments on the blog or people at ESUG.

What happened?

I know, you must be out there, 'cause we where asked to provide weekly builds for customers and publish availability on our mailing list. But who would download those builds, test and send us feedback?

It would be fantastic, to build up a community like VW who could help us to shape the product. Please help us, to help you and deliver the product, you want!

If you don't want to post your ideas to the mailing list, send them to Arden Thomas (Product Manager).

Any ideas welcome!

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

Technorati-Tags: ,,

posted by Andreas Hiltner

general

Google Desktop hangs MS compiler (cont'd)

December 4, 2009

To my surprise, Google contacted me the day after my posting. Apparently I must have triggered one of their keywords, or there really are people, reading this blog. ;-)

Anyway, they asked me to send them more information, which I happily did.

Maybe we see a new version of Google Desktop soon, which has this problem fixed.

I was just happy with that reaction. They could just have ignored it, too.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

private, cell phone, service

Net10Wireless is @#$%!

December 4, 2009

I usually don't use this blog for private thoughts, but this seems to be a never-ending story.

After I've moved to the U.S., I bought one of those pre-paid cell phones from Net10Wireless. Naive as I was, allowed them to charge my account each month the minimum amount to keep the phone in service. Phone service was o.k and I was happy.

After we've build our credit history, I've switched to another service provider and cancelled the contract with Net10Wirless.

How naive I was!

Net10Wireless continued to charge my account, even after several calls to their so called 'Service-Center'. It takes you quite a while to get there, then they ask you to 'hold for a minute' they need to check something on my account. I tried to explain my problem to three different service reps and I still got charged!

Does anyone know a good lawyer?

Any ideas, what else I could do?

I'm really @#$%!

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

general

Google Desktop hangs MS compiler

December 4, 2009

We finally upgraded our compiler we use for ObectStudio8 from VisualStudio 6.0 to VisualStudio 2008. In that process we moved away from plain makefiles and used the project files generated by the IDE.

Then I wrote a build script for our automated build machine. What could be better than to use MSBuild? It understands the project structure of VisualStudio, recompute the dependencies and it can use all available CPU's.

The only problem I had was, that the sub-process cl.exe (the compiler itself) would hang.

After debugging the compiler (something I try to avoid usually) I found the culprit. MS Support finally confirmed it.

Google Desktop is to blame!!

The DLL GoogleDesktopNetwork3.dll is somehow injected into the compile process and while it's loaded, does something to reinitialize RPC and waits for the global RPC critical section. The compiler uses RPC to communicate with other processes and tries to load rpcrt4.dll, which blocks, because GoogleDesktopNetwork3.dll:DllMain is not finished.

A typical deadlock situation! It's called LoaderLock.

Microsoft already has a couple of pages written about that situation and what you should and should not do during the DllMain call.

Maybe someone at Google should take the time and read those?

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

Smalltalk, general

Smalltalk Solutions 2008 is over

December 4, 2009

It was great to be at Smalltalk Solutions 2008.

Not only did we see lots of interesting talks, we had quite some fun. Just to talk to other Smalltalk enthusiasts and exchange information was great. It doesn't happen too often, that you can talk to almost 100 people, who share your passion.

Unfortunately we didn't see a lot of ObjectStudio users.

What does it take to get you guys out into the public?

The people on the OS8 mailing list are more passive listeners, than active participants. (BTW: the list still exists. If you want to subscribe, please email Jim Robertons)

Please tell me, what we can do, to interest you in such a conference?

ESUG conference in Amsterdam is coming soon and one of the ObjectStudio engineers will be there and even talk about his work. Are you going to be there?

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

general

A new machine

December 4, 2009

After being stuck with a "temp" machine for about two years, I finally got a new laptop.
Now, everybody knows, how much time it takes to configure the new machine. You need to install applications, find the licenses, etc.
Especially developer are very picky and don't take the standard configuration.
Using Windows Easy Transfer, Windows Vista makes it easy to transfer files and settings from one machine to the other.

But Windows Easy Transfer Companion can do even more. It can transfer entire applications, settings, licenses and all!
The program is not perfect, but it does about 80% of the applications. (your mileage may vary)

It is big help to get a new machine up and running in minimal time.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?


Technorati Tags: , ,

posted by Andreas Hiltner

ObjectStudio8

ObjectStudio 8.1 NonCommercial

December 4, 2009

Just about one week after the release of ObjectStudio 8.1, we're happy to announce the ObjectStudio 8.1 NonCommercial version.
You can download it from here.

The functionality is exactly the same to the commercial version. The licensing is different and you don't have access to the Cincom Support Center.

If you just want to take a glimpse into the world of Smalltalk, you cannot go wrong here.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

Technorati Tags: , , ,

posted by Andreas Hiltner

ObjectStudio8

Vista Certified!

December 4, 2009

ObjectStudio 8.1 is finally Vista certified.
To describe the last few weeks as "not easy" would be an understatement. In order to pass the certification, we had to make several changes to the product.

The worst part of it was the installer itself. Even with a tool like the latest InstallShield, it was a tedious and error prone job to create the final installer. Restrictions to separate data and program is nothing unknown, but MS Vista really enforces the problem now.

Each EXE had to contain a manifest file and had to be digitally signed, each DLL has to be signed too.
Who knows ObjectStudio, knows that we have a lot of DLL's and several EXE's. Some of them are contributed from our partners. Unfortunately we could not include those contributions into ObjectStudio any more. Since we don't own such DLL's, we cannot sign them. But that's one major requirement of the certification process.
So, if you are a partner and want us to include some of your code, please contact Jim Robertson. He can tell you what to do.

Beside the certification, we included lots a bugfixes and changes into the product. OS8.1 is based on the current version of VisualWorks and can use all the updated packages.

I know, the last post was more than 4 month ago. We promise to get better! If you have an idea, what we should blog about, feel free to put that in the comment down here.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

Technorati Tags: , , ,

posted by Andreas Hiltner

general

Happy Holidays!

December 4, 2009

We wish everyone
Happy Holidays,
a Merry Christmas
and a
Happy New Year 2008!

posted by Andreas Hiltner

ObjectStudio8

New Debugging Support

December 4, 2009

Since Friday last week, Cincom offers a public symbol server for Cincom Smalltalk.

To use that, you have to set the environment variable _NT_SYMBOL_PATH. In order to use our debugging symbols, you have to set the variable to the following value:

        _NT_SYMBOL_PATH=SRV*<local directory>*http://www.cincomsmalltalk.com/downloads/symbols
e.g.
      _NT_SYMBOL_PATH=SRV*c:\dev\symbols*http://www.cincomsmalltalk.com/downloads/symbols

There are many examples how to use the symbol server on the web. Just search for them. Any MS debugger uses that variable to download the symbols needed for the debugging session. Of course, you can use the MS symbol server at the same time, which helps a lot, when debugging API calls. Your debugger should find the necessary symbols automatically, even for patch builds.

We offer this service for ObjectStudio 7.1.2 and newer. Over time we will extend this service and include the VisualWorks EXE and DLLs.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

Stress-O-Matic

December 4, 2009

Jim Roberson recently published a scaling test of Seaside on VW7.6
Now I wanted to show, that you can write a stress tester on your own in ObjectStudio.
For this, you don't even need ObjectStudio8. We make use if an OLE objectcomponent 'MSXML2.XMLHTTP'

Let's assume we have a controller with 3 entry fields.

  • one for the URL
  • one for the number of iterations
  • one for the delay between the calls

During the openInitialization we instantiate the OLE object and get the dispatcher

    http := (OLEObject newLongTypeName: 'MSXML2.XMLHTTP') dispatcher.

The interesting part is, how to call the methods. Well, 'interesting' is not the right word, since ObjectStudio does all the right things for you.
Here is the code:

    sendHTTPRequest
        | resp url |
        url := efURL getValue.
        url isNilOrEmpty ifTrue: [ ^self ].
        http call: 'open' params: (Array with: 'GET' with: url with: false).
        http call: 'setRequestHeader' params: (Array with: 'If-None-Match' with: 'qwerty').
        http
            call: 'setRequestHeader'
            params: (Array with: 'Cache-Control' with: 'no-cache,max-age=0').
        http call: 'setRequestHeader' params: (Array with: 'Pragma' with: 'no-cache').
        http call: 'send'.
        resp := http call: 'responseText'.


You can put all sorts of tests in there, measure the time, etc.
It just shows again, that you should know your platform and what's available.
Sometimes it saves you a great deal of time and effort.


Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

Smalltalk

OutputDebugString

December 4, 2009

Most Windows programmer already know about the API OutputDebugString.
But with Cincom Smalltalk you can combine the power of OutputDebugString with the power of MethodWrappers.

What are MethodWrappers?

MethodWrapper is a class, which wraps compiled methods in other classes.
Each subclass of MethodWrapper does something specific and my subclass calls OutputDebugString with the receiver, the selector and the arguments. These calls can be made visible by a tool like DebugView, which can be downloaded for free.

But what's the advantage to just writing a log file?
Well, first of all, you can follow the output live, while testing your system.
Second, you could enable (install) those wrappers at your deployed image, use DebugView to connect to the computer and diagnose the system at runtime.

Sometimes that saves you hours of going back and forth with the end-user.

You can find the parcel in the public Store repository, called "OutputDebugPackage".

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

DLLCC vs. Generic DLL Interface

December 4, 2009

Everyone who has worked with ObjectStudio over the last years, knows how difficult it is to connect to an external DLL. Especially function calls using structs or pointer to structs are very complicated and difficult to handle.
Sometimes you had to know more about C and memory alignment, than Smalltalk to get it to work.

In ObjectStudio8 we now have access to DLLCC. This makes it much easier to deal with external function calls.
Something like

    (Array new: 2)
            at: 1 put: (VString passedBy: #reference fixedSize: self userNameLength);
            at: 2 put: (VDWord passedBy: #reference).
    self newProcedureNamed: (self funcNameFor: #GetUserName)
            paramVars: params    callingConvention: #C returns: (VDWord new).




can be converted into something like

    <C: BOOL GetUserNameA (LPTSTR lpBuffer, LPDWORD lpnSize)>

which is basically a copy of the definition on MSDN or a header file. Of course the data types have to be declared first, but that works pretty much the same way too.

DLLCC even enables us to use blocks as callbacks to C function calls, so that we can call functions like EnumWindows() without writing a single line of C.

Now we're in the middle of improving the performance and capabilities of DLLCC together with the VM team. If we get the performance we desire, you'll see more and more primitives rewritten in Smalltalk.
And that's what we want, isn't it?

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

HTTPParsing broken in OS8!

December 4, 2009

During Jim's tests with Google API and my own tests with the Google Desktop, we found that HTTPParsing was broken on OS8.
Unfortunately one of our overrides, EncodedStream>>skip:, is to blame here. The solution is pretty easy and actually my favorite one, you eliminate the override and restore the original code.
Thanks to Martin Kobetic, who found the problem last week during 'Camp Seaside'.

Currently we're working on updating OS8 to run on VW7.5.1, which is not an easy task. The new platform is still a moving target. We need to keep up and fix our own problems at the same time.
The positive side is, we run a lot of tests to ensure backwards compatibility.

Have fun,
Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

general

Seaside

December 4, 2009

This week, I'm at a Seaside workshop.
The framework looks very interesting and I can see, that you can be very excited about that.
Does it work with ObjectStudio8? No, not yet, but I hope, we can add ObjectStudio8 as a supported Smalltalk 'flavor'.

I still have to get used to the fact, that the HTML is now part of the code, not template based as the CMS (Content Management System) I worked with so far. There is a lot of 'magic' going on to support callback blocks, continuations, etc. and this 'magic' makes this system very powerful. Everything seems to be very organized and simple. The architecture really encourages components, which then could be reused.

So far it's very interesting. Let's see, if there are more surprises to come.

Please check out the website, wouldn't it be something for you? seaside.st: Home

posted by Andreas Hiltner

ObjectStudio8

How to get data from OLE objects?

December 4, 2009

One of our clients recently asked, how do I get data from an ActiveX control?
Unfortunately, the approach of the generic DLL interface doesn't apply here, so the results are not stored in the calling parameter array.
Now, if a function declares some output parameter, you need to use the class Parameter, to get to the values
example:

    | disp paramsArray |
    disp := OLEDispatcher new: 'MyActiveXProject.Name'.
    paramsArray := Array
                            with: 'Input1'
                            with: 'Input2'
                            with: (Parameter type: (OLEConstants at: #VT_BSTR) value: String new)
                            with: (Parameter type: (OLEConstants at: #VT_BSTR) value: String new)
    disp call: #'SomeFuction' params: paramsArray

The value of those parameters contain the Smalltalk objects, marshaled in after the call.
Please check the global OLEConstants for any other data types you might use.

A customer just posted the following code, which apparently works with his ActiveX control:

    BSTR TestNum(
                 [in] BSTR p_sInput,
                 [in, out] double* p_nOutput);



can be called using the following code:

    X3 := VFloat passedBy: #reference.
    X3 allocate: (X3 fixedSize).

    S := OLEStaticDispatcher new: 'saskia_adr.ADR'.
    P := Array new.
    P add: 'Hallo'.
    P add: (Parameter type: (OLEConstants at: #VT_R8) value: (X3)).
    E := S call: #'TestNum' params: P.


Have fun,
Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

ObjectStudio 8 Released

December 4, 2009

FinallyOS8 is released!

Please see Jim's Blog entry. He describes the features and possibilities of OS8 very well.

It will not be the end of the blog. We might re-structure the blog a little and write about classic ObjectStudio as well as general Windows development as we see it, tools inside and outside of Smalltalk. If you have a particular request, please don't hesitate to write to the OS8 mailing list

I hope, that a lot of you will join us on the OS8 mailing list and we get a closer, active community of ObjectStudio users together. See you there.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

Build problems

December 4, 2009

Right during the "crunch time", our build machine suddenly generates weird results. All of a sudden, we get errors, during packaging. An uninstall and reinstall (including various reboots) of the software didn't help either. Fact is, we cannot produce an OS8 build on that machine any more.

Unfortunately, we converted the backup build machine into a Vista test machine. The harddrive was not big enough to hold everything we need for our build and Windows Vista at the same time.

Now we rebuild the original build server, thank god for the backups, but the whole process will cost us at least today (I don't even want to talk about last weekend). 

After that we should be good again and deliver OS8 RC1 as soon as we can.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

OS8 event in Switzerland and Germany

December 4, 2009

Last week our marketing and sales department set up a little event to promote ObjectStudio 8 in Germany and Switzerland. All existing Smalltalk customers were invited.

We had one German-speaking event in Zueruch and one English- and one German-speaking event in Frankfurt.

Customers throughout Europe used that chance to get the latest information about ObjectStudio 8. Georg Heeg and I had the main presentations. Georg presented the history and some of the architecture, while I had to demonstrate, how easy it is to port from ObjectStudio 7 to ObjectStudio 8 and the benefits of doing so. Even quite some VW users saw OS8 and liked it.

We got some good feedback from customers and their needs. In the limited time we have now, release is by the end of July, we try to address as many as we can.

Right now, we work full steam towards the release. Our Bug-tracking-system helps us to keep an overview of all the different problems with OS8. The OS8 mailing list and our internal tests help us to prioritize those bugs and schedule our work around that.

This way, I hope, we can deliver a quality product in time.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

New Build, again

December 4, 2009

The OS8 event in Switzerland and Germany was very nice.
It was great to see all the customers again.
Thank you for all the input we've got from your side.

We were able to address some of the issues already and generated a new installer.
You can download it form ftp://ftp.cincomsmalltalk.com/pub/OS8/ObjectStudio8a.msi
MD5 has is 6d4ddb6e15092ab0dc1775ecaf391c89 *ObjectStudio8a.msi

Please let us know, when you encounter any problems.
We did not have time to address some issues like the FormTabList. That one requires some heavy profiling. Please allow us some more time for that.

The problem with FormButton not getting highlighted when tabbed into, is resolved.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

HTML Help

December 4, 2009

We finally support HTML Help in ObjectStudio8.

The class Help contains some class methods, which allow to access CHM (Compiled Html Help) files. All the primitives are gone.  Even the processing of the 'F1' key is now handled in Smalltalk (Form>>helpKeyPressed). You can change each of those methods or add new ones to implement your desired help behavior.

You can download the HTMLHelp Workshop from here (http://www.microsoft.com/downloads/details.aspx?FamilyID=00535334-c8a6-452f-9aa0-d597d16580cc&displaylang=en)

Most Windows applications have made the transition from traditional help files to the HTML Help. With Windows Vista, Microsoft insists, that you use CHM files onle. Not more HLP files here.

I know, the request to support HTMLHelp was a long outstanding request. Now ins OS8 we finally implement it.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

InstallShield

December 4, 2009

For our release in Summer '07, we decided to use the Microsoft Installer (MSI) rather than the old VW installer. After all, ObjectStudio runs under Windows only. So why carry all the overhead of a platform independent installer.

InstallShield 12 is our tool of choice. We have used older versions of InstallShield in the past, so we were pretty confident to write the new installer in no time.

Unfortunately it happened slightly different than we've planned.

The installation went just fine. We then spent several hours using the Project Assistant to define our Features and add the files into the right directories. After adding shortcuts, registry entries and environment variables, we thought to be ready for a build. The build ran through, but generated way more than 550 errors!

Some errors told us, that the EXE files did not include a manifest file and are not digitally signed. When we checked the files from the explorer, they were just fine.

The tool told is, some parameters in the SQLBrowser are not set. We don't even use the SQLBrowser, since we don't configure ODBC or install any kind of database.

The WindowsDirectory setting is still identical to the original MSI setting. (So?)

The registry keys we've defined should be handled through ClassIDTable or some other table. These settings have nothing to do with ClassID or any other generated ID.

All of a sudden, InstallShield just died and rendered the whole binary project file useless. 6 hours of work down the drain. Of course we saved early and often, but I did not make backup copies of every single step.

So we tried to work through the problems one by one. InstallShield itself is pretty slow. We've cut a lot of files, but still it takes about one minute to switch to a 'Files and Folder' view. If you double-click on an issues, InstallShield takes you to some obscure table and at least I found those references pretty cryptic.

At least the support seems to be up-to-date. We had a call today and they solved at least one problem. For another problem, we actually had to send in a test case. Mark then sent various email describing each individual problem category. Let's see, if they can help us too finalize the installer.

Quite frankly, I never thought we'd need more than a few hours to finish the installer. Now we're in our third week and no end in sight.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

Another Installer

December 4, 2009

If you're part of the OS8 mailing list, you should have seen a posting from Ian.

He found a problem with the current installer. Long story short, we've missed a small but crucial directory.

If you have downloaded the OS8 installer already, please download and install again. If you haven't, lucky you.

The link to the file is still the same. As I write this posting, the upload is not yet finished. So please try again in a few minutes.

Thank you

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

Finally, a new release

December 4, 2009

The last few weeks were pretty stressful, but we're pretty happy with the outcome so far.

We've digitally signed all the DLL's and executables and embedded the manifest file into the executables as well. No you can see, that those DLL's are in fact from Cincom Systems and nobody has messed with the content.

Especially user of Windows Vista will see the difference here. That security model can get quite annoying, when you try to execute unsigned code. 

In addition to that, we've created a new installer.

The new installer uses the Microsoft Installer and consists of just one single .msi file called "ObjectStudio8.msi"  (You can download the latest copy from here)

This new installer contains everything you need to run ObjectStudio 8. All the virtual machines, the image ans quite a lot of parcels are copied onto your machine during the install. The installation of VisualWorks is no longer a prerequesit. So even customers, who just want to have a look at ObjectStudio 8, can now do that, without installing VisualWorks first.

For all VisualWorks users, yes we know, that this is duplicate code, but the new installer is supposed to install every possible component for ObjectStudio 8.

In the future we will see some changes and refinements here. We will create several components and give the user a choice to install them or not.

We've not just spend our time with the new installer, but also fixed quite some bugs in the system.

Please give this one a try and report all issues on the regular ObjectStudio 8 mailing list.

(If you are not on the list and want to get on, please feel free to email me or our product manager, Jim Robertson, so we take care of that)

 

Have fun ...

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

OS8 mailing list and archives

December 4, 2009

We've just added more information about the Cincom Smalltalk Developer Program to our website.

You can see, which programs are available and how you subscribe to the ones you're interested in. There is even a link to the archives of each mailing list you can search for more information after you've registered.

Have fun ...

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

Ready to rumble!

December 4, 2009

The code looks good, the tests run fine, OS8 is ready for rollout.

The CD needs to pass all our tests (Install, Uninstall, Icons, Shortcuts, etc), then we go into production. Unfortunately this will take a little while. We try to be thorough and find the problems before we build the CD, but somethings just slip through.

But I'm very confident, that we have a good CD real soon.

After the beta release, we will provide regular updates and fixes. Please watch our mailinglist.  All problems with OS8 should be reported there as well. It's not an official product after all.

If you're not on the mailinglist and you want to participate in the OS8 beta program, please write me a short email.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?  

posted by Andreas Hiltner

ObjectStudio8

new Build

December 4, 2009

Hi,

the release of our public beta version is getting closer.

Today wWe got a new build for OS8.


ftp://anonymous@ftp.cincomsmalltalk.com//builds/lulu/CST07_mar07.1.iso
        size: 625801216        md5sum: '83b3a20b5f6f13b1c174353f76d6d8ae'

You can download it and try it, if you want.
As usual, quite a few bugfixes made it into that build.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes? 

posted by Andreas Hiltner

ObjectStudio8

Replication

December 4, 2009

We agreed in our planning meeting last week to replicate the content of our OS8 repository to the Smalltalk main repository.

Well, here I am now after three days and still replicating. ObjectStudio 8 is not just another simple package. It contains another Smalltalk dialect. I'm pretty positive to get it done today or latest by tomorrow morning. I'm glad, that it doesn't take that long for every future update. This is just the initial load of our work we did the last 1.5 years.

What are the benefits? Well, first of all, it is much more visible to our development team. Now the whole Smalltalk engineering team can download and test OS8, not just the OS8 team.

Second, the build process can be automated. I don't have to assemble the right patches, file out a SmalltalkArchive. We only need to specify the packages and versions and they are loaded in automatically. At least that's the plan. 

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

Designer and Runtime Packager

December 4, 2009

We just finished the changes to the FormEditorController a.k.a. Designer.  You can now decide whether you want to store the generated controller in the image or on disk.

We also changed the RuntimePackager to work now with the WPENFINController. Before, this controller was left open. If you closed it, the whole image closed. Now with those changes to teh RuntimePackager, we can generate images with out the ObjectStudio main controller open.

This latest code will be available on the next build and after. As soon as the build is done and ready for download, we post to the various mailing lists.

Another good reason to sign up there, isn't it?

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

Designer Integration

December 4, 2009

It's almost time for the new release. ObjectStudio 8 is not released as a supported product, but we'll put the beta version onto the CD. Everyone can now try ObjectStudio 8 and participate in the beta process.
(Please see the announcements here, on Jim's blog or the OS8 release notes)

The only (crucial) thing missing is the Designer integration into the packages and Store. We're working on that one and are almost done, but we will not make it in todays (Feb 19) build.

Today we create new files on the fly and file them in. Unfortunately when we file in a new class, that class gets put into its own package and not the package, where it is defined.

We'd like to create a nice interface, which we can use not just for the Designer but for all code-generating Tools in ObjectStudio. Even if we don't have all of them right now.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

general, ObjectStudio8

Logging

December 4, 2009

Sometimes it is very helpful to instrument the code with some output statements
and log that to a file. in ObjectStudio we use the statement #out, which can be
sent to a String and writes the content to the transcript. If you want to write
the content of the transcript to a file, you must specify the '-o' parameter at
the command line (e.g. 'ostudio.exe -iostudio.img -ologfile.txt').

Now with OS8 we introduce a new API:
    

GlobalDictionary>>setProgramWindowLog:


this way you can set the log file from Smalltalk and don't have to specify it at
the command line. The advantage is, even for longer running applications you can
now generate new log files every day. If you generate the name of the log file
and for example, add a timestampe to make sure, you get the most information
from your code.

The only thing you need to keep in mind is, those files get overwritten! The
code does not check, if the file already exists an appends the output. Instead
the file starts over again. It is the engineers reponsibility to make sure, you
don't overwrite your own logs. Just as the regular '-o' statement does too.

So, be careful.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

general

GeoLocation for IP Addresses

December 4, 2009

I have my own server hosting my homepage and several other services. Sometimes
it gets spammed with a lot of HTTP requests, or a lot of emails coming in from
just a few IP addresses.

Usually nothing happens and I simply wait until the spammer/script-kiddie gets
bored. Once in a while the attack is interesting enough to follow up. The one
thing you usually have from such an attack are a bunch of addresses and curious as
I am, I want to find out, where they come from.

Of course, I was just too lazy to type several hundred different addresses, so I looked for
a much easier solution, in Smalltalk of course.

The website http://geoiptool.com matches a given address to a location. All I
need to do, is to feed the addresses to the website and get the location. VW and
now ObjectStudio8 have just the right classes to make it really easy.

At first we need an HTTPRequest to be sent to the url. The answer contains the
location information in an XML like format. After some parsing, I can generate
the GeoLocation object.

The main part of the really simple class is the followig code.

getRequestFor: aStringOrNil url: url 
| request tmpUrl |
tmpUrl := aStringOrNil isNil
ifTrue: [url]
ifFalse: [url , '?IP=' , aStringOrNil].
request := Net.HttpRequest get: tmpUrl.
request userAgent: 'Mozilla/4.8 [en] (Windows NT 5.1; U)'.
^request


the setup for the XML data is done here:

geoLocationOfIP: aStringOrNil 

| result doc value |
result := (self getRequestFor: aStringOrNil) execute.
doc := WebServices.WSSAXDriver on: result value decodedValue readStream.
value := doc root elementNamed: 'marker'.
^value attributes


If somebody is interested, you can get the small parcel from me or wait until I
find out, how I can upload parcels to the server :-)

 

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

general

Windows Debugging Tools

December 4, 2009

Finding and fixing bugs on Windows is not always easy.
Everyone, who has to support Windows application can tell many many stories about problems they encounter.
With ObjectStudio, we get quite a lot of such problems. Sometimes they are easy to fix, especially if the application crashes right after it did something bad.
Unfortunately (well, good for you), most of these problems are gone now. The remaining issues seem to be a little tougher.
Just recently we got a report, that ObjectStudio crashed, but only on on particular machine and only in production.
Now I don't want to go into too many details here. I just want to tell you about some tools, which make it easier for engineers to analyze the problems.

Though recently aquired by Microsoft, the tools on sysinternals .com are still free and always worth a look.

My favorites are the ProcessExplorer, the FileMonitor and TCPView. With these tools, you can see pretty much what's going on in your application, Which files and TCP/UDP ports are open and connected, even which DLLs are loaded and from where.

Microsoft itself offers free tools to debug applications on Windows. You don't need VisualStudio installed on evey machine. Just download and install those "Debugging Tools for Windows", setup the symbol server and you can debug even better than with VisualStudio.

WinDBG and cdb are full blown debuggers, capable of analyzing every problem. You can even use them to analyze some postmortem dumps.

ADPlus lets you specify debugging commands in a script, so you can create some dumps on a remote machine without any other tools installed.

We used ADPlus a few times, mostly successful, to create dumps at certain stages. Those dumps helped us to recreate the exact problems and finally find a fix for it.

It needs a while to get used to the tools, and quite frankly, some of them are not easy to understand, but once you get the hang of it, you'll see how powerful they really are.

So, if you have your own Windows application/DLL and you are in need for some excellent tools, check either sysinternals.com or Microsoft.

Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

ObjectStudio8

Inspector and other tools

December 4, 2009

upon request from a customer, I've integrated the VisualWorks Inspector (Trippy) into the ObjectStudioi Tools.

You can now hit CTRL+Q in the Workspace or even the TreeInspector and Trippy will open up on the selected object. Of course you can use the context menu as well.

Other tools from VW are integrated into the ObjectStudio Workplace as well.

The Process Monitor replaces the ThreadBrowser and the ParcelManager and VisualLauncher are available in the Tools Menu on the Workplace.

The integration makes it easier for everyday tasks, like browsing and loading applications.

However, if you  work with ObjectStudio and VisualWorks tools at the same time, we recommend you open the VisualLauncher. Most of the tools were designed to put menus into the Launcher or write more information to the VW transcript.

We will not have the luxury to write an entire new Launcher/Workspace for OS8 and i really think, we don't  need one now.

Andreas 

posted by Andreas Hiltner

general

Happy Holidays, Merry Christmas and a Happy New Year

December 4, 2009

Cincom is closed for the rest of the year, so we wish all of you

Happy Holidays, Merry Christmas

and a

Happy New Year 

posted by Andreas Hiltner

ObjectStudio8

TreeInspector ObjectStudio 8

December 4, 2009

The TreeInspector will still be there in ObjectStudio 8. It even will take advantage of some additional VW functionality. (Thanks Vassily!)

You can implement #inspectorExtraAttributes to return an Array of Associations (or Core.TextAttributes). The additional attributes will be displayed like any other instance variables.

The advantage here is, you can add additional information to the data you already see in the inspector, views you usually need. Integers for example, show their value in hex, octal and binary.


Andreas
---------------------------------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

general

Newsgroup

December 4, 2009

do you know, there is an ObjectStudio newsgroup out there?

Thanks to the people from TotallyObjects for their time and effort.

The server is "news.totallyobjects.com" and the newsgroup is called "totallyobjects.smalltalk.objectstudio".

It would be great, if we could generate some traffic there.

We invite every ObjectStudio user to contribute and post issues, comments, etc. there.

Andreas
-----------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner

general

ObjectStudio, enfin

December 4, 2009

ObjectStudio, enfin.  (enfin: french, means "finally")

Finally we agreed to write a blog about ObjectStudio and ObjectStudio8.

Jim Robertson, our product manager, can be very persuasive, if you know what I mean ;-)

We try to blog about our work and challenges on ObjectStudio and try to keep up informed on where we're going with it. I recognize, we did not a good job here but we try to get better, promised.

Your input is more than welcome. If you want us to blog about certain issues, or have questions (no support on this blog, sorry), just let us know.

Meanwhile, I might start the blog with a few technical issues.

Andreas
------------------
Quis Custodiet Ipsos Custodes?

posted by Andreas Hiltner