To content | To menu | To search

Tag - Flash

Entries feed - Comments feed

Sunday 1 January 2012

Dusting off the looking glass

It's that time again... to make a few statements I can feel ridiculous about later on. I did take an advance position back in October regarding Internet platforms, so no need to touch that topic again just yet (especially after the additional HTML5/Flash comments in November). As before though, let's take a look at what my hit rate is.

#1 Oracle's jostling on Java patents will hurt Java as a platform: yeah, although it's hard to notice, what with the chatter on cloud platforms instead. Still, you've got to write that cloud-hosted application in some language, and though evidence is sparse, it seems to me that more devs are picking other tools. Somewhat insanely, PHP still ranks well in those selections, which proves that these things don't follow any observable logic, though.

#2 Amazing natural motion control applications during 2011: well, not really, yet. XBox Kinect has supposedly continued to sell well, though Microsoft hasn't given any sales data since last March (when they announced 10 million units sold), but applications are rather lame. Some pretty amazing research stuff going on though, which will ultimately enable computers to truly augment live views into the real world.

#3 Flash and new computing devices: see the other posts, linked above. Progress is steady but impact will take several years. As for the long-term view; while my daughter already understands that tablets and phones are for looking at stuff and playing, and keyboards are for banging, I maintain hope that in the next couple of years, she will be able to interact with computers by speech as well as gestures. We'll still need to invent the new human-computer interface best practices for that age, though.

Facebook/Timeline did finally launch before end of 2011. What do you think of it? I haven't seen a reason to change my view since October, although the "social reader" apps like Washington Post's or Guardian's certainly are annoying. Don't know if I should expect media companies to learn how to interact with people, though.

Now, the predictions. This one's gonna be difficult. Not because the world would be ending this year, but because it seems like quite a few macro trends are converging. Lots to feel optimistic about: locally, the interest in growth entrepreneurship and globally, new forms of peaceful citizen democracy, and the ever-continuing development of technology (gene therapy and data-driven, preventative medical treatments are exciting). A few that I hope will turn out well, though it's going to be a bumpy road: the ongoing Arab Spring as well as the Russian pro-democracy movement, the Euro crisis, which could still lead to yet another banking collapse. And finally, some political and regulatory changes that are quite worrying, even if I've tried to avoid a position on politics, and especially politics outside the EU. Still, these bother me for both their privacy as well as anti-competitive aspects and lack of due process: ACTA, SOPA, NDAA. Still, these are hardly going to bring the Singularity around quite yet, dystopian though they seem.

However, I don't want to pretend I care about or follow politics closely enough to understand why these things always come years behind and over-reach, so I'd rather focus on something more tractable. In terms of professional interests, the trend toward hosted, multiplayer gaming is, by now, quite unstoppable. We're moving on from the Social Games 1.0 of Facebook Canvas, though, and the future is more for games where the players' actions impact each other. The challenge is, we need to learn to design these games so that while they truly have group interaction in their core, they still remains games; that is, masterable, repeatable and somewhat predictable experiences people can continue to enjoy, and a source of richness their lives might otherwise be lacking.

As always, comments welcome. This year this post was quite hard to focus on anything in particular, and maybe you have better insight. Let me know. In any case, Happy New Year! Whatever you do, make 2012 matter.

Monday 14 November 2011

Flash is dead? What changed?

So, Adobe finally did the inevitable, and announced that they've given up trying to make Flash relevant on mobile devices. Plenty has been written already about what lead to this situation, and the "tech" blogosphere certainly has proved their lack of insight in matters of development again, so maybe I won't go there. Flash plugin has a bad rap, and HTML5 will share that status as soon as adware crap starts to be made with it. It's not the tech, but its application.

So, lets focus on the developer angle. Richard Davey of Aardman and PhotonStorm is offering a developer-focused review into the alternatives. TL;DR; Flash is what's there now, but learn HTML5 too. Yeah, for web, I would agree.

However, that misses the big picture as well. Choosing any tech today for the purpose of building games for Web is deciding a future course by the back-view mirror. Web, as it is today, is about a 500M connected, actively used devices market. Sure, more PCs have been sold, and about that many are sold both this and next year, but the total number of devices sold doesn't matter - the number of people using them for anything resembling your product (here, games) does. So, I'll put a stake in the ground at 500M.

