Saturday, December 22, 2007

Logitech to Transition Digital Writing Business to Destiny Wireless

Well I can't say that I'm very surprised by this press release. Logitech hasn't done anything to improve neither the technology nor the consumer experience since they launched the IO pen way back in 2002.

I must say that I feel a bit sad though since I remember thinking that Logitech really could give the technology the consumer focus it always lacked. Now we hope that Livescribe has what it takes!

Looking back to the 2002 IO launch I found this snippet...

"Logitech is taking a very different approach to digital writing for the PC," said David Henry, senior vice president and general manager of Logitech'sControl Devices Business Unit. "While other attempts at pen input have started with the PC, with the goal of making the PC more friendly, our point of departure is pen and paper, with the goal of making these elements more effective in the digital world.
"With the Logitech io, there's no need to change the way you work, or to lug your PC to meetings," Mr. Henry continued. "We believe this product will be well received by today's mobile workforce, as well as consumers who are looking to be more effective and creative with their note taking."

Thursday, December 20, 2007

NTFS Streams

FlexHex has a nice article about NTFS Alternate Streams. And some tools as well!

Wednesday, December 5, 2007

Thursday, November 22, 2007

Livescribe desktop application update

Here are the latest pictures of the desktop application as it appears in the commercial!



Tuesday, November 20, 2007

Never miss a word

Livescribe launched a site as well for the commercial, never miss a word. Quite funny and it might be the right way to catch the student market!

Livescribe Youtube commercial!

A kindle revolution




I think Amazon and Jeff Bezos got it right. Of course I haven't been able to play with one and probably won't get the chance for a long time since I live in Sweden. But the significant features all seems to be there. No syncing with a computer that can cause problems. No data plans. Always access to a bookstore, and a good one that is. Previews of both books and newspapers. Reasonable prices. And of course access to Wikipedia. Just imagine reading some stuff in a book or newspaper and being able to immediately look it up in Wikipedia. Even when you're on the road! Awesome! I would love to have one! Check out the Kindle from Amazon!

Someone put it nicely when they said that the Kindle isn't a e-book reader but an e-library!

Wednesday, November 7, 2007

Microsoft technology rules!

