Online AJAX tools: Office, editing, sharing, collaboration

zenbe.com

Its far more than a webmail. Create ad-hoc wiki-like pages just by uploading images, photos, videos, adding URLs, text and emails, and then tagging them. With tagged content you can create topic-related pages that list item and share them among collaborators to ease up your work! Innovative! I think it’s better than wiki since creating dedicated pages just by tagging is far easier and quicker than entering markup text. And finding tagged items via topic-pages is also straightforward!

http://www.zenbe.com

sosius.com

Sosius is an online workspace, accessible from any PC or Mac, that lets you create and collaborate. No software to buy and set up. Powerful and flexible, yet easy to use.

Manage contacts, files, documents, calander events, create blogs, discussions, chat & IM. Gantt charting and automated task workflows.

http://sosius.com

youos.com

Share music and files with your firends. Create documents at office and continue at home.

https://www.youos.com

preezo.com

Powerpoint-like online AJAX application that lets you create and access presentations across the web. Sharing and collaborration.

http://preezo.com

evernote

If you liked Clipmarks you should check Evernote out. You can turn selected text on a web page, tag it and save within your notes list. Moreover, with OCR functionality you can extract text from images, photos, and scanned documents making them searchable!

Currently desktop version is available only from Windows and Mac, but there’s also a Firefox Plugin. You can use Evernote even with your mobile phone – currently there is an app for Windows Mobile but iPhone, J2ME and Android versions are on their way too!

http://evernote.com

Cool bascule bridges

Gateshead Millennium Bridge

Thomas Heatherwicks Rolling Bridge

Michael Cross invisible bridge at Dilston Grove gallery: walk on water :)

source [PL]: http://gadzetomania.pl/2008/05/19/top-10-wspanialych-ruchomych-mostow/

Collision of two worlds

Finally, I’m going to get employed in my company as an internal employee. Until now, I have been employed as a developer outsourced here. It’s a significant promotion for me as my payroll will increase.

I’ve spent all my working-day yesterday on an internal training. HR staff introduced company structure, employee’s duties and benefits. I must admit I was quite impressed that the training was quite fun. I was ealier afraid it would be long and boring and it would make me horribly tired but fortunatelly it turned out to be very well prepared. No information overload, a little integration fun etc, you know, presentations that talk a lot about how cool we are, how an employee is important, how fun is to reach goals together. The whole thing impressed even me. I think all other new guys got feeling they’d been enrolled in a big, sussessful international company and the world was at their hands. I mean, one could get impression that all here is a big, amazing adventure.

That was quite funny as I met my team friends few times during several breaks and we talked about some issues we face in our projects. On every break I reminded myself about all that everyday absurds and buerocracy and that impression the training created just went away. An image of a big adventure vs everyday reality. Everytime they collided I realised the importance of motivating people. But this motivation cannot be just pure promises and cool phrases. It’s got to be specific and real. The employee must experience an adventure they talked about because he will see the difference when expectations hit the reality evetually.

Online SEO tools

websitegrader.com

This one rocks! It generates a full report about your site. You enter its URL and after few seconds you get the report.
The report consists of three sections:

  • On-Page SEO – metadata, heading and image summaries, interior page analysis
  • Off-Page SEO – domain info, Google PageRank, number of Google indexed pages, last Google crawl date, traffic rank, inbound Links and checking presence in DMOZ, Yahoo!, ZoomInfo directories.
  • Blogosphere – blog analysis and ranking, detecting recent articles, analysing social mediasphere, checking del.icio.us bookmarks and Digg submissions, RSS Feed avaiability, conversion form, competitive intelligence, keyword grader, and more.

There are automatically generated hints and descriptions according to the results that will help you fix your website.
http://www.websitegrader.com/

linkvendor.com

