blog
HOME · CREATIVE · WEB · TECH · BLOG
October 8th, 2008

Beyond 4D v11

Christophe Keromen giving a talk about the future of 4D[Notes from 4D Summit 2008.]

Christophe Keromen, Senior Product Manager, 4D SAS

To meet changing demands 4D will be focusing more on RIAs.

They'll also focus on collaborative development.

The infrastructure is changing as well... Wi-Fi, mobile computing, etc... The Ajax framework is important there as well.

4D will target 64-bit

Require fewer resources, and focus on mobile friendly technologies

They understand the need to soften the learning curve for current developers. Green Tea is a good example.

Revision and maintenance is the bulk of the apps lifecycle. As a result they can bring down the cost of ownership by focusing on lifecycle management.

They're coming out with a "Solution Manager" that will be a replacement for v11 Explorer. This comes from the fact that you can have apps with no data. The beginning of project management.

Version control is coming! Items will be externalized out of the 4DB file. Methods will be text files on disk. Forms will be external binary files. Other items will be externalized as well. The goal being to externalize everything.

There will be the concept of projects which will be much broader than the concept now. A solution will be one or more projects.

There will be support for multiple languages in 4D. Just as you can switch to SQL now, there will be support for even more languages.

Components can be edited while running the host database.

There will be aliases in groups, meaning an object can be a member of multiple groups.

There will be a filterable list of objects. The filtering will be pretty advanced.

You'll be able to edit a method in the preview.

More than than 91% of developers use source control - it's expected these days.

Version control will include Checkout, Update/Sync, and Checkin/Commit.

Since 4D is committed to open standards, version control for 4D will use industry standards. 4D's solution will be compatible with MSCCI (Microsoft's solution).  This means compatibility with commercial solutions and open source solutions (on Windows).

For OS X (and Windows) there will be 4D Server integrated version control. It's automatic with no configuration needed. It will require 4D Server. It will include a local repository so changes can be committed after they've been tested so other developers aren't affected by new bugs.

A new code editor is coming as well... Bigger font, smaller font... Folding has been improved. Find functionality is improved - highlights everything matching the text you enter, or just full words, etc. There's a bookmarking feature that then lets you navigate through the items that are found. When you have compiler errors there will be a special bullet in the sidebar that when you hover over it will tell you the error. Further, bullets will move when you add/remove lines above the bullet.

You can also use the code editor to edit Javascript, XML, HTML, PHP and CSS. A huge improvement is the ability to edit 4D web templates - so an XML file with the 4D web tags in them, etc. You'll have colored syntax, auto completion and folding at a minimum for each.

The next version will have SQL Views - basically virtual tables.

SQL server will continue to get better with each incremental release.

JSON (Javascript Object Notation is a way of describing data) will be supported in the next version. People who use it talk about AJAJ rather than AJAX... It's an easier way of dealing with data with Javascript.

They're going to implement a way Object Relational Mapping (ORM) so you can define a concept (an "entity model") from a business logic point of view so users don't have to be aware of how the data are stored relationally.  For example: Employee.Department.Name or Employee. Emp_MeetingList[1].Meeting.When Employee.EmployeeDetails.birthdate - much simpler way of thinking of data relationships.

4D will be able to generate a SQL view from an entity model and vice versa.

Everywhere you can use a table you can use an entity model instead.

Their RIA Server will support all the basics - HTML, Javascript, CSS, SWF (for Flex) but can serve data via XML or JSON.

The HTTP Server will have session management, DAF integration, PHP code execution. The HTTP server will be rewritten and based on Apache (but he didn't say that ;) ).

They will improve existing method-oriented services as they did v11.2 and v11.3 with keep-alive and http compression. However, they're bring out new data-oriented services (XML, JSON, RSS) and based on Entity models. It will be based on the REST architecture. So the format will be specified in the URL (something like &format=rss or &format=json or &format=xml).

Not everything can be done in a browser, so they'll continue to innovate with client/server and standalone apps.

"Don't ask when"...  :)

Digg It!  Add to del.icio.us  Add to StumbleUpon  Add to Reddit  Add to Technorati  Add to Furl  Add to Netscape

