Job’s Thinks Flash Is Crap

During last week’s town hall, Jobs also took a swipe at Adobe Flash – still absent from the iPhone and apparently absent from the iPad as well. “They are lazy,” Jobs allegedly said of Adobe. They have all this potential to do interesting things, but they just refuse to do it…Apple does not support Flash because it is so buggy…

“Whenever a Mac crashes more often than not it’s because of Flash. No one will be using Flash…The world is moving to HTML5.”

This was taken from an article at theregister.

I have to say though, the guy has a point. I have been working with Flex now for a couple of years and we have found A LOT of bugs and errors with the platform and are always having to find a work-around. I started imagining the situation when Adobe thought up Flex. I just imagine this meeting where everyone is sitting around this big table scratching their heads about what to do next. “Why don’t we create a ‘framework’ that let’s people do these new RIA thingy majingies. We can just build it right on-top of flash with hardly no work at all”. That explains why its near on impossible to create real powerful applications. It turns out that Silverlight was actually thought about properly and designed and implemented from the bottom up correctly. I really wish that Adobe would sort out a lot of the problems it has with Flash. I mean we’re at version 3 of Flex now and its still buggy. Version 4 is about to come out soon so we will have to see if it gets any better. I doubt it will though for the security model (where most of my issues lie) as this is within the flash engine itself. We all know that Flash has had some (and most likely still does) incredibly shit security holes. It seems to me that they have just patched it up non-stop to fix the issue at hand. Some things we have tried to do are just impossible and I have found that the security model contradicts itself in many places.

I would like to end it on a positive note though. There are a lot of things that I do like about Flex and Flash or else I would never use it at all. I just wish that the player itself would have a complete rewrite going forward with perhaps a compatibility mode so the older stuff still works.

UPDATE.

As we suggested recently, the myriad bugs that over the past few years have routinely imperiled the entire internet have made Adobe the Toyota of the software industry. Company security personnel seem intent of correcting the problems, but the only way for that to happen is to launch a comprehensive initiative that makes a top-to-bottom review of the company’s entire code base.

It would seem that things are just getting worse for Adobe and other people are also suggesting that Adobe revamp their whole product security.

The Car infront is a Toyota

It seems this has been making its way around the web and I thought it was funny so thought I would share it myself.

HipHop Your Way To PHP

A few days ago facebook released (under opensource) their HipHop for PHP source code transformer. I remember first reading about this from an interview with a facebook employee on reddit. She mentioned that one guy was pretty much rewriting PHP to work on C++, which at the time sounded like they were working on some compiler. The actual product though is different, they basically convert the PHP source into C++ code, and then you can use your compiler of choice (probably g++) to get it up and running. I know something about this area as my final year project at uni I created a code transformer that would take a web script in PHP -> JSP -> ASP and convert it into any of the others. You could basically go in any direction – plus you could add in new modules for other languages that would allow you to transfer between even more. This was far from completion (I had it working for about 50% of common functionality) but I proved that it could be done – I also showed that you could optimize the code quite significantly. I basically added rules that would find common coding patterns and transform these in the AST (abstract syntax tree). Transforming to the new language was relatively easy as the tree was already in a good shape and the transformer knew how to properly express the tree in the most optimized way. The way I see it – HipHop has the opportunity to not only transform but optimize the hell out of the code as well. They say that in practice they are seeing a 50% CPU decrease and much better memory overhead.

I believe that the current version is compatible with PHP5.1 and they are quickly looking to get it compatible with 5.2. There are also some bits that it wont do, such as the rarely used eval() statement and function exists checking – these are things that they cant link to as they don’t know they exist, therefore can’t compile against

I have always liked PHP and have watched it get better and better to the point of it being a very professional tool in the right hands. I still regularly use PHP for my own applications that I need to get out the door quickly and effciently. What makes this interesting to me is that I can also look at it as a tool of choice for applications where I wouldn’t have before used PHP. I will have to play with it a bit and see what it can do. I think it will get more interesting when they get a version that can run on Apache/lighttd etc.

Go and get the code for yourself and check out the video for further information.

For more information on the technical challenges they face scaling Facebook, take a look at this article which goes into a deep enough description.

