Email Me
my first name at my last name dot com
Archives
Past Blog Entries
Links
Andy Wrenbeck
ApplePhoneShow
Ben Abler
Ben Poole
Bob Lutz
Bob Obringer
Bruce Elgort
Carpeaqua
Codestore
Cult of Mac
Daring Fireball
Detroit News
Domino Unplugged
Ed Brill
Guidebook
I, Cringely
Joe Litton
Jonvon
NSFTools
NSLog
Ned Batchelder
Old Blog
Raymond Chen
Scobleizer Weblog
Techdirt
Unsanity
Weblogs Apple Log
bonj
My very first iPhone development related blog posting. I've been under
so many NDAs that your head would spin.
The problem to be solved
is:
How do you get crash reports from users without them sending you
a crash report?
I'm using the idea from
Christopher
Atlan for capturing crash reports on the phone. This is handy, in that
it captures the data. (How I do all that is another story) The question
is, how do you turn the dump of addresses into something useful? You may
have heard of the sybolication utility, which requires the crash in a
specific format. And you may have heard of atos which translates an
address into a symbol. However,neither one really works that well with
the type of crash data we have and the .dSYM file we need to map it to.
What
I haven't really seen documented on the web is the use of dwarfdump to
achieve that for you. Here is a sample command:
dwarfdump
--lookup 0x00007855 --arch armv6 MyApp.app.dSYM/
This blog is suffering from a serious lack of attention. I do have
something interesting I want to share, but I'll do that in another post.
This is the post where I whine about not having enough time.
I
can't remember how all the code to the blog works, and I just don't want
to maintain this custom rolled format anymore. I just need to switch to
one of the common platforms. The problem is the legacy data that I want
to keep. I still receive emails from people who find my previous posting
worthwhile, so I don't want to loose that information.
Anyway,
same story for the last couple (few?) years. Up next, something that
might actually be useful
Didn't receive much email yesterday or today. I discovered that the ORDB
blacklist is returning false positives for everything now to encourage
users to stop using it.
If you don't seem to be getting much mail
the last couple of days, you might want to check your blacklist filters.
Personally, I'm now just using zen.spamhaus.org and bl.spamcop.net.
Here's another nugget of Notes API code that I am slowly releasing into
the wild. I'm not sure that it even has meaning in today's Domino world,
but what the hey.
In this case its a DSAPI filter I wrote which
basically instructs the browser to not cache anything that might come
from the mail directory. The problem with this type of instruction is
that the browser and any proxy server between the server and the browser
can just ignore the "Suggestion" and cache whatever it wants anyway.
In
the code, I thank Chris Stead. Unfortunately, I can't remember who this
person is specifically, and what parts of the code I borrowed from
Chris. I think I borrowed the overall structure of the DSAPI code from
Chris and then built in the specific functionality I was looking for.
Click
here to download the code --> dsapi3.pdf
I still am interested in the iPhone more than I am in
Android based phones, but I was
curious so I downloaded the SDK to play around with.
Before I
downloaded the SDK I didn't even know that it was Java based. That's
good news for old hat Java programmers like myself. Java as a language
was in need of a little positive momentum.
Here is the
interesting part that I haven't seen covered anywhere else yet. If you
watch the YouTube videos, you can't help but notice that the phone looks
a little pokey. A little to much wait to go with your click if you ask
me. Then I remembered hearing about the concept of a JVM on a chip. I
was thinking that it makes perfect sense. The handsets they have been
demoing with are not ready with the hardware JVM so things are a little
pokey. By the time it is released into the wild, the performance issues
would be mitigated.
Today
I read that Android is actually compiled into Java bytecode, which is
then transformed into Dalvik bytecode. In other words, although you
develop applications using the Java language, there isn't a JVM on the
device. I'm wondering if google plans on getting some hard love next
year, or if they are simply hoping that a year from now the phones will
have enough horsepower to deliver a decent experience.
Personally,
I think Android will probably seal the fate of second tier mobile
operating systems such as Palm OS and Windows mobile, but OS X will
continue to lead the phone market.
So, do I putz around with the
Android application I have in mind, even though I don't really plan on
owning an Android device, or do I just hang on and wait until Moses
delivers the JesusPhone SDK?
Somebody asked me for this today, since my old domino based blog entries
are no longer available online.
Here is the C++ Lotus API code I
wrote to toggle the SetUniformAccess flag on a database, also known as
the Enforce Consistent ACL flag. This does require the C++ dll on your
path, such as lcppn23.dll or later.
#include <lncppapi.h>
#include <iostream.h>
int main(int argc, char *argv[])
{
char errorBuf[LNERROR_MESSAGE_LENGTH];
LNNotesSession session;
LNSetThrowAllErrors(TRUE);
if ( argc < 2 )
{
cout << "This application sets the SetUniformAccess flag" << endl;
cout << "Also known as the EnforceConsistentACL flag" << endl;
cout << "Usage: " << endl;
cout << " DbSetUniformAccess.exe database flag" << endl;
cout << " -database = path to database to change" << endl;
cout << " -flag = T to set to true, anything else to set to false" << endl;
return(0);
}
try {
session.Init();
LNDatabase db;
LNACL acl;
char * testchar = "T";
cout << "Opening database: " << argv[1] << endl;
session.GetDatabase(argv[1], &db);
db.Open(LNDBOPENFLAGS_NO_USER_INFO);
db.GetACL(&acl);
if (strcmp(argv[2], "T") == 0)
{
acl.SetUniformAccess(TRUE);
cout << "changed SetUniformAccess to TRUE" << endl;
}
else
{
acl.SetUniformAccess(FALSE);
cout << "changed SetUniformAccess to FALSE" << endl;
}
acl.Save();
}
catch (LNSTATUS error) {
LNGetErrorMessage(error, errorBuf);
cout << "Error: " << errorBuf << endl;
}
cout << "Finished running" << endl;
session.Term();
return(0);
}
Interested in the iPhone? Check out ApplePhoneShow.com.
Even
though I don't own an iPhone yet, I usually listen to this podcast
because I enjoy listening to the hosts of this show. Of course, I'm
still anticipating the day when I will be able to have an iPhone of my
own.
Here's one for the memory banks. I wanted a simple way to convert a
string into a number. The built in parsing functions in Javascript don't
deal with negatives at all. My String could look like "200px" or
"-200px". calling parseInt on 200px would work fine and return 200, but
-200px would return NaN. So with a little hackery I came up with this:
newNumber
= someString.split(/[^0-9\-]/).join('');
Regex sure provides some
crazy fun eh?
Anyway, you might have noticed that it doesn't deal
with decimals. Something like /[^0-9\-\.]/ might do it, give it a whirl.
I was following a POS Ford Escort not to long ago, I would say early
nineties vintage. Now I can't blame the fellow for maximizing his dollar
and the car looked to be in relatively good shape. Here's what killed me:
He had a bumper sticker that said "I work for Ford, I drive a Ford". I can
appreciate the sentiment itself, but he's driving a 15 year old Ford. In
addition, Ford was basically selling the car at a loss to maintain
volume and to keep a presence in the entry level car buyer market. So,
does this guy really think that he is somehow supporting the company by
driving the same car for 15 years, a car which Ford certainly lost money
on by selling it to him?
Someone, please put it back in the oven.
Here is my thought for
today: The person that dreamed up the whole representation of a select
tag should be shot.
They have made it impossibly hard to
implement a stupid frickin HTML Select tag. So I decided to look at the
Tomahawk option. The sample on the apache website for the t:selectItems
shows it being used with a standard h:selectOneMenu. However, my
Facelets taglib for Tomahawk does not include a selectItems and does
include its own selectOneMenu.
This crap is so not ready for
primetime. We are using 3 layers of code (Facelets, Tomahawk, and JSF)
and none of them are anywhere near ready to be used.
Don't even
get me started on the stupid dataTable.
Arrrrrgggghhh!