to Makotonen / Re:2006 beta Video Player
June 16, 2006 on 9:22 am | In maemo, nokia770 | 6 Commentsafter having looked at the maemo 2.0 beta, and viewing the video several times, I have to admit the video performance is very good (for at least the discovery video included on the firmware), and much better than the 2005 firmware.
It runs at 352×208, and appears to have a very good frame rate on the 770, even at full screen. I tried out some of my older video clips at lower resolution, and they did not appear to be any better than on the old firmware. So i am assuming that the discovery video has been optimized to work well on the 770 with the 2.0 video player.
The question i throw out to the nokia Video Player team is this..
Can you share the magic with the rest of us on how to transcode our videos so they look that good on the 770? Is the resolution critical? what are the video / audio codec settings?
What is it that makes the discovery clip look so much better than most clips (on the 770)? How can we too optimize our videos for the 770?
Hopefully
ubergEEk
Top Down Software Development:part 2
June 6, 2006 on 1:11 pm | In maemo, nokia770 | No CommentsUse Cases Continued / User Characterization
The next step we will look at is user charactization. A few examples of these are:
- Student - This user will likely have a cell phone, possibly a laptop, and have to haul everything with them on foot (net weight is critical). The 770 would fit a use niche in applications where a laptop is too cumbersome to use, and a cell phone is insufficent. Examples include waiting in queues, at bus stop, between classes, or on foot on campus. Most campuses (in US) now have ubiquituous WiFi, so campus / internet connectivity can be assumed.
- Traveler - This user will have a cell phone, a laptop, possibly a blackberry, etc. Time will be spent at airports, train stations, hotels. etc. The 770 would once again fit a use niche in specific applicatations where a laptop is to cumbersome, and the cell phone is insufficient. Examples of these locations would include public transport, or in meetings where a laptop would be distracting. WiFi cannot be considered ubiquituous, so Internet access would either be through BlueTooth cellular access or not available. Once again, net travel weight is critical.
- Power User / Geeky Soccer Parent - This user would generally carry around the 770 as a pocket utility as part of their office or home life. This type of user would likely make sure that WiFi was available for general information retrieval or access to network resources when in home or work locations, but would have to be functional in many non-connected locations. This user may also use it as a family calendar.
Application Models
- Reference library - The 770 could be used as a compendium of information. This could include Wikipedia types of information, IMDB content, CIA world factbook, or Google Maps, Google itself, or more specialized content - such as NIST Special Publications (all in PDF). The ability to carry / access this depth and volume of content in your pocket, and display to this level is unmatched. This application model fits the 770 very well.
- Ebook Reader - The 770 could be used as a portable personal library. The ability to carry thousands of pages of reading content could reduce the net travel weight of the user significantly.
- Games / Simulations - The ability to entertain during dead time with no additional weight is important. However, the limited input controls and interactivity prevent many arcade and FPS games from consideration.
- Personal information store / Wiki - The 770 could be used as a personal store of information for recall, such as a Wiki or PIM type of application. Once again, it has the capability to store photos, numbers, notes, addresses, etc. It can be massively more flexible than a PIM dedicated device. I would expect that the content will primarily be entered / developed on a workstation, and then synchronized to the 770. This would allow a very rich level of content to be displayed on the 770 with minimal user input.
- Wireless Remote Control (for networked devices) - The 770 could be used as a remote control device to manage networked devices.
Connectivity Models
There are essentially 3 connectivity models that are applicable to the 770.
- Disconnected - No connectivity of any type. This would be typical of some workplace environments, airplanes, camping, or WiFi / Cellular data deadspots (yes they really do exist).
- WiFi Connected - Connectivity to local network and Internet through a WiFi access point. Generally good bandwidth.
- Cellular Paired - Connectivity to Internet through a cellular data connection. Moderate to poor bandwidth, and often metered.
Use Case Development
At this point we now have a few user classes, application classes and connectivity classes. By mixing and matching these we can come up with a story for use.
Use Case 1 - College student uses 770 to store information, schedule, class notes. Also uses it for media player and ebook reader for entertainment (downtime waster). Has continuous access to campus LAN through WiFi and acess to Internet. General purpose use is to check school email, chat, bus schedules, wikipedia, google. Will have Internet connectivity more than 90%.
Use Assessment - this is being used as a convergent internet access device by the user. A flexible PIM / Wiki capability would be useful, but should be syncable to some network resource so that it can be managed / modified (and protected) from the 770 and some network terminal. Some of the information accessed would be suitable for caching locally. This would both increase battery lifetime and local performance. Examples include bus schedules, or pertinent wikipedia articles, IMDB pages, or local maps.
Application Extrapolation - Based on this use case, the following non-standard applications would be ‘useful’:
- Web Browser with on demand caching capability, similar to Scrapbook for Firefox ( https://addons.mozilla.org/firefox/427/). This would allow local caching of relatively static content for continual reference. Performance would be increased and battery life extended.
- PIM / Wiki (net syncable) - A flexible personal information store for storing the sundry details of busy campus life.
Use Case 2 - Power User uses the 770 to check webmail from multiple sources, store personal information, ebook reader, maps, web articles, etc. Will have Internet connectivity in about 25% of locations or less. Is different from student in the following ways: Less likely to use chat regularly, more likely to be offline, more likely to have a much wider variety of ’stuff’ on the 770, since it is more of a tool / toy for the power user and more of a working utility for the student.
Use Assessment - The information accessed by the power user needs to have access to many online resources with a certain degree of static-ness, but with distinctly dynamic characteristics. Examples would include an online family calendar (eg google calendar), or web mail. The user would like to have a local (offline) copy of this information for browsing during downtime even if internet access is not available.
Application Extrapolation - Based on this use case, the following non-standard applications would be ‘useful’:
- Web browser with both on demand caching capability, similar to scrapbook, but with aggressive synchronization capability. If i site was marked for local caching and synchronization, it would aggressively attempt to synchronize when a connection became available. This would assure a minimal staleness for dynamic pages.
- IMAP mail client with local caching - this would allow the user to view / manage email even when offline.
Conclusions
Based on thes two very rudimentary use cases for the 770, i would have to conclude that the 770 would benefit from:
- Calendar application that would sync with say… Google Calendars?
- Flexible Caching / Synchronizing web browser.
- Native WebClipper for offline reading. Something like a Plucker but integrated with a view and user friendly. More like the old AvantGo, but completely integrated on the 770.
- Network Syncable PIM / Wiki. Something to store free format (or flexible format) personal information.
Wrapup for Now
These are two examples of use cases for the 770. As you can see it is relatively easy to just make up a use case story, and by following it logically through, you can define useful applications.
enjoy in moderation
ubergEEk
Top Down Software Development:part 1
June 6, 2006 on 7:06 am | In maemo, nokia770, packaging | No Commentsdisclaimer - I will preface this by saying that none of the content is purposeful flamebait. These are primarily observations, and generalizations. Like any generalizations, there are always specific counter examples. However, from a statistical perspective, these generalizations apply to most open source projects.
This is unlike most of my previous posts on Maemo, since this is about the process and approach to open source software for a niche product. Well maemo is about open source and the 770 is a niche product.
Software Classes
One of the most significant issues with open source software is the lack of top down design. The majority of open source software falls into the following categories:
(a) Me-Too software - Open source software that is developed specifically as an open sourced alternative to commercial software. These are often very good packages, and in many cases exceed the commercial packages in capability. However, they are product followers, and innovation is limited to out-doing the commercial package.
(b) Technology demonstrations - Open source software that provides a solution without a problem or a set of poorly defined problems. Sometimes they are called bottom up software, since they are developed around a technical capability rather than a solution to a problem. These are the software packages that get installed, elicit a few ‘cool’ responses, and then are ignored or un-installed.
As i said above, there are exceptions to these two categories, but not many (statistically). The last category is what we are all shooting for:
(c) Innovative and unique solutions - Open source software that solves a non-obvious problem. The solution fits the problem, and does so with minimal effort, and becomes indispensible.
As i stated, the last category is the holy grail of applications, and the best most of us shoot for is a good Me-Too product. In any case, we should look at a methodology that may help us develop more high quality (a) and maybe even a few (c) products for Maemo.
Maemo / 770 Characterization
The use case methodology is particularly applicable to the 770 / Maemo package. First we look at the 770 device and do a compare contrast to other products it can be compared to. From that we can make the following assessments.
(a) Display - There are many handheld compute devices and large screen mobile phones. However, the 770 display is at least 2x any other mobile device (of merit).
(b) Wireless connectivity - With both bluetooth and wifi, and relatively easy pairing with a cell phone as a data link, it is truly a portable internet device.
(c) Keyboard - The lack of a physical keyboard narrows down the application or use models, but the availability / capability of pairing with a bluetooth keyboard implies a separate implementation model.
(d) Wired NIC - The lack of a wired NIC has been pointed out in at least one or two reviews as a compromise. After use, I am hesitant to call it a compromise and probably a deliberate choice.
Taken cumulatively, these assessments point towards a new (perhaps) computing paradigm. Some would call it a personal area network, some may call it distributed wireless computing. This is contrary to the concept of converged computing, where every year a single device has more and more disparate features in order to replace multiple non-converged devices.
In the distributed wireless computing paradigm, each node or device should serve a small set of logical functions. These nodes would communicate with the other nodes in a coherent manner in order to comprise a system. Examples are a nodes in this type of a system would include a (a) keyboard (for user I/O) (b) display / touchscreen for user interface, (c) network / internetworking through WLAN or cellular data link, (d) GPS bluebox (bluetooth function with no physical I/O) for positional information.
Use Case Characterization
Given that the 770 fits this model of use, we still have to compare it to other devices in this space. Examples include the HTC mobile phones or the Treos.
If we posit that the most signficant feature of the 770 is the display (in this space) we should look to use models that are primarily visual. Obvious examples include
- Ebook Reader - The popularity of FBReader lends credability to this example. Evince is much better than the built in PDF reader, but could be better with large files. Both are on my A-list of maemoapps.
- Video Player - We all know this, and we wish the native player was much better than it is. Look at what has been done on a Treo with TCPMP. So much more could be done on the 770.
- Instant messaging - with external keyboard.
- Remote Managment interface - This has been touched just a little bit in the user community. As we speak there are more and more wifi or networked devices in the enterprise and in home applications. Examples inlclude the Linksys Tilt / Pan / Zoom WiFi video camera at $300. There are lighting control systems, home control systems, and soon (if not already), home entertainment systems that are WiFi / ethernet managable. So rather than a number of wireless remote controls for you garage door, security system, etc, you could have a wifi controlled access point on your 770. Or a way to turn off the lights in your house with one button in your pocket.
I have not really addressed the use case model yet, but I am out of time for now. In the next segment, i will discuss some about the classes of users that we target these use cases at. Some people would call that demographics, but they would be wrong.
Later segments will include discussions on Enterprise Architecture and how it is relevent everywhere, not just the enterprise.
got to go
ubergEEk
Maemo 2.x Wishlist
June 5, 2006 on 2:02 pm | In maemo, nokia770 | 10 CommentsI know it is too late for a wishlist, but the 770 really needs the following (IMO):
- Lightweight browser - This is supposed to be an internet tablet. The heaviest builtin application is the browser and it is the only one that has given me ‘memory low’ complaints. Oh Mimimo, where art thou?
- Better PDF reader - The current one is paged based, and evince supports continuous scrolling (much better-but evince doesn’t handle large files well). Since a significant role the 770 serves for me is ebook reader, and all of my work related content is PDF, this is key.
- IM client - But we know that is coming already.
- Lightweight IMAP client - becoming less important as web email portals are getting better.
- A really performant video player - Take some hints from the guys that did TCPMP. They managed to turn a treo into a video playing device. It is just amazing. The 770 hardware should be capable of so much more.
- Better memory management in all applications
- Package manager that supports pre / post script execution. Really.
Anyway - Just my rant for the day. Please - no flamewars.
ubergEEk
Hypothetical MaemoMapper Basemap Scripts
June 2, 2006 on 12:51 pm | In googlemaps, maemo, nokia770 | 5 CommentsBased on my earlier post about hosting a Google maptile basemap, it is clear to me that i should really avoid posting anything that may be licensed, no matter how good my intentions.
But many expressed interest in the scripts. I won’t post the scripts but will have a discussion on what interesting things i found in tthe process of developing these scripts.
GoogleMap Tiles
Google maps are really just a series of square tiles for 17 zoom levels, arranged in x/y quadrants.
- zoom=17 / x=0 / y=0 : The whole world
- zoom=16 / x=0-1 / y=0-1 : The world divided into 4 quadrants with North America at 0,0
- zoom=15 / x/y=0-3 : The world divided into a 4×4 grid with Alaska at 0,0 (roughly)
- zoom=14 / x/y=0-7 : should be getting obvious by now…
- zoom=13 / x/y=0-15
- zoom=12 / x/y=0-31
- zoom=11 / x/y=0-63
- zoom=10 / x/y=0-127
- zoom=9 / x/y=0-255
- zoom=8 / x/y=0-511
- zoom=7 / x/y=0-1023
- zoom=6 / x/y=0-2047
- zoom=5 / x/y=0-4095
- zoom=4 / x/y=0-8191
- zoom=3 / x/y=0-16383
- zoom=2 / x/y=0-32767
- zoom=1 / x/y=0-65535
(and i did all of those numbers in my head….)
Fundamentally each decreasing zoom level subdivides each tile at the level above into 4 quadrant tiles, and so on. So we have 1 tile at 17, 4 tiles at 16 and 2^16 squared (a crapload.. squared) at level 1.
latitude / longitude conversions - redacted (jan 2007) - After reading this many months later, I believe that my ability to communicate the method about the lat/long conversions was flawed and misleading. I was trying to represent a simplified approach to the Mercator projection that Google uses, but failed. My apologies.
Scale - redacted (jan 2007)
Tile file format - If you take a look at the tile files stored in the MaemoMapper directory, they all have the ‘.jpg’ extension. However, they are not jpg files, they are PNG files. That also happens to be what the GoogleMap tiles are served as, so rest easy, no conversion necessary.
Directory format - MaemoMapper expects the tiles to be organized in a very specific manner. The upper directory name is the zoom level, and the next directory name is the longitude index (xgrid index). Each file is named as the latitude index (ygrid index). These indices correspond to the GoogleMap tile indices, so once again no conversion is necessary.
Monochrome Tiles - After i started getting a few sets of basemaps from the server, i noticed a large number of tiles that were exactly 103 bytes. It turns out that these correspond to featureless monochromatic tiles, like the middle of the ocean. Interestingly, about 73% of the tiles at level 10 were this size. Well i considered this a real waste of file space since each one of these could be interpolated / extrapolated from higher level tiles, and each one used a file sytem block (much larger than 103 bytes). To address this issue, i wrote a script to delete all files from the directories that were less than 104 bytes.
Scripts
I am not going to post the scripts, the GoogleMaps tile URL, or the mapsets. I am just not interested in getting a cease and desist letter. However, I will give you these clues. The prune script is exactly 1 line of 34 characters. The bulk downloader is about 11 lines long of sloppy , trivial code with two loops.
If that isn’t enough for you to write your own, then i feel better about not giving guns to babies.
In closing, i would like to say thank you to Google for creating a resource like GoogleMaps that is so easily accessible for geeks and hackers such as ourselves. I would also like to say, that I respect the ownership of this content by Google, and think that time will tell what color this gray area will turn into eventually. Personally I feel that the Google brand benefits in value and respect by pervasively becoming a resource that is usable by open source community (eg MaemoMapper).
But i am not the final arbitor on this subject, so nuff said.
Disclaimer - I do not endorse or encourage anybody using the above information to aquire, absond, steal licensed intellectual property. I simply found out some information that I thought was uber-interesting enough to share.
License - I am placing all content of this blog posting under the creative commons license (http://creativecommons.org/)
ubergEEk
Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^