Saturday, 17 December 2011

Coimbra, 2000 years

by @flashopen
Coimbra, Portugal
Taken care fore more then 2000 years

Friday, 2 December 2011

To Put In Portuguese

Portuguese paradigmatic conjugations of the verb  to put (meter)

eu (I) - tu (you) - você (formal you) - ele/ela (he/she) - nós (we) - vós/vocês (you pl.) - eles (they)

Active - Simple

1. Present tense:
eu meto
tu metes
ele/ela/você mete
nós metemos
vós meteis
vocês/eles metem

2. Present tense - conjunctive:
eu meta
tu metas
ele/ela/você meta
nós metamos
vós metais
vocês/eles metam

3. Past tense - imperfect:
eu metia
tu metias
ele/ela/você metia
nós metíamos
vós metíeis
vocês/eles metiam

4. Past tense - imperfect conjunctive:
eu metesse
tu metesses
ele/ela/você metesse
nós metêssemos
vós metêsseis
vocês/eles metessem

5. Past tense - perfect:
eu meti
tu meteste
ele/ela/você meteu
nós metemos
vós metestes
vocês/eles meteram

6. Future - imperfect conjunctive
eu meter
tu meteres
ele/ela/você meter
nós metermos
vós meterdes
vocês/eles meterem

7. Past tense - pluperfect:
eu metera
tu meteras
ele/ela/você metera
nós metêramos
vós metêreis
vocês/eles meteram

8. Future - imperfect:
eu meterei
tu meterás
ele/ela/você meterá
nós meteremos
vós metereis
vocês/eles meterão

9. Conditional:
eu meteria
tu meterias
ele/ela/você meteria
nós meteríamos
vós meteríeis
vocês/eles meteriam

10. Imperative:
(tu) mete
(nós) metamos
(vós) metei

11. Impersonal infinitive:

12. Personal infinitive:
(eu) meter
(tu) meteres
(ele/ela/você) meter
(nós) metermos
(vós) meterdes
(vocês/eles) meterem

13. Gerund:

14. Past participle:

Active - Composed (ter/haver - to have)

1. Past tense - perfect conjunctive:
eu tenha (haja) metido
tu tenhas (hajas) metido
ele/ela/você tenha (haja) metido
nós tenhamos (hajamos) metido
vós tenhais (hajais) metido
vocês/eles tenham (hajam) metido

2. Past tense - perfect:
eu tenho (hei) metido
tu tens (hás) metido
ele/ela/você tem (há) metido
nós temos (havemos) metido
vós tendes (haveis) metido
vocês/eles têm (hão) metido

3. Past tense - pluperfect conjunctive:
eu tivesse (houvesse) metido
tu tivesses (houvesses) metido
ele/ela/você tivesse (houvesse) metido
nós tivéssemos (houvéssemos) metido
vós tivésseis (houvésseis) metido
vocês/eles tivessem (houvessem) metido

4. Past tense - pluperfect:
eu tinha (havia) metido
tu tinhas (havias) metido
ele/ela/você tinha (havia) metido
nós tínhamos (havíamos) metido
vós tínheis (havíeis) metido
vocês/eles tinham (haviam) metido

5. Future perfect - conjunctive:
eu tiver (houver) metido
tu tiveres (houveres) metido
ele/ela/você tiver (houver) metido
nós tivermos (houvermos) metido
vós tiverdes (houverdes) metido
vocês/eles tiverem (houverem) metido

6. Past tense - pluperfect anterior:
eu tivera (houvera) metido
tu tiveras (houveras) metido
ele/ela/você tivera (houvera) metido
nós tivéramos (houvéramos) metido
vós tivéreis (houvéreis) metido
vocês/eles tiveram (houveram) metido

7. Future perfect:
eu tirei (haverei) metido
tu terás (haverás) metido
ele/ela/você terá (haverá) metido
nós teremos (haveremos) metido
vós tereis (havereis) metido
vocês/eles terão (haverão) metido

8. Conditional:
eu teria(haveria) metido
tu terias (haverias) metido
ele/ela/você teria (haveria) metido
nós teríamos (haveríamos) metido
vós teríeis (haveríeis) metido
vocês/eles teriam (haveriam) metido

9. Impersonal infinitive:
ter (havido) metido

10. Personal infinitive:
(eu) ter (haver) metido
(tu) teres (haveres) metido
(ele/ela/você) ter 
(haver) metido
(nós) termos (havermos) metido
(vós) terdes (haverdes) metido
(vocês/eles) terem (haverem) metido

11. Gerund:
tendo (havendo) metido

Passive (ser - to be)

1. Present tense:
eu sou metido
tu és metido
ele/ela/você é metido
nós somos metidos
vós sois metidos
vocês/eles são metidos

2. Present tense- conjunctive:
eu seja metido
tu sejas metido
ele/ela/você seja metido
nós sejamos metidos
vós sejais metidos
vocês/eles sejam metidos

3. Past tense - imperfect: 
eu era metido
tu eras metido
ele/ela/você era metido
nós éramos metidos
vós éreis metidos
vocês/eles eram metidos

4. Past tense - imperfect conjunctive:
eu era metido
tu eras metido
ele/ela/você era metido
nós éramos metidos
vós éreis metidos
vocês/eles eram metidos

