Wednesday, July 16, 2014

Simple maths on image height

It has taken me a while to post new stuff, but since I finally got around to it, I'll post it anyway.

This time, the description of the problem is not in the lede, but hidden somewhere in this post.
I know there may be a much simpler way and I might have even thought about it after creating this post, but the following is just a way to express how I got to it. My best excuse is that I wanted quite a lot of precision and I found the following to be the best way.

Recently I got my hands on a very simple GPRS feature with only a WAP browser as its most advanced feature. It has 600 kilobytes of storage for small sounds and images, and I'd learned to use the WAP browser to download previously down-scaled photos as background pictures to customize the phone.

One problem that I ran into, is that the phone's default main screen UI text showing operator, date and time is in white colour, and this interferes with images that have white elements of it.
At that time I hadn't found out yet that I could customize UI text colour as well as add text shadows. The limited selection of colours, and text shadows made things legible, but not nice-looking, so I decided on keeping the white text.
Usually, this means that I'd only have to choose pictures with coloration that avoid the white colour. But recently I photographed a very beautiful event, and I wanted the phone to contain a picture of it, but in a way that much of the event would stay under UI text, with the sky above the event serving the function of a beautiful background to white text.

The final photo had to have the dimensions of 128x97 pixels (width x height) without the loss of aspect ratio.

I had previously created myself an XCF template image of that size in GIMP to be able to test the background image against the precise UI simulation before using mobile data charges to download the final and best version.

The precision was based on a "screen measure" image I'd saved in the phone to measure how many pixels the main screen text used up height-wise and how much of the background was free.

Out of a height of 97 pixels I measured 46 pixels that are used up by main screen UI text.

This is what I did in GIMP:
  • In the original large photo, I chose a baseline from the bottom of the selection from which I wanted to expand the selection upwards. The baseline was the lowest point from which I wanted to include information in the selection that would make it to the final image, small as it would be;
  • Then I cropped away the parts below the baseline and kept the rest of the photo. That way it was easier to select from the bottom.
  • After that, I raised the selection, but discovered a roadblock, because I didn't know how high I should raise it: I wanted the event to stay more or less just below main screen text, but in such a way that the text and the top of the stage wouldn't touch.

    The trouble, of course, was getting the height right. I kinda knew that trying to get it right 'by hand' just by making a selection and then testing to see how it looks would take too much time.
I knew I had the base information: 97 pixels height, 46 pixels reserved height at the top which I couldn't use, and 51 pixels that I had free.
Yes, I could have just downsized the big image with Shift+T and a 128x97-pixel layer above it to try and get the approximate right size, but that's not enough for a small image that has to be pixel-perfect.
I realized that it should be possible to get to the right height from the selection that encompassed the area that I wanted to stay below main screen text. This became the essential question.

(I didn't really need the width, because I'd use the template image to calculate the width of the selection using the Scale image widget by just inputting the desired height, given that 128x97 were already set as base dimensions.)

I do admit not being very proficient in mathematics. So I found a simple-to-understand online percent calculator and the default operating system calculator. After much trial and error (but hey :-) I got the right calculations and put them in the right order. Then to automate the whole thing so as to spend less time in the future, I proceeded to put these calculations into LibreOffice (I had to separately find out how to do percent calculations there), and eventually got to connect individual calculations into several formulae.

Yes, I am sure there are probably much simpler math formulae for these calculations, but the main one along with adjacent ones works as expected.

Then I turned to Google Docs, which is this awesome thing if you want to share interesting documents with the world,* and made the spreadsheet look nicer for embedding in a blog.

* Note that information that people want to keep private, secure, and in a cloud, should be kept with the companies that meet three criteria: that said companies are headquartered in countries that have strong respect for people's privacy, that the clouds they use are also located in those countries, and that said companies do not have operations in countries that do not respect people's privacy.

So here's the embedded document, and a link to it:
Calculating reserved image height from a selection

So, in the blue column 47 pixels from top of the image is reserved height; if I change it to 46, the other figures will change accordingly. The 'Input free height' cell is where I set the height of the selection that must include everything I want below main screen text; 'Total' is the total height of the selection.

After I get the total height, I use the 128x97-px template image in another window and the Scale image tool where I replace 97 px with the total height, move input focus with the tab button, and the Scale image tool will calculate the right width for me (if height and width values are connected, as in keeping the aspect ratio).