Has Dell Just Given Up?

I have had to deal with Dell again in the last couple of weeks, first off to order a computer for someone else and then for a cheap linux box myself (I must be crazy).

The story starts with me ordering a computer for someone else (they really don’t get the internet hence they want a computer to learn). The laptop was around £900 and ordering it online went well. Literally like 3 minutes after I placed an order I had a call from my credit card company for a fraud check (Well done to Virgin (MBNA)). They said to contact Dell by phone or email to let them know that they can take the payment now. So I thought I would give them a ring. I called their number, ending up getting through to India once again. I must have pressed about twenty different options, and when I finally got through to someone I get passed passed around about four times. It appears that no one there actually understands how to deal with this matter. During this they decide to drop my call – this is after having been on the phone for about 40 minutes. Furious now, I ring them again. I finally get through to someone after about 20 minutes and guess what, yes, they pass me over again. This time I was angry enough to stick it to the next person who picked up and said this was a disgrace – never in my life have I had to fight for a company to take my money. The annoying thing as well is that I am having to wait back in the queue every time they pass me over to someone else.

Anyway, I finally get through to someone who can deal with me. Within about 1 minute she does something and that’s that. Something which just took me about an hour on the phone was completed in about 20 seconds – I was even more peed off now. I told the lady that the credit card company has allowed them to take the money out within the next 24 hours so they must do it by then or else it wil bounce again. Can you guess what happens next? Yeah thats right, they didn’t take the payment again so it bounced once again. I was seriously pissed off by now. How unprofessional can one company be? It turns out that very!

So I now have visions of being stuck on the phone again for another lifetime but thought sod it. I just called my credit card company, and got through to a human in like 3 minutes (take note Dell), and told them to extend the time for the payment which they did. I thought I would just wait for Dell to take the payment again and if they don’t then its tough luck and they can sod off. Anyway, they did end up taking payment later on Sunday night (remembering that I placed the order on Thursday). I get my confirmation email and the date of arrival is a month in the future – WTF! I even called the sales team before I placed the order to get an idea of how long it would take and they said about 7 – 10 working days. This would come way after Christmas so was a bit pointless as a christmas present. I ended up calling them up again to cancel the order. This time it seemed fast for Dell’s standards – about 20 minutes on the phone.

Now for the second machine. I have wanted a cheap laptop to install ubuntu on and I know that on Dell hardware it pretty much installs easily, so went for the £300 Inspiron 1545 and upgraded the battery and memory so it came to about £335. Exactly the kind of price I wanted to pay. I know I should have known better by now but it was cheap (and I think this is the only way Dell gets business these days) so thought what the hell. Anyway, this one went fine with the payment but when I got the arrival date it would arrive after I head back to Germany, so again would be no use to me. I cant believe they cant get it to me within 2 weeks. So anyway, I am literally now on the phone waiting to get through to someone to cancel the order (again) and have had time to write this while waiting.

I have just come off the phone with them – a total of 30 minutes! I told the guy on the phone that I was not happy about having to wait 28 minutes to get through to someone, his reply was “that they have a very high volume of calls coming through” blah blah. It’s the same answer I get every time I call. I told him the mechanics of the company don’t interest me in the slightest, and if they are struggling isn’t that enough information for them to hire more call operatives. He seemed a little puzzled by that question for some reason.

So my question is “What has happened to Dell?”. I can say that they used to be fantastic – absolutely fantastic! I wouldn’t have gone with anyone else for the same sort of price. Their customer service was brilliant. I remember getting through to an Irish call center and their staff there would always deal with your issue immediately without having to pass you on to about twenty people. When you had problems with the hardware you got through to some technician who understood your point and opinion and sent your stuff out pretty quickly so you can do it yourself. They listened to reason and took your word for it accepting that you may have a brain.

Since HP took over from them as the biggest computer seller it seems that they completely panicked and thought of nothing but getting that spot back again. They seem to have removed all the Irish centers (I have not yet got through to one in a while) and moved them all to India. Now I don’t have any problem with Indians in the slightest but I find that it just takes so much longer to explain to them what’s going on and you have this problem when they just don’t hear things right (accents play into it here). I remember having to repeat my address to this one guy about 20 times. The technicians just don’t take your word for it and make you go through all this crap just to get to the place where you started.