5. Past tense - perfect:
eu fui metido
tu foste metido
ele/ela/você foi metido
nós fomos metidos
vós fostes metidos
vocês/eles foram metidos

6. Future - imperfect:
eu for metido
tu fores metido
ele/ela/você for metido
nós formos metidos
vós fordes metidos
vocês/eles forem metidos

7. Past tense - pluperfect anterior:
eu fora metido
tu foras metido
ele/ela/você fora metido
nós fôramos metidos
vós fôreis metidos
vocês/eles foram metidos

8. Conditional:
eu seria metido
tu serias metido
ele/ela/você seria metido
nós seríamos metidos
vós seríeis metidos
vocês/eles seriam metidos

9. Future - imperfect:
eu serei metido
tu serás metido
ele/ela/você será metido
nós seremos metidos
vós sereis metidos
vocês/eles serão metidos

10. Imperative:
(tu) sê metido
(você) metido
(nós) sejamos metidos
(vós) sede metidos
(vocês) metidos

11. Impersonal infinitive:
ser metido

12. Personal infinitive:
(eu) ser metido
(tu) seres metido
(ele/ela/você) ser metido
(nós) sermos metidos
(vós) serdes metidos
(vocês/eles) serem metidos

13. Gerund:
sendo metido

14. Past participle:
sido metido


1. Present tense:
eu meto-me
tu metes-te
ele/ela/você mete-se
nós metemo-nos
vós metei-vos
vocês/eles metem-se

2. Present tense- conjunctive:
eu  me meta
tu te metas
ele/ela/você se meta
nós nos metamos
vós vos metais
vocês/eles se metam

3. Past tense - imperfect: 
eu metia-me
tu metias-te
ele/ela/você metia-se
nós metíamo-nos
vós metíeis-vos
vocês/eles metiam-se

4. Past tense - imperfect conjunctive:
eu me metesse
tu te metesses
ele/ela/você se metesse
nós nos metêssemos
vós vos metêsseis
vocês/eles se metessem

5. Past tense - perfect:
eu meti-me
tu meteste-te
ele/ela/você meteu-se
nós metemo-nos
vós metestes-vos
vocês/eles meteram-se

6. Future - imperfect:
eu me meter
tu fores metido
ele/ela/você se meter
nós nos metermos
vós vos meterdes
vocês/eles se meterem

7. Past tense - pluperfect anterior:
eu metera-me
tu meteras-te
ele/ela/você metera-se
nós metêramo-nos
vós metêreis-vos
vocês/eles meteram-se

8. Conditional:
eu meter-me-ia
tu meter-te-ias
ele/ela/você meter-se-ia
nós meter-nos-íamos
vós meter-vos-íeis
vocês/eles meter-se-iam

9. Future - imperfect:
eu meter-me-ei
tu meter-te-ás
ele/ela/você meter-se-á
nós meter-nos-emos
vós meter-vos-eis
vocês/eles meter-se-ão

10. Imperative:
(tu) mete-te
(nós) metamo-nos
(vós) metei-vos

11. Impersonal infinitive:

12. Personal infinitive:
(eu) meter-me
(tu) meteres-te
(ele/ela/você) meter-se
(nós) metermo-nos
(vós) meterdes-vos
(vocês/eles) meterem-se

13. Gerund:


1. Present tense:
eu meto-o
tu mete-lo
ele/ela/você mete-o
nós metemo-lo
vós metei-lo
vocês/eles metem-no

2. Present tense- conjunctive:
eu  o meta
tu o metas
ele/ela/você o meta
nós o metamos
vós o metais
vocês/eles o metam

3. Past tense - imperfect: 
eu metia-o
tu metia-lo
ele/ela/você metia-o
nós metíamo-lo
vós metíei-lo
vocês/eles metiam-no

4. Past tense - imperfect conjunctive:
eu o metesse
tu o metesses
ele/ela/você o metesse
nós o metêssemos
vós o metêsseis
vocês/eles o metessem

5. Past tense - perfect:
eu meti-o
tu meteste-o
ele/ela/você meteu-o
nós metemo-lo
vós meteste-lo
vocês/eles meteram-no

6. Future - imperfect:
eu o meter
tu o meteres
ele/ela/você o meter
nós o metermos
vós o meterdes
vocês/eles o meterem

7. Past tense - pluperfect anterior:
eu metera-o
tu meteras-lo
ele/ela/você metera-o
nós metêramo-lo
vós metêrei-lo
vocês/eles meteram-no

8. Conditional:
eu metê-lo-ia

9. Future - imperfect:
eu meter-me-ei
tu meter-te-ás
ele/ela/você meter-se-á
nós meter-nos-emos
vós meter-vos-eis
vocês/eles meter-se-ão

10. Imperative:
(tu) mete-o
(nós) metamo-lo
(vós) metei-o

11. Impersonal infinitive:

12. Personal infinitive:
(eu) metê-lo
(tu) metere-lo
(ele/ela/você) metê-lo
(nós) metermo-lo
(vós) meterde-lo
(vocês/eles) meterem-no

13. Gerund:

ISBN 972-0-05081-0 (1997)

Friday, 25 November 2011

Mondego, the silent river.