In comparison - iPad and other tablets reach about 100M devices this year, and projections look like about as much more next year. I would argue that most of them will be used for casual entertainment, at least some of their active time. That makes tablet-class devices (large touchscreen, no keyboard, used on a couch or other gaming-friendly situations) a significant fraction of the Web market already, and that will only be growing going forward.

Mobiles are a class of their own. Several billion devices already, maybe about a billion of them smart phones, some projections claim another billion smart phone-class devices to be sold next year. Just by limiting the market to only those devices which sport installable apps, touch screens, significant processing power (think iPhone and Android devices, possibly excluding lowest-end Android and the iPhone 1.0 and 3G), you're still looking at a potential market of 1 billion devices or so. Now, phones are not in my book very gaming-friendly - the screen is small, touch controls obscure parts of it, play sessions are very short, the device spends most time in a pocket and rarely gets focused attention, and play can be interrupted by many, many things. Still, as we've seen, great games and great commercial success can be created on the platform.

However, lets not pretend that a Web game could ever have worked on either a tablet or a phone without significant effort, both technical and conceptual. The platforms' underlying assumptions simply are too different.

So, how would you go about choosing a technology for creating a game for the future, instead of the past?

The choices are:

  • Native, writing for iOS only. Decent tools, except when they don't work, one platform, though a relatively large one with customer base proven to be happy to spend on apps.
  • Native, writing for iOS and Android. Perhaps for Windows Phone too, if that takes off. Welcome to niche markets or fragmentation hell.
  • Native, but with a cross-platform middleware that makes porting easier. Still, you're probably dealing with low-level crap on a daily basis.
  • HTML5, if you're willing to endure an unstable, changing platform, more fragmentation, dubious performance, and frankly, bad tools. Things will be different in a couple of year's time, I'm sure, but today, that's what it's really like. I would do HTML5 for apps, but not for games, because that way you'll get to leverage the best parts of web and skip on the hairiest client-side issues. In theory you'll also get Web covered, but in practice, making anything "advanced" work on even one platform is hard work.
  • AIR, if you continue to have faith that Adobe will deliver. In theory, this is great: a very cross-platform tech, you can apply some of the same stuff on Web too, get access to most features on most platforms on almost-native level, performance is not bad at all, and so on. Except in practice HW-accelerated 3D actually isn't available on mobile platforms, its cousin Flash was managed to oblivion, and perhaps most crucially, Adobe's business is serving ad/marketing/content customers, not developers. I keep hoping, but the facts aren't encouraging. For now though, you'd base your tech on a great Web platform with a reasonable conversion path to a mobile application, caveats in mind.
  • Unity, if you're happy with the 3D object-oriented platform and tools. You'll get to create installable games on all platforms, but lets face it: you will give up Web, because Unity's plugin doesn't have a useful reach. Here, the success case makes you almost entirely tables/mobile, with PC distribution (in the form of an installable app, not a Web game) less than a rounding error. This is probably what you'd be looking for in just a few years time anyway, even if today it looks like a painful drawback.
Conclusion: Working on tools? HTML5. Web game for the next 2 years? Flash 11. Mobile game? Unity, if its 3D model fits your concept. AIR if not, though you'll take a risk that Adobe further fumbles with the platform and never gets AIR 3 with Stage3D enabled on mobile devices out the door. Going native is a choice, of course, but one that exceeds my personal taste for masochism.

