I’ve been doing some work on JavaScript editors recently, and was impressed by Microsoft’s Visual Studio in this respect. Here’s my post on the subject. By the way, even the free Express edition works fine for this; and you don’t need to use ASP.NET. You do need to use Internet Explorer of course; that’s another story.
Category Archives: web authoring
What’s the deal with Flash and the iPhone?
An brief comment from Adobe’s CEO Shantanu Narayen quoted by Bloomberg suggests that Apple and Adobe are actually working on putting Flash on the iPhone:
It’s a hard technical challenge, and that’s part of the reason Apple and Adobe are collaborating. The ball is in our court. The onus is on us to deliver.
Deliver what? I’d have thought it would be straightforward for Adobe to implement some level of Flash on the iPhone. There are at least two reasons though why Apple might be blocking it:
1. Flash is a client runtime. Apple may feel that allowing applications to run within Flash could threaten its App Store lock-in and market.
2. One of the frustrations of Flash on devices is that it lags behind the version of Flash available on desktops, and is often hard to update. That’s frustrating for users. Apple may want to address that by giving iPhone users an experience that comes close to that on the desktop.
So what is Apple waiting for Adobe to deliver? Better mobile performance and usability? Or some other piece that might address the first of the above concerns?
The outcome of this has a significance that goes beyond the iPhone. Although iPhone and iTouch users form only a small proportion of those browsing the web, it is an influential group and one that will grow. The lack of Flash support makes pure HTML and JavaScript solutions more attractive to web developers.
If anyone from Adobe can give us more insight into what it is working on with Apple, I’m keen to know.
Microsoft showing Silverlight 3 at Mix09
Looks like Mix09 (March 18-20) is the stage where Microsoft will reveal details of Silverlight 3 (is it really 3 already?). On the session list is:
What’s new in Silverlight 3 (Joe Stegman)
What’s new in Silverlight 3 media (Larry Olson)
Deep Dive into Silverlight graphics – come hear about the Silverlight 3 rendering pipeline (Seema Ramchandani, Marshall Agnew)
Why are web sites still storing passwords? Monster, USAJobs blunder highlights the risks
Sophos informs us that job sites Monster and USAJobs (an official US Job site) have been hacked. Messages on Monster and USAJobs confirm this. I’d like to draw attention to the fact that passwords were stolen:
We recently learned our database was illegally accessed and certain contact and account data were taken, including Monster user IDs and passwords.
says Monster. And USAJobs says:
We recently learned that the Monster database was illegally accessed and certain contact and account data were taken, including user IDs and passwords, email addresses, names, phone numbers, and some basic demographic data.
Same wording – because Monster is the “technology provider” for USAJobs.
Sophos observes:
There is even more potential for danger, however, because passwords have been stolen. We know that too many people use the same password for every website that they access.
Right. But why is Monster even storing passwords? It is not necessary. All you need store is a one-way password hash, so the site can verify a password without recording it. This is easily done in every web platform out there.
There is a disadvantage. It means the site cannot email your lost password. Instead, it must reset your password. Since email passes in plain text, emailing passwords is a bad idea anyway, and I hate to see sites doing this; it’s a useful alert though that the site places a low value on security.
Any site can get hacked, but what isn’t stored can’t be stolen.
Technical blunders like this can be costly; there’s no excuse for it that I can think of.
Microsoft Expression Web causes PHP error
I ran into a strange and surprising PHP error today. I’m working on a little PHP application which has a login page. The login script calls session_start() to start or resume a PHP session. It was working OK so I decided to decorate the page a little (I was working in Eclipse). I like to try a variety of tools, so I ran up Microsoft’s Expression Web, added an image, then re-ran the script to see how it looked.
The answer was not good, because I now had an error:
Warning: session_start(): Cannot send session cookie – headers already sent
I puzzled over this for some time. The error was in line 0 of my login page. I couldn’t see anything that was different from before, except the static image that meant nothing to PHP.
Eventually I worked it out. Eclipse (running on Windows) created the PHP files using ANSI. On saving, Expression Web silently changed them to UTF-8. That in itself was no bad thing – it’s usually a better choice – though I reckon it should ask. The bigger problem was that Expression also added a BOM (byte order mark) to the beginning of the file. This is actually optional for UTF-8, and most non-Windows editors do not add it. It happens to flummox PHP, which interprets them who-knows-how and sends some output to the browser, preventing session_start from working.
This is particularly painful to debug since most editors do not display the BOM; they simply use it to confirm the character set in use. So you can have file A which works, and file B which does not, and they are character-by-character identical.
One way to see and remove the BOM is to open it with Edit.com, which does not understand it at all:
I guess both Expression and PHP could do better here. The bit that puzzles me is that I can’t be the first to run into this. Doesn’t Microsoft know that its UTF-8 BOM breaks PHP files, at least on the two versions I tried (XAMPP on Windows and PHP 5.2.1 on Linux)? I can’t even see a preference in Expression that would prevent it being written. And if you remove it, and then re-edit in Expression, it carefully writes it back. Unlike Adobe’s Dreamweaver, which leaves well alone.
PS if you want to know all about BOMs, see here.
Update: See comments – apparently this was fixed in Expression Web 2.0. Tina Clarke discusses the problem here.
Want Google Earth in your browser? Don’t use Google Chrome.
I’ve been trying various mapping APIs and took a look at Google’s new Earth browser plug-in. It looked a bit odd in IE7 so I tried Google Chrome. Not supported:
Given that it now works in Safari on the Mac (which also uses Webkit) I’m a little surprised. No doubt the team will add it soon, but this sort of thing doesn’t help Chrome adoptiom.
Web app with Silverlight and Virtual Earth
I’m writing on mapping applications right now and came across this impressive example from Port Metro Vancouver. It uses Microsoft’s Silverlight and Virtual Earth. The bit you want is the interactive map on the home page. Wait for it to load, then click the uncaptioned button (to the right of Webcams Wall) for full screen mode, and try some of the menu options.
There is more about the app in this blog entry on the Virtual Earth for Public Sector blog.
SharePoint – the good, the bad and the ugly
I’ve been messing around with SharePoint. When it works, it is a beautiful product. It is a smart file system with versioning, check-in and check-out, point-and-click workflow (eg document approval), offline support via Outlook, direct open and save from Office 2007, and more. It is an instant intranet with blogs, wikis, discussion forums, surveys, presence information, easy page authoring, and more. It is an application platform with all the features of ASP.NET combined with those of SharePoint. It is a content management system capable of supporting a public web site as well as an intranet. It is a search server capable of crawling the network, with a good-looking and sophisticated web UI. And in the high-end Enterprise version you get a server-side Excel engine and all sorts of Business Intelligence features. Fantastic.
Even better, the base product – Windows SharePoint Services 3.0 – comes free with Windows server. Search Server Express is also free and delivers all the search capability a small organization is likely to need.
What’s wrong with this picture? Here’s a few things:
- Gets very expensive once you move to MOSS (Microsoft Office SharePoint Server) rather than the free WSS.
- Deeply confusing. Working out the difference between WSS and MOSS is just the start. If you want to deploy it, you had better learn about site collections, applications, operations, farm topologies, web parts, workspaces, and the rest.
- Complex to deploy. Make sure you read Planning and Architecture for Office SharePoint 2007 Part 1 (616pp); the good news is that part 2 is only 52pp. SharePoint is all that is bad about Microsoft deployments: a massive product with many dependencies, including IIS, ASP.NET and the .NET Framework, SQL Server in particular configurations, and of course hooks with Office 2007, Exchange and Active Directory.
- Generates horrible source code. Try opening a page in SharePoint designer and viewing the source. Ugh.
- Challenging to back up and restore, thanks to being spread across IIS and SQL Server.
I am out of sorts with SharePoint right now, after a difficult time with Search Server Express (SSX). I have a working WSS 3.0 installation, and I tried to install SSX on the same server. My setup is just slightly unusual, since I have both SharePoint and a default web site on port 80, using the host headers feature in IIS to direct traffic. The SSX install seemed to proceed reasonably well, expect for two things.
First, I puzzled for some time over what account to use as the default account for services. Setup asks you to specify this; and the documentation is a classic case of unhelpful help:
In the Default Account For Services section, type the user name and password for the default services account.
In the Search Center Account section, type the user name and password for the account for the application pool identity of the default Search Center site
Well, thanks, but I could have figured out that I have to type a user name where it says “User name”. But I would like help on how to create or select a suitable account. What permissions does it need? What are the security implications? The temptation is to use an administrator account just because it will most likely work.
Then there was the problem of creating the search site application manually. I had a go at this, helped by these notes from Ian Morrish. I set up a crawl rule and successfully indexed some content. Then I made a search, to be greeted by this error:
Your license for Microsoft Search Server has expired.
Well hang on, this is Search Server Express and meant to be free! A quick Google turns up this depressing recommendation from Microsoft:
To solve your immediate problem, however, it is suggested you uninstall WSS, MSS Express, repave your machine with a clean OS, and reinstall only MSS Express (WSS is installed with it).
Thanks but no thanks. See this thread for a more informative analysis. The user yanniemx reckons, after 10 reinstalls, that he has worked it out:
I realized it was due to using the Express version of Search and then not using the SQL install that is included in the install. From what I can tell if you use another SQL instance it thinks you are using multiple servers and that is not allowed for the Express version.
I think I’ll just uninstall. I did another install of the full MOSS on its own server, and that one works fine. Running on a virtual machine is another good idea.
I hate the way certain Microsoft server products like to be installed on their own dedicated server. That makes sense in an Enterprise, but what about small organizations? I don’t see any inherent reason why something like SSX shouldn’t install neatly and in a reasonably isolated manner alongside other products and web applications. Equally, I am sure it can be done, just as I used the host headers trick to get WSS installed alongside another web site on port 80; but working out how to do it can be a considerable effort.
First steps with offline Silverlight and Live Framework
Yesterday I wrote a simple test application for Silverlight running on Live Mesh. It is an interesting scenario, which enables Silverlight applications to run offline, in the style of Adobe AIR. I wrote a to-do list which stores its data in the cloud; I added some items online, and deleted and added some items offline on another machine, and when it reconnected all the edits synchronized. Cool.
Even so, I’m not finding this particularly easy. Note that this is a limited-access Community Tech Preview, so make big allowance for that. Here are some of the problems I’ve run into to:
Convoluted sign-up and web site navigation.
This is a preview controlled by developer tokens. It’s complicated by the fact that a variety of different types of token control access to different parts of Windows Azure. You get a token, think you are done, then discover you have the wrong kind of token and need to apply for another one.
Even when you have the token, navigation is tricky. I’ve wasted time clicking through from one overview page to another; there are even promising links that seem to go back to the page you are looking at. Tip: when you find a useful page like the Developer Portal, for provisioning Azure and Live Framework apps, bookmark it quick.
Inadequate documentation.
OK, I guess this is to be expected in a preview. But I’m finding an over-abundance of overviews and diagrams, too many videos, and a lack of plain-speaking developer-focused documentation that answers obvious questions. Most of the entries in the .NET reference for the Live Framework client look like this:
That’s right, auto-generated docs with no description of what the class member is for or how to use it. You can expand the plus symbols, but it is not rewarding.
Slow going
Microsoft’s online MSDN documentation and forums work, but I never look forward to visiting them because I know they will be slow to navigate and I’ll be sitting waiting for pages to refresh. I’m not sure that Microsoft understands the importance of this point. It works – so why complain? Well, because the cumulative effect over time is to make me want to go elsewhere. Google and Yahoo, by contrast, usually run much more responsive sites.
Microsoft could improve this quite easily. The key: fast is more important than pretty.
Bugs and outages
I certainly expect bugs and outages in a CTP. Still, they are frustrating. My very simple Mesh app did not work at all on a Mac, even running in the browser. In this scenario, you don’t need the Mesh client; it is just a Silverlight application running in a web page. I asked about this on the forum:
I confirm it from the core team. With quite aggressive timeline for PDC release with the current level of resources and CTP goals, we could only test XP SP3/Vista SP1 and IE7. We will eventually support Mac and Safari but this is not an immediate priority in the near future for CTP QFEs.
Fair enough, thought to me cross-platform is at the heart of why I might want to use this technology.
This morning my Silverlight Mesh application won’t run at all. I get a 404. I guess it’s the bleeding edge.
Online/Offline
I’ve also asked a couple of simple questions on the forum about the online/offline scenario. I’m finding that offline applications don’t run unless you are signed into Windows Live. That is, you can sign in and then go offline, and it works, but if you don’t sign in (for example, because you start up your laptop in an aeroplane), then the app does not start. There must be some way to use cached credentials?
My other question is about synchronization. How do you enforce constraints on a Mesh datafeed, given that it could be edited online and offline simultaneously, bypassing checks in your code? This is not quite the same as a conflict, where the same entry is edited by two different people. My example is how to make sure that duplicate items are not added to a list.
Early days
I expect that this Azure stuff will get much smoother in future updates; and bear in mind that what I’m working with here – Mesh, Silverlight, and the .NET Live Framework client library – is just one small corner of the whole.
I can’t help wondering though if Microsoft is being over-ambitious. Another technology I’ve been looking at recently is Adobe AIR. The scope of this is small relative to Live Mesh. You can describe it in a few words: run a Flash application on the desktop. It has limitations and frustrations, but at least it is easy to understand, and furthermore, it has pretty much worked as advertised from the earliest public previews.
By contrast, Mesh for developers feels like a huge thing that is part of an even huger thing (Azure); it has lots of promise, but it is harder to describe its essence in a few words (that are not marketing fluff).
That said, I like Silverlight itself. This piece at least is easy to grasp and works well, in my experience so far.
Working with Live Framework or Azure? I’d love to know how it is going for you.
Adobe’s disappointing results, headcount reduction plans
Adobe has announced earnings slightly below its estimates. More worrying is its report of “weaker-than-expected demand for its new Creative Suite 4 family of products” and “steps to reduce its headcount by approximately 600 full-time positions globally”.
Is Adobe getting it wrong, or is this the effect of a weak global economy? I’d guess the latter; it may even be a good result in context. Adobe is dominating web video; Flash usage is still growing; there’s nothing out that that can compete with Photoshop; and there is a lot of interest in its Flex/Flash/AIR programming story. CS4 is a remarkable release; you can argue about some of the details (why is Soundbooth included instead of the superior Audition?) or grumble about the price (especially outside the USA), but there is a lot more right than wrong.
Even so, Adobe has a weakness in its business model. It makes its money on tools and server-side products, while giving away the runtimes like Flash player and Adobe reader. Could Adobe get into a Sun-like funk where everyone uses its technology, but the company itself gets relatively modest benefit? It is possible. You can do a lot with Flash and PDF without paying anything to Adobe. This is good for users, since even with high adoption of the runtimes, Adobe cannot sit back and watch the money roll in. It has to maintain the quality of its design and authoring tools, and it has to charge real money for them, because they are the heart of its business.
According to this document (PDF) Adobe’s business breaks down like this:
Revenue by segment ($millions) FY2008 YTD August 2008 – representing 3 quarters
- Creative Solutions $1564.3
- Business Productivity Solutions $786
- Mobile and Device solutions $64.9
- Other $249.4
I’m guessing a little; but I imagine that Creative Solutions is mostly Creative Suite, though it also includes Flash Media Server; and Business Productivity mostly Acrobat (authoring and server). Note that LiveCycle Data Services ES, which connects Flex to enterprise application servers, is part of Business Productivity, though Flex Builder is classified as Other. It seems that CS + Acrobat is where Adobe makes most of its money.