If you are using OpenLog with LotusScript on a Domino server, please set NoLSIStackTrace=True
This is a global variable that determines whether or not the OpenLog code will use Lsi_info(14) to log LotusScript stack traces. IBM has found that the Lsi_Info function (which is part of the LotusScript language) can cause serious problems on the Domino server. You REALLY need to avoid calling this function on the server.
The good news is that (A) as far as I know it is still okay to use this on the Notes client, just not the server, and (B) if you are using OpenLog it is very easy to turn it off globally or on an agent-by-agent basis simply by setting NoLSIStackTrace=True. The bad news is, well, you lose debugging info. But the good far outweighs the bad.
DO NOT PANIC. Just go into your OpenLog database, open the Initialize sub in the "OpenLog Functions" script library, and set the NoLSIStackTrace variable there. Then save and close and use the "Design" server task to push it out to all your databases that use OpenLog. There, you're done.
Don't get scared into thinking that you have to stop using OpenLog, just set the variable and push it out. That's the beauty of deploying script libraries using master templates.
John Hodgman was interviewing Steven Strogatz about mathematics and his book The Joy Of X, and the discussion came around to the statement that the number one is actually equal to the number 0.99999... repeating infinitely. Steven Strogatz asked if anyone in the audience had a "favorite proof" of this and, well, I indeed have one.
So I got to stand up, find a microphone, and stumble quickly through the proof. I was amazingly nervous -- being on a mic in a room with a few thousand people explaining a math proof to a well-known mathematician will make you nervous, as it turns out -- and I feel like I wasn't very clear about the whole thing, but John Hodgman made some very funny "WHA?" noises and both men on stage seemed to understand what I was saying and roll with it. And people clapped. So all in all it was a win.
The proof goes like this:
I've always thought that was a neat equation, and quite frankly it's about all I remember from my infinite series and sequences class in college. Math is cool.
Since I am my own system administrator, I contacted myself. This led to some heated internal discussions, followed by the inevitable Google search.
Apparently this is a fairly well-known message to real-life Sametime admins and the usual remedy is to configure the VPS_ALLOWED_LOGIN_TYPES variable in the server's sametime.ini file using the appropriate Sametime Client ID. Unfortunately, at the time this happened the IBM technote that lists the Client IDs hadn't been updated with the Notes 9 Beta client information yet, which left me with the question of how to determine the ID my Lotus Notes embedded Sametime client was using.
There is information on how to do this using debug settings on the Sametime server, but I wanted to know how to get this information directly from my client. So here is what I did:
com.ibm.collaboration.realtime.community.sametime.level=FINEIn the trace log file, I saw lines like this:
Got client ID [1F954w==] from runtime version property [st852.notes900]
Client ID succesfully set for Sametime login. Login Type: 4678
The first line is a bit of a red herring; it looks like it should be the Client ID I'm looking for (or a Base64 version of it), but it's not. Maybe it's some encoded form of it or something, I don't know. Just ignore it.
What you really want is the "Login Type" number on that second line. That is the decimal version of the Client ID you need to add to VPS_ALLOWED_LOGIN_TYPES on the server. If you use your favorite calculator program to convert that to hex, you will see that the hexidecimal representation of 4678 is "1246", which is the Client ID you are looking for.
Of course, if you don't have access to make that setting on the Sametime server that won't help you one bit. But if you can get a hold of your Sametime administrator then that is the information they will need.
One bit of weirdness I noticed after everything was done is that the web-based inbox of one of my email accounts didn't look quite right. It uses the typical bold-font-for-unread-messages, unbold-for-read-messages scheme, but suddenly it was very hard to distinguish between the bold/unbold read/unread messages on the screen. Other webmail and random websites with bold fonts looked fine, but this one inbox just wasn't right.
So many things had changed, I wasn't sure where to start looking. I not only upgraded my browser, I upgraded my entire operating system, so there were lots of potential points of failure. Maybe there was a new accessibility feature that got turned on. Maybe a change to font-smoothing. Maybe all my system font files got updated and one of them was screwed up.
I finally narrowed it down to this: the problem was with Geneva bold fonts on Google Chrome. Here's how Geneva bold looks on two slightly different installations of the Chrome browser on Mac OSX:
I know that looks like a pretty minor difference, but trust me, when you have row after row of bold and non-bold sitting on top of each other, that second version of the bold font display doesn't have nearly enough contrast against the non-bold font. The bold isn't quite... bold enough. It's kind of grey and fuzzy instead of black and crisp.
Now that I knew what to search for, I wanted to see if the problem had been reported. I was going to be a good Internet citizen and report the issue if it wasn't already in the queue. As usual, someone had already noticed this before me and opened a regression bug. What I saw with the Geneva font was a result of the fact that it's one of those fonts that doesn't actually have a bold typeface, so applications like Chrome have to create a 'fake' bold version of the font when it's supposed to be bolded. There are some interesting details about this in comment #7 of the bug report.
Anyway, rather than wait for a fix, I found out that I can globally override a CSS font face in Chrome. Cool, huh? I just had to edit this file:
~/Library/Application Support/Google/Chrome/Default/User StyleSheets/Custom.css
and add this line:
@font-face { font-family: 'Geneva'; src: local('Lucida Grande'); }
Now every time a website serves up Geneva for me on a web page, Chrome will use Lucida Grande instead. Certainly a hack but it'll work for now.
"So long as the specific code used to implement a method is different, anyone is free under the Copyright Act to write his or her own code to carry out exactly the same function or specification of any methods used in the Java API. It does not matter that the declaration or method header lines are identical. Under the rules of Java, they must be identical to declare a method specifying the same functionality -- even when the implementation is different. When there is only one way to express an idea or function, then everyone is free to do so and no one can monopolize that expression."
Groklaw also has a PDF version of the ruling if that's easier to read.
If you'd like to do this with an agent instead, here's some LotusScript that will give you the same sort of output:
There's a function in there that writes the MIME boundaries a little differently than the rest of the MIME content. I wrote this a long time ago so I can't remember exactly what the condition was where this was necessary, but I do remember that my Mac client was sometimes generating invalid UTF-8 output if I didn't do that. It could be a Mac-specific or version-specific thing, or it could be one of those things that never happens to anyone but me. I don't know. Feel free to take that part out and try without it if you're curious.
Anyway, I thought I published this a while back but I can't seem to find it anywhere, so there you go.
I'll be delivering two sessions there: Java debugging, and an introduction to OpenSocial for developers. I'm really looking forward to both sessions, but especially the OpenSocial one. I did a lot of research and work to try to nail down not just the "hows" but also the "whys" on that topic.
I have to admit, in the past when I've seen demos of gadgets and activity streams and embedded experiences, I just didn't get it. What I saw kind of looked like... an email inbox. Sure, there were embedded videos or buttons or links to collaborative documents or whatever, but in the end it didn't seem to be much different than a well-crafted HTML email or an RSS feed.
After spending a lot of time working with OpenSocial gadgets and the Shindig server, I have a much better understanding and appreciation of what's going on, and how it's different, and why it's useful. I feel good about the fact that my presentation will give the technical knowledge about how to get started with this stuff; I'm very curious to see if I'll also be able to explain why you should use it.
Beautiful day at the Dolphin
Took a quick break to enjoy the weather
Stumbling towards Kimonos
Swirly circley LS12 logo
Pretzel Cookie!!!
Atrium at MCO
Sitting on the wing
Awesome gifts from awesome people (not pictured: Wisps!)
Option #1: LSMobile App on your iPhone/iPadThe easiest way for me (since I'm an iPhone kinda guy) is to use the LSMobile iPhone App (also available for iPad, optimized for the larger screen) written by Tim Davis at The Turtle Partnership. With that app, all you have to do is open a session you're interested in and tap the action button at the top right of the title bar to bring up a "Session Actions" sheet at the bottom of the screen. From there you can tap the "Add to Calendar" button to add the session information to the calendar on your phone. As you can see from the screenshot, this is also an easy way to tweet about a session or check in to it on Foursquare. |
Option #2: The Genii Software Sessions DatabaseOnce again, Ben Langhinrichs has imported all of the Lotusphere session information into a free database that you can download and open in your Lotus Notes client. From the session views (by ID, by Track, etc.) you can select one or more sessions and click the "Add Selected To My Calendar" button at the top of the view. This will add the session information to your Notes calendar, and of course your Notes calendar can then sync with whatever it already syncs with -- Blackberry, etc. |
Option #3: The IBM Social Business Online websiteAll people who are registered for Lotusphere 2012 should have received an email describing how to access and log in to the Social Business Online website, which is the official web and mobile web dashboard for attendees this year. The home page describes a few different ways to get the session content, including mobile apps for iPhone, Android, and Blackberry, and also a "Session Scheduler" tab on the main site that allows you to create an iCal export. NOTE: this site is for registered attendees only. If you're not registered, you won't be able to login. Sorry. |
|
Option #4: Write Your Own iCal Export If you're a programmer and you just like doing it yourself, you can always take the Genii Sessions database and write an agent that creates a custom iCal feed** of your own, suitable for importing into iCal-compatible applications. To get you started with that (because I know that's what you really want to do anyway), here's a very basic and kind of limited iCal class I wrote a while back: You should be able to easily convert the example code into something that works with the session database and allows you to create an importable iCal file. If you're a Java sorta person, it should be a fairly straightforward port to Java (or you can just find an open source class to use). |
** Special Note: yes, I know it's technically "iCalendar" rather than "iCal". But I don't really care because people know what I'm talking about anyway, and "iCal" is easier to type and sounds better.
Obviously if there are things you immediately need to act on, you should still do them. But really, if you haven't gotten around to acting on those emails from a year (or two years, or three years...) ago, you just need to man up and let them go.
The Arrow and the Song
by Henry Wadsworth Longfellow
I shot an arrow into the air,
It fell to earth, I knew not where;
For, so swiftly it flew, the sight
Could not follow it in its flight.
I breathed a song into the air,
It fell to earth, I knew not where;
For who has sight so keen and strong,
That it can follow the flight of song?
Long, long afterward, in an oak
I found the arrow, still unbroke;
And the song, from beginning to end,
I found again in the heart of a friend.
Apropos of nothing; I've just always liked that poem and heard it again yesterday, so I thought I'd share.
Sometimes if you have an idea, you just have to let it fly and not worry about where it goes. You may never meet the people you've helped. But that doesn't make them any less helped.
The first game I ever remember typing in from a magazine was one where you had to fly a bat across the screen in a cave, avoiding stalactites and stalagmites as you went. Later on I thought, "I bet I could find that if I looked hard enough", and the quest was on.
All I have to say is: thank goodness for the Internet Wayback Machine. It's been crawling and archiving sites on the Internet since 1996, including (as it turns out) the Classic Computer Magazine Archive. Inside the December 1982 issue of Antic magazine was the game I was looking for... BATS!
Next stop was finding an Atari emulator. There was a surprising variety to choose from. I loaded up Atari800Win Plus in a Windows VM and downloaded the BASIC file for the "Bats" game (luckily I didn't have to retype the game, I only had to download -- I love living in the future). After figuring out the virtual drives and virtual joystick controls, I was ready to go:
That was fun for a few minutes anyway, as nostalgia always is. According to the magazine article, the author of the program (Stan Ockers) released it into the public domain, so if you're curious as to what the BASIC file for such a game looks like I converted it to text as BATS.BAS.txt for your viewing pleasure.
The BASIC-to-text conversion was an interesting process, as I had to map a virtual printer to Notepad in the Atari emulator. Kids today... they don't realize how easy they have it with their ASCII and their Unicode and whatnot...
If you're not subscribed to the monthly newsletter, here's a link to the LotusUserGroup Clippings Page so you can take a look and sign up. If you're more interested in the admin side of things, don't forget that Warren Elsmore and I trade off duties writing articles (he writes on the odd months, I write on the even ones).
Recently, the Windows laptop went from "problems every week or so" to "can't even stay connected long enough to check email". I did a full virus scan, removed and re-added the wireless network a bunch of times, disabled and re-enabled the wireless network adapter, and turned many wireless adapter settings on and off. On the router, I could see constant streams of DHCP discovers and offers for the laptop, but somehow it wouldn't connect or stay connected. I even took the drastic measure of replacing the firmware on my router with DD-WRT -- everything that worked before continued to work, the Windows machine continued to be flaky.
Here's what I did to finally get it working. I don't know if one of these things was a magic step or not, but this is what worked:
1. Set the MTU to 1492: I followed these directions for setting the MTU, and I used a value of 1492.
2. Disable Receive Window Auto-Tuning: this ended up being a 2-step process, because first I had to disable Windows "scaling heuristics", and then disable the auto-tuning. And then reboot, just for good measure.
3. Set a static IP address: no matter how much I played with DHCP broadcast flags, I still had issues getting and keeping a reliable connection, so I finally gave up and set a static IP address and used Google DNS for name resolution. Interestingly, DD-WRT is configured by default with a setting called "DHCP-Authoritative" turned on, which will prevent non-DHCP clients from accessing the network; so I had to turn that off at the router.
4. Set the wireless router to use a fixed channel: by default, my wireless router had its wireless channel set to "auto", so it could be anything from 1 to 11. I changed it to a fixed channel of channel 5.
You would think that setting the wireless channel or static IP address was what actually fixed it, but I had done that before and still had problems, so I think something about the first two steps was also important. For reference, the commands I had to issue (at a command prompt in Administrator mode) to do #1 and #2 were:
netsh interface ipv4 show subinterfaces
netsh interface ipv4 set subinterface "Wireless Network Connection" mtu=1492 store=persistent
netsh interface tcp show global
netsh interface tcp set heuristics disabled
netsh interface tcp set global autotuninglevel=disabled
I hope this helps someone out there... or at least helps me next time I have to troubleshoot this.
Neal Stephenson's new book "Reamde" (not a typo) is coming out on September 20th. However, the UK Kindle version appears to be available for download right now! Very jealous.
UPDATE (Sept. 2): the UK Kindle version is now showing up as pre-order, but the UK hardback appears to be available now. Not sure what's going on. Either way, it still looks like I have to wait until the 20th to get the book in the USA.