It seems to me that in the hope of cutting costs they have lost the one major thing that is important – the customer’s respect!

Update: It would seem that Dell has now been put into third place thanks to Acer

Google Dashboard Privacy Control

I only recently found out about this so it may have been around for a while now so you might have already heard about it, but I thought it was worth mentioning. Amongst the criticism that Google is receiving about privacy it appears that they have started making in-roads by releasing the dashboard where you can find privacy settings for each google service that you use. It also has links next to each service that take you directly to the privacy settings for that service. It’s interesting to see an overview of everything that you have on Google and it just makes you think about how much of your life they must have stored away. Anyway I recommend you take a look.

A Bad Day At Work! Ouch!

I feel sorry for this guy. Just goes to show what can happen when you take your eye off the ball for a second. I can imagine what they must have said to him when they got him upstairs in the office.

For Everything Else There’s….

I got sent this funny spoof of the mastercard “for everything else…” adverts. I believe its been out for a while now so you may have seen it, but I thought I would post it up here as I found it pretty funny. Warning, it is pretty rude.

Flex/Actionscript Multiple Consumer Handling Issues

I have recently come across an issue that has been causing me grief for a while now because it was so hard to reproduce. Basically we have quite an advanced application (FusionAnalytics) that waits for data from a JMS channel. We have many different Views of data and each have their own data delivered on the queue.  This means that we can have about 1-500+ objects each listening for messages. When a message is received, each object checks to see if it can handle the data it receives and if not ignores it. This has been working fine for a while now (or so I thought).

When an object is waiting for data it turns on a spinner indicator so the user knows that the application is doing something. Various members of the team kept seeing an issue where the spinner would never be turned off, so it looks like that the system never receives a message at all or fails in some other way. Testing it myself the messages are received and handled correctly but other members have this case where randomly it would die. I spent weeks tweaking the application to hopefully fix this issue that I never saw in the first place – so not easy trust me – needles and haystacks should come to mind. Today, my good friend and colleague John Hawksley managed to reproduce it again and placed a ticket in explaining the exact details of how he replicated it (Which was very useful), but when we came to discuss the issue I could not reproduce it on my box, again. It’s so weird that even big boss came over to have a look and see how I could not also be getting the issue. This was testing it against my own dev server so instead I tried to debug the application using John’s server in Germany. Immediately upon connecting I had the “Spinner of Death” on every single view. That is weird I thought – even John didn’t see this on his own client using his own server.

On first glance it would seem that I may have overlooked the weak reference flag in our HashMap, therefore causing the context objects we use to hold information about the data to get GC’d. After changing all this around and altering some other data structures to make sure that it was this I booted up again – BANG – exactly the same thing. That’s very weird I thought. By now I have been debugging this thing for hours and compared it against my local server version. What should happen is that each object waiting should receive each item that comes down the queue.

So lets say I have 10 consumers and are expecting 10 messages we should expect that a handler should be called 100 times = 10 x 10. This was the case for the local environment server but not for the remote server. This is the bit that I have still not worked out – I know it has something to do with time in some way but I cannot tell you how or why and also I have not tested it using multiple queues – perhaps its an issue that affects multiple consumers on the same queue. Each message on the queue is handled at least once, so each message is being received at the client but for some reason it is not being dispatched correctly to all the handlers.

I can guarantee that most of you will never come across this case because the chances are that you are only going to have one, maybe two consumers at a time. The application that we have created is very data intensive as its an advanced analytic tool, plus its also a development framework that means it’s very lousely coupled allowing it to be used for multiple purposes (there is too much about it to write here so you will have to check out the website when it has been released). Any application that you are connected to (you are able to connect to multiple instances of the analytic tool) are running on the one server so it listens on its messaging queue, but each object (view) is channelling different data from the line so they all need to listen on the same message queue.

What was my solution?