On the upside, Unity is actively doing something to expand their market, including trying to make Unity games run on top of Flash 11 on PC/Mac, so in theory you might be getting the Web distribution as a bonus. Making code written for Mono (.NET/C#/whatever you want to call it) run on the AS3/AVM Flash runtime is not an easy task though, so consider it a bonus, not a given.

Thursday 13 October 2011

Where the chips fall - platform dominator for 2012

It's been about a year since I put my prognosis skills on the line and tried to predict where technology and consumer products are heading. Since today is National Fail Day in Finland, perhaps it's time to try again. Lets see how right or wrong I end up being.

Last year I noted a couple of things about mobile platforms and of the software environments best suited for creating apps on them. While this year has seen a lot of development on those fronts, little of it has been in surprising directions. HTML5 is coming, but not here yet. If WebGL and Intel's River Trail project were supported by the Big Three (IE, Firefox and WebKit, ie Safari/Chrome), that'd make an amazing game platform - but at least the latter is research-only at this point, and IE9 isn't going to support either. In the meantime, Adobe finished Flash 11, which now has hardware-accelerated 3D in addition to a pretty good software runtime, and, after only 10 days out, already has 42% reach for consumer browsers (at least judging by stats on Like I've said a long time, Flash gets a lot of undeserved crap due to the adware content created on it. We won't get rid of that by changing tech, and platforms should be judged by their capabilities in the hands of good developers, not by mediocrity. And, as far as mobile goes, the trend continues -- iPhone and Android battle it out, now also in courts as well as in consumer markets, while everything else falls under the wagon. If you're creating an app -- do it either with a cross-platform native toolchain, or with HTML5. If you're doing a game, do it with Unity or Flash, and build a native app out of it for mobile.

The interesting thing, to me, is playing out on the Internet. Google+ came out as a very nice product with well-balanced feature set, but (fairly predicably, though I was rooting for it) failed to catch the early adopter fancy for long enough to displace Facebook in any niche. Facebook, on the other hand, scared (or is going to scare) 40% of their audience by announcing Timeline (eek, privacy invasion!). Brilliant move -- you can't succeed today without taking such leaps that nearly half of your audience will be opposed to them, at least initially. Smaller changes simply aren't meaningful enough.

So, I'm betting on Facebook. I'd also guess that once they get Facebook Credits working outside of the Canvas, they're going to demand that any app using Facebook Connect log-ins will accept Credits for payment. I'd hazard a guess they're even going to demand FB Credits exclusivity. They'll fail the latter demand, but that won't stop them from trying it. Having your app's/game's social publishing automatically done by Facebook simply by feeding them events, and not having to think about which ones are useful to publish, is just such a big time saver for a developer, no one will want to miss out on it.

Not even Zynga. They're doing this destination-site, we're-not-gonna-play-inside-Facebook-anymore strategy, but continue to use Facebook Connect for log-ins. That's not because FB Connect is so much more convenient than own username and password (though it is), but because even they can't afford to let go of the "free" access to people's social network. That's the power of Timeline and the new, extended Graph API.

The chips are still in the air. When they fall, I think Facebook will be stronger than ever, but strong enough to displace the "rest of the Internet"? No. As a developer, I want to push Facebook the data for in-game activities, because that saves me time doing the same thing myself. As a publisher, I'm unsure I want Facebook to have all that info, exploiting them for their purposes, risking my own ability to run a business. As a consumer, it makes me uneasy that they have all that info about me, and while I can access and control quite a lot of it, I can't know what they're using it for. I don't think that unease will be enough to stop me or most other consumers from feeding them even more data of our lives, likes and activities. Still, they're only successful doing this as long as they don't try to become a gatekeeper to the net - nor do they need to do that, since they get the data they want without exerting control over my behavior. Trying to fight against that trend is going to be a losing strategy for most of us - possibly even for Google. Apple and Microsoft won't need to fight it, because they're happy enough, for now at least, to simply work with Facebook.

Thursday 13 January 2011

A last look at 2010... and what's in sight?

For a few years, I've tried to recap here some events I've found notable over the past year and offering some guesses on what might be ahead of us. I'm somewhat late on these things this year, due to being busy with other stuff, but I didn't want to break the tradition, no matter how silly my wrong guesses might seem later. And again, others have covered generals, so I'll try to focus on specifics, in particular as they relate to what I do. For a look at what we achieved for Habbo, see my recap post on the Sulake blog.

This time last year Oracle still had not successfully completed the Sun acquisition due to some EC silliness, but that finally happened over the 2010. It seems to be playing about how I expected it to - MySQL releases have started to appear (instead of just being announced, which was mostly what MySQL AB and Sun were doing), and they actually are improvements. Most things are good on that front. On the other hand, Oracle is exerting license force on the Java front, and hurting Java's long-term prospects in the process, just at a time when things like Ruby and Node.js should put the Java community on the move to improve the platform. Instead, it looks like people are beginning to jump ship, and I can't blame them.

A couple of things surprised me in 2010. Nokia finally hired a non-Finn as a CEO, and Microsoft's Kinect actually works. I did mention camera-based gesture UIs in my big predictions post, but frankly I wasn't expecting it to actually happen during 2010. Okay, despite the 8 million units, computer vision UIs aren't a general-purpose mass market thing yet, but the real kicker here is how easy Kinect is to use for homebrew software. We're going to see some amazing prototypes and one or two actual products this year, I'm sure.

In terms of other software platform stuff, much hot air has been moved around iOS, Android, JavaScript and Flash. I haven't seen much that would have made me think it'd be time to reposition yet. Native applications are on their way out (never mind Mac App Store, it's a last-hurrah thing for apps which don't have an Internet service behind them), and browser-based stuff is on its way in. Flash is still the best browser-side applications platform for really rich stuff, and while JavaScript/HTML5/Canvas is coming, it's not here yet. For more, see this thread on Quora where I commented on the same. Much of the world seems to think that HTML5 Video tag, h.264 and VP8 equate to the capabilities of Flash, that's quite off-base.

On the other hand, tablets are very much the thing. I very much expect that my Galaxy Tab will be outdated by next month, and am looking forward to the dual-core versions which probably will be good for much, much more than email, calendar, web and the occasional game. Not that I'm not already happy about what's possible on the current tablets -- I carry a laptop around much less already. An in terms of what it means for software -- UI's are ripe for a radical evolution. 

The combination of direct touch on handheld devices and camera-read gestures on living-room devices is already here, and I expect both to shift on to the desktop as well. Not by replacing keyboards, nor necessarily mouses, but I'm looking forward to soon having a desktop made out of a large near-horizontal touchscreen for arranging stuff replacing the desk itself, a couple of large vertical displays for presenting information, a camera vision for helping the computer read my intentions and focus on stuff, and keeping the keyboard around for rapid data entry. One has to remember that things for which fingers are enough are much more efficiently done with fingers than by waving the entire hand around.. 

Will I have such a desk this year? Probably not. At the workplace, I move around so much that a tablet is more useful, and at home, time in front of a desktop computer grew rather more infrequent with the arrival of our little baby girl a few weeks ago.. But those are what I want "a computer" to mean to her, not these clunky limited things my generation is used to.

Tuesday 11 May 2010

LOGIN presentation on Habbo's Flash transition and player-to-player market

Had my presentation as one of the first sessions of this year's LOGIN conference. Darius Kazemi liveblogged the speech at his blog, and the slides are here. Best viewed together.

Sunday 2 May 2010

On rich web technologies

For the past week, the technology world has been unable to discuss anything but Apple's refusal to allow Flash applications on the iPhone and iPad, and Steve Jobs's open letter which paints this as a technology question and Apple's position as one of protecting consumer interests by ensuring quality applications. It would be incredibly naive to take that literally. No, of course it's all about business control.

Charlie Stross has written a great, if speculative piece on the bigger picture. I think Charlie is spot-on - Apple is seeing a chance to disrupt the PC market, and wants to finish at the top, holding all the aces. That might even happen, given how badly other companies are addressing the situation, but if it did, it would be anything but good for the consumer - or for the small developer.

The business interest

Apple today is a $43 billion annual revenue, $240 billion market cap giant, give or take. Out of that value, 40% or so is riding on the iPhone, and Steve is clearly taking the company to a direction where devices running the iPhoneOS will replace the Macs, so that share is only increasing. Right now, they have more resources to do this than anyone else in the world, and least legacy to worry about, given that despite the rising market share and the title of leading laptop vendor, computers running Mac OS X are still a minority market compared to all the Windows powered devices from a legion of other makers.

The company's DNA, and Steve's personal experience over the past 25 years has taught them that an integrated, tightly controlled platform is something they are very good at, but that earlier mistakes of not controlling the app distribution as well left them weak. They're not going to repeat that mistake. And certainly they'll try to ensure that not only do the iPhone and iPad have the best applications, but that those applications are only available on Apple devices.

Adobe, despite their history of dominating many design and content production software niches and a market cap of $18 billion, is tiny in comparison. Furthermore, the Flash platform is a visible but financially less relevant part of Adobe's product portfolio (though exact share of Flash is buried inside their Creative Solutions business segment). Even disregarding that Apple can, as the platform owner, dictate whatever rules they want for the iPhoneOS, Adobe símply can not win a battle of resources against Apple.

But this fight is not about Flash on the iPhone - it's about Apple's control of the platform in general. Whether or not it's true, Apple believes tight control is a matter of survival for them.

The technical argument

Apple wants to make it seem like they're doing this because Flash is bad technology. As I wrote above, and so many others have described better than I have, that's a red herring. It's always convenient to dress business decisions behind seemingly accurate technical arguments ("Your honor, of course we'd do that, but the tech just doesn't work!"). Anyway, let's look at that technical side a bit.

First, lets get the simple bit out of the way. Flash is today most often used to display video on web sites. However, this is not about video, and video has never been Flash's primary point. It just happened to have a good install base and decent codecs at a time in 2005 when delivering lots of video bits started to make sense and YouTube came along to popularize the genre. In fact, it was completely superior for the job compared to the alternatives at the time, such as Real Player. The real feature, however, was that Flash was programmable, which allowed these sites to create their own embedded video players without having to worry about the video codecs.

By that time, Flash had already gained somewhat of a bad reputation for being the tool with which some seriously horrible advertising content had been made, so the typical way to make the web fast was to disable Flash content - rendering most ads invisible. I'm pretty sure for many YouTube was the first time there really was an incentive to have Flash in their browsers at all. That is, unless you liked to play the casual games that already then were also often created with Flash.

But that's all history, what about the future? Adobe certainly needs to take quite a lot of the blame for the accusations leveled against Flash - in particular, the way Flash content slows a computer down even when nothing is visible (as in, the 10 Flash-based adverts running in a browser tab you haven't even looked at in the last half an hour), or that yes, it does crash rather frequently. Quite a few of those problems are being addressed by Flash Player 10.1, currently in beta testing and to be released some time in the next months. Too little, too late, says Apple, and many agree.