This is also wonderful set of tools. According to the site, you can do the following:

  • Alexa rank traffic Challenge for 3 domains.
  • Find and detect cloaked content on a website.
  • Validation of meta tags with Google recommendations.
  • Check the PageRank on different Google data centers.
  • Check the PageRank for up to 5 different URLs.
  • Compare two domains after SEO principles.
  • Check the number of social bookmark links to a website.
  • See what webcrawlers and spiders see.
  • See the PageRanks of linked pages in the website overlay.
  • Check how long a website take to load.
  • Check the keyword density and detect the most frequent Keyword.
  • Check search result positions of a domain for several Keywords.
  • Check the age of a domain with several Waybackmachines.
  • Find all Backlinks of a domain including host IP and Google PageRank.
  • Find all domains from from an unique ip adress.
  • Check the number of indexed pages and backlinks.
  • Validate the price of a textlink on a website.
  • Link analysis of external and internal links with associated anchor texts.
  • Generate search engine friendly meta tags in seconds.
  • Create your own XML Sitemap in seconds.
  • Convert text with personal information into a image.
  • Convert any date in the unix timestamp format.
  • Create URL Rewrite rules for apache.

http://www.linkvendor.com/

clicktale.com

Record visitors’ every action as they browse your website. Watch movies to understand visitor behavior, gain valuable insights and improve your website’s usability.

http://www.clicktale.com/

Keyword Density Checker

Just enter URL for website to analyze.

http://www.iwebtool.com/keyword_density

Fighting complexity in the real world

The past few days I’ve spent on fighting complexity. This time however, it wasn’t software I had to fight with but.. humans. I found it amazingly hard to deal with human individuals infected with desparate fear of taking responsibility. This fear combined with buerocracy resulted with ridiculous problems that should had never happened. Notice the “should never happen”. Sounds familiar?

It just came into my mind that our software faults reflect nothing else than human inability to handle problems. It isn’t computer’s fault to fail fulfilling what we expect from it, it’s the self-contradictionary reality humans create that prohibits computers from dealing with it successfully. We want machines to solve problems we produce but since they deal with numbers of them, they run very quickly into stuff that cannot be handled. This is why we point at software to be broken – it just seems it always fails sooner or later. But the core root of the problem is that our reality (society, law, processes, ways of getting things done) is broken, its parts are incompatibile and many things we want to achieve just cannot be done as planned. Neighter by humans, nor machines.

I had to provide some paperwork that everyone assumed should be a matter of no-time. But I got stuck when individuals started sending me one to another for providing more required paperwork. Eventually, one of them wasn’t available for long long long and the problem got unbearable. Classical deadlock applied to human reality. Eventually I succeded – but it costed me a lot of time and even more effort of thinking for others. What helped me was I came up with two parallel strategies to reach my goal of getting right paperwork done, in case one fails I had backup a plan being incrementally completed along. And that rescued me since the main plan was one to fail miserably.

When we develop software handling business logic, do we ever consider serveral strategies for achieveing the same goal? Do we consider alternatives? Bob calls Alice, Alice calls Marry. But can’t Alice call Bob and Marry in case Bob has empty account? Normally we don’t bother. A typical chess program does – it evaluates a number of strategies and picks one that has the highest factor for success. But in our everyday struggle we don’t even think about it. We always pick one way of doing particular thing and discard other ways even if they are all equivalently correct. We always assume things work this right way and in case they don’t, we just throw exceptions. Those exceptions escalate to higher levels capable of making desicions but in all cases either an error report is issued or another identical attempt is made automatically. We do nothing to increase probability of success, we only avoid failure at best, by retrying. So, if there are few ways of reaching a business goal, how about doing them in parallel, and letting only one to finish, in case all survive? We could have a few Bobs, Alices and Marrys set in different situations (reflecting problems that moght arise on the fly). In case no one fails, only one instance of them would report the solution, while other instances would be discarded. In case most of them fail, there still could be some instance left capable of providing results. It would spoil performace, it would make things more complex, but it would make our software more successful.

OK, I just wanted to write about how tired and frustrated I was past few days but instead I went off-topic and came up with some unprecised, insane idea, again.

Does Android dream of something more than Java?

Every time a new open technology appears, independent developers attempt to integrate it with other technologies. Programmers are often eager to try new stuff out especially in areas where it was not designed to be used. There’s a lot of porting in all directions going on. By satisfying their curiosity they give everyone incredible innovations as a side effect.

When Google App Engine was released, there were immediately demands raised for support of other programming languages than Python. Developers wanted everything from Java and C# to Ruby and Scala.

