Most recent posts: page 3 of 6
1 2 3 4 5 6
Browse the complete archive by category or month.
April 6, 2008
Windows Mobile del.icio.us plugin
If you're a del.icio.us power user and you use Windows Mobile, you've probably missed the del.icio.us plugin that's available in desktop browsers like IE and Firefox. Dale Lane took this problem as a challenge and coded a nice little Pocket IE plugin that adds a del.icio.us submittal form to the browser's menu.
This is not as trivial as I expected - it took hundreds and hundreds of lines of code just to get a new entry in the Internet Explorer's menu that gets me access to the web browser object as an IWebBrowser2. And (perhaps especially so for someone who has been getting a little lazy with Java and C#! ), some of it is a little intricate and complex.Still, once done I could use my access to the browser to launch my "post to del.icio.us" form and prefill it with the URL and page name of PIE's current page. From there, the form uses the public del.icio.us API to send all the info off to my del.icio.us list.
It's written in C++ and he's zipped up the full Visual Studio project. Based on the difficulty and lack of great documentation for doing something like this, this is actually a pretty solid find. If you want to make a PIE plugin, this would be a good place to start.
A del.icio.us plugin for Windows Mobile (or C++ is a pain)
Pocket IE del.icio.us plugin and source
Posted by Jason Striegel |
Apr 6, 2008 07:53 PM
Blogging, Mobile Phones, Windows |
Permalink
| Comments (0)
| TrackBack
| Digg It
| Tag w/del.icio.us
April 5, 2008
HOWTO - Encode any string into a trigonometric function
Following Poromenos' nifty "Hello World!" function, Jan Krueger posted a great explanation for why it works along with a general method for producing a trigonometric function for _any_ string you like:
The magic behind Poromenos's function is the Fourier theorem: any "mostly" continuous and periodic function can be expressed as a sum of sines and cosines. I'm not going to bore you with the details; suffice to say that this also works for sampled functions, i.e. discrete series of values.There's an algorithm called DFT (Discrete Fourier Transform) that takes a series of N complex sample values and generates a corresponding Fourier series which encodes the various sine/cosine coefficients in N complex output values. In the special case of real input values (which is an extremely common case), you can effectively throw away half of these output values and take the remaining N real/imaginary components, do a bit of magic, and end up with coefficients for a function of the form:
f(t) = x0 + x1 cos(t) + x2 sin(t) + x3 cos(2t) + x4 sin(2t) + ...
Now, f(2 pi n/N) returns exactly the (n+1)th character of the original string.
Follow the link and you'll find a nifty C program that will produce a trigonometric function for any string you like.
HOWTO: encode a string into a complicated-looking trigonometric function
Posted by Jason Striegel |
Apr 5, 2008 06:49 PM
Math |
Permalink
| Comments (2)
| TrackBack
| Digg It
| Tag w/del.icio.us
April 4, 2008
Add keystroke user verification to Gnome
Nathan Harrington amended the GNOME Desktop Manager to include keystroke dynamics in the user verification process. When the user enters their username, the timings between key press events are measured and compared against a stored pattern. The theory is that there is a significant difference in timings for words typed by different individuals, so the way a username is entered provides a bit of extra "fingerprint" information that can be used to help authenticate a user.
I'm not sure how immediately useful this will be, since this particular example won't affect other login methods, such as an ssh session. Nevertheless, the idea is pretty cool and the code is all there for you to monkey around with.
Identify and verify users based on how they type [via slashdot]
Posted by Jason Striegel |
Apr 4, 2008 08:28 PM
Cryptography, Linux, Network Security |
Permalink
| Comments (0)
| TrackBack
| Digg It
| Tag w/del.icio.us
April 3, 2008
Practical fluid mechanics
Mick West from Cowboy Programming posted a two part series to his blog titled Practical Fluid Dynamics. Originally written for Game Developer Magazine, it covers a number of clever (and down-to-earth) techniques for simulating the movement of fluids in games and other software environments where real-time speed and visual authenticity matter most.
Special attention is paid to the simulation of particulate matter being carried around within a fluid volume—think effects like smoke, fire, and bubbles. I know I've seen a number of people using particle systems to do this sort of thing, but the methods Mick describes are all based on a grid model where you represent the system with a velocity field and a density field. Unlike a particle system, these fields represent a continuous fluid surface, allowing you to measure the density and velocity of the fluid at any location on the surface by interpolating the values from the nearest cells in the field array.
Posted by Jason Striegel |
Apr 3, 2008 07:23 PM
Gaming, Science, Software Engineering |
Permalink
| Comments (0)
| TrackBack
| Digg It
| Tag w/del.icio.us
April 2, 2008
Poromenos' hello world curve
Take a peek at this curve. If you take the rounded y value for every integer x from 0 through 11, you'll have yourself the ascii values for the string "Hello world!".
Well, I have a computer architecture exam in six hours and can't be bothered, so I figured I would realize a lifelong dream of mine, and make a program that prints "Hello world!" using curve fitting techniques. Enlisting the help of a good friend with numerous mathematical papers under his belt (ostensibly because he could not afford a tighter belt), MATLAB and a longing for procrastination, we embarked on this perilous journey. After many, many hours of fitting and discarding data, I can finally present to you my masterpiece.
It's 12 characters summed from 10 sines and cosines:
96.75 - 21.98*cos(x*1.118) + 13.29*sin(x*1.118) - 8.387*cos(2*x*1.118) + 17.94*sin(2*x*1.118) + 1.265*cos(3*x*1.118) + 16.58*sin(3*x*1.118) + 3.988*cos(4*x*1.118) + 8.463*sin(4*x*1.118) + 0.3583*cos(5*x*1.118) + 5.878*sin(5*x*1.118)
Poromenos' blog has the full Python script which evaluates and renders the famous words. Hands down, this is the best math to happen to me all day.
Printing "Hello world!" using curve fitting techniques
Posted by Jason Striegel |
Apr 2, 2008 09:15 PM
Math |
Permalink
| Comments (0)
| TrackBack
| Digg It
| Tag w/del.icio.us
April 1, 2008
USB CapsLocker and Sun keyboard simulation
Of all the April Fools pranks that I came across today, the Stealth USB CapsLocker was my favorite. The tiny AVR-driven USB device sends random caps lock keypresses to a PC via a USB interface. The user will see their caps lock light come on from time to time and think they've accidentally hit that most useless key on the keyboard.
Then they might see the Caps Lock light turn on by itself. Next is a sequence of reboots, bashing the keyboard on the desk, clicking through the Control Panel, possibly even replacing the keyboard. Unless they notice the tiny little device sitting in one of the USB ports on the back of their computer, nothing will help.
Equally as cruel, but slightly less technical, would be to switch someone's keyboard mapping to be like the old Sun keyboards (with the control and caps lock key positions swapped).
Be careful, though. There might be some cranky old unix guru who actually appreciates this configuration.
Stealth USB CapsLocker
EasyLogger - example AVR USB keyboard input device
Remap Caps Lock
Posted by Jason Striegel |
Apr 1, 2008 08:38 PM
Electronics, Linux |
Permalink
| Comments (1)
| TrackBack
| Digg It
| Tag w/del.icio.us
March 31, 2008
Robosapien has a coil gun
This custom coil gun for V2 robosapiens is outstanding. The video was posted to youtube over a year ago, but I just noticed it now, so let's all just sit back, enjoy, and pretend it's super fresh. Mmmkay?
It looks like Marcus based his coil gun on the bic-pen and disposable camera capacitor design that's been floating around. To that, he added a servo controlled auto-reload mechanism, complete with a LED "armed" indicator light. The final package, with laser sight, should terrorize pop cans and Teddy Ruxpin with a half-Joule of kinetic robo-chaos. The CoilOsapien site below has complete build instructions, in case you'd like to make your own.
Posted by Jason Striegel |
Mar 31, 2008 08:24 PM
Electronics |
Permalink
| Comments (0)
| TrackBack
| Digg It
| Tag w/del.icio.us
Faster Windows shutdown
It pretty typical for Windows to take a minute or two to shutdown. Most of this wait is due to the OS being extra patient, waiting for all of your applications to safely close. So when an application hangs during shutdown, you are forced to twiddle your thumbs until Windows decides that enough time has elapsed to force-kill the application.
It turns out that most of these arbitrary timeout periods are configurable through the registry and Dennis O'Reilly has posted some easy tweaks that will force Windows to shut down a lot faster.
The registry keys in question are "HKEY_CURRENT_USER/Control Panel/desktop/WaitToKillAppTimeout" and
"HKEY_CURRENT_USER/Control Panel/desktop/HungAppTimeout". The first controls the amount of time, in milliseconds, to wait before killing applications at shutdown, and the second is the amount of time to wait before killing a hung application.
There are some other registry adjustments that can be made which will automatically end running tasks and speed up killing hung services. Check the link below for the nitty gritty.
Shut Down Windows in an Instant
Posted by Jason Striegel |
Mar 31, 2008 08:10 PM
Windows |
Permalink
| Comments (0)
| TrackBack
| Digg It
| Tag w/del.icio.us
March 30, 2008
Assign USB drives to a folder
When a drive is mounted in Windows, it's normally assigned the next available drive letter, and using the disk management tool, you can force a disk to use a specific drive letter. It turns out you can even take this one step further and map a drive to a directory/folder path on another disk.
With this hack, you can have your external USB disk show up on "c:\usb", or anywhere else you like. Here's how:
- Open the disk management utility: Start->Run>diskmgmt.msc
- With the USB disk inserted, select the drive from the list.
- Right-click and select "Change Drive Letter and Paths"
- Click add and select the "Mount in the following empty NTFS folder"
- Browse to the folder you want the disk to mount beneath
Now when the disk is inserted, it will always show up mounted beneath the directory of your choosing.
This could come in handy if you have a folder that's filling up your disk. Normally if you move it to another disk, it affects a bunch of paths (especially if it's your program files or something on your desktop). With this tip, you could add another drive, move the contents of the directory to it, and then mount it beneath the former directory.
Assign USB Drives to a Folder [via Lifehacker]
Posted by Jason Striegel |
Mar 30, 2008 08:29 PM
Windows |
Permalink
| Comments (3)
| TrackBack
| Digg It
| Tag w/del.icio.us
March 29, 2008
Little drummer bot
Yellow Drum Machine is a tiny musical robot who's sole purpose in simulife is to motor around looking for suitable surfaces to drum a beat on.
Notice how the robot first plays on the object it finds (or is forced to find by the angry cameraman), plays a small beat, and records the beat it plays on it. Then this recorded beat is played again, and it starts to play on the object (an belt tracks and everything else it has),and also playing this sampled beat :)...
Why? Well.. I was sitting thinking what I should do for my next robot, what it should do.. Listening to music.. making a rythm with some robot-parts.. Thought; "Hey, I will make a robot that drives around and plays on stuff"
It's a pretty simple robot, which could make this a fun little weekend project. The main components are a Picaxe brain, an ultrasonic rangefinder for position sensing, and 6 gear motors for moving and drumming. It's funny how the simple addition of a speaker and drum kit transforms a simple obstacle avoider into a soul machine.
Posted by Jason Striegel |
Mar 29, 2008 08:22 PM
Education, Electronics, Music |
Permalink
| Comments (1)
| TrackBack
| Digg It
| Tag w/del.icio.us
March 28, 2008
CSS ad blocking for Firefox and Safari
Using Firefox's CSS-based chrome feature or Safari's advanced stylesheet preferences and a little clever CSS coding, you can disable most banner ads, making them invisible in your browser. This technique is considerably easier and more flexible than setting up a private DNS server or proxy to filter out images from ad-serving domains.
The trick is setting up a number of CSS rules that use "*=" substring selection on an element's properties. For instance, matching an IFRAME tag with the SRC parameter containing doubleclick would look like IFRAME[SRC*="doubleclick"] and matching an anchor tag with an HREF containing a url with "ads." in it would look like A:link[HREF*="ads."]. Giving the style "display: none ! important" to all of the possible combinations and adding the stylesheet to your browser's chrome effectively turns off the ad-serving web. The site below has a comprehensive CSS file that's been tailored to assassinate ads from most networks.
To be honest, I didn't realize that you could do this type of parameter matching and subselection in CSS, so it's worth looking at the CSS source for that alone. If you don't use it for this purpose, perhaps the technique will come in handy for something else you are working on.
Better Ad Blocking for Firefox, Mozilla, Camino, and Safari
Ad Blocking userContent.css
Posted by Jason Striegel |
Mar 28, 2008 09:20 PM
Firefox, Life, Lifehacker, Mac, Web |
Permalink
| Comments (0)
| TrackBack
| Digg It
| Tag w/del.icio.us
Design Coding: web standards rap
Next time you're trying to explain the importance of web standards in modern web design and development, just let this video do the talking for you.
The Poetic Prophet (AKA The SEO Rapper) is back with another marketing rap. This time he describes how web standards and proper design can affect the ranking and conversion of pages on your site.
I know this isn't the usual fare here, but I feel I'd be remiss in my duties if I didn't include it in our compendium of all things hack.
Posted by Jason Striegel |
Mar 28, 2008 08:00 PM
Music, Web, YouTube |
Permalink
| Comments (2)
| TrackBack
| Digg It
| Tag w/del.icio.us
March 27, 2008
Shredz64: Guitar Hero for C64
Toni Westbrook authored a new C64 game called Shredz64, bringing the best game of all time to the best computing platform of all time:
You can use the real Guitar Hero controller using the PSX64 PS2-to-DB9 converter which Toni also created. This takes the game controller input and maps it to the appropriate up, down, left, right and potentiometer lines for the Commodore.
Shredz64 uses the internal SID audio processor to play any of your favorite SID tunes. In addition to the built-in songs, you can import new SID files and even create new levels by editing note tracks (using the game controller, naturally).
I'm speechless.
Posted by Jason Striegel |
Mar 27, 2008 07:32 PM
Electronics, Gaming, Hardware, Music, Retro Computing, Retro Gaming |
Permalink
| Comments (4)
| TrackBack
| Digg It
| Tag w/del.icio.us
March 26, 2008
BATMAN: adhoc mesh routing
BATMAN (Better Approach To Mobile Ad-hoc Networking) is a routing protocol designed for multi-hop ad-hoc mesh networks. When you run BATMAN on routers in an ad-hoc network, the nodes in the network constantly send out little broadcast packets that are picked up and re-broadcast by nearby machines. Rather than have each node develop a formal map of the network, they can figure out the most reliable routes to other machines in the network based on the speed and reliability of broadcast packets that they receive from other nodes.
You can imagine a scenario where router A might be a single hop away from the uplink router U, but the connection is somewhat unreliable or drops packets from time to time. If router B has a solid connection to U and also has a reliable connection to A, it might be a faster and more reliable to route A's packets through B, even though it's ultimately 2 hops to U. The way BATMAN works, router A would receive U's broadcast packets more frequently from B (due to the U<->A packet loss), which would cause it to automatically send outbound data through the more reliable B connection.
It looks like this might be fun to experiment with a neighborhood network or even in a larger home with poor coverage. BATMAN is available in OpenWRT, so you could scatter a number of cheap routers throughout an area, give one of them a DSL uplink, and have solid wireless laptop connectivity wherever you want it.
If you really want to get crazy, you can run the routing protocol on your Linux laptops too, making them full mesh participants and expanding the coverage area wherever you go.
B.A.T.M.A.N.
Using BATMAN with OpenWRT
Posted by Jason Striegel |
Mar 26, 2008 09:53 PM
Linux, Wireless |
Permalink
| Comments (3)
| TrackBack
| Digg It
| Tag w/del.icio.us
March 25, 2008
iNoteBook: repurpose an old laptop
It seems like I end up updating my laptop every couple of years, but as cool as new hardware is, sometimes the challenge of finding a new use for the old machine is more interesting. The iNoteBook mod is a classic example, transforming a broken, screenless iBook into a stealth desktop machine.
What's your favorite laptop reuse project? If you've got one, please share in in the comments.
Posted by Jason Striegel |
Mar 25, 2008 07:56 PM
Hardware, Home, Mac, Retro Computing |
Permalink
| Comments (0)
| TrackBack
| Digg It
| Tag w/del.icio.us
March 24, 2008
Safari single window mode
Dennis Stevense posted a great little Terminal hack which enables single window browsing for the latest version of Safari. If you're running 3.1 you can type in the following command to make all "target='_blank'" links open in a new tab instead of in a new window:
defaults write com.apple.Safari TargetedClicksCreateTabs -bool true
This is one of my favorite Firefox features, so I'm pretty happy to see it available in Safari, even if it's under a hidden setting.
How to enable single window mode in Safari
Posted by Jason Striegel |
Mar 24, 2008 09:30 PM
Mac |
Permalink
| Comments (1)
| TrackBack
| Digg It
| Tag w/del.icio.us
March 23, 2008
Run Safari in Ubuntu
The Ubuntu Unleashed blog has a simple guide for getting Safari to run in Ubuntu. You basically install the Windows version of Safari under WINE, copy over a few core Windows fonts to your WINE install and it just works. You can even install the flash plugin.
I'm not positive that I wouldn't feel a little dirty running closed software on a Linux desktop, but considering Safari is still my preferred browser under OS X (much to the embarrassment of some of my coworkers), I can understand why this could be cool for a lot of folks.
Howto: Install Safari on Ubuntu with Flash
Posted by Jason Striegel |
Mar 23, 2008 08:43 PM
Linux, Linux Desktop, Ubuntu |
Permalink
| Comments (1)
| TrackBack
| Digg It
| Tag w/del.icio.us
March 22, 2008
Easter egg anemometer
Here's something fun to do with the kids tomorrow after they've finished emptying those big plastic eggs of jelly beans and malted milk balls.
The basic ingredients are plastic eggs, a small DC motor from an old CD player, and a cheapo multimeter. It's a quick afternoon project, and you'll be able to measure the wind's speed—a useful addition to your toolkit for backyard experiments.
Easter Egg Anemometer (Wind Speed Meter)
Posted by Jason Striegel |
Mar 22, 2008 08:42 PM
Education, Electronics, Science |
Permalink
| Comments (0)
| TrackBack
| Digg It
| Tag w/del.icio.us
March 21, 2008
Easiest cross-browser CSS min-height
Enforcing a minimum height for block elements in HTML is one of those few CSS tricks that you can't live without. There are still enough folks using IE6, unfortunately, and it doesn't support the min-height or min-width CSS parameters. This has caused the invention of a number of different hacks and browser-conditional style sheets to get the desired effect.
Many of the different methods work well, but after trying a number of them, I can say that the following method is the easiest to use and is compatable across all common versions of Firefox, Safari, and IE. Many of you are probably already using this method—it's not new—but for those of you who aren't, give it a try. It should save you a lot of headaches.
Cross Browser min-height
.foo {
min-height:100px;
height: auto !important;
height: 100px;
}
This works because all of the more recent browsers will understand and respect the min-height setting as well as the !important designation. So in the example above, the block will be given the min-height setting you specify, and the height:auto will take precendence over the height:100px, even though it appears earlier in the code. With content shorter than 100px, the min-height setting is observed, and with content that is longer, the block is sized to fit the content.
In the case of older versions of IE, neight the min-height parameter nor the !important designation are supported. Instead, the browser essentially sees a height:auto, immediately followed by a height:100px, and the latter takes precendence. Lucky for us, height parameter in older versions of IE function exactly like the min-height parameter. When content expands past the size of the element, it grows to accommodate it. When content is shorter, the specified height is respected.
I don't find myself using it as much, but this also works with min-width:
Cross Browser min-width
.bar {
min-width:100px;
width: auto !important;
width: 100px;
}
Posted by Jason Striegel |
Mar 21, 2008 08:31 PM
Web |
Permalink
| Comments (7)
| TrackBack
| Digg It
| Tag w/del.icio.us
March 20, 2008
Visualization API for Google Docs
This looks really useful. Google recently released an API for using Gadgets and visualizations inside of (or pulling from) the Google Docs spreadsheet system. Developers can create useful visualization models, like Gantt charts or geographic heat maps, and Docs users can use these tools inside their own documents.
The Gadgets in Docs framework also allows the visualizations to be plugged into iGoogle, so you can have an up-to-date visualization data on your iGoogle page that pulls from spreadsheet data in real-time. I found the timeline gadget, pictured above, to be particularly useful, but if you don't find the particular visualization you need, you can now go ahead and make it yourself.
Visualization API [via Google Blog]
Example Visualization Gadgets
Posted by Jason Striegel |
Mar 20, 2008 09:31 PM
Google, Life |
Permalink
| Comments (0)
| TrackBack
| Digg It
| Tag w/del.icio.us
Bloggers
Welcome to the Hacks Blog!
Categories
- Ajax
- Amazon
- AppleTV
- Astronomy
- BlackBerry
- Blogging
- Body
- Cars
- Cryptography
- Data
- Design
- Education
- Electronics
- Energy
- Events
- Excel
- Excerpts
- Firefox
- Flash
- Flickr
- Flying Things
- Food
- Gaming
- Gmail
- Google Earth
- Google Maps
- Government
- Greasemonkey
- Hacks Series
- Hackszine Podcast
- Halo
- Hardware
- Home
- Home Theater
- iPhone
- iPod
- IRC
- iTunes
- Java
- Kindle
- Knoppix
- Language
- LEGO
- Life
- Lifehacker
- Linux
- Linux Desktop
- Linux Multimedia
- Linux Server
- Mac
- Mapping
- Math
- Microsoft Office
- Mind
- Mind Performance
- Mobile Phones
- Music
- MySpace
- MySQL
- NetFlix
- Network Security
- olpc
- OpenOffice
- Outdoor
- Parenting
- PCs
- PDAs
- Perl
- Philosophy
- Photography
- PHP
- Pleo
- Podcast
- Podcasting
- Productivity
- PSP
- Retro Computing
- Retro Gaming
- Science
- Screencasts
- Shopping
- Skype
- Smart Home
- Software Engineering
- Sports
- SQL
- Statistics
- Survival
- TiVo
- Transportation
- Travel
- Ubuntu
- Video
- Virtualization
- Visual Studio
- VoIP
- Web
- Web Site Measurement
- Windows
- Windows Server
- Wireless
- Word
- World
- Xbox
- Yahoo!
- YouTube
Archives
Recent Posts
- Python pizza status
- Gmail notification cube
- Debian/Ubuntu users: update your SSL keys and certs
- drop.io - simple anonymous file sharing
- Cross browser session data with Javascript
- A VAX in your Linux box
- Reading EXIF data from images in Javascript
- Processing.js - visualization library for Javascript
- DIY multi-touch on OS X
- Radio controlled lawn mower
www.flickr.com
|





Recent comments