Then I changed the selection in the big image to that size, moved the selection around a bit, copied it, pasted as a new image, and then scaled the image down to 128x97 px. In the scale image tool, I only needed to change the height from 698 pixels to 97 pixels; the width — as the aspect ratio was correct — was then calculated to 128 pixels.

All in all, I had only four tries and not more. That last two consisted of moving the selection around in the big image to more or less center the stage that I had photographed. The right image turned out to be the one at the third try, when I compared the third and fourth tests.

Maybe in the future I'll provide example images to make a visual point of what I wanted to achieve.

Thursday, March 13, 2014

Designing content for mobile phones

This one is a short one.

Now, every once in a while a developer has to test their content with a device that is not very widespread, but which form factor is. These are typically mobile phones that are older or just basic. No, not everyone has a smatphone; This may be because of circumstance, or necessity, or for just being a holdover who wants to avoid planned obsolescence on their device. There are millions of these devices in use and there's always a chance someone uses them.

Content in this case is not just a web page or a wap page, but also a background image, which has to fit the screen; or an image in a mobile web page which shouldn't be too large for a screen. So, a background image, which I'd want to fit right across the screen of a phone.

Yes, there are many web pages listing resolutions for numerous device models, and I've even seen several sites that attempt real-life representations of how a mobile phone would appear and look like without necessarily having to buy it, but that's not quite it, because the data is represented in the most convoluted manner, no matter how basic or fancy.

So the solution is this very nice collection of screen resolutions at
— with corresponding phone models writ inside. These start progressively from the smallest ones at the top to the biggest near the bottom. Each screen resolution is formatted in its own block to the pixel size of what a corresponding device would have, and colour coded progressively from gray to red to indicate how many models each resolution is represented by. Most of all, its very, very simple and intuitive.

This is what I or a developer/content creator really would like to know, because this helps to determine either exact or, as required, the most approximate size of generated content. Often-times browser/user agent statistics don't always reflect the size of a customer's screen, so it's important to know what they are using and how they are seeing the resource that the customers are visiting.

Wednesday, July 10, 2013

Windows Update not working, error 0x8DDD0018

This can happen with Windows XP (Service Pack 3), but may not be ruled out for Vista and 7.

Windows Update error 0x8DDD0018, by which the Microsoft Update website now very helpfully explains that one or more of these services are not running:
* Automatic Updates
* Background Intelligent Transfer Service (BITS);
* Event Log

Even if all these services are running, and Windows Update refuses to run, then the culprit is the Windows Installer service not being active.

Run services.msc and then start Windows Installer. Refresh the Windows Update website. #worksforme

Sunday, July 7, 2013

ID-kaardi tarkvara seadistamine modernses SeaMonkey lehitsejas

Modernse SeaMonkey lehitseja (näiteks versioon 2.6 ja uuemad) ning ID-kaardi tarkvara töölesaamine on omaette teema, mille kohta ma leidsin, et see vajaks eraldi käsitlust, sest kõik kohe tööle ei hakka. (Nimelt ID-kaardi tarkvara installer end SeaMonkey jaoks õieti ei seadistagi, seega osa asju tuleb käsitsi teha.)

Üldised tingimused, millega kogu krempel tööle õnnestus saada:
* Windows XP (SP2 või uuem; näiteks). Opsüsteemide suhtes tuleks olla siiski suhteliselt agnostiline;
* SeaMonkey 2.6 (ingliskeelne) — on tõepoolest vanem versioon, aga mitte nii vana kui 1.1.xx), seega SeaMonkey 2.xx;
* Oletame, et NoScript ei ole Firefoxis või SeaMonkey-s peal. (ID-kaardi ja NoScriptiga on veel täiendavalt igast jama.)

Nüüd.. eeltingimused peaksid olema sellised:

* ID-kaardi lugeja draiver peab olema installitud; soovitatavalt kõige uuem, mis vastavale opsüsteemile valmis tehtud;
* ID-kaardi tarkvara peab olema kõige uuem, juba peale installitud ning peaks näiteks Firefoxil töötama. Firefoxist veidi allpool, isegi kui tegemist ei ole kasutaja vaikimisi lehitsejaga.

Kuigi ametlikult on toetatud Mozilla Firefox, siis oletatavasti installib ID-kaardi tarkvara kaasaegne versioon EstEID Firefoxi plugina sellegipoolest Windowsi opsüsteemis pluginate üldisesse kataloogi. Sealtsamast kataloogist leiavad Gecko-põhised lehitsejad kõik pluginad automaatselt üles.

