Graham's profileGeekRaverPhotosBlogListsMore ![]() | Help |
GeekRaverCommentary and curmudgeonry from the heart of the Beast |
|||||||
|
May 15 Fixing Grub after installing Windows 7I have an MSI Wind on which I run both Windows 7 and Ubuntu. I rarely use the latter but I like to keep it around and with a 320GB hard drive its affordable. I have used both the Windows BCD loader and GRUB as my bootloader at various times (and for those using BCD I highly recommend EasyBCD as the way to configure it). Most recently I've been using GRUB. Yesterday I installed Windows 7 RC and my boot sector got clobbered by BCD. I had a bit of a had time getting things working again. I first tried using EasyBCD but this time when trying to boot Ubuntu I ended up at a GRUB prompt, and I could not access my Ubuntu partition (more precisely, while "root (hd0,2)" worked, "kernel /vmlinuz" threw errrors and I could not boot). In the end I got things working using the Ubuntu live CD and reinstalling GRUB. However, it required more than just doing a grub-install - for some reason the BIOS drive mappings seem to have been messed up. I did a web search and I found a lot of people have had this problem and very few found the solution so I thought it was worth mentioning what I did to make mine work in the hope it is useful to others. In my case my primary Ubuntu partition is the 3rd partition; i.e. /dev/sda3. After booting the live CD and opening the terminal, here is the set of commands I used to get things working again: sudo mount /dev/sda3 /mnt Without the mounts of /proc and /dev, /dev/sda won't be found after the chroot. The --recheck option is necessary because somehow the BIOS drive mappings have gotten confused. It's possible the update-grub step is not necessary but I think it is safest to rebuild the grub config; I read at one web posting where someone omitted this step and after rebooting was left at the GRUB prompt again. June 05 GeoRSS and Live Search for MobileHopefully by now you all have v3.0 of the Live Search client, and are enjoying the new features (web search, weather, and collections). I'd like to talk about collections in this post, but first it is worth mentioning a couple of changes in this version that are less obvious, and overcome limitations I have blogged about in the past:
Okay, on to GeoRSS. This was my pet feature that I originally built in September 2006 and it finally got shipped (and if you say 'about time!' then I have the names of the two people who kept trying to kill this to give to you; go blame them ;-)) The Collections feature is built around Virtual Earth collections, to make it easier for people who don't know/care about GeoRSS to use the feature and get some value out of it. For the more hard-core, you can enter GeoRSS URLs directly: The actual collections/feeds are stored in the application directory in a file called feeds.xml. You may find it instructive to look at that file. The cool thing about the URLs is that they can contain metatokens, which will expand to location-specific values: For example, the URL above: http://www.homethinking.com/georss/@StateAbbrev@/@City@ has two such metatokens, namely @StateAbbrev@ and @City@. These will get converted into appropriate values based on your search location before the feed is fetched. The supported metatokens are:
In a later post I'll describe the GeoRSS schema that the client understands (it is a hybrid of GeoRSS, some Yahoo extensions, some KML and some OASIS xADR address stuff). For now I'll just mention one interesting extension, namely pushpinurl, which can point to a .ico file. This file will be used as the pushpin icon on the map for that result. This can allow you to make custom pushpins. May 05 Cute Math CuriosityI heard this proof a couple of days back and thought it was fun and elegant. If you draw a circle anywhere on the surface of the earth there will be at least two opposite points that have the same temperature. The proof relies on Bolzano's theorem, which is an instance of the Intermediate Value Theorem. Bolzano's theorem says that if a continuous function defined on an interval is sometimes positive and sometimes negative, it must be 0 at some point. We assume that temperature on any path on the earth's surface is continuous. If f(x) is a continuous function, and g(x) is a continuous function, then f(x)-g(x) is also continuous. So, choose some starting point on the circumference of the circle, and let f(x) be the temperature at the point at offset x clockwise from the starting point, and let g(x) be the temperature at the point opposite that point. If the temperature at some point x is warmer than at its opposite point x', then f(x)-g(x) is positive, while f(x')-g(x') is negative. So, by Bolzano, there is a point where f(x)-g(x)=0, i.e. f(x)=g(x). May 01 The Art of Assert
"Assertions are the only reliable form of program documentation" (Charles Hoare) While I wait for the next release of Live Search for Mobile, I will fill in the time with some posts on tricks I have used in the dim and distant past, before I became a mostly C# programmer. I love C#, but I really don't like the way the C/C++ preprocessor was not included. While preprocessors can be abused, they are also extremely useful (think of __FILE__ and __LINE__, just for starters). In particular, the preprocessor in C and C++ provides a very flexible assertion mechanism that is much more useful then System.Diagnostics. I'd like to cover some useful ways of using assertions in C and C++. Of course if you're an Eiffel programmer, you can probably stop reading ;-) In the code below, I will assume the existence of a library function HandleAssert(char* message), which does appropriate assertion handling (for example, in a GUI app it might pop up a message box, display the message, and give a Continue/Abort/Debug choice). Obviously, the first thing we need is a basic ASSERT macro:
The first rule of asserts is, of course, never put them in production code, hence the DEBUG conditional. The use of a do/while above eliminates any possible dangling else issues that might otherwise crop up if for some weird reason you put your ASSERTs in if statements. The above is often the only form of ASSERT that most C/C++ programmers encounter. But there are quite a few useful variants on the idea. Sometimes, just an alias is already a useful distinction:
It can be useful to be able to define code that only exists in assertional builds:
Putting all of the above in an example:
If we have class invariants, it is useful to define these as methods in the class that we can call from our asserts:
During early development, we could confine ourselves to DEBUG builds. In this case we may want to skip over handling of bad input, etc. We can do this safely using simplifying assumptions:
For example:
Note, when writing unit tests for code that has pre- and post-conditions, you should be striving to write tests that pass the precondition but fail the postcondition. Thus assertions can provide very useful test case selection guidance. Pre- and post-conditions also tend to be more stable than the code inside methods, reduce the need to examine the internal code, and, for the hard-core, support proving correctness. Sometimes we may find it useful to always fire the assert:
We can have compile-time assertions on simple expressions:
As you can see from all of this, the lowly ASSERT can be quite flexible! April 19 Last Day on Live Search for MobileToday is my last official day on the Live Search for Mobile team. I am moving over to a new team working on some incubating new mobile initiatives in emerging markets (as a South African ex-pat I can relate to this). It has been a fun ride and it is hard to let go of the Windows Mobile client which I think of as 'my baby' (with co-parent Ashley). There is still so much to do. However, some of the things that I have been trying to get shipped since September 2006 are finally going out the door in the upcoming release so I can feel that I have achieved at least some of what I set out to do. I'll continue blogging here of course, and I expect to blog quite a lot about the new release once it is out. We started the WM client team in July 2006, after the MOJAX (mobile AJAX) project got killed. That left the core group - the Barrel of Monkeys - without a home. There were five of us - Steve (PM), Ashley and I (dev), John (test) and Danny (architect). Rather than each go off to different jobs we decided to try stick together, and managed to find a home in local search. We had three months to get the v1.0 product out, and it was a hit! We got an awful lot of fan mail from that (and if you were a sender, thanks! We've always appreciated the love :-) ). After that the original monkey team gradually split up until only Ashley and I were left, but since December the team has been growing considerably in size and charter and there are lots of exciting things in store in the future for the product. Back in September 2006 I added a couple of features that I thought were killer, but that never made it into the product. One of those was cell tower geolocation, which Google since did and which they got a lot of credit for (damn!). Another will be revealed soon and I've always been really excited about it; I'll definitely blog about it the moment it ships publicly. I'm glad to be able to say that I'm leaving Live Search with all my pet features finally on a ship schedule (in fact I've offered that as my excuse for being able to leave). Over the past 1.5 years through what is about to be our fourth release (almost unprecedented at Microsoft) I've had a lot of fun and worked with some great people. Live Search for Mobile, in the words of one of our users, "kicks serious ass"! My new group is almost a spin-off though, at least in terms of people, so it'll be an easy adjustment. It will be nice to start with a blank slate again. Thanks to everyone I've had the pleasure of working with - the Monkey's, Don and Xuehai on the server team, our incredible tester and soon to be incredible mom Jenny, our chilled PM Gary, the rock stars over in the Speech Components Group, all our wonderful dogfooders and users, and all the new recruits. In particular working with Ashley has always been fantastic - we are almost of one mind - I'll miss you bud. Remember the monkey. Aluta continua!
April 11 Why There Are no ARCO Gas PricesWe get gas price data from a 3rd party provider. They in turn get the data from credit card companies. ARCO does not accept credit cards. This is a great example of where user-contributed data would be valuable, and I hope that one day we will be able to extend the feature to include that. April 09 We're Hiring!My team is hiring. The job descriptions are below. PM me if you're interested: Windows Live Mobile Search team is focused on delivering outstanding search and local navigation experience on mobile devices. Our goal is to put the power of Windows Live Services right in your pocket. We own creating addictively useful experiences for folks trying to search from their cell phones. Our mission is to get every one of the mobile queries. We do this by building best-of-breed browser and full-client experiences along with a high-performance platform, and by creating opportunities for users to experience the value through carriers or direct distribution. We are enabling experiences on your mobile devices such as Driving directions, 2D maps, GPS based navigation, category search, product search, browsing detailed maps, finding movie times & gas prices or just searching anything on the web your are remotely curious about. The field is full of stiff competition, but the battle is far from won for anyone. We delivered award winning Mobile Search (Live Search) client on Windows Mobile & Blackberry and outstanding browse experience (m.live.com) that gets consistent praise. We consistently win reviews against Google and Yahoo. There is lot more to do. In Windows Mobile 7, we are building a world class, rich, immersive and exploitive app using latest and greatest technologies such as Silverlight & XAML. We will enhance Browse experience by leveraging best of breed technologies available in the industry today. We are also building highly scalable backend and high performance developer platform. Our mission is to get every one of the mobile queries and be the developer platform for search and local information. We are looking for developers with the passion to stretch the boundaries of how people connect with local information. We’re looking for people who understand the special constraints of the mobile world and have experience building dynamic applications for mobile devices. We are looking for developers who can work on problems unique to mobile computing, from inception through the end of the product development life-cycle. This is an excellent opportunity to help drive the flow of information into users' hands. The team offers an energetic environment, solid growth potential, and a great set of people to work with. We have Senior SDE and SDE II positions. SDE II (2 Positions) We are looking for SDEs to work on our next generation rich client, to create high performance platform and highly scalable backend. You will be leveraging best-of-breed technologies such as Silverlight, WPF, XAML, .NET CF and IIS7. A successful candidate will have: · Passion for technology and UX · Experience with the latest mobile technologies · Solid experience designing, implementing and testing applications written using C#/C++, .NET CF, ASP.NET. Experience with WPF or Silverlight is a plus. · Good communication skills and the ability to approach problems from the customer’s perspective · Experience developing and shipping multi-threaded server solutions. · Commitment to Engineering Excellence · Bachelor’s degree in CS or equivalent industry experience · 3+ years of software development experience required. Senior SDE We are looking for a Senior SDE to work on our next generation rich client, to create high performance platform and highly scalable backend. You will be leveraging best-of-breed technologies such as Silverlight, WPF, XAML, .NET CF and IIS7. A successful candidate will have: · Passion for technology and UX · Experience with the latest mobile technologies · Solid experience designing, implementing and testing applications written using C#/C++, .NET CF, ASP.NET. Experience with WPF or Silverlight is a plus. · Excellent and pragmatic judgment, good communication skills and the ability to approach problems from the customer’s perspective · Experience developing and shipping multi-threaded server solutions. · Ability to work in cross-collaborative environments with commitment to Engineering Excellence · Bachelor’s degree in CS or equivalent industry experience · 6+ years of software development experience required. Channel 10 Video coming soon!Last week the Channel 10 team visited us and shot some video of us demoing the Live Search for Mobile client, including some of the features of our upcoming release (real soon now!) I'm not sure when the edited video will be available - I guess after the release - but will update this posting with a link when it is. The Windows XP "Upgrade"I have had all the PCs in our house on Vista since Vista RTMed. This includes my kids computers, and I like the Vista parental controls (although I wish they were more comprehensive, combining not only allowed hours of use but quotas as well). I recently wanted to run my old copy of the game Creatures, and could not get it to install on Vista. This was sufficiently frustrating that I decided to switch one PC back to XP. With all the stories in the blogosphere of people "upgrading" to XP I thought it would be an interesting contrast to go back. So on Friday I did this. It's now Sunday night and I'm back on Vista! I can't agree with those people who think that Vista is inferior to XP. XP was faster, I'll grant - noticeably so - but that was with a clean install with no antivirus installed; my Vista boxes all have real-time AV which adds quote a hit, and I expect the search indexing that goes on in Vista also adds a hit. In every other respect I like Vista more. I have a vague temptation to go back to XP on my laptop as I think I could squeeze more battery life out (I only get ~90 minutes but that is with a Pentium-M tablet with discrete graphics, so it isn't that unexpected). In particular, in the day that I had XP running it froze up three times, I think the problem was with IE7, not necessarily the OS, but this hasn't happened to me on Vista. The real clincher? Creatures wouldn't install on XP either! Thankfully I have Windows Home Server running so reverting to Vista was easy; I still had my old backups. February 23 Connectivity problems with Live Search on BlackberryI just wanted to share this information that one of our Blackberry devs, Didier, sent to a customer who was having problems as it may be useful to others:
February 01 Webkinz Are EvilMy daughter bought a Webkinz today. These are cheap stuffed animals that sell at a premium because they have a 'secret code' that allow you to access the Webkinz website and play games, etc. So of course she wanted me to set her up to access the site (her PC was locked down to only allow access to PBS Kids). We go to the site, sign her up, and then sign in. This launches a new window running an Adobe Flash app. The URL is not even tied to a domain, but uses a numeric IP address. After watching it flash 'Loading' for a while, we get a picture of a green field - and nothing happens. Meanwhile my wife starts complaining from upstairs that the network has slowed to a total crawl; not only can't she browse but even the LAN is pretty hosed, with Outlook frozen up while trying to send an e-mail to the local Exchange server in the next room. So I'm listening to this fussing from downstairs and up, and eventually we kill the Webkinz window - and I hear 'Finally!' from upstairs. We try the Webkinz app again and more complaints come from upstairs. So not only is the Webkinz site not working, but it's killing the network. My daughter is getting pretty upset by this stage. I try various things - adding the webkinz site and the numeric IP to the trusted zone, installing the latest version of Flash, even installing Firefox - and none of it works. But Firefox gives some confirmation that it is the Webkinz app that is killing the network - I see it continuously trying to connect to some other numeric IP, over and over in rapid succession. Finally, to get my daughter off my back and placate the wife, I run the browser as administrator, and the Webkinz crapplication manages to run. Of course all the parental controls are now toast and this is not a sustainable solution. I find it amazing that these people - who have no scruples about fleecing kids $10/pop for their made in China junk - make a site that requires such a circumvention of basic security measures to allow kids in. While at the same time having stupid 'pro-kid' features like not allowing my daughter to choose the name 'fluffballs' for her pet because it contains a - gasp - dirty word. Heck, it didn't until they so conspicuously pointed it out. Hopefully this is a fad that will fade as quickly as it arrived. January 31 Why There Is No Integration With Outlook Mobile ContactsWe often get asked why we don't have a menu item in the Contacts app on the phone to map a contact, but Google does. The comments can sometimes be quite disparaging (like what's wrong with you people in Redmond, anyway?). So here is the tale, told by an idiot, without much sound or fury. Early in 2006 I wrote the code to hook into Contacts. It worked pretty well, and we planned to ship this in our v2 release in July '07. Shortly before our release date, Google released an update to their Windows Mobile map app, and they had the feature. So we immediately decided to test to make sure we played nicely together. Unfortunately, we found that if you installed GMM and then installed Live Search, and then you selected the 'Map in Google Maps' menu option, instead of GMM starting, Live Search would start. Pretty cool, except there was no way we could ship like that! Imagine the press we would get in the blogosphere - people would think we were maliciously taking over GMM's contact mapping feature. I spent nearly a week trying to figure out what was going on. In the end, I found that the code sample from the Windows Mobile SDK that I based my menu extension DLL on had a bug, and I had cut and paste that bug into our own code. So I fixed the bug - but we still had the problem. It quickly became obvious that Google's programmers had done exactly the same thing, and they had the same bug! So we put the feature on ice (which everyone agreed was the right thing to do), and I contacted a friend of mine who works at Google and asked her to pass on a message to the GMM developers, telling them that they had this bug and how to fix it. Some time later I got a message back saying they had fixed the bug in their code, but it was too late for us to include the feature in the release. Some time in the future we'll finally release our version. So let this be a cautionary tale - don't assume code samples you get off MSDN, in and SDK, or anywhere else for that matter, don't have bugs. This particular bug only bit if you loaded more than one extension DLL into Contacts, so the person who wrote the code sample never noticed, and nor did Google. I've always wondered though - what would have happened if we had shipped first? For those who are interested, the bug was in the return value of QueryContextMenu. The MSDN sample returns S_OK, which is not the right response. Here is the correct documentation from MSDN:
Scanner + Printer == Photocopier (eventually)My wife has been bugging me to make it easier for her to use our scanner and printer to make copies. I could buy a cheap all-in-one but she actually needs laser copies, not inkjet, for her hobby of stamp carving (she can iron a laser-printed image to make a basic transfer). The scanner and printer are attached to my PC but she wants to make copies without having to log on to my PC or bother me. I believe that HP scanners can do this, but I have an Epson Perfection 4490, and if you press the 'Scan to Printer' button on the front it pops up UI on the PC. It's definitely not a one-step process and the buttons are a bit of a joke. So I thought I'd write my own app using Window Image Acquisition to do this. My original plan was to write something that hooked the button event and then slept in the notification tray, waking up when the button gets pressed. Of course, things are never that easy. I wrote the initial code, but the events never came to me (I've since discovered that the Epson sends a wiaEventScanImage2 event instead of a wiaEventScanPrintImage event, so its possible that was the problem and I may revisit my original code at some point). Whenever I pressed the button Epson's UI would pop up. Even more annoying, the first UI was a choice dialog asking me to choose between Epson Creativity Suite and Epson Scan, even though I had explicitly configured the scanner software to always use the copy utility in the creativity suite. I started mucking about with registry settings but that quickly started getting ugly and wasn't really helping. So I hacked it. The first thing I did was to uninstall all the Epson Creativity Suite software, which was pretty useless anyway. That got rid of the choice dialog so pressing the button launched Epson Scan. Then I looked at the process that was running and found it was C:\Windows\twain_32\escndv\escndv.exe (which itself was confusing as the same app is also installed in c:\Program Files\Epson). I renamed that app escndv-orig.exe. I then made my own app in that directory and named it escndv.exe - so now pressing the button launched my app at last. Next I had to write the code to scan and print with no UI. That proved a bit odd too, but eventually I figured it out. The code is shown below. It's really rough, but it works. I built it as a C# Windows console project, adding references to the WIA COM DLL and System.Drawing and System.Drawing.Printing. The app will pop open a dialog on first run to ask what scanner to use (even if there is only one); after that the scanner ID is persisted in the app settings. It prints to the default printer. This is not completely UI-less - it does pop up a console window briefly while the scan is in progress - but at least no interaction on the PC is required. I plan to extend this later to have one button do an autocrop and scale to fit. Currently pressing any of the other buttons will launch the original Epson Scan software.
January 22 Do Wii Want To Play?I'm probably the last person on the planet to finally get to try the Wii. I tried to buy one for my kids in December '06 and December '07 but of course they're like hen's teeth (surely a missed opportunity by Nintendo, or perhaps it's part of a strategy to fuel the hype). But one of my daughter's friends has one, so when I went round there a few days ago I demanded a chance to play. I have to say I found it pretty disappointing. It is good that it gets you up off the couch (although the teenage daughter told me about how her teen friends lie on the couch and play - so clearly that is optional). I really wanted to try both Wii bowling and Rayman Raving Rabbids as those were two games I'd heard were really good. In both cases the novelty wore off for me within a few minutes. Tennis was better; it was both more active and required a bit more skill than bowling, which was stupid-easy. I should mention up front I'm not much of a console gamer (I like adventure and strategy games on the PC) so perhaps I'm not part of the target audience, but the Wii has been hyped as the console that broadens the audience. Anyway, its not bad, but it really does seem to be overhyped. My daughters didn't show much interest either. My eldest really wants a drum set so I think I'd be better off investing in a DD-502 digital drum set which go on eBay for $400. January 18 Why Can't I Enter An Address In The Search BoxA common source of confusion for our users is the distinction we make between 'what' and 'where'. We generally search for 'what' (which is the text you can enter on the main form), centering the results on the 'where' (which is the location shown just below). If you want to change the location, or if you want to search for an address, you need to click on 'Choose a new location'; you can then enter the address on the Location screen and click 'Find' (note: the screen shots shown below come from a test version of the app we run on the desktop; the menus at the top will be on the bottom on your phone, accessible via the two softkeys; I just used the desktop version here as it was quicker for me): The app will then try to locate the address you entered, and if successful will show you the result, after which you should click 'Done': You'll then be back in the main view with the new address shown as your search location: You can the click on the Map icon to show a map centered on this address, or do a search (which will be centered on the address), or click on Directions for directions. There is something odd about directions, though - we use your set location as the start point instead of the end point: You can use left or right DPad actions to spin through the location lists to change this, or, if the shown end point is actually your start point, you can just do the route and then reverse it: "But why don't you just allow addresses in the search box?", I hear some of you ask. Well, the white page and yellow page search services that we consume don't support mixed queries of what and where together, and we didn't want to try make the app on the phone second guess what you're trying to do (actually early versions of the app did do this - if the what/where search failed we would try again treating the what as a where - but that produced some strange results so we took it out). The good news is that there are services now that we can use that do support mixed queries so in some future release we should handle this much better. January 15 My Leopard Has Lost Its SpotsI run a mostly Windows-only setup at home these days. My home setup consists of:
I'm mostly happy with Vista. I love the Media Center especially now with an HDHR attached (we only get $15 limited cable). My kids have pretty good success running old games; I'd say about 90% of their games run on Vista, and considering some of them harken back to Windows 3.1 that's not too shabby. The parental controls made Vista a no-brainer for their machines. The search is great (my experience with Apple's Spotlight were really weird - like being unable to find addresses I could clearly see in the address book - but Vista's search works well except for things like MMC snap-ins, where you have to enter the full name before it finds a match). I've had few compatibility issues with my software other than Virtual Drive (which I upgraded for $20), Nero (which I replaced with OEM lite versions for about $5 each) and Magix Music Studio 10 (which has to be upgraded to 12 - and 12 is too complex for my liking so I've abandoned it). Performance is fine as long as you have 1Gb RAM, and startup seems much faster. The biggest issue with Vista has been problems with waking up from sleep, which seem to be driver related (in particular the nVidia drivers have been very problematic until recently but are fine now). The Mac is the odd one out - but I keep it around mostly because I love Handbrake on the Mac; its the best way to move my DVDs into a library that is easily accessible from the Media Center. There is a Windows port - and I could run it way faster on my desktop - but the lack of a video preview to determine things like crop and de-interlace settings take away much of the coolness compared to the Mac version. When Leopard came out I installed it on my Mini - even though I didn't really need to. I'm not really the target market, and to me it's only been mildly annoying; it hasn't added any value. But I'm going back to Tiger. Tonight I came home and my Mac had a message on the screen saying I needed to restart my compute - and it explicitly instructed me to do so by power cycling, rather than shutting down (I was locked out of any alternatives anyway). Since power cycling it does not finish booting. I get the Apple logo, then a blue screen with just a mouse cursor. I know we go through cycles of copying each other, but I never thought Apple would want to emulate the BSOD. I only hope I can manage to do a non-destructive re-install of Tiger so as not to lose some files I had on the machine. Postscript: back on Tiger; don't miss Leopard at all, and Handbrake seems to run about twice as fast as it did on Leopard. Good thing Apple didn't call it Cheetah - that would have been a real joke. January 11 Help! My Keyboard Doesn't Work!We get a lot of people reporting problems with their hardware keyboards on phones like the VX6800. When they press the letter keys instead of letters they get numbers and symbols. Unfortunately this is a problem with the IME (input method editor) in the phone. IMEs are often customized by the phone OEM or the mobile operator to add functionality like predictive text input. For a number of phones, an IME was added that breaks text input from the keyboard with all .Net Compact Framework apps. In many cases we're the only such app on the phone, so users understandably think its a bug in our program. We wish it was - in that case we could fix it - but there really isn't anything we can do other than complain. AFAIK the full set of phones affected is:
If you have a Titan/Mogul/6800, Sprint does have a firmware update for the phone which has a fix. The fix requires reflashing your phone, which means losing all your apps and settings and carries some risk, so be aware of that. For the Verizon XV6800, you can get a fix by visiting UTStar; select Verizon Wireless as your carrier then click on Downloads, and select the QWERTY Keyboard fix. You could try this as a direct link. If you have one of the other phones I suggest you complain to your operator; if enough people complain then they might do something. If you know of fixes for any of these please let me know in the comments and I'll update the post. January 10 Searching for Residential Results OnlyA few people have asked how to limit search results to residential addresses. When you're in the list of search results, if you click "Menu" then select "View", you will see checkboxes for business and residential. By checking or unchecking these you can restrict results to just business, just residential, or both. Zooming the map with Live Search MobileOne thing we have found is that our zoom UI is not very discoverable. It'll probably change in the future as a result; it seems we over-engineered it in the current app. But until we come up with a replacement, here are some tips:
I hope this helps! |
||||||
|
|