I would, too, except for the fact that despite the issues, Flash is still the leading and best platform for rich web applications. It took that position from Java because it was (and is) lighter and easier to install, and keeps that position now against the much-talked-about HTML5 because the latter simply isn't ready yet, and once it is, will still take years to be consistently available for applications (that is, until everyone has upgraded their browsers). Furthermore, it's quite a bit easier to create something that works by depending on Flash 10 than to work around all the differences of Internet Explorer, Firefox, Safari, Chrome, Opera and so on.

But that's exactly what Steve is saying, isn't it? That these cross-platform Flash applications simply can't provide the same level of sophistication and grace as a native application on the iPad. Well, maybe that's true today. Maybe it's even true after Adobe finally releases 10.1's mobile editions on the Android. And given the differences in the scale of resources Apple and Adobe can throw at a problem, maybe it's true even with Flash Player 10.2 somewhere down the road.

But that doesn't matter. What matters is what developers do with the tools given to them, because the tools themselves do nothing. There's plenty of horrible crap in the ranks of App Store's 200,000 applications, and there's plenty of brilliant things done with Flash and AIR. Among the best of the best, which platform has the greatest applications? That's a subjective call that I will let someone else try to answer.

I will say this: all technology is fated to be replaced by something better later. At least ActionScript3 and Flash's virtual machine provide a managed language that lets application developers worry about something else than memory allocation. Sure, it wasn't all that hot until version 10, and still loses to Java, but it sure is better than Objective-C. If we're now witnessing the battle for platform dominance for the end of this decade, I sure would like to see something else than late 80s technology at the podium.