Tulemuseks peaks SeaMonkey' pluginate nimekirjas olema
EstEID Firefox Plug-in
Kui see on olemas, siis on pool tööd juba tehtud.

Kui EstEID pluginat SeaMonkey pluginate nimekirjas pole, aga Firefoxis on, siis SeaMonkey-s peaks minema aadressiribal asukohale about:plugins — See peaks panema SeaMonkey ning teised Gecko-põhised lehitsejad otsima üles kõik olemasolevad ja võimalikud pluginad, mis opsüsteem pakub.

Siit edasi tulevad toimingud, mida Firefoxile tehakse automaatselt, aga mis SeaMonkey-s tuleb "käsitsi" teha:
  • Laadida PIN-koodi küsimise moodul turvaseadete hulka:
    Edit > Preferences > Privacy & Security > Certificates > Manage Security Devices nupp:
    Device Manager akna vasakpoolses Security Modules and Devices nimekirjas peaks olema
    Estonian ID Card
     Virtual hotplug slot
     OMNIKEY CardMan 1021

    antud kaardilugeja mudel ^ on Eestis üks levinumaid, aga võib olla ka mõni teine.
    Kui seda pole (milles võib SeaMonkey puhul suhtkoht kindel olla), siis
    * vajutada vasakult nupule Load ja
    * uues aknakeses pealkirjaga Load PKCS#11 Device sisestada
    * Module Name: väljale
    Estonian ID Card
    * Module filename puhul ma annan praegu ette mooduli asukoha, mille leidsin Firefoxist:
    Selle rea võib sinna nii asetada või kasutada Browse nuppu ja leida moodul failikorjajaga niimoodi üles ja sisestada. Vajutada OK. Device Manager aknas peaks uus moodul nähtav olema ning vajutada OK. Preferences aknas vajutada OK. Teha SeaMonkey-le restart.
  • Edasi tuleb panna SeaMonkey-le kõik Sertifitseerimiskeskuse sertifikaadid. Need on saadavad siit:
    Põhimõtteliselt tuleks näiteks tirida sertifikaatide PEM-lingid uuele vahekaardile ja lubada igaühele autentimine vähemalt veebisaitidele [teine ja kolmas linnuke on vastavalt e-postile (e-mail) ja arendajatele (developers)]. Iga sertifikaadi puhul vajutada OK. Mõnedel juhtudel on osad sertifikaadid juba installitud ja SeaMonkey annab sellest lühikese teatega väikeses aknakeses teada. Teha lehitsejale restart.
Põhimõtteliselt peaks asi nüüd töötama.
Et järele vaadata, kas seadistus töötab, minna aadressile
ja siseneda ID-kaardiga.

Täiendavad seaded:
Preferences > Privacy & Security > Validation
Aktiivsed peaksid olema järgmised seaded:
[\/] Use the Online Certificate Status Protocol (OCSP) to confirm the current validity of certificates;
(*) Validate a certificate if it specifies an OCSP server.
Need seaded ^ peaksid olema vaikimisi sees, aga igaks juhuks tuleks üle kontrollida.

Sunday, June 2, 2013

DataStore.edb and Windows Vista

This here is not so much an instruction, but a use case.

So I got me to look at a Windows Vista system that has been running for quite a long time. With just 1 (one) gigabyte of RAM.

At every operating system start, it would search for updates and the hard disk would thrash alot.

With Resource Monitor I discovered that the oft-accessed file was DataStore.edb, located at

DataStore.edb had ballooned to was the size of 325 MB.

The file is a log file in database format listing the history of all updates installed to the system, and also includes the current status of updates waiting to install.

Now, the typical solution[Yes, Citation needed] to this that I had been looking at on the interwebs has been to create a backup of this file and then delete it. After that, Windows Update won't list the history of all updates installed to the system, and that would be that. < Well, there's more than that :>

Before manipulating DataStore.edb, turn off the Windows Update service, because when that service is active, the DataStore file is in use.


For a short while I thought that defagmenting this one file with a command-line tool called esentutl would be the solution, so I wanted to go on with it. The catch was that the tool would not be able to copy the defragmented file to its original location and yielding an error about it, saying that the defragmented TEMP file could still manually be taken to its original location, with the original file replaced. I didn't do it and left it at that.

By the way, the esentutl tool does not list where the .TMP file is located. I eventually found out that it was at the main user data folder of a logged-in user:

For a long time I couldn't put my finger on what it was that was not working, and then a month or two later it turned out that I had not been running the esentutl command in Administrator mode.

The full command for defragmenting the file went on like this:
esentutl /d %windir%\SoftwareDistribution\DataStore\DataStore.edb

So I launched Command Prompt as Administrator and the tool did its job as expected. So that was that.

But checking for updates in Windows Update took a lot of time anyway, and the hard disk still kept thrashing when checking for updates.

What happens when removing datastore.edb

Note that you will still have to back up the file, just in case...

Well, Windows Update then knows no history of previous updates and takes a lot of time to check for them. Maybe an hour. Or so, because I assume it will check updates file-by-file for nearly all present Microsoft software. Before, when the still-large datastore.edb file was there, it seemed that the check for updates actually took much, much less time. Since I didn't measure the actual minutes and did not compare, then I can't tell with any reliable numbers as to what the effect was with regards to differences in update checking times.

Anyways, after installing the updates, DataStore.edb was recreated and sported about the same size as before (over 315 MB). So, there is really no point in deleting the file.

Worse is, that there doesn't seem to be any built-in way to merge two separate DataStore.edb files into one cohesive database, if the older database were absent for a short while and another one created anew.

Then I just moved the recently backed-up datastore.edb back, and checking for updates in Windows Update took about ten minutes, including a reasonably minor database refresh on account of the May updates installed in the interim, which was not reflected there.

To avoid Windows Update thrashing the hard drive anyway, it's then best not to have the Windows Update service run with such a low RAM count at all (1 GB); perhaps with the exception of every second Tuesday each month.

So much for now.

28.04.2014 update:

I don't have that Vista computer at hand, or any other Vista computer in any useful proximity, so it's impossible to tell with precision where to optimize wrt Windows Update.

Point being that it's possible to keep Windows Update from checking updates at every startup by making changes in scheduling.
  • I remember there being a scheduler snap-in module in Windows Management Console, which feature-wise in Windows Vista replaced the Scheduled Tasks folder in Windows xp. The Task Scheduler snap-in is alot more complex and allows very granular configuration options.
  • Turning off automatic updates is useful for very experienced users. If the computer has behaved well, then I've usually set the Windows Update service to delayed start. Attempt this at your own risk. Even if the risk is low, it doesn't account for unintended behaviour, especially when making large updates, such as upgrades to Windows service packs.

I also hazily remember a separate update not advertised on Windows Update itself, that also must have improved the situation, if only a bit. The overall result was that the DataStore file was touched only when I launched the Windows Update program.

Monday, April 22, 2013

List of Canadian carriers that offer Nokia mobile phones (April 2013)


Rogers Wireless
* Nokia E5
· Nokia Lumia 920
Business: Small Business & Enterprise
· Nokia Lumia 920

Fido (subsidiary of Rogers): No Nokia phones

Bell Mobility - No Nokia phones

Telus Mobility
* Personal - Nokia Lumia 620
Prepaid - Nokia Lumia 610
Pre-Owned - Nokia Lumia 610 (web-exclusive)
* Business - Nokia Lumia 620

SaskTel Mobility (Saskatchewan) - Website is "temporarily down for maintenance.
23.04.2013 update: No Nokia phones anyway.

Wind Mobile (Southern Ontario and elsewhere; website does not work properly with Firefox 20.0.1) - Nokia not listed and no Nokia phones available

MTS Mobility (Manitoba) -
* Personal
* Nokia 6350
* Nokia Surge
· Nokia Lumia 710
* Small and Medium Business
* Nokia 6350
* Nokia Surge
· Nokia Lumia 710

Videotron Mobile (Québec and Ottawa) -
* Residential
· Nokia Lumia 710
* Business
* Nokia C7-00
* Nokia E73
* Nokia 500
· Nokia Lumia 710

Mobilicity (urban: Greater Toronto area, Calgary, Edmonton, Ottawa, and Vancouver) - No Nokia phones

Public Mobile (urban: Greater Toronto area, Greater Montreal and most of the Niagara region) - No Nokia phones


7-Eleven Speak Out Wireless (uses Rogers) —
* Contract phones via, which defaults to the U.S. territory
Accounts: New, renewal/upgrade, more lines, replacement device
· Nokia Lumia 810 (T-Mobile)
· Nokia Lumia 822 (Verizon)
Prepaid devices/no contract:
* Nokia X2 (T-Mobile)
· Nokia Lumia 710