This is a very nice short documentary by Daniel Pinheiro about a river that I'm very well acquainted with: The Mondego. I was born in Lisbon actually, but I grew up in Coimbra city where this river is the main reason of its existence. It is also part of me, as I got its water running in my veins, and that, was not an option! My parents are originally from a village in the valley of Serra da Estrela, very close to where this river knows its begin: The Mondeguinho (The little Mondego). As kayaking was my sport activity during my student times, I have indeed paddled many exciting sections of its silent course. I'm really thankful to this piece of nature! Its harmony and beauty has provided me with a great joy and has made my youth much happier. Now, and because I'm living at 2500 Km away, to watch to a doc like this one, memories of unforgettable times are brought to present!

"Mondego" by Daniel Pinheiro from Daniel Pinheiro on Vimeo.

The Mondego, Coimbra and my children by @flashopen
Sets on Flickr:
Serra da Estrela

Portuguese is the 3rd most tweeted language

More then 21 million tweets are sent in Portuguese via Twitter on a daily basis. That ranks Portuguese to the 3rd most tweeted language, and about as much as Spanish, Korean, Arabic & Thai together. These numbers come out from a study developed by the Paris-based agency Semiocast for October 2011. Semiocast has analysed a sample of 5.6 billion tweets dated from July 2010 to October 2011 revealing the top 10 languages used on Twitter.
Some other rankings could fairly assume for instance that Spanish speakers don't have so much to say on Twitter, Dutch are completely addicted to it and the Japanese don't do anything else.

Saturday, 19 November 2011

FN Minimi

by Flashopen

E-learning tool I have developed back in 2001 with Macromedia Flash 5 for the Dutch Royal Army Forces.

More info:

Monday, 14 November 2011

Google X

by Alex Chitu
Google X: New York Times has an interesting article about Google X, a secret lab where Sergey Brin and other Google employees tackle important projects that aren't yet ready for primetime.
In a top-secret lab in an undisclosed Bay Area location where robots run free, the future is being imagined. It's a place where your refrigerator could be connected to the Internet, so it could order groceries when they ran low. Your dinner plate could post to a social network what you’re eating. Your robot could go to the office while you stay home in your pajamas. And you could, perhaps, take an elevator to outer space.

Google X is the place where Google works on the driverless car and New York Times reports that Google is considering manufacturing the cars in the US. Many projects are related to Android @ Home, an initiative announced this year that tries to make everyday objects smarter. "We want to think of every appliance in your home as a potential I/O device," said Google's Joe Britt. Google tries to build the "Web of things" by connecting home accessories, wearable objects to the Internet.

Most of the ideas tackled at Google X involve robots. "Fleets of robots could assist Google with collecting information, replacing the humans that photograph streets for Google Maps, say people with knowledge of Google X. Robots born in the lab could be destined for homes and offices, where they could assist with mundane tasks or allow people to work remotely".

It's interesting to note that one of the Google X projects could be released by the end of the year, although it's not clear what it does. At the I/O conference, Google announced that it will introduce "a Web-connected light bulb that could communicate wirelessly with Android devices," so this might be the product that will be released.

Google has always tried to solve big problems, even if many people think that it should focus on improving search results and ad quality. "Larry and Sergey founded Google because they wanted to help solve really big problems using technology," said Sebastian Thrun, a robotics expert who invented the first self-driving car and now works at Google.

Google X could be the next Xerox PARC or it could fail, but it's important to think big and take risks. "I just feel like people aren't working enough on impactful things. People are really afraid of failure on things, and so it's hard for them to do ambitious stuff. And also, they don't realize the power of technological solutions to things, especially computers," complained Larry Page in Steven Levy's "In the Plex".

Hopefully, MG Siegler is right when he says that "whatever is going on inside of Google X, I'm fairly certain it's filled to the brim with the kind of stuff that made us all fall in love with Google in the first place".

{ Thanks, Venkat. }

Monday, 7 November 2011

Monday, 19 September 2011

Coincidence? [Infographic]

About the infographic Apple products are notorious for speculation before launch - mainly because Apple is so secretive about any of the details of a product before launch. The iPhone 5 is no exception. Everything from the launch date to the features available have had recent speculation. Yet another iPhone prototype was potentially lost in a bar - just like the iPhone 4. Some even predict that Apple will soon release two new iPhones - the iPhone 5 and the iPhone 4S. If the iPhone 4S is also launched, it is expected to be a slightly updated version of the iPhone 4 without quite as many features as the iPhone 5. The infographic should help you separate fact from fiction and give you some idea of what to expect this fall with regard to the details that are known or expected.

iPhone 5: The Rumors and The Roadmap from All Area Codes

by All Area Codes

Thursday, 15 September 2011

Getting 3D Content on YouTube

Getting 3D Content on YouTube:

Over the last few months, we've been steadily rolling out features for YouTube 3D. Early this year, we announced support for the LG Optimus 3D and NVIDIA 3D Vision, and this month we announced support for Samsung 3D TVs. And we'll keep rolling out to more platforms to make it easier for everyone to get access to user-generated 3D content. 

Many readers have been asking how to upload content. 3D uploads to YouTube will work across all supported devices, from red/blue glasses to the latest 3D televisions.

There are two ways to upload content to YouTube in 3D. If you're just uploading one or two videos, upload content in any supported format and then edit the video settings to tell us that it's 3D. From a video's watch page, select "edit info", then "3D Video". This will only work on videos you've uploaded yourself.

