Hoogle is a Haskell API search engine, which allows you to search many standard Haskell libraries by either function name, or by approximate type signature. Example searches: map (a -> b) -> [a] -> [b] Ord a => [a] -> [a] Data.Map.insert Enter your own search at the top of the page. The Hoogle manual contains more details, including further details on search queries, how to install Hoogle as a command line application and how to integrate Hoogle with Firefox/Emacs/Vim etc. I am very interested in any feedback you may have.
Jailbreaking the NeoTVToday we’ll be jailbreaking the Netgear NTV300 set top box…with a TV remote. The Netgear NeoTV 300 Negear’s NeoTV set top boxes are designed to compete with the popular Roku, and can stream video from all the usual sources (Netflix, HuluPlus, Youtube, etc). The NTV300 is one of the least expensive NeoTV models, and while a GPL release is available, it contains only copies of the various standard open source utilities used by the NTV300. Inside the NTV300 we find a Mediatek ARM SoC, a 128MB NAND flash chip and 256MB of RAM: Inside the NTV300 The four pin header in the top right corner of the PCB is a serial port (115200 baud 8N1), and while it provides access to the U-Boot boot loader, it does not provide a root shell. Luckily, the firmware updates for the NTV300 aren’t encrypted. While the firmware update does not appear to contain a complete file system, most of the interesting stuff appears to be in the first SquashFS image. Printf’s reveal original function names How not to stat a file
My vi/vim cheatsheetCursor movement h - move leftj - move downk - move upl - move rightw - jump by start of words (punctuation considered words)W - jump by words (spaces separate words)e - jump to end of words (punctuation considered words)E - jump to end of words (no punctuation)b - jump backward by words (punctuation considered words)B - jump backward by words (no punctuation)0 - (zero) start of line^ - first non-blank character of line$ - end of lineG - Go To command (prefix with number - 5G goes to line 5) Note: Prefix a cursor movement command with a number to repeat it. For example, 4j moves down 4 lines. Insert Mode - Inserting/Appending text i - start insert mode at cursorI - insert at the beginning of the linea - append after the cursorA - append at the end of the lineo - open (append) blank line below current line (no need to press return)O - open blank line above current lineea - append at end of wordEsc - exit insert mode Editing Marking text (visual mode) Visual commands Cut and Paste Exiting
What every computer science major should knowPortfolio versus resume Having emerged from engineering and mathematics, computer science programs take a resume-based approach to hiring off their graduates. A resume says nothing of a programmer's ability. Every computer science major should build a portfolio. A portfolio could be as simple as a personal blog, with a post for each project or accomplishment. Contributions to open source should be linked and documented. A code portfolio allows employers to directly judge ability. GPAs and resumes do not. Professors should design course projects to impress on portfolios, and students, at the conclusion of each course, should take time to update them. Examples Technical communication Lone wolves in computer science are an endangered species. Modern computer scientists must practice persuasively and clearly communicating their ideas to non-programmers. Unfortunately, this is not something fixed with the addition of a single class (although a solid course in technical communication doesn't hurt). Java