The consumer position

Apple wants to provide the consumer a polished, integrated experience where all pieces fit together, and most of them are made by Apple. The future of that experience includes control of your data as well. Put your picture albums in Apple's photo service, your music library in iTunes, your home video on iMovie Cloud, and access it all with beatiful Apple devices. Oh, you don't want to be all-Apple? Too bad. That's what you get.

Or, you can choose something where you'll have choice. If you believe Steve Jobs, that choice is between dirt, smut and porn, but his interest is to scare you back to Apple, so take that with a grain of salt. Me, I've never liked being dictated to, so I'll be choosing the path where I can pick what I want, when I want it. Sure, it'll mean I'll miss some of the polish (iPhone is by far the nicest smart phone today, and the iPad sure feels sweet), but nevertheless, I respect my freedom to choose more. Today, it means I'll choose Android, and am looking forward to playing Flash games and using AIR applications on tablets powered by it.

Friday 27 March 2009

Why OnLive will not be the massive tectonic shift so many are currently predicting

Among the things announced this week in GDC were two developments in entirely different directions on a particular axis of games technology: first, the OnLive network of thin clients showing network-streamed video games rendered on a server cluster somewhere, and second, the Mozilla/Khronos Group initiative to develop an OpenGL-accelerated, JavaScript-programmed 3D canvas in a web browser. Both have one thing in common: make it possible to run 3D apps (games) on standard devices without prior installations. How they go about that goal is radically different. One of them will fail.