I created my own dispatcher for the consumer channel. Like I said, each message is received and handled at least once, it’s just that you cant guarantee that it will be handled by all the objects that need the message. My dispatcher allows each object to post information about the data it is expecting and when that data is received it will dispatch the data to all the handlers that required it. This allows there to be only one consumer channel listening for data on the queue for each application. According to my theory (and I have been testing it for a while now) each message is  received (excluding anything like connection errors etc) once so I can then dispatch it myself. So my advice is to remember to use as few consumers as possible in the client – one consumer for each channel. Don’t give youself more work to do later when this thing pops up and believe me, no doubt they will. It’s very hard to track down as it’s so random in everyday use.

I will post back my findings when the application has been in testing for a longer period of time and see if it was the bug casusing the “Spinner of Death”.

P.S. If Adobe would change the RemoteObject request paradigm so that it did not pack multiple requests into one server request then we wouldn’t be having this problem in the first place. When you have some requests that take much longer to execute than the others it really does affect the performance of the application because you have to wait for the longest request to finish before you get a response. Although I can see the idea of it, it would have been nice to be able to switch it off. Very very bad idea not to allow this. There has been a bug committed to adobe about this, but whether they see it as a bug is a discussion for another day.

Update. It seems like this was the issue causing the “Spinner of Death” since it has been in action now for a while and the issue has not reared its ugly head again.

Apple Is Nuts

I can’t believe that Apple actually has in its iPhone SDK agreement a part that stipulates that you can’t distribute “frameworks”. I can’t possibly see the point of this at all. If I came up with what I thought was a really good framework that helps you to build applications much more stable and faster, wouldn’t this be a good thing to share? Wouldn’t it benefit the entire community? It makes sense now why I haven’t seen any frameworks for the iPhone – I always thought this was a little strange because usually there are ones out within days for other platforms. I just can’t believe how many draconian rules have have stipulated for their SDK, it just goes to show that there really is no better alternative at the moment, because otherwise I can’t fathom why developers would stick around.

I have found out though that it is Ok to share sample code, so you can show people an example app that includes your framework and then let them use it from there. This technically means you are not actually distributing the framework but merely sharing code. This is another example of how dumb the rules are, if you can get away with doing it by calling it something else why not just let people do it properly?

Now I have to mention something about Apple’s app review process. The link provided above is from Joe Hewitts blog – he is a facebook employee who develops their app for the iPhone. It is pretty much agreed that the facebook application is probably the best and most useful free app available on the iPhone (Perhaps best of all apps – who knows). They have just finalised their version 3 application and released it to the store for review – now being an important app you would think that it would have been green lighted pretty fast wouldn’t you? Well nearly two weeks have passed and still nothing. I mean how messed up is that? He has a little rant about the process and I agree with him that the process should be scrapped altogether – go and read the post for the full story. Even techcrunch have been getting angry emails about it all.

Why Would You Even Think About Giving Away Your Kitchen Sink (For Free)?

It would appear that Twitter might be considering giving away their crown jewels to Google for what I gather to be nothing. By crown jewels I mean their full stream of live tweets. Google would most definitely pay for this I have no doubt (which is why it may seem like a good option to twitter’s investors to claw back some cash) but in the long run its worth every penny to Google. Instead of people going to twitter.com to search for current stuff, they can (and will) just head to Google for everything. During this time Google could pull their finger out and replace it with a system of their own (fairly easily), further relegating twitter into the dustbin of yesteryear.

Twitter has the opportunity to find a nice solution of placing ads within streams. Damn, this could be killer for advertisers – the ability to get a presence within what is happening right now. Nothing has really offered this to advertisers before (well nothing that comes to mind anyway). Twitter’s problem is that they have left the gates wide open to competitors like facebook who have managed to put their entire service around a twittified “live feed” and will no doubt find a way pretty quickly to cash in on it. What has twitter been doing? They could have been experimenting more with monetisation ideas trying to find one that works really well – plus they could (and should) be pushing the boat out and taking a few risks of finding a great solution. You don’t get anywhere by copying the other guy (although I am sure that there are times where it works well). They could come up with something neat, unobtrusive, engaging and most of all lucrative. At the end of the day no one yet has found the perfect solution for this kind of “real time” search and there will no doubt be a better solution than keyword advertising in traditional search.

Google managed to dominate their arena – is everyone else going to let them do the same to theirs? Don’t let yourself just twitter away!

Next Page »