Archive for April 21, 2008
Free Britannica For Web Publishers
Encyclopædia Britannica (via Jason Kottke):
If you’re a Web publisher—a blogger, webmaster, or writer—you can get complimentary access to the complete Encyclopædia Britannica online.…and, if you like, an easy way to give your readers background on the topics you write about with links to complete Britannica articles.
Punch Through NAT with Port Map’s Port Forwarding
But NAT isn’t a brick wall, even though it’s often called a passive firewall. Most NAT-capable routers also include one of two standard methods of allowing software running on a computer with a private address to ask the router to open up a limited form of incoming access. Automatic port mapping protocols on the router open one or more ports—a kind of numbered slot that can be attached to an IP address—and hand the port number or numbers back to the requesting software. As long as the router itself has a publicly routable IP address that can be reached via the Internet, port-mapped applications can now be reached as well.
From Win32 to Cocoa
Peter Bright (via Buzz Andersen):
This approach—forced on it due to screwing up the Copland project—put Apple in a strong position. The new OS was free of many of the legacy constraints that the Copland approach would have caused; the clumsy old APIs were restricted to the Classic environment, and they didn’t form a part of the modern OS core. Although the new APIs were not entirely new—the Obj-C Cocoa API was based on the NeXTstep API, and Carbon was similar to the old Mac OS API—they were cleaned up, allowing bad decisions of the past to be fixed.
[…]
Win16 was never well-designed in the first place, and Win32 has replicated poor decisions in abundance. Win32 is a big API; it’s really huge, many thousands of API calls, and it’s totally inconsistent. It’s inconsistent in every way imaginable.
I imagine this is improved in .NET, though.
Update: Part II addresses .NET.
O Notation via Calculus
Jake Voytko shows how to derive big-O estimates of algorithmic complexity using integration. The normal CS way is to solve recurrences, which can be more precise than necessary and may be more difficult (or, at least, less familiar).