If you're using the API to upload 3D videos, you'll want to format your video in a certain way. YouTube supports automatic detection of 3D content with certain file formats. If you upload with a format that supports automatic detection, we'll automatically set the correct settings so that your video shows up automatically in 3D and shows up properly on phones, TVs, and PCs. 

In both cases, YouTube requires that content be uploaded in Side by Side L/R with each frame squashed 50% and preferably with a 16:9 aspect ratio. The following formats are automatically detected when uploaded:

  • WebM with the StereoMode setting set to STEREOMODE_TYPE_LEFT_RIGHT.
    Note that other modes, including alternate track, are not supported.

  • H264 AVC with Supplementary Enhancement Information, Frame Packing Arrangement set.
    If you are using x264, the argument --frame-packing=3 will set this correctly. In Handbrake you can set this in "x264 Advanced Option String".

Be sure to get the squashing and positioning exactly correct. 3D content won't look right if video formatting is off by even a pixel or two.

We're excited to see what you'll show us! Here's an idea from a favorite webcomic of ours.

—Jonathan Huang, YouTube 3D Product Manager

P.S.—We recently worked with some folks to help them get 3D Mars footage from 1979 restored from the Viking landers. Check it out!

Wednesday, 31 August 2011

Serra da Estrela na Holanda?

by @flashopen


Sim, sim...
Montanhismo, alpinismo, ski, ciclismo... you name it!

Os holandeses continuam na mesma! Projectos gigantescos como diques, portos, polders, túneis, etc. não são mais novidade para este pequeno e achatado país. A Associação Holandesa de Montanhismo (Nederlandse Klim- en Bergsport Vereniging), a União Real Holandesa de Ciclismo (Koninklijke Nederlandsche Wielren Unie) e a Associação Holandesa de Ski (Nederlandse Ski Vereniging)... todos apoiam a iniciativa do jornalista e colunista Thijs Zonneveld relativa à construção de uma montanha de 2000 metros de altura na província de Flevoland na Holanda. Isto é coisa séria meus caros! A idéia de um projecto com esta envergadura está a passar da visão de um só homem à realidade de um povo que a suporta com entusiasmo e chauvinismo.

Várias instituições desportivas holandesas e mais de 2 milhões de aficionados desportivos e ainda diversos municípios e investidores já se manifestaram junto de Zonneveld prontos a considerar a possibilidade de realizar este sonho a curto prazo.
As notícias são ainda frescas, sim, porque Zonneveld só revelou esta loucura à humanidade no passado 5 de Agosto e, nestes dias que vão, os 'brainstorms' estão já decorrer em longas mesas de reuniões rodeadas de muitas cabeças, e todas elas cobertas de balões com muitos cifrões, perdão, euros! Claro, não fossem eles quem são!

O canal holandês, NOS, confirma que não é piada se bem que alguns estrangeiros, presentes neste encontro em Utrecht, admitirem a sua suspeita de tudo isto ser mais uma daquelas produções bizarras dos 'Apanhados' holandeses.

A empresa de Design e Arquitectura Hoffers|Krüger revela no Youtube a sua visão para este projecto... tudo em aberto, pelos vistos!

Foi também com um piscar de olhos que o website foi lançado para a estratosfera e a este ritmo, a idéia de os Jogos Olímpicos de Inverno 2030 terem lugar na Holanda começou já a tomar forma. A forma da Serra Estrela... portanto!

Friday, 26 August 2011

Adobe AIR 3 Beta With Captive Runtime

Adobe AIR 3 Beta With Captive Runtime:

Update: as others have mentioned in the comments, this is not just for mobile. You can now create desktop AIR applications that don’t require a separate runtime.

We recently launched the Adobe AIR 3 beta SDK that you can download on the Adobe Labs site. By far the most exciting feature for me is the new captive runtime support. This allows you to bundle the AIR runtime with your application rather than requiring the user to install it. When you build an AIR app for iOS this happens already as the AIR runtime is not allowed. This essentially brings that same workflow to Android.

This is important as many negative comments have been made about apps in the Android market because of the separate runtime requirement. So does this mean that all your apps should now use the captive runtime feature? Well that all depends. You obviously won’t get automatic updates when new versions of the AIR runtime are released. You will have recompile your app using a new captive runtime version. Your application will also increase in file size (~8mb) as you are now bundling the runtime. This hasn’t been a huge issue on iOS but it is something to think about.

Our newest evangelist, Andrew Trice, wrote a great blog post about this new feature so check it out if you want more details. It is very easy to create a captive runtime application as it is simply a new target (apk-captive-runtime) that you provide to ADT when you compile. See below for the new ADT options:

adt -package -target ( apk | apk-debug | apk-emulator | apk-captive-runtime ) ( CONNECT_OPTIONS? | -listen <port>? ) ( -airDownloadURL <url> )? SIGNING_OPTIONS <output-package> ( <app-desc> PLATFORM-SDK-OPTION? FILE-OPTIONS | <input-package> PLATFORM-SDK-OPTION? )

Monday, 22 August 2011

TEDxCovilhã - Celso Martinho - Passion, Internet & Balloons

Celso Martinho is co-founder and Technical Director of SAPO, the biggest portal & internet project in Portugal.

He loves technology, Internet, programing, communications, online communities, universal access to information, entrepreneurship, software open-source, OSX e Linux, 8-bits retro-computing, music, electronics and the DIY movement, and digital photography as well. He has a rare profile of Myers-Briggs INTP.