Brightroam (uses the Rogers network, offers 'inernational cell phones') —
* Nokia 1280
* Nokia C2-01

Chatr Wireless (Rogers) —
* Nokia 1616
* Nokia C2-02
* Nokia C3 + free Bluetooth headset
(and one Sony Ericsson)

Cityfone (Rogers) — No Nokia phones

CityWest (Bell) — Does not visibly offer phones on its website.

Clearnet (subsidiary of Telus) — phone offer links direct to Telus' own website.

DCI Wireless (Rogers) —
* Nokia 1100
Other European-brand phones:
* Siemens CF62 (refurb)
* Siemens S66 (refurb)
* Siemens SL56 (refurb)
Other interesting brands:
* Panasonic A100
* NEC e132
* Palm Treo 650 (part of specials, while quantities last, no rainchecks)

KMTS Mobility (Bell)
* Personal
* KMTS Mobility (CDMA, a division of Bell Aliant) — No Nokia phones
* NorthernTel (HSPA, a division of Bell Aliant) —
* Home: No Nokia phones
* Business: Phone offers take to original NorthernTel catalog
* Business — Takes to KMTS/NorthernTel choice page, so defaults to above information

KooDoo Mobile (Telus) — Wants location, chose BC
* Prepaid phones
* Certified Pre-Owned — Nokia Lumia 610
* Certified Pre-Owned — Nokia Lumia 610

Northerntel Mobility (Bell) — see above

NorthwesTel (Bell) — No Nokia phones

PC Mobile (Bell) —
* Nokia 7230

Petro-Canada Mobility (Rogers) — mainly sold in-store
* Nokia 1616
* Nokia 2220 (limited quantity, but hey :)
* Nokia 2720 (in limited quantities)
* Nokia C3

Primus Canada (Rogers) —
* Residential — No Nokia phones

Roam Mobility (T-Mobile USA) — No Nokia phones

SearsConnect Wireless (Rogers) > Cityfone — No Nokia phones
SimplyConnect (Rogers) > Cityfone — see above

Solo Mobile (Bell) — Not taking on new customers, directing those to Bell Mobility — No Nokia phones

Talk & Earn (Rogers) > Cityfone — See above for cityfone
Talk & Save (Rogers) > Cityfone — See above for Cityfone

Télébec Mobilité (Bell/Quebec, division of Bell Aliant) — No Nokia phones

Virgin Mobile Canada — No Nokia phones

Eastlink (Rogers) — Website not available

Fleetcom — No Nokia phones

ICE Wireless (Rogers) — Does not offer any phones

Keewaytinook Mobile (Rogers) —
* Nokia C2
* Nokia Asha 311

Lynx Mobility (Bell/Telus) — No Nokia phones

Sogetel Mobilité (Bell/Quebec) — No Nokia phones, but one Sony Ericsson W508

TBayTel Mobility (Rogers) — only 4G HSPA+ (smartphones, but apparently no featurephones)
Residential —
* Nokia Lumia 920
Business —
* Nokia Lumia 920

Good2Go Mobile Canada (Rogers)
* Nokia 1616
* Nokia 2720
* Nokia 2220

KORE Wireless (Rogers) — non-residential service

Friday, April 5, 2013

Overview of Nokia phones offered by U.S. carriers (April 2013)

US web offers for new Nokia phones as of 05.04.2013.

The list is somewhat incomplete, and emphasis is added to phones that don't have Windows Phone in them (all Windows Phone versions, including 7.5, 7.8, and 8). So this essentially means that while Windows Phone items (all Lumia phones) don't really count, they are still listed.

This list may also reflect which carriers' websites first ask for location without offering their phones first. The carriers whose sites do that, are more likely to offer locked phones and with a fixed contract instead of selling them to someone who would want to use their phone with a different carrier.

MVNO-s featured in the respective Wikipedia navbox also included.

Near the end of the compilation it turned out that most carriers and MVNO-s did not carry Nokias, so if I will ever make a future compilation of who carries Nokias, these will get further emphasis beyound colour.

* "Nokia not listed" means that the website is offering phones by brand name
* "No Nokia phones" means that the website either does not offer phones by brand name, or that Nokia phones were not available.


  • T-Mobile:
    Nokia X2 (refurb)
    Nokia Lumia 810
  • AT&T:
    Nokia Lumia 900 (new & refurb)
    Nokia Lumia 820
    Nokia Lumia 920 (new & refurb)

    (While Nokia is not in the list of first four (primary) offered manufacturers in the filter, the brands are listed in alphabetical order.)
  • Sprint Nextel (Wants zip code, but includes coverage maps) — Personal/Business: Nokia not listed


