Posting will be light today...
I'm on a 2 day trip to customer sites. I'll likely be posting during the evenings. During the day, I'll be visiting with customers.
I'm on a 2 day trip to customer sites. I'll likely be posting during the evenings. During the day, I'll be visiting with customers.
Here's an article of interest on the O/R topic. i first learned about Prevlayer at an XP event in Brazil; think BOSS in memory, with constant checkpointing:
A reader writes:" Persistence for object-oriented systems is an incredibly cumbersome task to deal with when building many kinds of applications: mapping objects to tables, XML, flat files or use some other non-OO way to represent data destroys encapsulation completely, and is generally slow, both at development and at runtime. The Object Prevalence concept, developed by the Prevayler team, and implemented in Java, C#, Smalltalk, Python, Perl, PHP, Ruby and Delphi, can be a great a solution to this mess. The concept is pretty simple: keep all the objects in RAM and serialize the commands that change those objects, optionally saving the whole system to disk every now and then (late at night, for example). This architecture results in query speeds that many people won't believe until they see for themselves: some benchmarks point out that it's 9000 times faster than a fully-cached-in-RAM Oracle database, for example. Good thing is: they can see it for themselves. Here's an article about it, in case you want to learn more.
Check it out.
Gordon writes on a topic brought up by Sam Ruby. Here's what Gordon said:
The most important RSS element: title. Jon Udell has said it before today Dave Winer says "Unless the RSS has a title element, it's going to be kind of goofy". And here I sit, blogging via email to Radio, creating yet another RSS item without a title. I usually try to fix it when I get home; I hate it when other bloggers don't use titles. Forget about the aggregator on the Start menu. How about putting title support into mail-to-weblog? Just look for emails that start with a title element, extract that and make that the title of the post. Come to think of it, Sam Ruby's idea to create a weblog API that simply accepts RSS items makes more and more sense.Maybe. That will involve some SOAP or XML-RPC interface to dump stuff up. While it's not hard to create such things, it is work. I really don't like the email to blog idea either - I have less than no interest in getting into the ever escalating battle with spammers. So what do I do? I have a simple Form (a BottomFeeder plugin!) which creates an URL encoded form. It then does a POST to the blog server. That meant a servlet - a few lines of Smalltalk - and a client GUI that does an HTTP POST - again, a few lines of Smalltalk. Additionally, I encrypt everything I send up that way - using Base64 encoding to handle the binary that results from encrypting. This is simple. I can send data via port 80, using simple web protocols, and not have to worry about spam or custom servers.
Rob Fahrni posts that he misses his RSS feeds while he's traveling. I don't; I'm on the road, on a slow dialup - but BottomFeeder is getting my feeds. All I had to do was fill in my proxy information, and off I went...
Rob Fahrni posts that he misses his RSS feeds while he's traveling. I don't; I'm on the road, on a slow dialup - but BottomFeeder is getting my feeds. All I had to do was fill in my proxy information, and off I went...
I had lunch with a client today - actually, a group of consultants who have outsourced work at (insert big company here). They told me that the client would ideally like to see all work done in blah, so that they could more easily redeploy developers from project A to project B. For this reason, they aren't that interested (yet) in .NET, since they don't want developers using any old language.
I think that's just silly. I bet none of that management believes that the same screwdriver can be used for all home repair jobs. And I bet most of them have a vacuum cleaner and and something like a dust buster. So why do they develop blindness with regard to development?
I don't know, but there's a related post on Meerkat today:
Artima.com has published a short article suggests that not only can systems and scripting languages co-exist in the enterprise, they can co-exist to great advantage in individual developers as well. Here's an excerpt:To me, attempting to use one language for every programming task is like attempting to use one tool for every carpentry task. You may really like screwdrivers, and your screwdriver may work great for a job like inserting screws into wood. But what if you're handed a nail? You could conceivably use the butt of the screwdriver's handle and pound that nail into the wood. The trouble is,
- you are likely to put an eye out, and
- you won't be as productive pounding in that nail with a screwdriver as you would with a hammer.
There's more; go check it out
Gordon has updated his post. There's a lot of good stuff in there - it sounds like the email problem I posited yesterday isn't a problem for his usage:
Second, I've been running email to blog for nearly a year, and I've never had a problem, for a couple reasons: I use a separate mailbox, and because Radio will download only those emails with a specific subject line, so it's doubly unlikely that a spammer would get into my blog. You could set up a whitelist, because you want to really restrict who posts. If you wanted to get really crazy with it, you could require signed messages.
Ok, I'll buy that. I was mistaking his post for the testing Sam Ruby has been doing with an open interface for comments. I still think that's just asking for trouble.
And yes, in answer to Gordon's question further down:
James says "This is simple. I can send data via port 80, using simple web protocols, and not have to worry about spam or custom servers." I won't dispute the simple part, but it does sound like he has in fact written a custom server. No doubt it's less code when written in Smalltalk instead of Java, but I'd bet that it'd be no worse implemented as SMTP. In fact, I contend that you could make it all work in bloxsom with a shell script. Of course, the Radio implementation is pretty simplistic, but the more I think about it, the more I think this could make a really nice weblogging system.
yeah, this is a custom blog written in VisualWorks. It's a pretty simple system, actually. At the moment, it's single user, but I've been meaning to make it possible to run multiple blogs off of it for awhile now. Given the codebase I have, that's going to be easy. The code is freely available too - just grab VisualWorks NC, then get an open repository account. Load the CST-Blog bundle and have a look; comments, suggestions, and help welcome ;-)
The newest version of BottomFeeder delivers updates on demand. Older versions delivered patches at startup, but I decided that an on demand, user controlled system would be better. What I have now is a system where the application (BottomFeeder) loads at startup - it's a parcel. That means that I can deliver either patches, or full replacements, and have BottomFeeder detect that new updates are available, and offer them to the user. How does that work?
Well, the first thing to do was to set up a manifest of available updates on the server. I have an XML file, containing a manifest of all available updates. The updates are a collection of objects that look like this:
Smalltalk.Patch defineClass: #ComponentDefinition
superclass: #{Core.Object}
indexedType: #none
private: false
instanceVariableNames: 'parcelName parcelFilename version oldVersion releaseDate vwVersion isPlugin descriptiveName '
classInstanceVariableNames: ''
imports: ''
category: 'PatchFileDelivery'
so I have a description of the new stuff by release date, version, name, etc. How do I know what I already have? Well, that's pretty easy as well. Since the application is a parcel, I merely ask for the list of matching parcels (i.e., onces that match by name with the available updates) in the image, and then query for their versions and release dates. If an update is not loaded, then it's available. If it is loaded, I compare release dates and versions, making available anything that's newer. Then, if there is anything new available, a toolbar and menu item becomes enabled, allowing the user to download any or all of them. The UI for that looks like this:
The user can select any or all, and upgrade. So what happens when they do that? First, BottomFeeder does an HTTP GET to the server for the file (as specified in the manifest). The file in question is a parcel, and the code that grabs and saves it looks like this:
download: patch from: url | fileUrl client bytes response | fileUrl := url, patch. client := HttpClient new. [[response := client get: fileUrl] on: RSSFeedManager netExceptions do: [[:ex | | error | error := RuntimeError appError: ex. RuntimeErrorLog addError: error. ^false]. bytes := response contents. self savePatch: patch bytes: bytes. ^true savePatch: parcel bytes: bytes | file dir | self inProcess isPlugin ifTrue: [[dir := 'plugins'] ifFalse: [[dir := 'app']. file := dir asFilename. file exists ifFalse: [[file makeDirectory]. (file exists and: [[file isDirectory]) ifTrue: [[| stream | file := file construct: parcel. stream := file writeStream binary. [[stream next: bytes size putAll: bytes asByteArray startingAt: 1] ensure: [[stream close]].
Once I get the data, I simply extract the content and then drop the binary data to disk into the appropriate directory. Once it's there, I simply load the parcel. Since I haven't stripped the compiler out of the BottomFeeder runtime, that all works pretty well.
What does this allow me to do? It allows me to offer very simple upgrading to BottomFeeder. There's some additions to this as well - I plan to offer the option to just download, but not actually load, the new component. That way, someone could grab the new stuff, but backup their local feeds before upgrading.
The interesting thing is, this is a generic update capability. There's nothing specific to BottomFeeder here; take a look at the PatchFileDelivery package in the public Store. Other than application level error handling, the code is entirely re-usable. It uses a few very simple mechanisms:
Simple and easy to implement.
I've just extended my blog tools to allow for deferred posting - so I'm writing this while on the way home from Atlanta at 30,000 feet. Pretty Cool
At the same time, I'm catching up on my feeds, since BottomFeeder has handled offline viewing for a long time now. as I'm doing that, I come across this post on the Fuzzy Blog:
For myself, I see Zope's reliance on its built in object database as a huge drawback. And I know lots of people will disagree with me on this but I'm a professional. I want my tools to be reliable. And I simply don't trust object databases. Period. I've worked with everything from the old fashioned Smalltalk/V image files which crashed to ObjectStore which crashed to Poet which crashed. And don't even get me started on the lack of utilities and tools for fixing crashed object databases.
Huh? Sure, tools fail. So do RDBMS' - I've seen truly horrid problems with corrupted database files. IMHO, this is not a reasonable prejudice. The objection to a lack of tools - yes, that's reasonable. Certainly there are far more reporting tools (etc) for RDBMS products than for OO databases.
At the same time, it's kind of odd that he calls Smalltalk's image a database. Sure, it holds objects, and could be used as a database. At the same time, one typically stores the source code in a source code control system, and one rarely uses the image as a db at runtime.
As for trust, heck - I trust my Smalltalk image a whole heck of lot more than I trust SQL Server. When was the last time you heard about a network exploit against VisualWorks?
I posted on the prevlayer concept here. That generated this comment from Alan Knight;
I'm pretty skeptical that this would actually work in any sort of real situation. Apart from data that won't fit in RAM, no generalized indexing (it's fast as long as you don't have to search all of memory for something), race conditions and deadlocks in access to data, and the absence of transactional semantics, it should be fine. Except for all the things the relational people complain about with OODBS, like no language-independence, no program or version-independence in the data, etc.
There's a fascinating story in the Register today - apparently, Toshiba has been busy getting fuel cells to work as a power source for laptops:
Toshiba's small form factor direct methanol fuel cell (aka DMFC) can operate for five hours, generating between 12W and 20W of power and is electrically compatible with existing Lithium-Ion rechargeable batteries. It's not yet the size of a typical notebook battery, but Tosh is working on it.The fuel cell generates electricity as a by-product of a chemical reaction involving dilute methanol. Methanol can be produced easily and in vast quantities, so the fuel cell is widely seen as a very inexpensive alternative to batteries. And by generating electricity directly, it's arguably a greener technology too.
They are claiming 5 hours of battery life too. That would be cool, but I seem to recall every new power technology for laptops over the last few years claiming 5 hours. Meanwhile, my effective battery life seems to just get shorter ;-)
I uploaded a new base build for BottomFeeder last night. I yanked another one of the components we use out of the base image - and now have it loading at startup. That will certainly make it easier to upgrade it. So if you are using the 2.8 dev stream, it's likely a good idea to grab the whole base again.
This should all settle down when 7.1 ships. I'm hoping to not require a new base image after that until the VW 7.2 release time frame.
I'd really, really like to see an RSS Feed for the Smalltalk Forum on Ezboard. I try to remember to check on the forum regularly - I have it in my favorites list. Trouble is, I'm using the browser to scan favorites less and less. I really, really prefer seeing an RSS Feed....
I didn't watch Buffy last night - it was a repeat, and I was traveling back home. Still, I think the choice of which episode they chose to repeat was instructive - Joss likes to drop hints, and I think "Selfless" was a hint. A lot like the runup to the end of last season for the gang, I think.
I'd be more specific,. but I was asked to not leave spoilers.
24 was intense again - and there's only one episode left. I think I know how this is going to play out, and it's tracking some of the headlines from a few months ago pretty closely. I'm looking forward to the last episode.
There are 9 episodes of 24 left, not one. We didn't catch the very beginning of the season, and assumed it started at middnight to 1 am; apparently not.
Sorry for the bad tip
There's another WOAD meeting tonight (Washington Object-Oriented Architecture and Design). Tonight, they have two people talking about .NET. I'll be going to see what it's all about. Here's a the meeting info:
WOAD Wednesday 3/5 - .Net Architecture OverviewWhether you love or hate Microsoft, every architect needs to know about .Net . Space WILL be limited to those who RSVP .
WHAT: WOAD
(Washington Object-Oriented Architecture and Design)
WHEN: Wednesday, March 5th, 2003 at 7:00 PM
WHERE: Best Western of Rockville (in the Restaurant)
DINNER: Buffet $12.50 (includes tax $ tip - to get the space, we have to eat)
TOPIC: .Net Architecture Overview
SPEAKERS: Dion Hinchcliffe, Thad Scheer & Mike Lastort
Without a doubt the most significant software engineering achievement of calendar year 2002 was the production release of the .NET Platform and its associated development tools. This is a true statement not because .NET belongs to Microsoft; but because it was a slow year in the software industry.
Jokes about Microsoft aside, .NET is colossal and its creation was a tremendous undertaking. .NET brings the industry a new platform, new frameworks, new architecture patterns, new languages, new servers, and new development tools; all integrated and running on multiple operating systems including Linux. If you think it is just Web Services and C# then you have not begun to understand the full extent of the contribution of .NET.
Dissecting this beast is no easy task. .NET is more than a runtime, more than the Microsoft answer to Java, and more than a new way to dynamically generate web pages. .NET is a platform designed from the ground up to support scaleable distributed enterprise architectures. .NET has aggressive security controls burned into the platform and woven throughout its languages and tools. The C# language is more than just a Microsoft-ized implementation of Java. It bakes-in distributed computing, security, design by contract, and enough other things to make Bertrand Meyer (who hates all languages that are not Eiffel) complement the designers and vouch his support for the CLR (he could not quite make himself support C#).
In this WOAD presentation our speakers will introduce the .NET Platform and show its usefulness for enterprise architecture and see why they are certain C# is hands down the best software development language. They will present many interesting new capabilities offered by the platform itself (the CTS & CLR), give an overview of ASP.NET, and then demonstrate its enterprise application architecture capabilities. If for no other reason, come and see how .NET will save the Linux software development industry. Who knows? You might even see us go from a blank screen to a scaleable distributed enterprise application in 10-minutes!!!
About our speakers:
DION HINCHCLIFFE is an independent consultant and mentor specializing in recent advances in software development, architecture and infrastructure technology including .NET, SOAP, COM/DCOM, CORBA, and Enterprise JavaBeans. His specialty is the development, interoperability, deployment, and scalability of these technologies in large enterprise environments. Mr. Hinchcliffe is also a published technical author, is an occasional speaker at software development conferences, and holds various software development certifications. The clients of Mr. Hinchcliffe include T. Rowe Price Investments, where he was chief architect for a several years, as well as Nevada Power Company, National Operator Service, e-centives.com, and most recently GEICO Insurance.
THAD SCHEER runs a premium consulting company (Sphere of Influence) specializing in software architecture and enterprise systems development. He has successfully finished several large projects on-time, building the software to spec and with the best possible engineering. His expertise is with methodologies, process, software engineering, programming, and project management. He is the author of many technical articles, and an occasional lecturer at conferences.
MIKE LASTORT is a software engineering consultant with extensive Windows and web experience, including ASP, ASP.NET, C#, C , and large scale systems integration. He's had a long and varied consulting career; clients have included MICROS Systems Inc where he was principal engineer, Manugistics, the Department of the Treasury, Ruesch International, and is currently consulting for GEICO Insurance.
RSVP:
Put WOAD-RSVP in the subject line.
RSVP by email to cpbell@sysnet.net
Space WILL be limited to those who RSVP
Should be interesting; I'll take notes...
This is going to be a stream of consciousness thing - I'm taking notes as the talk proceeds. So on with it!
What is .NET? A whole "platform" for Enterprise Systems Not just Web Services Gigantic, "State of art"
.NET Platform (From the Bottom)
"Any language" (in practice, 3) - and, there's the fact that there are whatever limits MS imposed (type system, etc).
Base Class libraries provide all the framework classes for common stuff, including reflection, OS stuff, COM interop - etc. No CORBA support built in.
IL - it's compiled (JIT). IL sits on the CTS and is "language neutral" editor sidebar - but what about dynamic languages? Dave Simmons has posted extensively on the difficulty he has had. Even C has issues - but can run as an Unmanaged application.
Question - what about unmanaged - what's the penalty? No GC, resource management, etc. If you run unmanaged, you don't live with that. Note - this is a good thing for Smalltalk, in my opinion....
Learning Curve - How long? They say "a couple of weeks". Mind you, it's effectively an OS unto itself.
Compiling and running - compile code to an assembly. Assembly gets loaded (with platform rules (security, memory checks, etc). Application Domain created, then OS process. All managed apps are garbage collected.
Deploying - Assemblies are deployable units of software. Similar to parcels in VW, but with a lot of extra stuff - security (could be certificate based), dependencies, version identification (can deploy multiple versions to same platform - that's a cool feature. Deployment consists of copying the assembly out - like Parcels.
GUI stuff - Windows Forms stuff has not been ported. Only the web stuff really has (to different operating systems, that is). They seemed to think this is next to impossible....
A CLR will run all .NET programs in a single OS process (for performance purposes). There are Application Domains to separate things. There is a remoting infrastructure to allow splitting across multiple CLR sharing. NOTE - This is pretty much what VW does....
CLR Security Customizable, granular permissions. Role based, based on ID of the process. Also code level security based on the trustworthiness of the code itself (certificates).
Question - this sounds complex. Are there tools to help? Yes, there are admin tools for this. The security stuff can be turned on or off; there's overhead for this.
Question - NSA has not blessed .NET? Amusing, because NSA does not constrain itself that way.... (question from a Navy developer).
More questions on security - why is it in the .NET platform, instead of the OS? Answer? The CLR is the new operating system....
More security - enforcement can be as granular as the method level. Assemblies can be signed (certificates). Editor sidebar - can't this get to be a complete nightmare if/when assemblies come from multiple sources with various certificates? i.e., a vibrant third party market... Recall that MS told people not to trust their own certicates last year after a security breach....
Cool Stuff, as they say
DataSets (part of ADO). in memory databases (Prevlayer?). native format is XML. XPath querying, not SQL. This will be confusing.... Can be connected to a data adaptor for movement in/out of an RDBMS.
What about O/R mapping? Use XSLT to swizzle the data from XML to db or vice versa. I seem to recall an article on how hard XSLT is recently. Tag line - This is the modern way of doing O/R mapping (insert restrained laughter on my part here....)
C# Semantic support for all CLR stuff Singleton support Single and multi-cast call backs via Delegates Lots and Lots of keywords (they think this is a good thing.... Lots and lots of method modifiers. "Architects will control this" Overrides are possible, but has lots of rules....
Lots of fun here for the architects. XP will not be native here....
Remoting Replaces DCOM with Web Services (UDDI, WSDL, SOAP). Tag line -"Allows completely transparent factoring of business logic across tiers" ROFL - where have I heard that before....
BizTalk The commercial thing to bring order to this. MS answer to WebLogic, et. al. This one is not free.
Key elements - all that stuff from my other post.
Design Goals
Types of Apps Same as ever - console, GUI, scripted, web, Mobile
Theoretically portable. They have an implementation on Sparc (surprise!)
Framework classes - similar to the Java diagram....
".NET is about services" - plug and play architecture is what they tout here. runtime system diagram looks a lot like the Java one.
Good thing!! - Smalltalk shows up on the list of supported languages!
All communications based on industry standards (Web Services)
Touting the versioning system heavily. I'll note that you ought to look here for a comment on that from a developer in the field:
Source: ShowUsYour-Blog!I am the Framework. I run managed code. I am without flaw. (repost)
Had an interesting experience today; a friend sent me an assembly and asked me to check it out. I referenced the assembly in my application and starting writing some elite code that consumed it. Project compiled fine but when I executed the app. it blew up and complained that assemblies couldn't be found - System.Xml in particular.
Welcome to SxS ( side by side execution ). What my friend had failed to tell me is that his assembly was built on Version 1.1 of the framework and I only have Version 1.0 installed!
Thankfully this fine article - http://www.3leaf.com/default/articles/ea/SBS.aspx - told me how to rectify the problem by adjusting my configuration settings to map to the V1.0 assemblies.
So it's not as seamless as the consultants would have you believe, it seems....
ASP.NET - server side object model for the page - sounds a bit like VisualWave or AidaWeb. More like AidaWeb, to be honest. ASP.NET can be done in any .NET language. Session support, browser detection/support. Yeah, sounds a lot like AidaWeb to me.
Multi-platform .NET - MONO For Linux and Sparc, plus Windows (for Apache) Includes C# and VB.NET compilers (certified) Supports lots of database vendors Complete language binding to GTK
Note what this means - .NET from MS does not support using ASP.NET on Apache (etc). Have to use IIS. So much for real portability.....
So - who's using it? Early Adopters and Microsoft. My take on this - it's the next silver bullet for all the IT shops that most recently jumped on Java and J2EE. Pitfalls - MS (not known for Enterprise support). Also, optimized more for SQL Server than other databases (surprise).
The consultants recommendation - get your toe in the water, build departmental apps - don't bet your business on it yet.
Claim - C# is a big leap forward from Java. I asked "how?" The answer - distribution (library) more keywords (a bad thing). i.e., SOSDD. These guys totally confuse "the language" and "the platform".
Now, a .NET demo.
Website on his home server for picture display (and why you wouldn't just use static HTML for this?). Thumbnail pictures and main display.
ASP.NET developer studio is an IE driven project page thing. Slow. Slow.... We watch while his demo fails on a DNS lookup failure on 'localhost'....
Oh.My.God. It generates a veritable blizzard of asp code on the page. The page is just filled with C#.
Ok gang, let me tell you that compared to the VW way of doing this - I am completely unimpressed. I'll take DreamWeaver and the Refactoring Browser any day.
So there's an NUnit for .NET. I'm reading Gordon's Weakliem's comments:
I recently had to add a method (message?) to a web service and I took a test driven approach, though somewhat modified. In my case, I defined the WSDL interface, generated my server code, and then stub it out enough to compile, and then built my tests. One thing that I took from the experience is that it requires a great deal of discipline to break old habits (not my strength), that writing good tests is hard, and that using a Mock Object strategy really adds a lot of development overhead. But then, so does fixing bugs.
There's that Mock Object thing again. Yet another reason that Test-First is better in Smalltalk
Note the lack of the Mock Object step. You might need Sham Objects - real objects with faux data, but that's another story.
I'm giving a talk on XP in Smalltalk at the XP DC Group on March 10:
The eXtreme Programming Users Group of Washington DC (XpWdc) will be meeting on Monday March 10, 7-9 PM at the Yorktown High School in Arlington VA.Who: Everyone interested in XP, regardless of experience level, is welcome to come and can benefit from attending. Customers especially are encouraged to attend.
Where: Yorktown High School Room 1B 5201 N. 28th Street Arlington, VA
Directions can be obtained on the YHSLUG website
It would also be interesting if Mr Robertson has a time to write a summary of what he will be discussing.
I'm giving a talk on XP in Smalltalk at the XP DC Group on March 10:
The eXtreme Programming Users Group of Washington DC (XpWdc) will be meeting on Monday March 10, 7-9 PM at the Yorktown High School in Arlington VA.Who: Everyone interested in XP, regardless of experience level, is welcome to come and can benefit from attending. Customers especially are encouraged to attend.
Where: Yorktown High School Room 1B 5201 N. 28th Street Arlington, VA
Directions can be obtained on the YHSLUG website
It would also be interesting if Mr Robertson has a time to write a summary of what he will be discussing.
A seldom used feature of RSS is the textinput tag. BottomFeeder seems to be one of the few aggregators that actually do anything with it. We do one of two things:
So how do do the two things? For item feedback, we construct a POST, with the contents set to an uRL Encoded form - with these elements:
So the contents might look like this, with the type being POST, set to 'application/x-www-form-urlencoded' charset: 'utf-8':
title='Comment'&username=anonymous&itemTitle=RSS Item=Title here&itemID=guid
My back end - a blog - picks that up and adds the comment. What if it's not seen as item level? Then we construct a GET that looks like this:
http://www.theURLHere.com?query=blah
where 'query' is whatever they sent in the name element, and 'blah' is the text the user entered. The results of the query are then displayed in the html pane.
All pretty easy to add!
Some questions and commentary on CampST at ST Solutions, from the Camp ST mailing list:
ST Solutions will be in Toronto July 14-16. I assume that many of us are going. So, my question is what kind of presence Camp Smalltalk wants to have. In my opinion, our presence should be mostly to advertise our projects, and we should not try to get any work done. Do people agree with this? Who is planning to go? Would you be willing to help present some of our projects?
Since I live in Burlington (west of Toronto), I will be there. I'll be presenting my AUV again as a demo, but other than that I have no real plans, other than to hang out at Camp Smalltalk like usual.
Also, I wonder if it might be interesting to also have some more formal activities related to Camp Smalltalk. For example, it might be interesting to give talks on some projects, rather than just the usual informal sessions in the Camp Smalltalk area. Or it might be worthwhile having a scheduled session explaining what Camp Smalltalk is, for those unfamiliar. A panel discussion about open source in general, and the Camp Smalltalk efforts in particular, might be an interesting event. If anyone has ideas, or is willing to do something, please let me or one of the other program committee members know
Sam Gentile raves about C# - this link in particular.
Ho hum. Nothing VW hasn't had since 5i.3, and we have FTP support as well. The world turns, and the C family of developers continues to re-invent wheels we already have....
I have a tendency to rant first and ask questions later. However, the comment chain on the referenced post was both civil and interesting. Have a look also at Sam's related post on his blog.
I'm pushing new base builds again, since a new VW 7.1 build came out. Again, this will stop happening once 7.1 ships. In the meantime, download the latest dev builds here.
They should be done uploading in about 2 hours.
I finally decided that the Http access code in BottomFeeder was too spread out and hard to understand. So with the aid of the RB, I refactored it. I already had an HttpClientModel class I had built awhile ago to centralize such access, but I had not been using it. This morning I changed that - I was able to get rid of bunches of duplicated code, and shove all the app's requests through a simple API. Made it a lot easier to toggle between straight requests and conditional-gets. The nice part is, it made the Http access work better - the duplicated code was slightly different in variosu places, and now it's all far easier to work with.
Here's an interesting article:
Here's what it isn't:
- The Internet isn't complicated
- The Internet isn't a thing. It's an agreement.
- The Internet is stupid.
- Adding value to the Internet lowers its value.
- All the Internet's value grows on its edges.
- Money moves to the suburbs.
- The end of the world? Nah, the world of ends.
- The Internet's three virtues:
- No one owns it
- Everyone can use it
- Anyone can improve it
- If the Internet is so simple, why have so many been so boneheaded about it?
- Some mistakes we can stop making already
and here's what it is:
All we need to do is pay attention to what the Internet really is. It's not hard. The Net isn't rocket science. It isn't even 6th grade science fair, when you get right down to it. We can end the tragedy of Repetitive Mistake Syndrome in our lifetimes - and save a few trillion dollars worth of dumb decisions - if we can just remember one simple fact: the Net is a world of ends. You're at one end, and everybody and everything else are at the other ends.
Go read the whole article - there's a lot more
There will be some new goodies shipping with 7.1:
I've slapped together a brief "How-To" on the blog as well, which should ship on the CD. It's not full doc by any stretch of the imagination, but it should be enough to get interested parties going.
After the refactoring I did, testing continued to show regressions here and there. Not a big surprise. I think I've got all of them fixed though; testing hasn't turned up any new problems.
The bottom line is, I think the 2.8 BottomFeeder release looks good for synching up with the VW 7.1 release. When VW goes gold, I'll package a new image, and push Bf. The objective now is to not have to do a new base image build after that until VW 7.2 ships.
So some folks in Java land are figuring out that versioning issues might require shipping a custom runtime:
Ted has a post detailing how to use a private JRE install for a java based app to side step versioning issues. This is great stuff, I used Ted's earlier white paper on the subject to do a private JVM on a current project. If you're a Java guy you need to be reading Ted's blog.
While I understand what the motivation is, doesn't this minimize the "it's standard, it's everywhere!" argument for Java? I can build faster in Smalltalk, and ship a custom runtime (smaller as well). So where's the advantage?
We have a draft white paper out on Cincom Smalltalk and Microsoft's .NET platform. Jave a look, and send feedback to me.
I've posted a new screen shot of BottomFeeder. It occurred to me that the old shot was getting long in the tooth....
This is an interesting post. apparently, the way Java installs, the JVM optimized for client usage (rather than server) is the default:
Amazing, then, isn't it, that most default installations of Java-based (as opposed to native-code implementations) J2EE containers don't make use of the VM tuned specifically for long-running server operations?...
To fix this, if you can get at the command-line used to invoke the JVM, add the "-server" option into the command line parameters. If this is somehow hidden away from you, simply rearrange the options found in the jvm.cfg file in the JDK to list the "server" option first. Bear in mind, however, the comment at the top of the jvm.cfg file: this file format is subject to change and may use a different mechanism sometime in the future. (Case in point: the JDK 1.3 mechanism didn't make use of the keywords following each entry-KNOWN, ALIAS, and so forth.) Future J2SDK releases may change this mechanism, so be prepared to do a little spelunking when J2SDK 1.5 is released.
Now sure, it's easy enough to deploy VW servers badly - deploy an image without mucking about in MemoryPolicy and ObjectMemory, and you'll eventually get bitten. I guess what I'm curious about is, how many people even know about these sorts of server tuning, without regard to development tools?
After this post, I had it pointed out to me that mailto: links in BottomFeeder (and Twoflower) did not work. They do now. On Windows, the mail tool associated with mailto: links will be spun up. On other platforms, a mail window will open, allowing the user to send mail to the recipient specified in the link.
This looks interesting - an RSS search engine, playfully called Roogle. It's only just been put up, but it's an early sign of what Google will likely do with their purchase of Pyra
Sun wasted no time making hay from the SCO lawsuit:
"Sun is waisting no time taking advantage of the SCO lawsuit against IBM. They are making statements trying to play up Solaris as a safe harbor for worried Linux and IBM users. John Loiacono, VP of Sun's operating platforms group, "For people looking at the issues at hand, we are a safe harbor. We have absolute rights to our technology ... We're changing our strategy around Linux (but) we're pausing because we're trying to figure out what the implications of this are going to be". So, this begs the questions... What are the short term implications for the new Linux based desktop we've been hearing about from our fair weather friends? How will the SCO lawsuit affect Sun's long term strategy with Linux and Open Source?"
So how does this all play out? The smart thinking seems to be that SCO wants to be bought. In the meantime, it could make for some entertaining industry watching from the cheap seats....
If you would like to see what's coming in the 2.8 release of BottomFeeder, then have a look at the User's Guide for 2.8.
Kudos to Rich Demers for this excellent work!
Just a reminder that I will be speaking at the XP DC Group tomorrow night. Follow the link for details.
Just a reminder that I will be speaking at the XP DC Group tomorrow night. Follow the link for details.
I'm uploading a new dev build. I've also slapped up the new parcels for the upgrade manager. It seems that in the transition to the new HTTP access I split out, I broke the handling of gzip decoding. That's now handled.
There were a few more updating issues with the new HTTP code, which I think I've addressed. In the process, I ran across some oddball XML parsing barfs; there are a handful of feeds I follow that currently have bad XML - unclosed HTML tags, invalid characters. The landscape for well formed XML isn't getting any better...
and it'll stay light until after the XpDc meeting. I'll be bringing VW NC CD's along as well. I had a bunch of errands to run this afternoon, and spent this morning pondering poorly formed XML. Some people apparently think that any old HTML tag can just be slapped right into their RSS feeds....
and it'll stay light until after the XpDc meeting. I'll be bringing VW NC CD's along as well. I had a bunch of errands to run this afternoon, and spent this morning pondering poorly formed XML. Some people apparently think that any old HTML tag can just be slapped right into their RSS feeds....
The talk went pretty well - I didn't get to meet Matt Croyden, local blogger - maybe next time. The presentation was fairly well received, and generated a good conversation - lots of good points and questions. The upshot of the conversation seemed to be that there are cultures surrounding the various programming camps, and that the culture surrounding Smalltalk encourages frequent testing - more so than the C language family. IMHO, this is due to the fact that in C , Java, C# (et. al.), you spend a fair bit of time just trying to make the compiler happy - a situation that simply does not come up in Smalltalk. All by itself, that explains a lot of the differences.
I think I got most of my points across, and had a good exchange of ideas with the group.
I handed out a few NC CD's - I should have had more. Of course, people can always follow the download links. Afterwards, we headed out to a local watering hole for some more conversation. All in all, it was a very pleasant time.