2010 Mar 11, 3:33"The headers and captions on http://diveintohtml5.org/ use an open source font called "Essays 1743." The creator of that font was looking for a tutorial on HTML5, came across my site, and was
pleasantly surprised to see his own work on prominent display. He now wants to update his font to include stylistically appropriate Unicode arrows, which I will then use with my captions.
The internet is awesome. It's so wonderfully intertwingled."
html html5 mark-pilgrim font technical 2009 Feb 5, 7:31Excellent retro intro! Be sure to watch the other two high-five videos too.
humor video obama awesome high-five funnyordie 2008 Dec 30, 1:03"Introducing Make: television, Coming in January 2009: A new national series from MAKE magazine, Twin Cities Public Television, and American Public Television"
pbs tv make diy community hack via:boingboing 2008 Jul 7, 11:38Many sets of twins board a subway and act innocent forming a sort of mirror on the train.
humor prank video subway nyc performance-art via:boingboing 2008 Jan 13, 1:20This one goes out to Jon -- where ever he is (in Germany).
humor video funnyordie high-five 2007 Aug 6, 3:43Miladin told me about the Visual Studio compiler's promising option
Wp64 that finds 64bit portability issues when compiling
in 32bit. If, for instance, you cast from a
(long*)
to a
(long)
you get a W4 warning. However, the #defines are still set for 32bit builds. This means that other parts of
the code can make assumptions based on the #defines that are valid on 32bit but generate 64bit errors or warnings.
For instance, in winuser.h the public published Windows header file there's the following:
...
#ifdef _WIN64
...
WINUSERAPI
LONG_PTR
WINAPI
SetWindowLongPtrA(
__in HWND hWnd,
__in int nIndex,
__in LONG_PTR dwNewLong);
...
#else /* _WIN64 */
...
#define SetWindowLongPtrA SetWindowLongA
...
#endif /* _WIN64 */
...
In 64bit everything's normal but in 32bit SetWindowLongPtrA is #defined to SetWindowLongA which takes a LONG rather than a LONG_PTR. So take the following code snippet:
...
LONG_PTR inputValue = 0;
LONG_PTR error = SetWindowLongPtrA(hWnd, nIndex, inputValue);
...
This looks fine but generates warnings with the Wp64 flag.
In 64 bit, p is cast to (LONG_PTR) and that's great because we're actually calling SetWindowLongPtrA which takes a LONG_PTR. In 32 bit, p is cast to (LONG_PTR) which is then implicitly cast to (LONG)
because we're actually calling SetWindowLongA. LONG and LONG_PTR are the same size in 32bit which is fine but if you turn on the Wp64 flag there's a W4 warning because of the implicit cast from a
larger size to a smaller size if you were to compile for 64bit. So even though doing a 32bit or 64bit compile would have worked just fine, if you turn on the Wp64 flag for 32bit you'd get an error
here.
It looks like I'm the most recent in a
list of people to notice this issue. Well I
investigated this so... I'm blogging about it too!
wp64 technical 64bit compiler c++ visual-studio setwindowlongptra