Android is less than 6 months old, and just two weeks ago the great Android Developer Challenge was closed with more than 1700 submissions. Google achieved enormous interest in Android within the Java community. Not surprisingly, people started thinking about using other languages to develop apps on Android.

C/C++

Linux development in general is of course based on C and C++. Everything from kernel and its modules to windowed environments like GNOME and KDE to office applications is in most cases written in C/C++. The mobile world has also chosen C++ since it can provide best performance and memory usage what is so crucial in embedded environments. And since Android is in fact another Linux distro, an attempt of running native apps seems quite natural.

Aaron P. D’Souza described how to compile and run a tiny console program within emulator. Aaron used GNU/ARM Linux toolchain that can be downloaded here. Also Benno came up with similar solution.

Unfortunately, such native apps can’t access all the cool features that make Android so special, since they are accessible only through Java framework. If you want mix C++ and Java but still send SMS messages, capture video or use location based services, you may however try to use JNI. Davanum Srinivas presents how to achieve this step by step. This way one can make part of his app partially native to gain performance, for instance in case he uses some unique audio/video coding algorithms or advanced math, and call it from Java through JNI.

There is however a lot of doubt about these attempts. Even a discussion arose on Google Groups. One of main concerns is such native code has to be compiled for every device out there that is going to run Android to make it fully supported. And Android was created to eliminate the need to recompile stuff. Hatem Ben Yacoub of Open Handset Magazine has addressed the issue here.

Python, Jython

There are some python scripts like activityCreator.py included within Android SDK. Moreover, we all know Python, along with Java, to be one of the most used languages by Google engineers. So, is it possible to write Python apps for Android?

First attempts of installing and running python snippets took Marcelo Barros de Almeida but he couldn’t get it running. There is of course a problem that, just like native apps, such scripts couldn’t use all the features without creating special bindings to Android API first.

Jython might be of help here, allowing to run Python scripts within JVM (or rather Dalvik VM) and transparently access API. hdante tried to use Jython on Android but it also appeared difficult.

Google used Apache Harmony project that reimplements all Java standard APIs. Unfortunately, Harmony hasn’t complete implementation of Java reflection and there are java.beans.IntrospectionException thrown.

Ruby, JRuby and Groovy

The very same problem appears in repect to Ruby and JRuby. Also James Williams tried to bring Groovy to Android with no success. Here is some discussion.

Scala

It seems the only team to get a “foreign” language run on Android are the Scala guys. They even made a dedicated Android Target for their technology. There is a short description on how to get a Scala snippet running in the emulator.

Other BIG players

Sun must be quite worried Google thrown away their J2ME and made their own solution (Dalvik). Just as Sun tries a lot to get J2ME running on iPhone, we could wonder if they are going to try introducing JavaFX Mobile to Android in the future. Is Adobe going to make sure Flash runs in Android?

.NET and Mono communities are considering workarounds to allow running their code on Google’s OS. Here are some ideas by now.

Google Gears and JavaScript

Google Gears brings the opportunity to develop desktop-like applications in JavaScript. Combined with GWT and run within Android’s WebKit browser, it could grow in time to become another app platform. And since all modern handheld devices are equipped with AJAX-capable browsers, Gears+GWT tandem could let us create applications that run on more than Android: including iPhone, Windows Mobile and Symbian-based phones. There are successful attempts in bringing GWT to Android. Gears in mobile world is currently ported to Windows Mobile only but we can be pretty sure we shall see it in WebKit based browsers too. There are rumors that porting Gears to Safari has been already started.

Gears open up possibilities to use Dojo, JQuery, YUI, GWT and many more. It would also allow us to reuse code of our existing AJAX-enabled web apps straight into mobile version, thus reducing significantly its implementation time.

What about J2ME?

A frequent question that appears on various forums is how to run J2ME applications on Android. Since Android itself does not support Java ME, there are attempts to fill the gap. ME4SE is a project that aims to supplement SE with ME so J2ME software could be run in J2SE environment. Poliplus created ME4android that allows to port your J2ME application to Android.

Conclusion