OnLive is not the first company to attempt their idea. It's a basic extension to the same theme that has been around since at least the inception of the X Window System and Sun NeWS in early 80s - graphical thin clients showing applications running somewhere in the network. Further, the idea was explored for 3D games in the late 90s by G-Cluster, which apparently is still around in Japan in some form or another. In my opinion, it's a misguided approach. Certainly there's value to server-side processing, even of graphics, but the final rendering just makes so much more sense to be done on the client even when all of the application logic is remote.

What kind of client? Well, anything that can run a high-performance VM for Java or JavaScript (ie, a modern browser), and has 3D acceleration functionalities built into the graphics pipeline. This includes basically every network-connected device from the cost of $200 upwards: all smart phones, all netbooks, all laptops, all games consoles, and so on. Some of those devices are still intentionally crippled by their manufacturers in terms of operating system support for the required features, and clearly the 3D Canvas development hasn't been finished yet. The hardware capabilities, however, are already deployed to hundreds of millions of consumers.

Ignoring that deployed base and trying to scale a server-side rendering solution to the same figures is just mad. And that's not even considering the framerate and responsiveness constraints that are inescapable simply because of the round-trip network latency of such a system: on a high-bandwidth wired network 10s of milliseconds (not everyone can be situated within a few kilometers of the server cluster), and on radio networks, 100s of ms. Developing high-framerate games under those circumstances is hard enough when you only need to deal within transmitting positional data and adjusting for lag and jitter in both ends - making the games playable when every action made by the player needs to go to the server and back before it shows up is practically speaking impossible.

(Update an hour later) I suppose I should acknowledge that clearly the OnLive approach does have certain benefits to it: no piracy, little hacking of the typical kinds, little opportunity to cheat, and no need for investing in PunkBuster-type technology in the game clients, since none of that is running locally. However, all that just simply will not matter when weighed against the enormous brunt of having to run all that rendering in the wrong end of the MMO network and ignoring the opportunities to disperse so much of the investment and energy requirements to the gamers.

Sunday 30 December 2007

Measuring Java availability

I wanted to get some data on Java's deployment frequency among web readers, and couldn't find any useful published figures from Sun. However, I did find that Sun's investment into Java deployment in terms of better installer can pay off for measurement as well, and that the Deployment Toolkit of Java's next release provides just the kind of tools I could use to augment Google Analytics which has excellent built-in measurement for Flash, but not for Java.

Continue reading...

Saturday 19 May 2007

Consumer Java - could it be true?

With all the fuss recently about Adobe's Apollo bringing Flash to the desktop, Microsoft's Silverlight bringing .NET to the browser, and Sun's JavaFX bringing scriptable Java to the desktop and mobile devices, I've had to give some thought to the question of what might be the role of these platforms in the future of rich Internet applications, and whether the time might be getting closer for us to reconsider using Director and Shockwave to develop the things we can't develop using AJAX. Lets just say I'm not going to jump on any one of these quite yet.

However, I'd missed one thing Sun apparently is finally working on, that made me rather sceptical of JavaFX's potential - there is a project going on for fixing the consumer usability of Java in a browser environment called Consumer JRE, which might even be released as an update to Java 6. Wow - that'd make me really happy just as a daily user of all kinds of desktop Java applications, let alone that I might actually count Java as a viable option for developing something for consumer deployment. Good luck, guys. I'll be watching you closely.

Thursday 29 March 2007

Flash to video

So, I have this situation where I have a relatively rich, configurable Flash animation player (not a video, not a preset animation) and I'd like to convert the output to an MPEG-4/FLV video stream. The commercial converters all look like they're designed for converting single animations, but I want this to scale WAY up to a few million converted videos. So, I figure -- why not try a GStreamer pipeline that decodes the Flash with Swfdec and encodes with ffmpeg?

Good idea in theory. In practice, my source material is a little bit too much for Swfdec to handle. Off to try to contact the developers ;) I'd be happy to hear about other practical approaches, too.