October 8th, 2008

4D Web 2.0 Pack v11

[These are notes from 4D Summit 2008. Pictures will come later...]

Presentation by 4D Inc. Web 2.0 Team

Guys from 4D do a web demo

Web 2.0 is all about rich user interfaces, another factor is the ability to constantly roll out new enhancements. One of the other factors is the fact that end users are driving the features by saying "I saw that on {insert site here}"... However, big corporations are just starting to get into it. Improving customer experience is the number one reason for doing it.

One of the problems is that it's hard for companies to find developers with RIA experience.

There are three ways of doing RIAs:

  • Browser - AJAX
  • Player - Flex and to a smaller extent Silverlight
  • Desktop - Adobe AIR (for lightweight stuff) and Java FX

Ajax doesn't really exist per se - it's a set of technologies.

One good thing is that there is now (finally) innovation in web browsers and the Javascript in the browser is getting better and better. That is absolutely vital to AJAX solutions working well and working reliably.

Flex gives you a richer interface and a more consistent experience than AJAX. Flex apps run in the Flash player.

HTML 5 is the biggest leap forward in web standards in almost a decade. One of the big things is that it offers offline storage. Google Gears also has offline storage (it's the offline storage solution in Chrome). The idea is that when you're offline you can access the data you have locally, plus add new data which gets synced with the server when you go online.

Adobe AIR is great for lightweight apps written in AJAX or Flex. It lets you run web apps on the desktop without a browser.

Brendan Coveney at 4D Summit 2008 in Long BeachMobile technology is the next new big thing - just getting out of it's infancy.

Last year they showed read-only iPhone interfaces. In the past year they've rolled out a web client for iPhone with the ability to write back to your database including offline data entry.

There's also a web client for web browsers that Julien showed which has gotten more advanced in the past year. There's even a GUI for the development process. That has gotten more sophisticated in the past year as well.

They've built 4D Ajax for Dreamweaver which simplifies the process for working with 4D AJAX using Dreamweaver. It gives you dialogs to help you configure the 4D AJAX areas and integrates nicely with your corporate stylesheets, etc.

With 4D Ajax Framework v11 release 3 they're moving toward a more MVC (model view controller) centered approach where data is separated from design. The demo was called "Green Tea". Their goal is to create more of a 4GL approach to RIA development. Green Tea was actually really cool. It's very slick and can generate AJAX apps for the web, Adobe AIR, Google widgets, or dashboard widgets... Very slick. There's a lot of what you expect in a tool like 4D, only it's building RIAs - property lists, live previews with real data, etc. One other cool thing is that Green Tea is a 4D Ajax Framework application (that builds 4D Ajax Framework apps). It's easy to apply custom CSS to the areas as well.

Digg It!  Add to del.icio.us  Add to StumbleUpon  Add to Reddit  Add to Technorati  Add to Furl  Add to Netscape

October 8th, 2008

4D Server v11 SQL Overview

[These are notes from 4D Summit 2008]

Olivier Deschanels & Thibaud Arguillere, 4D SAS

They went over the remote admin capabilities - many things can be done while the server is live, but a few things, like compacting the data file, require the server to be shut down.

When designing using 4D Server/4D Remote you can how compile. Previously you could only check syntax. You can also restart the server to run in compiled/interpreted mode.

The resource fork on Mac is officially deprecated (since Tiger). The v11 solution is to use the resources folder which is replicated from Server to Client. You can also add things on client which are pushed to server and then server pushes to other clients.

Notice that v11.2 now has QUERY SELECTION WITH ARRAY...

They've been adding components to 4DPop... There's an xliff editor, a component to search the 4D online documentation, and an app maker component to aid in editing the xml file that is referenced when building an application, etc.

They emphasized that list boxes that show the current selection are now very fast in client/server mode. You can also have two list boxes showing selections from the same table because you can bind the list box to a named selection... This is really powerful and really makes named selections much more useful.

With popups you can now specify a boolean array that determines whether the row is hidden or not. So, instead of recalculating the contents of the popup you can just set a boolean array as to whether the row should be displayed. This can be significantly faster in client/server mode since you can use arrays residing on the client to compose the boolean array.

You can how have two active windows running in the same process sharing the same set of variables (since v11.1). Do DIALOG ("MyForm";*) this reduces the number of global processes which is important in client/server.

You can how display movies in 4D without any plugins. There is also native support for PDFs. Use web areas - they can display everything your web browser supports - even supports Flash. [That means you can view, but it doesn't the movie or the PDF is a native object in terms of data.] There are automatic actions available for things like back, reload, stop, etc. You can even interact with the web page programmatically using Javascript (provided you know how the page is structured). The system API is WebKit on Mac and IE on Windows.

The commands to work with SVG have been greatly expanded with v11.3 and the SVG component. For example, SVG Find elementID by coordinates (area; mouseX; mouseY). The SVG component comes with it's own documentation available via 4D Pop.

Notice that with pictures you can rescale a picture with TRANSFORM PICTURE without losing data.

[Unfortunately I had to leave for a moment here and I when I got back they were wrapping up. As I came back both Julien Feason and Charlie Vass asked me if I saw the presentation on composite indexes. Apparently composite indexes are absolutely incredible in v11.3. Too bad I missed it.]

Digg It!  Add to del.icio.us  Add to StumbleUpon  Add to Reddit  Add to Technorati  Add to Furl  Add to Netscape

October 8th, 2008

4D Summit 2008 Keynote Address

[These are notes from 4D Summit 2008]

Luc Hollande, CEO 4D SAS

About 25% of this year's attendees are from abroad - from 18 countries.

Revenue is up, profit is strong, and cash in the bank is up considerably. Was not achieved by cutting R&D. 25% of revenue is put into R&D.

Open standards and speed to market are their emphasis with the side benefit is the ability to bring in programmers with more mainstream skillsets.

Another emphasis is calability, including over WANs.

They're also getting serious about lifecycle management - documentation, version control, etc.

And of course Rich Internet Applications (RIAs) are a focus as well.

Brendan Coveney, CEO 4D, Inc.

Licensing is migrating an annual maintenance model rather than pay-once... Joe Batts came up and spoke about how it works in real-life. You get the standard partner discounts. No sticker shock for new versions means less resistance to upgrades.

SVG is incredibly powerful - xml-based graphics (not raster images).

Jody Bevan of Jonoke Software came up and spoke about scalability. Has some HUGE users - 30+ segments of data, hundreds of users per server. He's seeing some big speed improvements between 11.2 and 11.3. Without any code changes v11 was 900-1350% faster than v2004 on real customer data. In another application they saw 360-1450% increases in speeds. In both cases the tasks were very intensive and no additional indexes were added. When testing WAN performance, an uncompiled v11 app run over the WAN was faster than a compiled 2004 app running on the local network.

Web services have been improved with keep-alive connections and server-to-server SQL is improved with data compression.

Using another 4D database (on 4D Server) is really really simple - just change one parameter and use SQL. 4D Open isn't needed - it's much simpler this way - just about as easy as using local data. Don't even need to install anything like ODBC drivers.

A tech note is coming that explains how to compare version histories on methods - highlighting changes. Very cool.

Knowledgebase is being redone and will be available in a few weeks. What they showed us is AJAX based interface that uses text keyword indexing. They've also reduced the amount of time to get new articles up on the web. From 8-10 hours to immediate - engineers can get things up right away without having to go through other people to do styling, etc.

4D Store is being rewritten with 4D Flex and it will be an international solution, not just US.

Steve Orth of the Aquila Group talked about his experience with RIAs. The application was for Eaton Electrical and they won the contract a few years ago where they beat out IBM for the contract (so great things are expected). They are a large electrical equipment manufacturer. Two other clients wanted a web client as well. One of the advantages they found was that because the client interface is in accepted standards (like AJAX) there was zero resistance. They went from zero at last year's summit to a full-fledged web app very quickly.

Digg It!  Add to del.icio.us  Add to StumbleUpon  Add to Reddit  Add to Technorati  Add to Furl  Add to Netscape

October 2nd, 2008

Setting Up WordPress

There are a number of reasons why you'd want to change WordPress' default settings. This post goes over our standard practices and why we've adopted them.

But the first step, of course, is to install WordPress. To do that, go to wordpress.org and follow the directions given there (the directions they have are pretty excellent). To do the install you will need a web host with FTP access, PHP running on the web server, and a MySQL database. How you set up your MySQL database depends on your ISP - contact them to determine how best to do it.

Many ISPs have "one-click" installs for WordPress, but they don't install the latest version. If that's the case with your ISP you then want to do an upgrade and install the latest version of WordPress. This is still less trouble than installing it from scratch since the database and a few other things will be set up for you.

The rest of this post assumes you have WordPress installed and working. The terms used in this post are from WordPress 2.6.x - I know some of the terms will be changing in 2.7, but the general concepts will still be there.

The things we'll be changing are found under the "settings" menu.

Settings: General

Most of these don't need to be modified, but do change the name and tagline for your blog as they usually appear on your site and in your RSS feeds. The URLs should be the base URL for your blog, which may be the root URL of your site or the directory you installed the blog in. The e-mail address is important as it will be used to send you notifications about things like comments that need moderation.

Settings: Writing

There are a couple useful items on this page. First is "Size of the post box" which I recommend you change to 25 or 30 as it will make writing easier since you'll be able to see more when you're writing posts.

The second is all the way at the bottom where it says "Update Services" - those are the services that you want notified when you do a new post. From what I've heard recently WordPress pings these services when you make edits, not just new posts, and some services may think you're spamming if you make too many pings, so use this with a little caution. Nevertheless it is useful to get your posts picked up quickly. Below is a list that you can copy and paste into the area so your posts get maximum exposure as quickly as possible.

http://rpc.pingomatic.com
http://www.blogpeople.net/servlet/weblogUpdates
http://bulkfeeds.net/rpc
http://ping.myblog.jp
http://ping.bloggers.jp/rpc/
http://bblog.com/ping.php

There are more places you can ping, but you risk pinging them twice since some places like Ping-O-Matic pass pings onto other services (more info).

Settings: Reading

The settings on this page are pretty important...

"Blog pages show at most xxx posts" - this determines the maximum number of blog posts that will show up on a page. Some people like to set this to a big number so the reader can scan and see a lot of information. I recommend against doing that since it will create duplicate content problems. You want content to move off of the pages that change so search engines understand that the stable pages are the post pages. I typically set the number to 5 or 6 which is a decent balance between duplicate content issues and usability, if you have a very active blog with multiple posts per day that number can be upped without causing any real problems.

"Syndication feed show the most recent xxx posts" - here you want to up the number so people who look at your feed can find articles they saw recently in your feed. On numerous occasions I've wanted to tell something about an article I saw recently only to find it had expired from the feed which made me search for it on the site (not always an easy task). I tend to put this number at 20. If you have a very active blog you may want to raise that to 30 or 40, but much larger than that and you may create feeds that are so large they're cumersome and slow.

"For each article in a feed, show..." - RSS feeds can either show snippets or the full article. The people who use snippets use them so people will have to come to their site to see the full article. When they come to their site they're exposed to advertising which the blogger hopes they'll respond to. The problem is that snippets aggrevate feed users, and regular visitors are far less likely to click on ads than new visitors. So I recommend picking "full text". In my opinion it's best to keep your loyal readers happy than try to make them jump through hoops to read what you write.

A word about "Front page displays"... The idea here is that you can show a page other than the normal home page of the blog. This is useful if you don't want the blog to look so much like a blog. What the option doesn't reveal is that there's a better way to handle this if your comfortable editing HTML. If you put a page named home.php in your theme it will be used for the home page. In my opinion this is far better than the options presented in "front page displays" since you can completely break out of the structure of your theme and have a completely custom page. If you use a home.php page it overrides anything you set with "front page displays".

Settings: Permalinks

WordPress allows you to customize the directory structure of your blog. It's one of the really powerful aspects of WordPress. The default URL for WordPress looks something like http://www.somedomain.com/?p=1234 which is a dynamic URL that shows the post ID for the particular post. WordPress URLs can be a lot better than that, however. The settings pages gives you some of the mor popular options and also lets you have a custom URL.

But first, let's explain what the core issues are. First, is the number of directories down the post page is. If you use a date directory then you'll have something like /2008/10/02/post-title, but if your blog is in the /blog/ directory then it's more like /blog/2008/10/02/post-title - that's 5 directories deep in the site. Research has shown that Google and others favor pages that are no more than 3 pages deep on the site, so that URL structure actually works against you.

There's a whole debate on whether you should use dates in URLs or not. Personally, I think dates in URLs are useful, but others disagree. There is no right or wrong answer to the question.

We use a custom permalink structure that combines the year and month into one directory like /2008-10/ - to achieve that we enter the following under "custom":

/%year%-%monthnum%/%postname%

The other options under permalink settings are for "Category base" and "Tag Base". WordPress posts can be categorized and tagged. Just briefly, you should think of categories as the main subjects in your blog, and tags all the little things that pop up in the blog post that are minor, reoccurring themes. For this post "blogging" is the category, and "WordPress" the tag, but you can have multiple categories and multiple tags.

By default category URLs start with /category/ and tag URLs with /tag/, but "category base" and "tag base" let you change that. This can be useful from an SEO perspective. Let's say you have a travel blog and it's divided up into virtual blogs one for each destination with each destination virtual blog being a category. In that case you might change the category base to "/destination/" or "/sightseeing/" or "/tourism/" (there are many options...). You could do the same thing with your tag base if you wanted.

Changing the category and tag bases helps get keywords into the URLs which is useful for SEO. But you want to think ahead. If you chose /destination/ for your category base it would mean you couldn't have "budget travel" as a category since it isn't a place someone would go. So before changing category and tag bases, make sure you think ahead.

At the bottom of the Permalink Settings page you may see an area with a bunch of code and a note above it saying something about .htaccess... All of these URL rewrites require special rewrite rules on the server. Those rewrite rules are handled in a file named .htaccess. Some ISPs set things up so WordPress can modify the .htaccess file, but many don't. Working with .htaccess files is a separate subject, but the imporant points are that files that start with periods are invisible on the Mac - so you'll need to use something like Dreamweaver that lets you see them - you won't see them in the Finder.

Settings: Miscellaneous

Miscellaneous settings are where image related settings are currently located...

"Store uploads in this folder" - This setting lets you modify where images you upload for your blog posts are stored. The default setting is OK, but a bit deep in the directory structure. Just realize that if you modify this, you may need to modify your .htaccess file so WordPress doesn't try to control the serving of the image files.

The other thing about the images folder is that it needs to be writable. Making it writable is beyond the scope of this post - if it's not writable (which you'll know when you try to upload something). Contact your ISP and have them make the directory writable.

"Organize my uploads into month- and year-based folders" - This is highly recommended as it avoids the possibility that you get too many files in one directory.

"Thumbnail size" and "Medium Size" - WordPress manages your images when you upload them. These settings let you determine the dimensions of smaller versions of the image.

The Askimet Plugin

One other thing which I highly highly recommend is installing the Askimet plugin. This examines the comments that are posted to your blog and automatically marks suspicious ones as spam. As you site/blog gets to be mature you'll be amazed at how many spammy comments appear on the site. Many just say things like "Great site, love your perspective on things", but they exist to have a link back to their site. Askimet is incredible at determining which comments are spam, though it does make mistakes.

To install Askimet you go to the plugins area, find Askimet and click on "activate". It will then give you links to get an activation key from wordpress.com. You'll need to register there and retrieve your key there. Once you tell the Askimet plugin your key, you're all set. If you start another blog, just use the same key - the key is for you as a person - you don't need a different key for each blog.

Once Askimet is installed you'll see an Askimet Spam section in the Comments area it will capture all the spam there and you can deal with when you have time.

Digg It!  Add to del.icio.us  Add to StumbleUpon  Add to Reddit  Add to Technorati  Add to Furl  Add to Netscape

HOME · CREATIVE · WEB · TECH · BLOG