It finally happened. I moved to Linux. Specifically, it is my development machine at work that I installed Red Hat AS 3.0 on. I plan to do most of my development work on Linux from now on.
The installation was a breeze. I had two hard disks on my old (relatively speaking, it's P IV 2.4GHz/512 MB RAM), trustworthy development machine so I just cleaned the other disk and installed Linux on it with a dual-boot option. I switched a BIOS option to boot from that disk to be able to use Linux' boot loader instead of having to go through configuring NT loader.
I'm also running the beta 1 Java 1.5 Tiger, Eclipse and Tomcat (inside Eclipse with the Sysdeo's Eclipse Tomcat plug-in) Everything works great. I'm as happy as a fed pig in mud!
It continues to amaze how much stuff you actually get with any decent Linux distro these days. In contrast to Windows environments, you have most if not all of the apps you are ever going to need already installed and set up for you. I've used Unix main frames starting around 10 years ago and from time to time (often GUIless) Linux servers (as file servers, CVS, web etc.), but not really Linux workstations/desktops. So there's a lot to learn, but I love every minute of it. In a way, it feels I've come back home. Everything just makes sense, and you don't have to hunt for these weird registry settings to change or suffer from totally random failures so common in Windows environments.
It's estimated that Linux currently has around 1-3% market share on the desktop. But this is how it starts. It's well known that IBM is internally moving to Linux. Cisco and Nokia are likely doing the same thing. Once the bigger tech companies have moved onto it, it gets easier and easier for the non-tech companies to embrace Linux too. It just doesn't make sense to pay that much for the same or lower quality software to one company only. We live interesting times.
By now, you've probably seen the ads on the right column on the front page and in the bottom of individual blog entry pages. A friend of mine works for Google and she was telling me about this AdSense program. You just sign up and show ads on your website and Google gives you some money back to you every time your visitors click on an ad. Now, what makes it unique, is that these are not just any random ads, but aware of the context, based on the content you have on your page. I immediately figured that it's a great idea and Google is probably making loads of money with it. For Google, it's just a brilliant way of leveraging their existing information and knowledge of the whole web. However, I never really thought much more about it.
Sometime ago, we were talking about blogging with this friend of mine. She didn't know I had this blog, and interested, she asked about how many hits I usually get and what's my Google Page Rank. I always turn it off on my Google Toolbar, so I didn't know. Anyway, I turned it on just to see what I get and saw that my front page was ranked 5 out of 10. I didn't really know what to think of it, but my friend said that "hey, that's surprisingly good - maybe YOU should join the AdSense program". I hesitated a bit - don't ads on a blog look kind of stupid? - but she told me about how they work. Naturally, I got interested in the context awareness part and wanted to see how well it would do on my pages. This is not a high traffic site, but I figured that if I can cover my costs for running it (about $45 / year so we are really not talking about big bucks here :) it's worth to try out.
I can imagine that these context-aware ads would work really well for example on sites where a hardware, camera etc. enthusiast would write reviews on products. I'm still not sure if they fit here. What do you think? Do you get annoyed when you see the ads? Curse the site and refuse to ever again read my blog? If I start getting comments like that, I'll just take them out, but I'll keep them for now in the spirit of science experiment. Currently, it seems that Google's algorithm has a hard time deciding what kind of ads it would show on my front page. I guess it's natural because of the varied, mixed content. However, on some of the individual entry pages the ads are valid and surprisingly relevant.
If you read my previous blog entry, you can see that I wrote it as comment on a post on onrelease.org which was actually commenting my original blog entry. Confused, eh? There's the comment feature in Movable Type, why don't we just use that? For one, blog spamming is becoming worse and worse. In addition, if your write a long post, you tend to have something to say - or at least you think you have - so naturally you want to highlight that post. If you post it in a long chain of comments it might just get lost in the noise. Often comments you post on others' blogs are just like your blog entries, but the comment feature is awkward to use and feels a bit like it's just glued on top of the existing blogging functionality. So I had a thought: why doesn't Movable Type and others provide better comment integration among bloggers? TrackBack I guess, is an attempt to do something like this, but I don't see why comment and TrackBack need to be and look like separate features to the viewer. Somebody else's blog entry commenting your blog entry could be shown as a comment on your blog using an inline frame or as a local copy (although there might be security considerations in the latter), and your entry could be shown as a comment on others' blogs. That way, commenting blogs would be more uniform but would still provide different ways for adding comments. Maybe I should try it out to see how well it would work. I'm probably not the first one to think about this, anyone know if anybody else is thinking or already developing new functionality along the same lines?
I was checking the stats of the site sometime ago and found that onrelease.org was pretty high on my referrer list for some reason. Interested, I went to the site to found out why. It turns out that Aral Balkan had blogged a comment on my blog entry about security problems in Flash. I have some follow-ups about the issue in my own blog as well, but since there was discussion on another site as wll, I thought I'll just post about it again as a new entry. Quoting Aral, he comments that "The moral of the story is one that we already know: Never place any sensitive information on the client and *always* validate and authenticate every call on the server before acting upon it. " I agree completely. But the big problem with Flash still is the client side security. I contend that the more complex the client application gets the more difficult it is to validate every application state and value change on the server. Think about a car game for example: if you programmatically change your car to make it a bit more maneuverable and then drive record lap times with it, how would you validate it? You would have to send every key press and the time it was pressed to the server to validate the values against the same physics engine that is supposed to be on the client (this kind of cheating happens to be a real world example). Or a tank game, where you programmatically change your tank turret to always point to the direction of the opponent (same concept as in Electroserver's demo tank game). There's nothing - or very little - on the server side you can do to prevent it.
Client side security is always a problem and you can never make it completely secure, but with Flash it's just so easy and simple that it makes the life of a multiplayer Flash game developer so much harder. The idea is to make security good enough and make it difficult enough for others to hack it that they won't even bother to try. I don't know any other environment that would be as vulnerable to client side attacks than Flash. In my opinion, Flash needs two things: an option to prevent host swfs to change the run-time behavior of a child swf and a better file format more suitable for obfuscating the code. These two things would go a long way towards addressing the security problems in Flash.
Day Three started straight with multiple sessions. I went to "Flash Interacting with The Physical World", which was kind of interesting, but nothing amazing. It was basically a marketing pitch from company called Making Things to promote their system and hardware for controlling various input/output devices, such as light sensors, LEDs etc. through Flash. The whole thing was utilizing XML sockets so basically Flash was just glued on top of the rest of the system and could have been implemented in any other language. They did, however, have some ready-made Flash components that you could use.
The next was Branden Hall. Everybody in the Flash community recognizes his name and I had never before met the guy so I wanted to see him. Branden gave a talk on "ActionScript for Everything Else", a real-world, pragmatic view on working with Flash and Actionscript. From some net discussions I had an image of a guy, who's not really a guru kind of programmer, but just puts a lot of energy in everything he works on and is not afraid to try new things. That image only became somewhat stronger during the talk. I have lots of info on his presentation, but I'll just bring up some highlights for now: Branden's working on a new UI component kit called "Buzz" that's supposedly to be better, faster, lighter etc. than MM's component kit (that's kind of easy to do - the quality of them isn't that great); only runtime matters to users, so ASv1 for some things, ASv2 for others; MX2k4 components often overkill for users and a bitch to skin (I'll second that); some good notes on the use of delegates and event engines; and as a conclusion: there's no one way to do things in Flash and one shouldn't be afraid to break "rules" and to learn new things.
I would have liked to go to Branden's Q & A which was up next, but opted for Comcast's presentation since it was at the same time. Those who don't know, Comcast and Macromedia published a press release some time ago about Comcast licensing Flashcom and starting to use it big time. Obviously, Comcast crew was very impressed of what they had achieved, since a large part of the presentation they were just showing off their Flash-based portal. I talked to several of them and it's really quite remarkable what they have been able to do considering how small their team is. It's another good example of how software teams should be organized to be effective. Also, one thing that makes their life much easier and the experience much more enjoyable is that since they are targeting their own customers only they can fairly well predict what the client bandwidth and target that instead of worrying about providing at least some user experience for really low-bandwidth, such as modem users.
I was late for the next session after lunch, but there wasn't anything too interesting. So I did some session hopping, from Penner's drawingAPI Q & A to Workflow Strategies, then finally ended up in Guy Watson's Q & A (flashguru.co.uk). The poor guy didn't get the equipment working properly and there were only a few of us in the session, but I have a high respect of him. He really seems to know his stuff and has recently been working on Flash JSAPI a lot. I asked if you can access the file system through JSAPI and he answered that he and Burak (another well respected Flash hacker) has been thinking about that too, and Burak had come up with a DLL that will allow just that, so great news!
Last two sessions (or actually three, went to Nazke's presentation in the end, that guy just does amazing things with graphics!) for me were Jobe Makar: Real-time Multiplayer Games in Flash and Mike Chamber's Central presentation. ElectroTank's Electroserver 3 seems to be a fairly well written real-time application server for Flash. They even have their own server-side actionscript interpreter and lots of functionality geared towards real-time gaming. Mesh' presentation on Central was actually somewhat of a disappointment even though it was pretty much what the program promised. It was just a basic demo of features and a simple how-to on Central programming. So I went to see the Nazke's amazing demos before the end.
After the disappoint of the first day, FlashForward delivered: lots of good information, a chance to meet the best of Flash guys in the world, and overall a fun event! Only one thing to rant about the last day, the wireless still wasn't working so the network worked properly only half a day during a three-day conference, which was pretty sad.
Again, you'll find my raw notes for day three below.
---
Flash Interacting with The Physical World:
Branden Hall: ActionScript for Everything Else
- ASv2 is not Java! Doesn't have the performance, libraries etc.
- compiles down to ASv1
- It's runtime that matters to user
- MX2k4 Components
- great for high-end RIAs
- often overkill otherwise, too big too slow
- architecture not documented
- skinning isn't that easy...
- not all source available
- custom components
- v2 style allows you to make everything in code
- they speed development
- they make you think abstractly
- often ripe for reuse
- applying oop can be very different in different languages
- leverage AS in design patterns
- Buzz Component Kit - new component kit Branden is building
- small, fast, modular, flexbile, easy to use
- easy to skin & extended
- easily add features
- core classes open source
- based OSX Cocoa
- includes sequencing code
- initial release replicates v1 set
- for any, and every kind of Flash
- unique object IDs
- time segmentation
- delegates
- going to release it really soon now...
- delegates
- components don't know "outside"
- dleegates = informal protocol
- "will", "should" before an action
- "did" after an action
- can also be used for data sources
- centralized events
- for any object that needs observers
- can track / debug events easily
- can observer per object or per event
- no mix-ins or code replication
- key/value coding
- take getters / setters to new level
- combined with [...] syntax
- allow for any property in any object to be observed
- can be used to easily bind objects
- conclusion
- there is no one way to Flash
- base your way on goal & knowledge
- don't be afraid to break rules
- try new idea!
- learn more outside your normal range
- don't forget to play!
Eric Elia, Comcast: Flash in a 100% Broadband Online Service
- over 5MM broadband customers
- 100% broadband audience - no dial up
- building from scratch
- build fast and always-on applications to differentiate the broadbad experience
- Flash is now the best platform for building broadband applications
- fully-customized user experience
- integrated video
- launched new online service built for 100% broadband audience in fall 2003
- comcast.net is most/used start page among Comcast high/speed internet customers
- flash platform has helped achieve measurable success in less than four months
- over 10x in video usage through comcast.net
- estimated over 100k per month reduction in support costs
- over 5x increase in use of personal customization features
- bradband ue drives true usage
- people watch comcast video for almost 3x as long as other internet video ( 2:53 min vs < 1:00 min)
- from statistically sound ample of third-party CDN data
- average "traditional" video player based on non/Flash video, served in pop/up window, including features such as playlisting
- Comcast video served through "The Fan"
- Jeremy, the Flash guy
- why flash
- flexible and light
- user experience
- large footprint
- easy video integration
- comcast has 97% Flash penetration among customers
- performance issues, but can be overcome by optimizing code
- video usage has doubled every month since the launch last year
- buffering, great because you can fairly well predict users bandwidth
- Kevin, engineering manager
-why Flash?
- single code base
- cross platform compatibility
- low-cost development environment
- rich UI
- less cross platform issues f.ex. compared to Java
- possible solutions for desktop
- central
- out of box projector wrappers:
- screeenweaver
- northcode
- FlashJester
- Custom Flash Client
- VB / C#
- Java/C++
- video about 500K/s, 24 frames /s
- using Sorenson Squeeze
- VitalStream for Flashcom
- live stream coming March 18th
- they are toying with ip-phones
Did some session hopping, from Penner's drawingAPI Q & A to Workflow Strategies, then finally ended up in Guy Watson's Q & A (flashguru.co.uk)
- has to run the IDE so cannot be used as a generator replacement
- Burak wrote a DLL to access the file system from JSAPI. Absolutely great for ant building
- There's a document DOM but cannot be printed out in XML form?
- demo of a pretty cool 3d box component added in the IDE
Jobe Makar: Real-time Multiplayer Games in Flash
- ElectroServer 3
- room variables
- user variables
- user numbering
- exchnaging data objects (between clients)
- server-side actionscript/Java -- plug-ins
- authoritative-cilent game
- reproducable results on the client
- clients don't necessarily agree:
- one thinks the game is over
- the other is patting himslef on the back for amazing evasive maneuvers
- authoritative-server model
- odn't let client make important descisions
- collision detection, grabbing power-ups etc.
- gamasutra.com
- gamedev.com
- ai-depot.com
- books
- game programmming gems 3
- section 5.1 Jim Greer
- section 5.4 - Justin Randall
- remote shared objects in ElectroServer 3?
Mike Chambers: Application Development with Macromedia Central
- you can find other Central applications, pay online
- every Central application has a product XML file
- every Central application has to have a product ID
Hopped in to Eric's session half-way through
Erik Natzke: Inventive Interaction:
Whew, the day two looked much better right from the beginning. There were two more tracks; Kevin Lynch started the day. Man, that guy looks young, but he's been over twenty years in the business, so I guess I have to take him seriously. Some main points from Kevin's talk: Breeze and Flashcom are going to continue as separate products; MM not super worried about Sparkle and Avalon (of course they have to say that), but there was some merit to the fact that it will only run on Windows and will be fairly performance-heavy; Flex completely based on ActionScript 2.0; lots of info, brief highlights on new products and a product timeline (something they've never done before); codename "Brady", an XML editor for form-based applications; looking at porting Flash authoring environment to Linux, but not sure yet, runs with Wine; Flash 7 for Linux coming.
After the opening keynote went to Kevin Lynch Q & A even though there would have been other interesting sessions going on at the same time. Apparently, MM has some kind of of Java to Flashcom integration working, but it's something that they've just hacked together, not meant to be released.
Before lunch I catched G. Skinner's "Applying ActionScript 2.0". He's the author gModeler, UML based modeling tool in Flash. Some interesting discussion there, but nothing really new. I'm not sure how I feel about Actionscript 2.0. I don't think it's necessarily the right way to go, though it certainly helps to manage the code and find bugs in bigger, more complex projects. Each language has their own advantages and disadvantages and Flash being a classless, prototype based language, it shouldn't be forced into a form of Java-like, strictly typed, class-based language. Well the argument is that ASv2 doesn't really force you to anything, because you can still use ASv1, but it's just that there isn't a bridge between the two styles. I would have liked so see better implementation of prototype based inheritation hierarchies and better dynamic error handling, instead of trying to hide the roots of ActionScript as a language. Yet, another thing is that ASv2 compiles down to ASv1, so there are a lot of things you can do run-time that you can't do compile-time (in ASv2), which opens possibilites to hacks and errors that might be difficult to track down.
After lunch I accidently went to "Interactive Impulse", which was absolutely great! Lots of physics modeling, which only true geeks like me can appreciate :)
The next session was Mike Lynda: ActionScript Performance Tricks. The presentation wasn't that interesting, but we had a lot of discussion both during and after the session. Especially for optimizing Actionscript the two old rules of thumb apply:
1) never optimize before you actually need to optimize
2) never optimize without measuring the performance, only based on your gut feeling
The next session was Samuel Wan's Q & A. He had a presentation "Scratching the Stream" where I didn't go to, because it seemed too basic. Anyway, some interesting information about load balancing Flashcom and streams came up. More on that later, need to do some testing first.
Oh yeah, that wireless was down again for the whole day. They got the router to work, but lost wireless. Can't figure out what exactly is so difficult in getting a wireless hub working.
In the evening there was FlashFilmFestival and after that a Festival party. So a pretty full day, I was at home after ten pm. Like yesterday, I've posted my raw notes below for those interested.
---
Kevin Lynch:
- The current Interactive Media Trend is Rich Client Applications - Macromedia projects the trend to continue to at least 2008
- Flash moves outside the browser with Central
- Ubiquity of Flash reached by pushing the player to new devices
- Each new Flash player is adopted faster than the previous version (less than a year to over 90% penetration)
- Flash product timeline 2004:
- Macromedia Flex 2004 -
- MXML / SOAP with Java back-end
- Halo strongly related to Flex
- Drag & drop etc. standard GUI behavior built-in to the Halo component framework
- Brady - only code name for now - 2Q
- an XML editor - sounds interesting
- MM Flash MX 2004 update coming mid-year
- MM Central 4Q
- SDK enabling communication between Central and AOL / ICQ, available spring 2004
- "Totally exciting partnership... looking forward to it"
- "Best way to predict the future is to invent it"
- Design, continuing to raise the bar
- Patterns, we are starting to see more web patterns, hopefully de facto standard
- Experience, better, more enjoyable... beauty is needed for better usability???
- Customization
- Social networking
- Disposable Experience - development of disposable application becomes cheaper because of better frameworks, platforms
- markettrac.nyc.com
- www.who.org check out the app - life expectancy, GDP etc.
- Human Centered Experience
- Longer Term Plans
- New Generation of Flash Player
- Macromedia Central team workign closely with Flash Team
- Flex
- New Flash MX
- Brady - for form based applications, pattern-based applications
- Everything has to work cross-platform
- Looking at Linux, have a Flash player on it. No authoring tool yet, but might happen, maybe through Wine
- DEMO: Flash MX running on Redhat Linux through Wine
- Flash 7 native for LInux is coming
- The future of Flashcom versus Breeze:
- new Breeze version coming
- Breeze very exciting, fast adoption, one of the fastest growing MM products
- Securing Flash:
- critical data always on the server
- no obfuscation, no encryption coming
- Quizzies, SCORM compliancy coming in the new version
Kevin Lynch Q & A
- Breeze and Flashcom are going to continue as separate products
- Flash MX Pro was never meant for developers only - just looking a feature set
- Sparkle, not super worried about it. Avalon will be really cool, but will only run on high-performance machines and on Windows. They are driving machine adoption to sell new OS with it. They won't have the richness and reachness of Flash player
- Flex based on Actionscript 2.0 already. You can create MXML tags in Actionscript, some classes to help with that
- Talked to MM guy who answered the question about Java and Flashcom integration, said that the communication piece was just hacked together, didn't either know or didn't want to teel if it was socket, process or Flash player hack based. I asked if they will have XML DOM object support in the next version, didn't know, but said it's a good idea, depends on if customers are asking a lot about it
GSkinner, Applying Actionscript 2.0:
Interactive Impulse:
- Great 3D gravity models, isometric Flash games, inverse kinematic
Mike Lynda, ActionScript Performance Tricks:
- Assesment Development and Innovation Team
- also work with simulations
- http://oddhammer.com
Samuel Wan: Q & A
- www.samelwan.com/information (files uploaded soon ...)
- chattyfig.figleaf.com (flashcom mailing list info)
- www.macromedia.com/desdev/ (flashcom section)
- Flash Communication Server MX, by Kevin Towes, New Riders Press
- load balancing streams on Flashcom - there's a whitepaper on MM
- There's a load balancer built for Flashcom in MM, but not publicly available
- FCS servers connected to a SAN server
- SAN server acts only as FLV / sharedobject storage
- Teacher connected to the SAN server
- Change the framerate to almost zero for everybody to bring down Video bandwidth usage
- You can attach data into a stream!!! Try this at work
- stream_as.send("video", obj)???
My first ever FlashForward started today. I still feel a bit like the odd man out in the Flash community. Anyway, I got the message: Flash is still cool. But is it anything more? The conference was surprisingly small and I don't believe it was sold out, though I've heard it traditionally does so. The first half of the first day was pretty boring. The opening keynote was missing its subject (Head in the Clouds, Feet on the Ground), it was incoherent and it didn't have any good point to deliver except for maybe hyping up some cool technologies. The next session was about Flash Fundamentals and Actionscript and oh boy, were they really fundamentals. Really, I don't see the point in teaching basics of Flash in a conference like this. Then again, while I've participated in numerous academic conferences, I've never been in a marketing conference like this, supported by one company for promoting that company and its products. So maybe it's just that my expectations were too high.
Some more ranting: On day one, most of the sessions were duplicated. The problem was that they were way too basic and there were no other choices, and I would believe that most of the audience felt the same way. In the afternoon, the network just went down. One thing I've learned from past conferences is that you want to locate a good spot near a power socket to get your laptop re-charged during day. I did just that during the morning sessions and after lunch I was happily sitting there, waiting for the first afternoon session to start when one organization staff member came by. He said they can't allow anybody to use the power outlet. I asked if he was serious and if this is the case everywhere in the building. He politely said yes, and then taped up the socket. So what do we really get for our money? For six hunder bucks per seat you would expect that you could at least get free electricity. And some food couldn't hurt... Price aside, all is not lost though, as the program for Thursday and Friday look much much better than it did for today.
The highlights of the day: The exhibition hall (EVERY company that is somebody in the Flash business was there); Flash video session and the Steve Ballmer video (now that was funny :) and O'Reilly's very enjoyable presentation that ended the day one.
I posted my raw notes for the day one on the extended entry below in case you are interested.
---
Opening keynote Bill Buxton: Head in the Clouds, Feet on the Ground
Wireless ubiquity x 2, every 4 1/2 months?
- Everything has been techno-centric, but should be humancentric: Think who, how, when
- Check out E-ink (the company)
- It's the society of appliances as much as the society of people
- boring
- check out the laser projector company
Flash fundamentals: the last 10 mins
- Flash quizes, XML api is getting better
- XML is the answer for app interoperability
Flash Actionscript:
- Extended localConnection classes in Central
Video in Flash:
- add queuepoints in video for each slide and label them the same as the slides
- Video drives the playback with queuepoints
Flash for mobile developers:
- interesting
- Flash player in Nokia s60 mobile
O'Reilly session:
- William Gibson: "The future is here. It's just not evenly distributed yet."
- All the "killer apps" today are running on multiple computers
- The Internet, not the PC, is their platform
- Built on top of open source, but not themselves open source
- Services, not packaged applications
- Exploring how to become platform players via web services APIs
- Data aggregators, not just software
- User contributions key to market dominance
- Microsoft will own map space in 2-3 years because they are the only one figuring out how to make the map service available to other applications
- Apple iToons going to be a billion dollar business
- Like Amazon backend built-in to a hand-held device
- Rendezvous-enabled
- Web services-enabled (CDDB)
- We've only seen the tip of the iceberg
- but no user-provided content in iTunes - "architecture of participation"
- no longer thinking about PC as an island, but an interworking device
- We need a set of best practices - "human interface guidelines" for network-generation applications!
- Network Centric Software = Social Software?
- Listening to Napster: The architecture of participation
- Network navigation metaphors needd
- Who owns the data?
- creating content for everybody driven by selfish needs of individuals
- Amazon sells because it has this architecture of participation
- Barnes & Noble doesn't have this architecture; promotes its own publications
- Orkut cool. But how do you make money with it?
- Orkut went from nothing to 800 most popular sites
- Orkut should provide an addressbook web service
- Netcrat is the trueteller. Apache winning the webserver war
- Data visualization.
- netscan.research.microsoft.com
- Orkut reaching Friendster
- Google AdWord Technology Index
- Greater data visibility is changing how the market works!