Android uses Dalvik VM instead of JVM. Dalvik bytecode is incompatible with Java bytecode. It makes impossible to implement dynamic Class Loaders known in web development. For instance iJetty (Jetty port to Android) cannot load .war-packaged web apps on the fly. Apache Harmony isn’t complete yet and since Android uses it, there are some significant problems so far. This all makes quite hard to port other languages and technologies to Android, though it is widely described to be noting but Linux and Java. This issues are said to be fixed soon but by that time any attempts to use other languages on Android may be impossible to succeed. It seems we are bound to Java for some time, we can give Scala a try or even start thinking about Gears. Gears could be in future the real “write-once-run-everywhere” solution, assuming of course that this “dream” is possible after all.

Some of the links I posted here are months old, so things might have changed by now. If anyone succeeded in porting other languages to Android, please let us know in comments.

Development, Eclipse, Google, Web and other forecasts

Online tools and AJAX fun

Online charting like Visio

Autodesk made available an interesting online tool for drawing blueprints and schemas. It looks like an AJAX version of popular MS Visio or open source Dia or Kivio. You can draw basic shapes, flowcharts, networks, user interfaces, office/room layouts, furniture and electronic circuits. You can also upload own images to the board and export it to png, jpeg, svg, pdf and more. It is possible to place colored text and resize elements.

http://draw.labs.autodesk.com/ADDraw/draw.html

ToDo or not ToDo

Remember the milk is an online service to manage your personal ToDO lists. You can have several lists, items can have a few notes attached, can be tagged and you can enter URL and location via Google Maps. You can publish and share your lists with others. It integrates with Google Account to access your information Google Calendar and GMail if you wish to. It can also connect with your Twitter account. The fun stuff is that it can also work offline via Google Gears.

http://www.rememberthemilk.com

UML sequence diagrams

With websequencediagrams.com you can save your time and effort on making UML sequence diagrams. You just type in a few declarations in a simple quasi-language and the online tool automatically generates a diagram for you.

websequencediagrams

http://www.websequencediagrams.com

Solitare goes online

In case you’re bored with Windows Solitare, here goes the AJAX online one

World of Solitare

http://worldofsolitaire.com

GSoC lost, summer won

Unfortunately, it turned out today I didn’t make it to GSoC. I had issued two applications but none of them qualified. For one of them, the reason I think could be I’d chosen a project that was too complex, wasn’t highly demanded feature and it lacked concrete specification, thus making it too risky. I believe the mentoring organization preferred other projects that had in their opinion higher chances of success. But also I think there was no mentor assigned to that project there after all. I myself tried to contact people but response was low. For the second application, well, I issued that just hours before the deadline so it wasn’t quite well prepared, and I just did it spontaneously. But at least I know someone read that latter application.

Sincerely, I expected this turn of events. Perhaps if I had chosen projects directly from lists published by mentors without modyfing them, I would have made it. But I wasn’t interested in most projects I had seen. 2-3 years ago I would have been on cloud number 9 if I was to participate on any open-source project even if that would be finishing some boring abandoned UI stuff or something. But today I just can’t do typical stuff, I have enough of it at work. I feel the urge to do something unusual.. and such tend to be risky and do not sell well.

Anyway, I think that’s good. My motivation behind starting at GSoC was not only the big adventure. Since this is my last year of study, I won’t be able to start next year. Especially I wouldn’t get over it if I hadn’t tried now :] I would always feel I gave up or missed an attempt. And after all, this makes this summer free of this additional pressure that GSoC participation would make on me. I think this summer I will relax a lot instead.

Interesting map mashups

  • Map Compare by rockstarapps.com allows you to compare Google Maps, MS Virtual Earth and Yahoo Maps to learn which one offers the best experiens and functionality and suits your needs the best. It shows the same location using all three technologies on one site. While you navigate one oh them, two others are updated accordingly. You can compare both presentation and navigation this way.
  • Another comparison Google Maps vs Yahoo.
  • This mashup allows one to estimate damage after a nuclear explosion.

    explosion

  • This one lets you easily explore Mandelbrot fractal. Eye-candy.

    mandelbrot fractal online as map

  • Ascii Maps are well, Google Maps in.. ASCII ;) It seems characters are generated on the fly. Though useless, it is still an interesting idea.
  • Music Map allows you to explore similar artists and songs as a kind of a Mind Map. You might find some intresting tunes with it I think :> Flash.