Photosynth technology from Microsoft Live Labs are now being used to view bird's eye images in Virtual Earth 3D. It's a really cool feature, check it out now! (First select 3D and the fly to eg. San Fransisco and enable Bird's eye!) And they are using Microsoft Research technology from HD View to let you create panoramas automatically in Windows Live Photo Gallery!

Monday, November 5, 2007

Livescribe pen images!

Check out the new images of the pen! It looks beautiful! And it has a screen!

Monday, October 29, 2007

Livescribe blog!

Check out the Livescribe blog that just went online! Hopefully they'll update it once in a while!

Thursday, October 25, 2007

Closure

Here is a nice and short article by Martin Fowler explaining what closure is in programming.

Tuesday, October 23, 2007

Friday, October 19, 2007

Another Fly Fusion review!

Check it out on Oh Gizmo!

The review is very thorough and overall positive. The conclusion in short is that it is a fun tool primarily aimed at children and probably not suited for professional notetaking.

Wednesday, September 19, 2007

Livescribe updated their website

Check it out here! It seems to mostly be some small graphical enhancements and a better Press Center section with coverage in the media! No more information about device or applications though... :(

Thursday, September 6, 2007

Another Fly Fusion review

Leapfrog FLY Fusion review in The Globe and Mail, it gets 4.5/5!

Network Technology

If you need information about routers, bridges, internet, iso, X.25, ethernet, isdn or any other network technology check out Ciscos excellent Internetworking Technology Handbook.

Wednesday, August 29, 2007

Livescribe news!

Hey finally! Some news about Livescribe! They are doing the right thing and are postponing the release until everything works perfect! Way to go guys!

Livescribe's pen computer delayed to '08 (news.com)

And news.com even has another article about the existing digital pens! It mentions Anoto, Livescribe, Logitech and Leapfrog! (And iogear that uses a sensor clip so I wont talk any more about that pen since that technology really sucks.)

Is the digital pen mightier? (news.com)

It also gives some information about how well the technology are doing in the consumer market currently:

"It's a small part of our business," said Logitech spokeswoman Nancy Morrison.

Monday, August 27, 2007

Friday, August 24, 2007

Google mail on w810i

Do you want to access your gmail account from your Sony Ericsson w810i mobile phone integrated mail software? (Which has the advantage over the gmail java app and web app that you can add attachments and use your gmail account for picture blogging and uploading videos via email! Sorry to say the gmail java app is a lot faster though and has a better interface in general...)

Do you get a certificate error message?

What you need to do is install some missing CA certificates. Export them from Internet Explorer and then send them to the w810i over bluetooth (that's what I did, it is uspposed to work by usb as well).

The certificates are the:
equifax cert (valid to 22/8/2018 fingerprint: d232...)
thawte premium cert from zip (fingerprint 627f...)

They can be found in InternetExplorer-> InternetOptions-> Properties-> Content-> Certificates-> Trusted Root Certificates. Just select them and export them as a DER binary.

Then you should browse to your phone in your bluetooth explorer and select the obex file transfer service for your phone. Just drop the files on the obex file transfer icon for the phone and it should transfer them and place them in the correct place automatically. If you see the Memory Stick you have browsed a level to low on the phone.

For email configuration check out the gmail instructions! (I noticed that for the email address I use the @gmail.com extension but not for the username. For encryption I have selected SSL and not TLS for both incoming and outgoing server.)

All information retrieved from the following post! Thanks Andy!
http://www.esato.com/board/viewtopic.php?topic=101012&start=45

Gigapixel images

Google have released Google Earth 4.2 and supports Gigapxl images now! Check them out at once because it's a really cool feature!

Microsoft released Beta2 of the HDView project a couple of weeks ago. It's is a similar technology to the Gigapxl support in Google Earth. Read about it on the HDView blog. The technology is also related to the Microsoft projects Seadragon and Photosynth that I've blogged about earlier. Excellent demos are the Berlin Wall East Side (HDView), read more on the website Berlin Wall East Side and the totally awesome Harlem-13-gigapixels (HDView), read more on the website Harlem-13-gigapixels.

HTTP Made Really Easy by James marshall

HTTP Made Really Easy by James Marshall is an excellent HTTP primer for newbies.

Relationship between HTTP and MIME

The relationship between HTTP and MIME is defined in the HTTP/1.1 rfc 2616 section 19.4.

HTTP/1.1 uses many of the constructs defined for Internet
Mail (RFC 822 [9]) and the Multipurpose Internet Mail
Extensions (MIME [7]) to allow entities to be transmitted
in an open variety of representations and with extensible
mechanisms. However, RFC 2045 discusses mail, and HTTP has
a few features that are different from those described in
RFC 2045. These differences were carefully chosen to
optimize performance over binary connections, to allow
greater freedom in the use of new media types, to make
date comparisons easier, and to acknowledge the practice
of some early HTTP servers and clients.

This appendix describes specific areas where HTTP differs
from RFC 2045. Proxies and gateways to strict MIME
environments SHOULD be aware of these differences and
provide the appropriate conversions where necessary.
Proxies and gateways from MIME environments to HTTP also
need to be aware of the differences because some
conversions might be required.

MIME sample from Mike Grand

MIME (Mark Grand)

From: Nathaniel Borenstein 
To: Ned Freed
Subject: Sample message
MIME-Version: 1.0
Content-type: multipart/mixed;
boundary="simple boundary"

This is the preamble. It is to be ignored, though it is
a handy place for mail composers to include an
explanatory note to non-MIME compliant readers.
--simple boundary

This is implicitly typed plain ASCII text.
--simple boundary
Content-type: text/plain; charset=us-ascii

This is explicitly typed plain ASCII text. It DOES end
with a line break.
--simple boundary--
This is the epilogue. It is also to be ignored.

MIME sample from Wikipedia

MIME (Wikipedia)

MIME-version: 1.0
Content-type: multipart/mixed; boundary="frontier"

This is a multi-part message in MIME format.
--frontier
Content-type: text/plain

This is the body of the message.
--frontier
Content-type: application/octet-stream
Content-transfer-encoding: base64

PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
--frontier--

Wednesday, August 22, 2007

Fly Fusion Review in PC Magazine

The first Fly Fusion review has appeared and it's in PC Magazine. 4 out of 5!

Bottom Line
The Fly Fusion Pentop Computer is a convenient and affordable alternative to a laptop or tablet PC for anyone who takes notes on a regular basis.

Pros
Lighter than a laptop. Easy to install and set up. Comes with fun games and applications.

Cons
Doesn't recognize messy handwriting. Pen shuts off easily if you hold it too high. No Mac support.



I think people will realize soon that messy handwriting does not matter since you won't use that feature anyway with your notes. Other than experimenting with it for a while in the beginning. Mac support on the other side is something I hope they are thinking about. Specially nowadays with Apple and Mac riding the big wave.

Thursday, August 16, 2007

Stupid AI

The number one spot on the Top Ten for most stupid movie AI is now officially taken by Icarus in Sunshine. An ok SF movie where I don't think the change to slasher mode spoiled the film, but rather the inexcusable stupid AI on the ship. They would have been better of with only manual control...

Wikiscanner

This is brilliant!

Virgil Griffith at Caltech has downloaded the Wikipedia DB and matched the IP-logs with the registered companies/organizations!

Check it out at Wikiscanner!

Read more in Wired, See Who's Editing Wikipedia - Diebold, the CIA, a Campaign.

And you must check out the first entry for the Republican Party! Can you be more evil than replacing the entry for Harry Potter with a one line spoiler of the plot from Harry Potter and the Half-Blood Prince! Hahahaha.

Aerodynamic, Daft Punk

Tuesday, August 14, 2007

Livescribe marketing

And here I was complaining about the Livescribe marketing department...

http://sfbay.craigslist.org/eby/mar/393378097.html

That's the way to do it!

Mail me when you need a scribe in Sweden. I'll quit my job and go back to college :)

Monday, August 13, 2007

Livescribe desktop application

Well. The desktop application being demoed at D5 didn't look a lot like the one ("the penstation") shown in the sneak peak's at Livescribe's site.

And we haven't got any new information from Livescribe since D5 either. I'd say that the pr department, if any, at Livescribe should learn from Apple how to build hype. (Hint: Send me one and I'll blog about it every day the next couple of months :))



Anyway, the application demoed seems to have a nice Windows Media Player 11 look to it. Black and shiny! (Maybe that's called Vista look nowadays but I'm still running XP...) Page previews to the left and some buttons for stepping through the pages at the bottom. And some basic views, single page, two page and thumbnails.



When replaying audio a toolbar with the expected buttons pop up.

Fly Fusion



Leapfrog's Fly Fusion seems to have been released! And it's only $80 bucks! Now it has PC-connectivity as well! And downladable applications! And you can upload and share your notes! (On the internet I assume... Or...) Livescribe and Logitech better watch out!

From the Fly Fusion site:

This is Pentop Computing, the next generation of high-speed digital processing, developed to deliver high-speed homework help in the palm of your hand. With the FLY Fusion Pentop Computer, everything you write on FLY? Paper is automatically scanned and digitized. With the tap of your FLY Fusion Pentop Computer, you can interact with your notes, get instant feedback and step-by-step help, even play MP3s and games, all on paper!

Check it out:

Fly Fusion at Leapfrog
Fly Fusion at Amazon
Fly Fusion hilarious dj battle from Gizmodo

So what's it gonna be? Paper Replay or DJ battles?

I'll link to the reviews when they start popping up!

Tuesday, July 31, 2007

För gamla Anotomänniskor...


Kommer ni ihåg när vi stod och tittade i vårt nya kontor i hörnet Drottninggatan-Mästersamuelsgatan och såg på det fantastiska atriumet där vi skulle ha hängade trädgårdar och myshörnor? Idag läste jag att Oriflame skall flytta in med sitt huvudkontor där och dom publicerade ovanstående bild! Tänk vad tiden går.

Tuesday, July 10, 2007

Livescribe speech recognition?

Does the desktop software and web applications offer speech recognition? Is the audio notes searchable? I've got the impression of this from some sources on the web. But I haven't seen any info about this on the Livescribe site. Or does this quote,"Notes and audio can also be uploaded to a PC where they can be replayed, saved, searched or sent", from the platform description actually mean searchable audio. I've just assumed searchable notes since I know that handwriting recognition is fairly usable nowadays.

Monday, July 9, 2007

The Big Livescribe post

So what do we know about Livescribe and the smartpen they are to launch this fall?! I'll try to sum it up in this post!

As a background check out Anoto (pen and paper), Logitech io2 and the Fly!

Livescribe started as Anoto Inc., a U.S. subsidiary of Anoto, in 2006 but was sold to investors and named Livescribe early this year. The main person behind the company is of course Jim Marggraff of Leapfrog fame, where he created the LeapPad and Fly Pentop. He's hired a bunch of people that have earlier worked at Leapfrog and Palm among others, these guys know how to find and create a new market as well as how to build small fantastic electronic devices!

They are located in Oakland, check it out in Streetview!

The smartpen product consists of the actual pen, the paper applications, the desktop software and the web applications.


The pen has an OLED display big enough to be used as a display for applications like dictionarys but the actual resolution is unknown. It has two built-in microphones, a speaker and memory enough to hold 100h of audio. According to Gizmodo microphones are also in the headphones and this will help with sound separation when listening to our audio notes.

Paper applications are applications that can be run by just using the pen and the paper. Check out the demos on Livescribes homepage.


Paper Replay works by recording sound at the same time you are writing notes. Later when you want to listen to your audio notes just tap the writing in your notepad.


Paper Translator works by writing a word on the paper and the listen to the translation and see it on the display.


Beach blogger works by writing a blog entry in your notepad and then uploading it.

These paper applications are just a sample of what can be done. You will be able to manage and load new paper applications to your pen by using the desktop software to access the online store and community.

According to the demo you can post the blog directly from the notepad. The homepage also mentions that you will be able to send email directly from the notepad (but in the demo for Paper Replay notes are shared by using the desktop software to send an email with a link to the web community, penstation.com). So will the pen include a GPRS/3G part? I can't imagine that. Most probable are a bluetooth component that let's you do this through your phone. Or is it possible it will have WIFI?

It would be a real letdown if you had to dock with a PC before doing the above mentioned operations.

Talking about docking. This was not shown by Jim at D5. Neither is it shown in the demos. I assume some kind of Logitech like dock is used since you need to charge the pen as well. But if bluetooth (or WIFI!) is included it would of course be nice to optionally dock over it as well.


Ok, I just have to mention Jim's D5 demo once more here. Hopefully this was the last time Jim tried to refer to the dot paper as ordinary paper. People are always disappointed no matter how you present or explain it that the pen needs special paper. This will always be a burden for market acceptance. He says in the video that the paper will cost as much as ordinary paper, that will be interesting to see. Logitechs dot paper currently is at least 4 times as expensive as ordinary paper. But even worse is the problem of the paper not being available everywhere. You always have to carry some with you. I've found this being the biggest problem using my io2. I always end up with some notes on ordinary paper and this always makes me think that the whole concept is flawed. So my tip to Livescribe to succeed is to make the paper available for free at the universities. Put big stacks of notepads in the hallways!


Desktop software in online demo (left) compared to D5 demo (right).

The desktop software (that looks different in the online demos and in Jim's demo) are used to manage your notes on your pc (organize, search, share), manage settings for your pen, manage paper applications for your pen and access the web store.

The web applications obviously consists of an online store for paper applications. But an online community for sharing notes (UGC) is mentioned on the homepage and in the D5 demo Jim is talking about how all your notes are online and searchable. The online community also seems to be used in the Paper Replay demo to share notes by sending an link (to penstation.com) instead of an actual datafile.

(Interesting to note is that the receiver in the Paper Replay demo uses the same application, "PenStation", as the sender. So is it a web app that is used through the demo? That the application name is the same as the link address used in the demo may imply this. Or does the receiver have to download and install the app before accessing the sent notes?)

Four different tools will be released with the smartpen for users to create contenet and applications. Hopefully they will all be available for free.

User Generated Content (UGC) is the web community part.

Customer Authoring Tools (CAT) is a web based tool for creating simple applications like interactive books.

Content Development Kit (CDK) is a wizard driven development platform using penlets for building paper applications to load on the pen.

Software Development Kit (SDK) is targeted at professional developers and includes an eclipse based ide!

And finally some general thoughts about the Livescribe smartpen.

I noticed that different paper where used for the different paper applications in the online demos. I hope this was just an example and not how it will be implemented. Who will be able to carry around three notebooks to be able to take notes, blog and use a dictionary? I thought the main purpose of paper computing was to be able to express stuff like this through drawing. Like draw a square and write blog on the paper and it will act as a blog. Write translate to swedish and the word will be translated to swedish. Yes, I guess you get it by now...

The focus on making all your notes available everywhere that Jim mentions in the D5 video is what excites me most. It was always my wish when I worked at Anoto that we would release an application like that. It never happend but now I hope that Livescribe will do it!

Sources:
Livescribe (homepage)
Take Note: Computing Takes Up Pen, Again (The New York Times, registration needed)
Livescribe Smartpen Links Your Scribbles with Audio Notes (Gizmodo)
Livescribe Smartpen (D5, All Things Digital)

All images are copyright Livescribe except the one from D5 copyright AllThingsD.

Sunday, July 8, 2007

FLY Fusion Pentop Computer

Is this a competitor to Livescribes smartpen?

Leapfrog has announced it's second generation FLY pentop computer, the FLY Fusion, available fall 2007 for $80 . Now all your notes are recorded and you have the possibility to upload them to your PC. There is also an online store for buying and downloading new applications for the pen. Interesting.

Will we see Logitech launching a successor to the io2 digital pen (io3...) as well this fall?

Tech News June Edition

Image processing and maps caught my interest most last month.

Last month Microsoft presented some pretty interesting stuff! Check out Photosynth and Seadragon. It's the best tech demo so far this year. By leagues. You MUST check this one out. If you're not totally amazed you can hit me next time we meet. If you're not gonna run the demo at least do youself the favour of watching this video.

Google Maps added Streetview. It's also fantastic. What else did you think.

Everyscape is doing something similar but have added hyperlinks as well.

Tuesday, June 26, 2007

SMTP sample from Wikipedia

SMTP (Wikipedia)

S: 220 www.example.com ESMTP Postfix
C: HELO mydomain.com
S: 250 Hello mydomain.com
C: MAIL FROM:
S: 250 Ok
C: RCPT TO:
S: 250 Ok
C: DATA
S: 354 End data with .
C: Subject: test message
C: From: sender@mydomain.com
C: To: friend@example.com
C:
C: Hello,
C: This is a test.
C: Goodbye.
C: .
S: 250 Ok: queued as 12345
C: QUIT
S: 221 Bye

Email sample from rfc 2822

Internet Message Format (rfc 2822)

From: John Doe 
To: Mary Smith
Subject: Saying Hello
Date: Fri, 21 Nov 1997 09:55:06 -0600
Message-ID: <1234@local.machine.example>

This is a message just to say hello.
So, "Hello".

Monday, June 25, 2007

HTTP sample from Wikipedia

HTTP (Wikipedia)

Request
GET /index.html HTTP/1.1
Host: www.example.com

Response (followed by a blank line and text of the requested page)
HTTP/1.1 200 OK
Date: Mon, 23 May 2005 22:38:34 GMT
Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
Etag: "3f80f-1b6-3e1cb03b"
Accept-Ranges: bytes
Content-Length: 438
Connection: close
Content-Type: text/html; charset=UTF-8

Interesting RFC:s

The Tao of IETF: A Novice's Guide to the Internet Engineering task Force

Email
Email, SMTP and message formats (Wikipedia)

The Simple Mail Transfer Protocol
SMTP (Wikipedia)
SMTP (rfc 2821)

Internet Message Format
Internet Message Format (rfc 2822)

MIME
MIME (Wikipedia)
MIME Part One Format of Internet Message Bodies (rfc 2045)
MIME Part Two Media Types (rfc 2046)
MIME Part Three Message Header Extensions for Non-ASCII Text (rfc 2047)
Security Multiparts for MIME (rfc 1847)

S/MIME
S/MIME (Wikipedia)
S/MIME Version 3.1 (rfc 3851)

PKCS#7
PKCS#7 Version 1.5 (rfc 2315)

Cryptographic Message Syntax, CMS
CMS (Wikipedia)
CMS (rfc 3852)
CMS Algorithms (rfc 3370)
Compressed Data Content for CMS (rfc 3274)

Public Key Infrastructure, PKI
Public Key Infrastructure (X.509 v3) (rfc 3280)
Public Key Infrastructure Working Group (PKIX)
Peter Gutmann's X.509 Style Guide

TLS
TLS (Wikipedia)
TLS Version 1.1 (rfc 4346)

HTTP
HTTP (Wikipedia)
HTTP/1.1 (rfc 2616)

AS2
AS2 (Wikipedia)
AS2 (data interchange)
AS2 (rfc 4130)

MDN
Message Disposition Notification (rfc 3798)

OFTP
OFTP (Wikipedia)
OFTP 2.0 (data interchange)
OFTP 2.0 (rfc 5024)

List of RFC (Wikipedia)

Tuesday, June 19, 2007

netsh

Thanks to Scott Hanselman for the netsh tip. ipconfig sucks.

netsh (how-to)

netsh interface ip show config

netsh interface ip set address "Local Area Connection" dhcp

netsh interface ip set address "Local Area Connection" static ipaddr subnetmask gateway metric

netsh interface ip set address "Local Area Connection" static 192.168.0.10 255.255.255.0 192.168.0.1 1

Wednesday, June 13, 2007

Bjarne Stroustrup FAQ

Bjarne Stroustrup's FAQ is an interesting read.

Consumer development for Logitech io2 and Anoto pens in general

Is there anyone out there developing any consumer/end-user stuff for the io2 pen or Anoto pens in general? And documenting it on the internet? Blogs, sites or newsgroups?

The only source i've found (except the user forums at Logitech) are Scott Hanselman's posts at his blog and Coding4Fun.

Logitech io2 Pen - .NET Support
Blogging with the Logitech io2 Digital Pen

I've you know anyone else (privately) working with the io2 (or any other Anoto pen) add a comment please!

Monday, June 11, 2007

Harvest


Congratulations to Jens and his friends at Oxeye that won second place in the Swedish Game Awards 2007!

Audio Notebook


Thanks to DocBug I found an interesting link to the Audio Notebook system by Lisa Stifelman at the Media Lab. I had never heard about it and thought Livescribe's idea was completely original. Anyway I got inspired to do my own interpretation of this concept and I'll try to do some mockups in the near future do display here and hopefully some applications later on that are actually runnable together with my Logitech io2 pen. The concept is (obviously) do use the io2 for notes recording and then sync it with the built in mic (or webcam mic) on a pc and then present it in some fabulous application where speed and simplicity are the cornerstones. (And extendability to other devices so that I can just plug in the smartpen from Livescribe when it arrives!)

Friday, June 8, 2007

Tech News May edition

Alright! Quite a few interesting news items last month. Top of the list is of course the Steve Jobs and Bill Gates interview at the D5 conference, absolutely fascinating to listen to these guys! And since I'm an old Anoto guy the Livescribe presentation (also at D5) ranks of course second to that. Since Anoto are concentrating on forms processing nowadays (which is a good idea I think) and Logitech are doing absolutely nothing with the io2 product I guess it's up to Livescribe to finally take digital pens to the people! They seem to have an excellent product so I guess it's all up to marketing now... (but I do think that it would have been better with buttons on the pen to control playback instead of paper controls, the paper controls for pen properties and address books we experimented on at Anoto was always stupid). And then there were the presentation of Microsoft Surface. The interface for accessing digital data stored in devices takes it to another level than existing technologies like Perceptive Pixel. Check out the Popular Mechanics article as well. And since this is my first tech blog I must mention Microsoft Silverlight also even though it is old news now. Check out the blogs by Jim Hugunin and John Lam for all kinds of information, including the new DLR and stuff like IronPython! Silverlight will rule!

Tuesday, May 15, 2007

Perforce Essentials

If you are going to use Perforce. Read these articles first:
  1. Introducing Perforce
  2. Getting started with P4V
  3. Getting strted with P4Win
P4V review

P4V is definitely the client to prefer. The GUI manages to convey a lot more information without becoming cluttered like in P4Win.

Both the tree view and the right pane uses tabs to select view. In the tree view there is an easy to understand selection of depot or workspace view (and a dropdown for more filters). And in the right pane you can choose between file view (including a preview), history (drag and drop for diff), pending changelists, submitted changelists, branches, labels, clients(P4Win)/workspaces(P4V), users and jobs.

The file view and history view are exclusive for P4V and they make the user experience so much better than P4Win since you don't have to open dialogs all over the place!

Wednesday, May 9, 2007

Friday, May 4, 2007

Web

Found a site about web programming that seems quite good.

Web authoring and surfing, by Jukka Korpela

He's got lots of other stuff as well at his site.

Friday, April 27, 2007

GUI programming

I did a search on Google and found lots of uninspiring articles about GUI programming. But I also found one excellent article!

User Interface Design for Programmers

Of course it was written by Joel, i.e. JoelOnSoftware.

Thursday, April 5, 2007

Win32++

Win32++ is a simple alternative to MFC and WTL written by David Nash. It is based more on basic C++ features and less on macros and templates. I haven't tried it yet but plan to on my next small or medium size windows project.

He's also got it hosted at Codeproject as Win32++: A simple alternative to MFC.

Wednesday, April 4, 2007

Learn UNIX in 10 minutes

$ ls -l
drwxr-xr-x 4 cliff user 1024 Jun 18 09:40 WAITRON_EARNINGS
-rw-r--r-- 1 cliff user 767392 Jun 6 14:28 scanlib.tar.gz

Lush



Oops, got stuck in youtube after the previous post. Found this excellent Lush tune. Nowadays you can find Emma Anderson in the band Sing-Sing. Their tune Lover is actually quite good!

The Reid Brothers





The Reid brothers from The Jesus and the Mary Chain are back with their sister in Sister Vanilla! As you can see above they still rock but as always the original is hard to beat...

Improving on COUNTOF

This is an interesting example of how to improve on the default implementation of COUNTOF in a way that no mere mortals would have thought of.

Paint.NET

Got to check Paint.NET out as soon as possible. Seems like an excellent complement to Picasa.

Ivar Jacobson

"There are many different processes promoted within the software development industry. But are they really that different? If you look closely at their content, you find that there are more similarities than differences."

"Often, there are complaints when a team seems not to be following the defined process. However, these complaints miss the point. The point of software development is to develop good software, not to slavishly follow a predefined process."

Ivar Jacobson just started an interesting article series in Dr. Dobb's called Enough of Processes: Let's Do Practices that I can recommend. I can only assume that it will lead up to recommending his own EssUp!

HeapAgent

The other day I had severe problems locating a bug in a program I'm working with currently. It seemed obvious that it was some sort of memory error because of it's randomness. When I was stepping the code in the debugger sometimes everything worked alright and the next time it segfaulted. And sometimes it worked for a couple of runs and sometimes it crashed immediately. So I installed HeapAgent and found the problem in something like 10 seconds. It was a memory allocation that I thought was global but a 3rd party library deallocated the memory when called!

Wednesday, March 21, 2007

Psychics, Magic and Cryptology

Stumpled upon a couple of excellent blogs today thanks to GameLife!

Check out Table of Malcontents, "Wired's wonder closet of ephemera, spotlighting those highly creative misfits on the fringe of art and culture", and the posts Psychic Fraud, The Confession of james Haydrick and Million Dollar Challenge.

Table of Malcontents linked to the crypto blog Exhaustive Search, by Matt Blaze, and 27 B Stroke 6, "Your daily briefing on security, freedom and privacy in the wired world".

Table of Malcontents and 27 B Stroke 6 is hosted at Wired blogs.

And there is of course James Randi's site as well.

And yes, you are right if you think you recognized that publication number 27B/6 ...

Sunday, March 18, 2007

PKI

When programming crypto you'll sooner or later end up trying to figure out what X509 certificates are all about. Start reading the RFC 3280 Internet X.509 Public Key Infrastructure. And then read Peter Gutmann's excellent article X.509 Style Guide.

Friday, March 16, 2007

Silent Shout, The Knife


Too much programming and no rock'n'roll lately!

Crypto Libraries

I've been posting about OpenSSL earlier since I'm currently using it both for CMS stuff and TLS. And it works reasonable well.

I've started to look into other open/free alternatives as well though. Here is a list of the ones I've found so far:
  1. OpenSSL, homepage
  2. GnuTLS, homepage
  3. Network Security Services (Mozilla), homepage
  4. S/Mime Freeware Library (SFL), (DigitalNet, BAE Systems, for US gov), using Crypto++

I've also found a commercial product that Peter Gutmann is involved in:
CryptLib

Cryptography

Here some articles on cryptography in general:
  1. Introduction to Cryptography, written by Murdoch Mactaggart and hosted by IBM developerWorks
  2. Crypto Tutorial, written by Peter Gutmann and hosted at his homepage

And one more focused on public key:
  1. Introduction to Public Key Cryptography, hosted at Mozilla

And at last some lighthearted guides describing various PKI technologies from Carillon.CA!

SSL Basics

Here are articles on SSL/TLS:
  1. The Transport Layer Security 1.0 RFC 2246
  2. The Transport Layer Security 1.1 RFC 4346
  3. SSL: Foundation for Web Security, by William Stallings, hosted at Cicso
  4. Introduction to SSL, hosted at Mozilla

History of Agile

Here is an interesting article about the history behind iterative and evolutionary processes. It is written by Craig Larman and in it he gives examples of iterative processes being used as early as the sixties by NASA!

Jez Humble had the chance to see Craig Larman doing a keynote about the subject on Agile India 2006 and the presentation is available here!

The opposite of agile processes is of course the everlasting waterfall process. The origin of the waterfall process has mostly been cited as the paper Managing the Development of Large Software Systems by Dr Winston Royce. But in fact he describes this method as "risky and invites failure" and actually recommends to "do it twice", ie a simple iterative process!

One of the major reasons for the waterfall process to get such a tight grip on software development process during the seventies and eighties was the US Defense that in standards like DoD-Std-2167 forced a waterfall process. This was later changed to a recommendation of iterative development in Mil-Std-498, as described here. (498 was later replaced by IEEE 12207.)

According to Craig's article "In hindsight, he (the 2167 author) said he would have made a strong recommendation for IID rather than the waterfall model".

Wednesday, March 14, 2007

Xbox Media Center

Two weeks ago our DVD died and I finally got a reason to mod my old xbox. Been thinking about it for a couple of years now and visiting a friend some months ago demoing xbmc just made me wanna do it more! So I dropped it of at psxcare and got it back a week later with a sweet SmartXX LT OPX chip (with Evox M8 bios), a 160GB drive and some programs including an old version of xbmc installed. It set me back 1600SEK (ie 200$) but so far it is totally worth it! I updated xbmc to the latest release from GasGiver and now everything works perfectly! Watching picures and listening to music stored on our pc (shared on smb), and playing backups of course ripped to the internal harddrive.

So how to update xbmc? Well, I mainly followed the online manual. I had a 1.x version installed that booted on C:\evoxdash.xbe and used the xboxmediacenter.xml (which refered to the application folder C:\xbmc).
  1. So I uploaded the new xbmc to F:\Apps\xbmc2
  2. Dropped the included .xbe and .cfg on C:\ and renamed them to xbmc2.xbe/.cfg
  3. Changed the path in the xbmc2.cfg to F:\Apps\xbmc2\default.xbe
  4. Tested them by starting the xbmc2.xbe from my old media centers file manager
  5. When everything started OK I made a backup of the old evoxdash.xbe
  6. And then renamed my new xbmc2.xbe/.cfg to evoxdash.xbe/.cfg
  7. Now the xbox boots to my new media center (and the old installation is still there as a backup...)
Actually it boots to xbmc when pressing the eject button. When pressing the power button the original xbox dash is booted (C:\xboxdash.xbe). This is configurable on the SmartXX chip! (To boot to SmartXX OS just press first power then eject!)

Tuesday, March 13, 2007

OpenSSL

The best OpenSSL introduction and tutorial is the book Network Security with OpenSSL, by Pravir Chandra, Matt Messier, John Viega.

So far the best online documentation I've found is An Introduction to OpenSSL, written by Holt Sorenson and published at Security Focus.

And of course there is the online manual pages...

Update 20070315
Found another article focusing on using SSL/TLS. An Introduction to OpenSSL Programming, part 1 and part 2 by
Eric Rescorla hosted at Linux Journal.

Agile development processes

The Developer Bill of Rights
• You have the right to know what is needed, via clear requirements, with clear declarations of priority.
• You have the right to say how long each requirement will take you to implement, and to revise estimates given experience.
• You have the right to accept your responsibilities instead of having them assigned to you.
• You have the right to produce quality work at all times.
• You have the right to peace, fun, and productive and enjoyable work.

The Customer Bill of Rights
• You have the right to an overall plan, to know what can be accomplished, when, and at what cost.
• You have the right to see progress in a running system, proven to work by passing repeatable tests that you specify.
• You have the right to change your mind, to substitute functionality, and to change priorities.
• You have the right to be informed of schedule changes, in time to choose how to reduce scope to restore the original date. You can even cancel at any time and be left with a useful working system reflecting investment to date.


The quote above is from Robert C. Martin´s article The Process. I think it describes the purpose of agile processes in an excellent way!

There is quite a lot of material available online about agile development processes, but the best introduction I've read is still a book, Agile and Iterative Developmen: A Manager's Guide, by Craig Larman.

Here are some links to articles and repositories on the internet:
  1. Manifesto for Agile Software Development
  2. The New Methodology, by Martin Fowler and hosted at his site
  3. The declaration of interdependence for modern management (agile project management), by Alistair Cockburn, his site has lots of interesting articles.
  4. RUP resources at IBM, e.g. Top five RUP implementation process killers and RUP in the dialogue with Scrum
  5. RUP resources (and other) at Dunstan Thomas, e.g. More RUP Anti-Patterns
  6. Agile UP, by Scott W. Ambler at Ambysoft, lots of other articles as well
  7. The Process (a minimal UP call dX), by Robert C. Martin, hosted at Object Mentor

Wednesday, March 7, 2007

Goldeneye live-action, N64


Hahaha! Goldeneye rules! Thanks to zakiechan and joystiq for the tip!

Monday, March 5, 2007

Patently Absurd

Patently Absurd is a very interesting article about software patents written by James Gleick. It is a couple of years old but I haven't read it until now.

Squash That Fly, Fu Manchu

Sunday, March 4, 2007

Books you need to buy

If you haven't got them already, buy them. Books are still the best source to programming and development knowledge.

General

Software Fundamentals: Collected Papers, David L. Parnas
Code Complete, Steve McConnell 2004

Development Processes

Applying UML and Patterns, 3d edition
, Craig Larman 2004
Agile and Iterative Developmen: A Manager's Guide
, Craig Larman 2003
Agile Software Development, Principles, Patterns, and Practices, Robert C. Martin
The Pragmatic Programmer: From Journeyman to Master
, Andrew Hunt, David Thomas
Practices of an Agile Developer: Working in the real world, Venkat Subramaniam, Andy Hunt


Design Patterns
Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Refactoring
Refactoring: Improving the Design of Existing Code, Martin Fowler, Kent Beck, John Brant, William Opdyke, Don Roberts
Working Effectively with Legacy Code
, Michael Feathers

C++
The C++ Programming Language, Bjarne Stroustrup


COM
Essential COM, Don Box 1997
Inside Com (Microsoft Programming Series), Dale Rogerson 1997
ATL Internals (The Addison-Wesley Object Technology Series)
, Brent E. Rector, Chris Sells 1999
Programming Distributed Applications With Com & Microsoft Visual Basic 6.0, Ted Pattison

Windows

Programming Windows
, Charles Petzold 1998
Programming Windows With MFC, Jeff Prosise 1999

MFC
MFC Internals: Inside the Microsoft(c) Foundation Class Architecture
, George Shepherd 1996

Computer Security

Applied Cryptography: Protocols, Algorithms, and Source Code in C, Bruce Schneier 1995
Building Secure Software,
Gary McGraw 2001
Exploiting Software, Gary McGraw 2004
Software Security: Building Security In (Paperback), Gary McGraw 2006
Writing Secure Code, Michael Howard 2002
Secure Programming Cookbook for C and C++, Matt Messier, John Viega 2003

OpenSSL, SSL, TLS
Network Security with OpenSSL, Pravir Chandra, Matt Messier, John Viega 2002
SSL and TLS, Eric Rescorla 2000

Another pattern!

Martin Fowler is a smart guy that works as chief scientist at Thought Works.

He has written an article about a pattern called Dependency Injection (a.k.a Inversion of Control) that is really interesting. This pattern can be used to reduce coupling.

And another one about Continuous Integration. Since this is a practice and not a pattern or principle it nicely leads us into the upcoming posts about development processes!

Saturday, March 3, 2007

More about principles (SOLID)

Since the previous post only mentioned coupling and cohesion I thought that I'd make another post on the subject. Robert C. Martin who works for Object Mentor (their blog) has written a interesting series about principles and the following quote is from the Dependency Inversion article.


The definition of a bad design
Have you ever presented a software design, that you were especially proud of, for review by a peer? Did that peer say, in a whining derisive sneer, something like: “Why’d you do it that way?”. Certainly this has happened to me, and I have seen it happen to many other engineers too. Clearly the disagreeing engineers are not using the same criteria for defining what “bad design” is. The most common criterion that I have seen used is the TNTWIWHDI or “That’s not the way I would have done it” criterion. But there is one set of criteria that I think all engineers will agree with. A piece of software that fulfills its requirements and yet exhibits any or all of the following three traits has a bad design.
1. It is hard to change because every change affects too many other parts of the system. (Rigidity)
2. When you make a change, unexpected parts of the system break. (Fragility)
3. It is hard to reuse in another application because it cannot be disentangled from the current application. (Immobility)
Moreover, it would be difficult to demonstrate that a piece of software that exhibits none of those traits, i.e. it is flexible, robust, and reusable, and that also fulfills all its requirements, has a bad design. Thus, we can use these three traits as a way to unambiguously decide if a design is “good” or “bad”.

The Cause of "Bad Design"
What is it that makes a design rigid, fragile and immobile? It is the interdependence of the modules within that design.
A design is rigid if it cannot be easily changed. Such rigidity is due to the fact that a single change to heavily interdependent software begins a cascade of changes in dependent modules. When the extent of that cascade of change cannot be predicted by the designers or maintainers, the impact of the change cannot be estimated. This makes the cost of the change impossible to predict. Managers, faced with such unpredictability, become reluctant to authorize changes. Thus the design becomes officially rigid.
Fragility is the tendency of a program to break in many places when a single change is made. Often the new problems are in areas that have no conceptual relationship with the area that was changed. Such fragility greatly decreases the credibility of the design and maintenance organization. Users and managers are unable to predict the quality of their product. Simple changes to one part of the application lead to failures in other parts that appear to be completely unrelated. Fixing those problems leads to even more problems, and the maintenance process begins to resemble a dog chasing its tail.
A design is immobile when the desirable parts of the design are highly dependent upon other details that are not desired. Designers tasked with investigating the design to see if it can be reused in a different application may be impressed with how well the design would do in the new application. However if the design is highly interdependent, then those designers will also be daunted by the amount of work necessary to separate the desirable portion of the design from the other portions of the design that are undesirable.
In most cases, such designs are not reused because the cost of the separation is deemed to be higher than the cost of redevelopment of the design.

So how do we solve these problems? Well there following principles (SOLID) gives us some guidelines:

Single Resonsibilty principle (the same as cohesion)
There should never be more than one reason for a class to change.
If a class has more then one responsibility, then the responsibilities become coupled. Changes to one responsibility may impair or inhibit the class’ ability to meet the others. This kind of coupling leads to fragile designs that break in unexpected ways when changed.


Open-Closed Principle
Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.
When a single change to a program results in a cascade of changes to dependent modules, that program exhibits the undesirable attributes that we have come to associate with “bad” design. The program becomes fragile, rigid, unpredictable and unreusable. The openclosed principle attacks this in a very straightforward way. It says that you should design modules that never change. When requirements change, you extend the behavior of such modules by adding new code, not by changing old code that already works.

Liskov Substitution Principle
Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.

The importance of this principle becomes obvious when you consider the consequences of violating it. If there is a function which does not conform to the LSP, then that function uses a pointer or reference to a base class, but must know about all the derivatives of that base class. Such a function violates the Open-Closed principle because it must be modified whenever a new derivative of the base class is created.


Interface Segregation Principle
Clients should not be forced to depend upon interfaces that they do not use.

When clients are forced to depend upon interfaces that they don’t use, then those clients are subject to changes to those interfaces. This results in an inadvertent coupling between all the clients. Said another way, when a client depends upon a class that contains interfaces that the client does not use, but that other clients do use, then that client will be affected by the changes that those other clients force upon the class. We would like to avoid such couplings where possible, and so we want to separate the interfaces where possible.

Dependency Inversion Principle
A. High level modules should not depend upon low level modules. Both should depend upon abstractions.
B. Abstractions should not depend upon details. Details should depend upon abstractions.

The structure that results from rigorous use of OCP and Liskov can be generalized into a principle all by itself. I call it “The Dependency Inversion Principle” (DIP).

Consider the implications of high level modules that depend upon low level modules. It is the high level modules that contain the important policy decisions and business models of an application. It is these models that contain the identity of the application. Yet, when these modules depend upon the lower level modules, then changes to the lower level modules can have direct effects upon them; and can force them to change.
This predicament is absurd! It is the high level modules that ought to be forcing the low level modules to change. It is the high level modules that should take precedence over the lower level modules. High level modules simply should not depend upon low level modules in any way.

Most of these principles and some others covered in the article Design Principles and Design Patterns as well.

Object Mentors article archive is here and the ones related to object oriented design are here.

Update 090827!
The principles of OOD