* C Spire (Memphis Metropolitan area, Mississippi, Alabama, Florida Panhandle, Rome, Georgia) — No Nokia phones
* Cricket Wireless — Wants zip code, Nokia not in bundles. But, is accessible (when going directly to the URL) — No Nokia phones.
* MetroPCS — Nokia not listed
* nTelos — Nokia not listed; Sony Ericsson listed by brand, but no phones featured.
* Revol Wireless — No Nokia phones
* SouthernLINC Wireless (Alabama, Georgia, Southeast Mississippi, the Florida Panhandle) — No Nokia phones
* U.S. Cellular — Nokia not listed


  • Cellular One
    • Montana, Northwestern Wyoming, Texas (TX-10, TX-11), and Oklahoma — — Wants zip code — domain is for sale
    • East Central Illinois (, availability varies by location) —
      Feature Phones:
      Nokia Asha 303
      Nokia Asha 311
    • Northeastern Arizona and northwestern New Mexico ( —
      Hearing aid compatible:
      Nokia 2720
      Nokia 6085
      Nokia 7020
      Nokia E5 (Aspect)

      (also includes two Sony Ericsson phones)
    • Wayne and Pike counties, Pennsylvania (South Canaan Cellular, — No Nokia phones
    • Texas and Oklahoma (Choice Wireless, — No Nokia phones
    • Bermuda (Bermuda Digital Communications,, aka CellOne) — No Nokia Phones, but features one Sony Ericsson phone.
  • West Central Wireless (Central and West Texas) —
    Nokia 1661
    Nokia 2720
    Nokia 2760
    Nokia 3610
    Nokia 6061
    Nokia 6085
    Nokia 6126
    Nokia 7020
    Nokia C1-01
    Nokia C3-00
    Nokia C6
  • Alaska Communications — Nokia not listed
  • Alltel Wireless — Wants zip code
  • Cellcom — Nokia listed, but no Nokia phones on offer. Also lists Sony Ericsson with no devices.
  • Cincinnati Bell — Residential/Business: Nokia not listed
  • Element Mobile — No Nokia phones
  • i Wireless (Iowa, Western Illinois, Eastern Nebraska) — Nokia listed, but no phones available. (Sony Ericsson listed in the same fashion)
  • Immix Wireless — No Nokia phones
  • Open Mobile (Puerto Rico) — No Nokia phones


  • Boost Mobile (subsidiary of Sprint Nextel) -- Nokia not listed
  • Consumer Cellular -- No Nokia phones
  • GosSmart Mobile (T-Mobile subsidiary) -- No Nokia phones
  • GreatCall -- No Nokia phones
  • Hawaiian Telcom -- No Nokia phones
  • i-wireless (uses Sprint CDMA) -- No Nokia phones
  • Kajeet (CDMA, Sprint-based) -- Nokia listed, but no phones on offer
  • KDDI Mobile (KDDI America, uses the Sprint network) -- No Nokia phones
  • Liberty Wireless (operates on Sprint Nextel CDMA) -- No Nokia phones
  • NTT Docomo USA (subsidiary of NTT DoCoMo Group) --
    Nokia 500
  • Page Plus Cellular (uses Verizon Wireless) -- No Nokia phones
  • Ting (Verizon and MetroPCS) -- No Nokia phones
  • TracFone Wireless -- (No Nokia phones)
    via -- wants zip code, takes to -- No Nokia phones
    • Net10 Wireless -- No Nokia phones in the main lineup, No Nokia phones in the main Partner Phones lineup, more partner phones at an independent distributor, which is —
      • Basic phones:
        Nokia Asha 303
        Nokia Asha 311
      • Smartphones: Nokia Lumia 710
    • Straight Talk - Wants zip code, but offers 'gift' option for zip code -- No Nokia phones
    • Telcel América - Wants zip code, but offers 'gift' option -- No Nokia phones
    • Simple Mobile (subsidiary of America Móvil (parent of TracFone Wireless)) -- "Smart phones" available at --
      • Phones
        Nokia Asha 303
        Nokia Asha 311
      • Smartphones: Nokia Lumia 710
  • Virgin Mobile USA (subsidiary of Spring Nextel) -- Nokia not listed
The post is not yet complete, but the basic listing based on the Wikipedia infobox should be.