He studied in the 'Ensino de Electrónica' in Aveiro University where he contributed with his own Computer Centrum. He's directly related to the begin of the Internet in Portugal and its development as well as with other projects and start-ups.
In 2000 he worked in São Paulo, Brazil.

Recently and together with 3 friends, they have developed a project called Spacebits and have launched, in Portugal, several hight altitude ballons to the stratosphere, collecting this way, awesome videos and images from space.

In the spirit of ideas worth spreading, TEDx is a program of local, self-organized events that bring people together to share a TED-like experience. At a TEDx event, TEDTalks video and live speakers combine to spark deep discussion and connection in a small group. These local, self-organized events are branded TEDx, where x = independently organized TED event. The TED Conference provides general guidance for the TEDx program, but individual TEDx events are self-organized.* (*Subject to certain rules and regulations)

Portuguese to English translation by @flashopen
Source: (Youtube) TEDxCovilhã - Celso Martinho - Paixão, Internet e Balões

Wednesday, 6 July 2011

tele-present water

By david bowen

tele-present water from david bowen on Vimeo.
This installation draws information from the intensity and movement of the water in a remote location. Wave data is being collected in real-time from National Oceanic and Atmospheric Administration data buoy Station 46246 (49°59'7" N 145°5'20" W) on the Pacific Ocean. The wave intensity and frequency is scaled and transferred to the mechanical grid structure installed at The National Museum in Wroclaw, Poland. The result was a simulation of the physical effects caused by the movement of water from this distant location.

Saturday, 25 June 2011

Infographic: The Smartphone App-o-graphic

This is something new I'll try for a few weeks to see what your reactions are. Every Saturday I'll post one, cool, relevant infographic. Today with an infographic created by [x]cubeLABS. They analysed several app stores and created an infographic with the results.

the smartphone app-o-graphic

Smartphone App-o-graphic by[x]cubeLABS

Source: Infographic: The Smartphone App-o-graphic

Wednesday, 27 April 2011

Providing transparency and controls for Adobe Flash Player’s local storage

Many web users today are aware of browser cookies, and every major browser allows users to view and delete the browser cookies stored on their computer. However, some users may not be aware that many websites use different types of local storage as well, including Adobe Flash Player Local Shared Objects (LSOs), referred to by some people as “Flash cookies.”

In the past, in order to view Flash LSOs and delete them from your computer, you had to visit an online settings application on Adobe’s website. To make local storage data deletion easier, we worked with Adobe and others in the web community to design the NPAPI ClearSiteData API. This API, which Adobe has implemented in Flash Player 10.3, has made it possible to delete Flash LSOs directly from the browser itself.

As of this week’s Chrome Dev channel release, you can delete local plug-in storage data (such as Flash LSOs) from within Chrome by clicking Wrench > Tools > Clear browsing data and selecting “Delete cookies and other site and plug-in data.”
Above: The chrome://settings/clearBrowserData dialog.

“Plug-in data” here refers to client-side data stored by plug-ins that obey the NPAPI ClearSiteData API, such as Flash Player 10.3. You can also configure Chrome’s content settings to clear plug-in data automatically whenever you close the browser.
Above: The chrome://settings/content dialog.
To our knowledge, Adobe Flash Player is currently the only NPAPI plug-in which has implemented support for the NPAPI ClearSiteData API, but we hope other plug-ins will follow suit. We believe providing control over plug-in data directly in the browser creates a better experience for both users and website developers.

Posted by Bernhard Bauer, Software Engineer
Source: Providing transparency and controls for Adobe Flash Player’s local storage

Thursday, 21 April 2011

HTML5/JavaScript platform game optimised for iPad

by Seb Lee-Delisle
HTML5 canvas! Hailed as a competitor to Flash, so much so that Apple is using it as an excuse not to allow the plug-in on iOS. But what everyone overlooks is that canvas is horribly slow and pretty much unusable on these devices. Is it even possible to create a Flash-like in-browser gaming experience on iPads and iPhones?
To answer that question I ran a JavaScript hack day for the finest programming minds at Plug-in Media where we had a single day to make a retro platform game : Infector!

Play it for yourself here.
So of course, with only a day to complete, it’s fairly unfinished but it works as a proof of concept and the performance is good, even on the iPad 1 (with the pre iOS update slower JavaScript engine).
It also works on Safari, Firefox and Chrome. Naturally with such a limited time scale we weren’t too worried about writing perfect code or cross browser issues. It was more to see what’s possible. And in theory, we should be able to get this working on older IE browsers (famous last words, I know :) )
Coders hard at work...
So what’s the answer to getting the performance on iOS? Forget HTML5 canvas, all the moving objects in this game are HTML div elements, we’re just moving them around by controlling CSS properties with JavaScript.
And of course, fantastic home made cookies. :-D
Yes please!
But there’s one more trick that’s fairly well known amongst the JS community. With CSS3 came 3D transformations – you can now move your HTML stuff around in 3 dimensions, in browsers that support it of course. As soon as you set any of the 3D properties of an element in a webkit browser, it’s rendered using the GPU, and this makes a massive difference on mobile Safari.
Our game framerate doubled just by setting the “-webkit-transform:translateZ(0px)” property of our HTML elements.

The animated objects are HTML divs with a sprite sheet (like the picture above) for the background. We change which frame we’re on by simply offsetting the background position (again, adjusting CSS properties).
The background is a canvas, but we only render the non-moving platforms once at the start. HTML5 canvas is only slow when you draw stuff into it, when you’re not updating it, it’s no more CPU intensive than an ordinary image.
Creating the bugs
It was a great day working with a fun and very talented team, and I believe we’ve proved that we could provide a pretty good experience on iPads in the browser.
If you want to learn more about creative programming with JavaScript and HTML5, you could do worse than attend one of my courses! I’ll also be writing a tutorial for an upcoming .net magazine all about using these 3D CSS transformations.
Source: HTML5/JavaScript platform game optimised for iPad

Saturday, 16 April 2011

Multi-touch game controller in JavaScript/HTML5 for iPad

By Seb Lee-Delisle
Now that browser-based games running on touch devices are becoming a reality, it’s time to figure out how to implement easy to use and tactile game controls in these new keyboard-less environments.

I’ve long been a fan of how the twin-stick touch controls work in Geometry Wars Touch, so I wasn’t surprised to find that Brighton game UX expert Graham McAllistair also considered this “dynamic display on touch” interface to be the best option for analogue controls.

So last week at my creativeJS training course in Brighton (only four tickets left for the San Francisco event :) ) we started experimenting with multi-touch points in JavaScript with the aim of making a game controller that works on iPhone and iPad.

The natural first step : figure out how to get the touch data in JS. It’s actually pretty easy – there are three events that are broadcast by any DOM element that can be touched, touchstart, touchmove and touchend. But before you do that, you probably want to check that you’re running in a touch-able environment. And you can do that by checking that createTouch is a property of the document:
var touchable = 'createTouch' in document;

If this is true, you can add event listeners to your canvas element like this :

if(touchable) {
canvas.addEventListener( 'touchstart', onTouchStart, false );
canvas.addEventListener( 'touchmove', onTouchMove, false );
canvas.addEventListener( 'touchend', onTouchEnd, false );

And then you define each of the functions specified :

function onTouchStart(event) {
//do stuff

function onTouchMove(event) {
// Prevent the browser from doing its default thing (scroll, zoom)

function onTouchEnd(event) {
//do stuff

In each touch listener, event is the object that provides all the touch data, and it contains three arrays:
event.touches : all of the current touches
event.targetTouches : all the touches that originated from the DOM element
event.changedTouches : only the touches that triggered the event.
For touchstart and touchend, changedTouches usually only contains one touch event (unless you just happened to touch two fingers at exactly the same time).
Each array contains touch data objects with the following properties :
identifier: An unique number that allows you to track touch events as they move
target: the DOM element that broadcast that event
clientX, clientY: touch position relative to the viewport
screenX, screenY: touch position relative to the screen
pageX, pageY: touch position relative to the full page
Call event.preventDefault(); on a touchmove event to disable the automatic scrolling you normally get on touch devices.
I found this full explanation on SitePen really helpful.
So a quick test for iPad revealed that you could have 11 concurrent touch points (cue infantile jokes about what to use after you’ve run out of fingers…)
Try it here on a touch device or if you don’t have one handy you can watch this video:

So how to turn this into a game controller? Easy! If we pick up a touch down on the left side of the screen, we’ll use that as the centre point of our analogue control, and keep track of that touch ID. I use my 2D vector class to work out the vector between the current touch position and the original touch down position. We can then use that difference vector to dictate the velocity of the ship.
While we have a touch on the left we can ignore other touches on that side of the screen. If we get a touch on the right side, we assume that’s a fire button. It’s a pretty simple system.
Try it here on a touch device.
I’ve started to optimise this for iOS by converting the ship into a single canvas that I’m moving around, but didn’t finish yet. Currently the bullets and the touch circles are being drawn into canvas every frame, so it’s not quite as performant on the iPad1 (pre iOS update) as it could be.
The source is on git hub – I expect I’ll be improving it over the coming months, but please feel free to fork it if you have any suggestions!

Sunday, 3 April 2011

Flash Player versions 10-11

by Mark Doherty

As you have undoubtedly noticed by now, we’ve been updating the Flash Player and AIR runtimes with increased frequency.  In fact, we’re moving to a new (roughly) quarterly update schedule for the runtimes that we hope will deliver huge advances across the web in a very short time.

Why?  I guess there are a number of reasons, the most interesting one is mobile investments bringing new fruit and HTML beginning to take more of the weight.  If you remember, during the 18months when Flash Player 10.1 was launching we received a lot of feedback that we were over-committed to mobile in general.  I think unfortunately the word didn’t get out that these investments were much broader than just mobile devices.   It was a ground up effort to enable the Flash Platform to support sweeping changes in the way media is composed, rendered, protected and analyzed.

Looking at the world through Tomi Ahonen’s eyes, you can see that a growing majority of web access is now on mobile devices.  That is, if you include the numbers of people using mobile only and mobile or desktop devices.  Of course these devices require new tools, new ideas and new content that runs effectively – it’s time for a shift in thinking.

Historically this is actually a pattern of advances on the web if you look at Flash releases, maybe some of you recognized it?

  • Flash 1 – Vector Graphics Support
  • Flash 3 – MovieClips, loadMovie
  • Flash 6 – AS1, XML, Video, Unicode, Drawing API, events, AMF
  • Flash 9 – AS3, H.264, JIT Compiler, E4X, Binary Sockets
  • Flash 11 – Full 3D etc

Note: I’m not attempting to be precise here, it’s just a pattern that describes the general points where the Platform has evolved over time.  There are obviously matching HTML/Jscript/CSS advances to match, all of which make the wheels of the web go round.

So in our efforts to drive web innovation, and take the Flash Platform to new places, let’s look at the current and upcoming Flash Player releases.

Flash Player 10.2

New Features include:

  • StageVideo support, pushing decoding and screen blitting of H.264 video via the GPU.  This is actually a feature that comes from the Digital Home investments, and in fact Flash Lite on Nokia phones rendered video in much the same way.
  • Complete Hardware rendering path on IE9
  • Native Mouse Cursors, enabling richer gaming experiences

StageVideo should now be included in all situations where you are presenting video.  It’s automatically enabled on mobile and Digital Home devices, but on the desktop it’s not always possible to use this method.  Get started with StageVideo today.

Many of you have noticed that Flash Player 10.2 has yet to launch on mobile, for which there are number of reasons.  Those are quite obvious really, it’s just much more complicated to ship on mobile phones and tablets.  In addition, we’re targeting the new Android 3.0.1 release from Google as well, a platform that brings fresh features and challenges.

That said, Flash Player 10.2 is expected to ship on Android in two days time.

Flash Player 10.3

Already fast on the heels of 10.2 is a desktop beta version of the next Flash Player to launch.  This is actually on the most exciting releases for some time because it delivers new features, many of which are driven by the community.

New Features include:

  • Media Measurement
  • Acoustic Echo Cancellation
  • Integration with browser privacy control for local storage
  • Native Control Panel
  • Auto-Update Notification for Mac OS

With these new additions, the community will be able to create incredible VOIP applications in the browser.  One of the missing items for those applications was Echo Cancellation, essentially processing of the Microphone inputs so that you won’t need a headset.  I’m certainly going to use this for my Radar application.

Another nice new feature is the native control panel, this will make Flash feel more integrated into the Desktop or device experience.  Finally we can get rid of the horrible SWF based settings manager on, something that confused even me.  Users will be able to control their own security and experience much more easily, as well as make the best of Browser security.

Media Measurement is going to be great for our Omniture customers, enabling them to analysis content playback much more easily.  Let’s face it, it’s a feature for monetization, but that’s always good.  Last year over 128Billion Megabytes were streamed through Flash Player, that’s 100% growth.  So with this feature our customers will be able to get a much broader view of what’s going on during playback, helping to improve and monetize those experiences.

You can download the beta today.

Flash Player Inclubator

As you read above, this is part of our ongoing efforts to seed the community with bleeding edge technology.  I like to think of it this way, HTML will be taking care of some of those slideshow and simpler web experiences, micro-sites, product data and maybe some basic video playback.  This isn’t something that scares me, in fact it’s completely the opposite.  Lets face it, the more HTML can take on, the more new innovations we can deliver with Flash.

I find the whole HTML5 and Flash argument quite amusing, anyone that’s old enough to remember how the web evolved will recognise that Flash was successful because it solved problems for our customers.  So it makes sense (and it’s exciting) that it will evolve to solve new problems as HTML catches up, and we’re helping those technologies catch up.

New Features:

  • All of Flash Player 10.3
  • 3D Rendering Pipeline “Molehill”
  • more to come :-)

Interestingly, the StageVideo api enables play back video on a hardware surface using an OpenGL (ES2.0)/Direct3D shader API to convert from YUV to RGB.  It shouldn’t take you long to realise that Molehill uses the same apis for 3D rendering, thus enabled by Stagevideo.

Flash is so widely distributed now that we don’t have the option to simply cut off those users without GPUs or the correct drivers.  So for these users we have a seamless fallback to a new component called SwiftShader, a Transgaming product of which Adobe is a licensee.

You can see some of the incredible work underway below:

Developer and/or Browser War

(Personal Opinion)

Finally, in case some of you didn’t notice, we’re in the middle of a browser war.  Each of the major players (including Adobe) are working incredibly hard to drive innovation on the web, adding new features, increasing performance and fighting for territory.

This has unfortunately led to some adverse press attention being poured on Flash, one of the most talked about technologies of the past year.  What’s important here is that we all keep a level head, listen to customers concerns, but always consider someones motivation for targeting Flash to gain press attention.

Example One

Example Two

Net is, Flash is a product made successful by those who use it – that’s probably you.  It’s not just a pile of 1′s and 0′s, it’s a complete ecosystem that is largely, and most successfully, presented within HTML  It’s success has been driven by the Flash community creating incredible millions of pieces of content over the past decade, enabling online business and entertainment to thrive.

I have no doubt that HTML5 is going to be great for all of us, that includes Flash developers who will be free to create even more advanced forms of content on even more screens.  That’s why I believe that Flash is the innovation engine for the web and digital experiences, the use cases may well change – but the reason for Flash existing won’t.

Source: FlashMobileBlog

Google April Fools' Day 2011

by Alex Chitu

This year, Google's hoaxes are less inspired and some of them aren't original either, but they're still funny. Here are some of them:

1. Google China invented teleportation. 'Through the search is to let Google take you through time and space, most want to reach your arrival time, place, with an immersive way to perceive everything you want to perceive.' (machine translation)

2. Gmail Motion is a new way to control Gmail using body language. 'To use Gmail Motion, you'll need a computer with a built-in webcam. Once you enable Gmail Motion from the Settings page, Gmail will enable your webcam when you sign in and automatically recognize any one of the detected movements via a spatial tracking algorithm. We designed the movements to be easy and intuitive to perform and consulted with top experts in kinestetics and body movement in devising them.'

There's also Google Docs Motion, 'a new way to collaborate -- using your body'.

Opera had a similar hoax two years ago: Opera Face Gestures.

3. Google hires autocompleters. 'Are you passionate about helping people? Are you intuitive? Do you often feel like you know what your friends and family are thinking and can finish their thoughts before they can? Are you an incredibly fast Google searcher? Like, so fast that you can do 20 searches before your mom does 1?' If you have have 'good typing skills (at least 32,000 WPM)', you're willing to 'relocate to obscure places like Nauru and Tuvalu to develop knowledge of local news and trends' and you have a 'certificate in psychic reading', then you can get a job at Google.

4. Search for Helvetica or Comic Sans using Google, and you'll have a little surprise. Google plans to use Comic Sans as the default font across all Google products, but you can use the Comic Sans for Everyone extension to browse the entire World Wide Web using Comic Sans. It's fun, fun, fun.

5. YouTube presents the top viral videos in 1911. 'Today, we celebrate 100 years of YouTube, and we thought we would reflect on our inaugural year with a re-print of our first blog post from 1911. In honor of this milestone, today's homepage is a reproduction of how you might have viewed it 100 years ago. Check out some of the most popular videos of the time and be sure to try out our new upload mode which summons a horse-drawn carriage to pick up your video submission from your home.'

6. Google Body Browser was replaced by Google Cow.

7. Google will buy Blogger once again. 'This morning we're beyond thrilled to announce that Blogger has signed a definitive agreement to be acquired by Google, the Internet search company. This is exciting news not only for all of us on the Blogger team, but for our users, our partners, and most importantly -- the blogosphere itself.'

8. Google AdWords offers a new ad format: Blimp Ads. 'Imagine this: a baseball stadium, packed with thousands of fans. A home run flies through the air, and as the crowd looks up, they see your ad, bigger than ever, hand-painted on the side of a majestic blimp. Blimp Ads can make this a reality.'

For those who are afraid to try new things, Google brings back old school ads: 'Punch the monkey!', 'Congratulations, you've won $100,000!', 'Click here for smileys', pop-ups and more.

9. Another company has gone Google: Contoso, 'a fictional company used by Microsoft as their example company and domain'. The explanation is pretty clear: 'As a subsidiary of a traditional software company, we went against the grain and switched all 1,200 Contoso employees across nine continents to the cloud. After previously considering Google Apps, we were finally convinced to make the move when Google Docs began supporting the Corsiva font. I still can't find track changes in Docs, but now we can use Corsiva from anywhere, on any device. We decided against Microsoft® Office 365 beta, because we'd heard for years that beta software was too risky.'

10. Google Maps and Google Earth added 10 real-world sightings to the maps. 'It all started with a recent visit to my friend Nessie in Boston. As I crossed the bridge into town, the car in front of me stopped short so I slammed on the brakes. The cars next to me were also stopped, so I got out to see what was causing the back up. There was a huge, red lobster sitting on the bridge.'

Your mission is to find the other 9 sightings.

11. Google Voice Search now supports Pig Latin. 'What is Pig Latin you may ask? Wikipedia describes it as a language game where, for each English word, the first consonant (or consonant cluster) is moved to the end of the word and an “ay” is affixed (for example, 'pig' yields 'ig-pay' and 'search' yields 'earch-say').' The nice thing is that this actually works: open Voice Search for Android or Google Search for iPhone, change the language to Pig Latin and try your luck. This English to Pig Latin translator might help.

"To configure Pig Latin Voice Search in your Android phone just go to Settings, select 'Voice input & output settings', and then 'Voice recognizer settings'. In the list of languages you'll see Pig Latin. Just select it and you are ready to roll in the mud! It also works on iPhone with the Google Search app. In the app, tap the Settings icon, then 'Voice Search' and select Pig Latin."

Here's a video that announces the new feature. Watch it and Mike LeBeau's fan club will thank you.

12. Chrome's team came up with Chromercise, a finger fitness program that helps you increase your hands' strength and dexterity. 'Some existing finger exercise programs focus on upgrading your digits' cardiovascular strength and musculature; others focus on dexterity. Chromercise's unique blend of aerobic motion and rhythmic accompaniment covers all of the above while simultaneously tightening and toning your fingers' actual appearance,' informs Chrome's blog.

Check out the video because it's really funny (probably the funniest Google hoax this year):

13. If Chrome is not fast enough for you, use ChromeLite, an extension that harnesses the power of text-only browsers. 'In our never-ending quest for speed, our team members recently gathered to race the latest and greatest browser versions against each other. Much to our surprise, the winning browser was neither the latest version of Chrome nor another modern browser, but was instead an early text-based browser called Lynx,' explains Google.

Coincidentally, Lynx was the Google Browser from my 2006 April Fools' joke and 2006 was the year when Google started developing Chrome.

14. Search for [kittens] using a mobile phone and the top results will show a lot more than you expect. Refresh and everything will seem random.

{ Thanks, everyone. }
Source: Google Operating System