Brannock Device
Random stuff
Monday, January 13, 2014
Early 80's microcomputer magazine
https://archive.org/details/80-microcomputing-magazine-1983-03
Tuesday, December 17, 2013
VT-60 Wine Cooler not cooling.
Symptoms: Don't hear compressor. Hear a relay click every few minutes.
1. Unplug!
2. Take off back
3. On the left side, is the compressor.
4. On the left of compressor, remove plastic housing.
5. Overload protector is on top (under where housing was) with wires going to it. You should be able to pull the overload protector out (to the left). It has some guide pins, so don't pull up.
6. Open the overload protector. There is a brown disk inside that you may be able to flip over (if it looks scarred). Like this (see last few pictures on this site):
http://chadmunkres.blogspot.com/2010/10/refrigerator-compressor-repair.html
7. If that doesn't look damaged, try replacing the relay (although, you might not be hearing it click if it is damaged).
8. Reverse steps 4...1
Tuesday, December 03, 2013
Embedding an editor in C# Winforms project.
The "tricky" thing is that I am embedding the ACE HTML editor to do it.
Support syntax highlighting and themes. You can insert text and get text out via code.
Very simple. All BSD license (including the ACE editor).
Friday, February 22, 2013
Wednesday, January 09, 2013
It's just too difficult.
To difficult on Mac. Practially impossible on the PC.
Monday, December 31, 2012
SuperOrca
http://www.pantaray.com/msi_super_orca.html
I will probably give their installation tool a try next time I have to make an installer, too.
Tuesday, November 27, 2012
Thursday, September 13, 2012
http://www.saleae.com/logic
Boy, times have changed. The future is better than the past.
Tuesday, September 11, 2012
CSS Conditionals for IE?
http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/
Monday, August 13, 2012
CYGWIN - Kill all process with same name in Windows
Suppose you have several processes in Windows with same name and you want to kill them all from CYGWIN command line:
ps -W | grep WorkerProcess32.exe | grep -v grep | gawk '{print $1}' | xargs kill -f
Friday, July 06, 2012
Tuesday, May 22, 2012
Tuesday, May 08, 2012
Idea for new Question and Answer site.
http://stackoverflow.com/questions/243387/best-language-for-safety-critical-software
Thursday, April 26, 2012
Sequence Diagrams: Text is better.
I'd rather edit a text file, since I can type really fast. And, then I can source control my text files.
And I found just a tool to do it: Quick Sequence Diagram Editor
This is a nice tool. You edit text in one pane, and it dynamically creates the sequence diagram in the other. Or (although I haven't tried it), you can create the diagrams from command line using text file input.
Great stuff.
Sunday, April 22, 2012
15 Minutes of Fame
What would you say if you had 15 minutes with a guaranteed audience of 10,000 people listening to you? How about a 1,000,000 listeners?
Practical implementation:
TheListServe.com is an email lottery that gives you a chance to find out. Each day, a random user is selected from everyone on the mail list. That person gets a chance to send an email to everyone on the list.
The more people who sign up, the more listeners there are.
Why I think it's cool:
Just thinking about what I would say, and asking my friends what they would say has been very fun. Even if I never win, it's neat to ask people what they would say.
http://thenextweb.com/entrepreneur/2012/04/22/before-naming-your-startup-read-this/
Or really, any new business, for that matter.
Thursday, April 12, 2012
Notes on dynamically modifying CLR code.
How edit and continue is implemented:
http://blogs.msdn.com/b/jmstall/archive/2005/02/19/376666.aspx
Writing debugger in .NET: An entire debugger with edit-and continue. The link ABOVE explains how to make delta files used in this debugger.
http://www.microsoft.com/download/en/details.aspx?id=2282
Simpler debugger in .NET wrappers.
https://tripleemcoder.wordpress.com/2011/12/10/writing-an-automatic-debugger-in-15-minutes-yes-a-debugger/
Using debugger APIs (this is most interesting -- works on live code).
http://msdn.microsoft.com/en-us/library/bb384380.aspx
Reflector/Reflixil (on an assembly, not live):
http://www.codeproject.com/Articles/20565/Assembly-Manipulation-and-C-VB-NET-Code-Injection
Similar to above (REBEL.NET):
http://ntcore.com/files/netint_injection.htm
CLR Injection:
http://www.codeproject.com/Articles/37549/CLR-Injection-Runtime-Method-Replacer
KEYWORDS:
CLR INJECTION
JITCachedFunctoinSearchStarted
Edit and continue (debugger)
Thursday, March 15, 2012
Never retire!
Wednesday, February 29, 2012
AT&T "High Data Usage" on Leap Day
Just to let her know that the "unlimited" plan is not so "unlimited" after all.
As a programmer, I was just happy to know that the AT&T billing system handled leap day correctly :)
I guess my kids won't be watching movies on the iPhone in the car anymore.
The text of the mail:
High Data Usage Alert
|
Dear XXXX XXXX, Like other wireless companies, AT&T is taking steps to manage exploding demand for mobile data. We're responding on many levels, including investing billions in our wireless network this year and working to acquire more network capacity. As mentioned on a previous bill, we're also taking additional, more immediate steps to help address network congestion and improve reliability. One of these steps involves a change for some customers who use extraordinarily large amounts of data in a single billing period - about 12 times more data than the average smartphone user. For the current billing cycle, your data usage indicates you could be affected by this change. Here's how it works: Smartphone customers with unlimited data plans may experience reduced speeds once their usage in a billing cycle reaches the level that puts them among the top 5 percent of heaviest data users. These customers can still use unlimited data and their speeds will be restored with the start of the next billing cycle. We're writing because you are in the top 5 percent of heaviest data users for this billing cycle. Because we recognize that data usage can change from month to month, you will not see reduced speeds this billing cycle. Beginning with your next billing cycle, we'll send you a text message if you are approaching the top 5 percent of heaviest data users. We'll also send you a second text message if you cross into the top 5 percent of heaviest users, at which point you may see reduced speeds for the rest of the month. Customers have several ways to manage extremely high data usage. Wi-Fi offers great speeds and doesn't add to your wireless data usage. Consider using Wi-Fi when possible for applications that use the highest amounts of data, such as streaming video apps, remote web camera apps, large data-file transfers (like video) and some online gaming. You may also consider switching to a tiered data plan if speed is more important to you than having an unlimited data plan. Customers on tiered plans can pay for more data if they need it, and will not see reduced speeds. To estimate how much data different activities use, and find out more about Wi-Fi or tiered data plans, visit https://www.att.com/dataplans or call Customer Care at 800-331-0500. |
Thursday, February 23, 2012
Wednesday, February 01, 2012
Cool HTTP Techniques
Comet/Long Polling - Keep an HTTP connection to a server open, until it times out or server responds. This is to avoid polling.
Tuesday, January 31, 2012
More WP7 nonsense - Interop Unlock
But I did it and then I found out that there are several levels of unlock for the Windows Phone 7.
- Locked - This is how a phone comes. You can't upload any apps.
- Student Unlock - "Student" developers can sign up for this and are able to upload 3 development apps to their phone.
- Developer Unlock - This is what you pay $99 for at AppHub. It gives you up to 10 apps that you can upload to your phone. I have this.
- Interop Unlock - Upload as many apps as you want. But, even better, the apps that you do upload have can access all kinds of features that you can't access with lower accounts: The registry, etc.
So I don't have full control of my hardware.
Sunday, January 22, 2012
WP7 Development: Oh the humanity!
I wanted to port some of my iPhone apps to this new platform, mostly because I am sick of Apple's dev tools. I've always liked .NET, and thought this was my big chance.
But, oh, the WP7 tool chain is a giant pain in the butt -- basically can't get the toolchain to work for me.
1. On my main dev machine, the Visual Studio 2010 refuses to create WP7 projects. See: http://stackoverflow.com/questions/8903229/error-creating-silverlight-4-0-project-for-windows-phone
2. So, I installed everything (again) on a VM (which isn't as fun to develop on). After installing ZUNE and a bunch of other crap. Can finally compile. But emulator doesn't work on VM (I get a warning about the video card, ugh).
3. No bother, I will just deploy right to my new phone: No emulator needed. Well, to do that, it turns out you need to "developer unlock" your phone. Two ways to do that.
a. Join "App Hub" for $99/yr. No problem, but the dang site won't take my credit card. Lots of people have this problem, but Microsoft has no fix. Truly lame: http://forums.create.msdn.com/forums/p/78616/480263.aspx
b. Use this tool called ChevronWp7 to unlock the phone for development. This is supposed to cost $9, but Microsoft seems to have stopped them from selling any more. https://labs.chevronwp7.com
Maybe I will stick with Apple.
Tuesday, January 17, 2012
HTC Radar Review
My previous smartphone experience is with all versions of the iPhone (we've had them all). I got this radar phone on a new T-mobile plan.
Pros for the HTC:
- The phone is a good size and weight.
- Windows Phone 7 operating system is a pleasant surprise. Works well and is speedy on this phone. Simple to figure out.
- It doesn't come preloaded with a too much junk. There are a few T-mobile and HTC apps, but easy to remove them.
Cons for HTC:
- Rear (?) speaker is not very loud.
- Hard to hear when talking on phone.
- Somehow I got some tiny scratches on on screen in the first week. Never did that to iPhone.
- No digital compass (although it does have GPS receiver). So some GPS apps are not happy. I suspect this is a bummer for virtual reality apps, too.
Friday, November 04, 2011
Copy protection
"We believe that technological enforcement of copy protection is not in the best interest of our customers."
If only the world were run by engineers...
Wednesday, November 02, 2011
Looking for an iPhone app developer?
http://www.engineeringadventure.com/2011/11/why-not-to-make-iphone-app.html
On the other hand, if you still want to make one and are looking for an app developer, I can do it for you.
Monday, October 31, 2011
Saturday, October 22, 2011
25 Tablet Demos in One Day
The format of the event made for fast-paced learning -- and was a ton of fun: 25 companies gave 5 minute demos of their latest tablet apps (mostly iPad). The demos were in groups of 5 with Q&A between groups. Jason served as host, and kept things moving along nicely. Throw in a free breakfast, lunch, cocktails and an overload of networking and you have a great event.
The other thing that made the event neat: It was full of creative people -- not all suits and pointy-haired folks. Almost everyone was either a founder, a software developer, or a product designer. Not the usual "VC & Headhunter" crowd, as Jason put it. And it wasn't too big (less than 500 people).
My Favorite Demos
- Kiran Bellubbi, (955 Dreams) (Band of the Day, History of Jazz) - Kirin was entertaining and opinionated -- the true designer at the conference. This company has created a process for shipping hit applications repeatedly. Quote (paraphrase): "MVP doesn't mean you can ship crap".
- Peter Ciccotto & Dan Holly Wells (Condé Nast). Idea Flight app - Very cool app allows you to show a presentation on multiple iPads. The flight metaphor is fantastic (pilot, passenger, seatbelts, boarding passes). I even managed to download the app and connect to their presentation "live" during the demo.
- Osman Rashid (Kno) Kno - Textbooks on the iPad. Very nicely done, and already a top app. These guys are going to make a ton money.
- Trey Ratcliff, Stuck in Customs, Stuck on Earth app. Look for this one when it comes out. Fantastic photos.
- James Currier, DrChrono. Best B2B app. Great market/great product for helping doctors keep track of patients. How they get this complex of an app thru the AppleStore review process beats me... but more power to them.
I also enjoyed playing with the "haptic" android pad that was demoed. The iPad really needs that "vibration" feature...
There were a lot of great apps (the Golf training app, blue-ray movies synchronized with "extra" content on another iPad, and more) -- actually every single demo was very good.
Best in Show
The audience voted for best in show, and Condition One won...
- Danfung Dennis (Condition One), ConditionOne. The demo was Hollywood tight, and the product is going to be an amazing hit. Their first app is a virtual reality view into real combat video from Libya.
My Takeaways
- On the iPad, incredible design wins. iPad owners won't buy junk that you throw into the store.
- MVP doesn't mean you can ship crap.
- The app store is still very tough for B2B, but take advantage of that as a barrier-to-entry for your competitors.
Special Thanks
Jason: Thanks for the free ticket. Funny you mentioned that developers never get to go anywhere because their boss is always too cheap -- it's so true in this case (I'm the boss of me ).
What a great learning experience!
Friday, July 29, 2011
Rules for working with me
- I prefer to work fast, minimize bullshit, get to the point.
- You will sometimes have bad news for me. I want it immediately. I can usually show you how to fix it. And I never blame the messenger.
- Bring pen and paper to every meeting with me. Pay attention to what I say; I'll try to speak with care. If I frequently must repeat instructions, or remind you of something I've already told you, you will not work with me again.
- If I've scheduled a weekly meeting with you, don't assume that this meeting is the only time to raise issues with me; Interrupt me for time critical issues.
- If you have a meeting with me at an assigned time, and I am in another meeting with my door closed, interrupt me. I stack meetings, and each meeting leads into the next.
- I like "micro-meetings". Get in quick, bring only the necessary parties to the table, make a decision, get out. Five minutes or less. Make these effective by knowing what decision needs to be made before you start, and presenting the decision criteria ahead of time to all participants.
- Stand during micro-meetings.
- I don't like email, particularly for discussing complex topics. If a decision needs to be made, do a micro-meeting. If a problem needs to be discussed, ask the person with the most depth to prepare something, an agenda, have a whiteboard, and work through it quickly.
- One exception to the above: I like "micro-updates": Quick emails confirming time critical commitments and mutual understanding. These are especially useful after we hold a meeting and I give you a set of directives: I always like to hear our agreed-upon commitments echoed back to me. I may not respond, but I will read it. Keep these emails short: Spare me the greetings, thank yous, regards.
- Be consistent in your communication. Use words consistently. Use email headers consistently. Strive to make your work immediately comprehensible.
- If you disagree with me, voice your differences. I welcome and invite dissent. If this makes you uncomfortable, feel free to prepare your thoughts after the meeting and then later return to make your case.
- Ego-driven debates annoy me. Check your ego at the door: I'm only interested in reaching the best, most elegant solution —I don't care if it's your idea or mine.
- Don't be afraid to ask questions if you're not clear. I have more patience for explaining and clarifying my position before you start than I do patience for fixing a wasteful, incorrect approach after the fact.
- Don't tell me something is in the process of being done without telling me when it will be done. I'm more interested in the time commitment than the fact that an effort exists.
- Always give me options, informed by an economic analysis where possible (if there are dollars involved, an analysis is mandatory), and then make your recommendation. Don't tell me there's a problem without offering a solution. Don't offer me multiple solutions without giving me your best and final recommendation.
- If you must prepare reports for me, review spreadsheets I've created. Copy the style and format.
- Don't sent me long documents. I like precision and concision. Say it on one page (or less).
I am going to Chile.
Thursday, July 07, 2011
How to talk to a lawyer.
Thursday, June 23, 2011
Wednesday, June 22, 2011
Monday, June 13, 2011
Whiley.org
Thursday, June 09, 2011
Tuesday, June 07, 2011
What web servers do *most* domains use?
Thursday, May 26, 2011
Wednesday, May 25, 2011
Building zombie.js on cygwin.
cp2.on("exit", function (code) {cp2._exited = trueif (errState) return// JORGE if (!code) return log.verbose(cp2.name || "", "success", cb) return log.verbose(cp2.name || "", "success", cb) log.error(buff2, cp2.name || "") cb(new Error( "Failed "+(cp2.name || "")+"\nexited with "+code))
function gunzTarPerm (tarball, tmp, dMode, fMode, uid, gid, cb) {if (!dMode) dMode = DMODEif (!fMode) fMode = FMODElog.silly([dMode.toString(8), fMode.toString(8)], "gunzTarPerm modes")//console.error(npm.config.get("gzipbin")+" --decompress --stdout "// +tarball+" | "+npm.config.get("tar")+" -mvxpf - --no-same-owner -C "// +tmp)console.error("JORGE");pipe( spawn( npm.config.get("gzipbin"), ["--decompress", "--stdout", tarball], process.env, false ), spawn( npm.config.get("tar"), ["-mvxpf", "-", "--no-same-owner", "-C", tmp] // JORGE --ignore-failed-read, process.env, false ), function (er) {// if we're not doing ownership management,// then we're done now.if (er) return log.er(cb,"JORGE Failed unpacking "+tarball)(er)if (npm.config.get("unsafe-perm")) {
Thursday, May 19, 2011
Wednesday, May 18, 2011
Monday, May 16, 2011
Friday, May 13, 2011
Wednesday, May 11, 2011
Quickbooks
---------------------------Could not initialize license properties---------------------------[Error 3371,StatusCode -11118] QuickBooks could not load the license data. This may be caused by missing or damaged files.For troubleshooting steps, note the error and type the following in a Web browser window:www.quickbooks.com/support/register.html---------------------------OK---------------------------
Saturday, May 07, 2011
Monday, May 02, 2011
Thursday, April 28, 2011
Some pain points for possible startups.
Friday, April 15, 2011
Wednesday, April 06, 2011
Wednesday, February 09, 2011
Monday, February 07, 2011
Friday, January 21, 2011
OpenSourced my DotClock Flash app
Source: https://bitbucket.org/jm/dotclock/src
License: http://Unlicense.org
Monday, December 20, 2010
Initial thoughts on Netflix Streaming
(1) Parental controls - The parental controls are really lame. Since my entire family uses one account on our TV, I don't want my small children to see content (or names of movies) that are greater than rated PG-13. This has 2 problems:
- I need to turn off parent controls when I want to view R-rated movies. But it takes HOURS for the switch in parent controls to take effect.
- Some movies are not rated (like old movies and documentaries). The netflix system can't separate old NR movies from the more ADULT content. So if you disable anything above rated R, you can't see a lot of valid content. And then, if you turn it off, you have to wait hours. Then turn it OFF afterwards, so you kids can't see bad content. Dumb.
(2) Usability - My main beef with the Silverlight plugin that displays movies is that it doesn't remember that I always watch in full screen. So after starting a movie, I have to manually do this.
(3) Selection - Not one single academy award winning movie is available in streaming. All the way back to 1930. Also Christmas classics would be handy this time of year, but they're not there (Rudolph, etc).
(4) Quality: Bad audio on a lot of movies. The video quality is not that great, except for the limited HD content.
Tuesday, November 09, 2010
Monday, November 01, 2010
How Outsiders View Domainers
Friday, October 29, 2010
Virtual Memory Exhausted by GCC on VPS
Thursday, October 28, 2010
Scraping Made Easy
Great stuff. This is going to be VERY useful.
Friday, September 10, 2010
Thursday, September 09, 2010
Impressive CMS for .NET
Monday, September 06, 2010
Just how biased is HackerNews?
I guess I am easy to fool, because I always felt HackerNews was unbiased. It's great when someone shatters your misconceptions. Thanks!
hello, i see you are coming from hacker news.
the article you clicked on was most certainly not submitted by nodejitsu.
news.ycombinator has a long history of squashing articles and submitters that aren't funded by y-comb.
most of this is done through their "silent" banning and censoring mechanisms, that leave people not even realizing they have been silenced.
i hope you enjoy this article, and remember that HN is extremely biased and that you should keep your horizons broad.
Sunday, September 05, 2010
6 Top Reasons Not To Save For Retirement
- The Big One - Earthquake in California ruins my life.
- The Singularity - AI takes over the world and kills everyone.
- Super Volcanos - Yosemite is due to blow.
- Peak Oil - This already happened. Will civilization collapse in my lifetime?
- Comet Impacts - Overdue. Also near-earth asteroids.
- Avian Flu - We got luck ylast time.
Thursday, August 19, 2010
jQuery .ready tips
http://encosia.com/2010/08/18/dont-let-jquerys-document-ready-slow-you-down/
Tuesday, July 20, 2010
How to listen to Pandora when blocked by DNS
208.85.40.20 pandora.com
208.85.40.20 www.pandora.com
208.85.40.37 autocomplete.pandora.com
216.239.122.34 audio-sjl-t1-2.pandora.com
208.85.41.11 audio-sjl-t1-1.pandora.com
208.85.41.36 audio-sjl-t2-2.pandora.com
208.85.44.11 audio-ash-t2-1.pandora.com
208.85.40.20 autocomplete.pandora.com
216.239.122.34 cont-sjl-2.pandora.com
NOTE: IP's may change over time, so you may want to ping them all from a machine that is not blocked, to make sure they are all correct.
Saturday, April 24, 2010
Mechanize (new version)
http://wwwsearch.sourceforge.net/mechanize/
(python)
Sunday, April 18, 2010
Wednesday, February 24, 2010
Installed MonoTouch -- .NET Development for iPhone
Oh, soooo sweet.
1) No more manual memory handling.
2) The MonoDevelop environment is very close to Visual Studio, so I got an app up and running in the simulator in just a few minutes.
3. Did I mention, no more manual memory handling?
4. Integrated debugger! And works with Interface builder (much easier to hook up outlets).
5. I've read that the smallest possible app is about 5MB :( Haven't checked, though, and the release notes claim this has been improved.
Really looking forward to this for native iPhone app developement.
I'm still a big fan of just using the native app as a container for HTML via WebViews. But, MonoTouch will definitely be part of my arsenal for quickly creating iPhone apps.
Proposed Constitutional Ammendments for the United States of America
- Each new law passed by Congress must be fewer than 500 words.
- For every new law passed, the Congress must remove one previously existing law.
Tuesday, February 23, 2010
Research into caching webview content.
It's not clear that the cache gets called on the WebView first load ?
http://www.icab.de/blog/2009/08/18/url-filtering-with-uiwebview-on-the-iphone/
Monday, February 22, 2010
Saturday, February 20, 2010
Wednesday, February 17, 2010
Dear Young Geek: I Am You in 30 years.
Back when I was 13, I knew no one like me. Folks in Ohio had seen nothing else like me. No one I knew had a home computer. I turned in my homework printed on a dot matrix printer. I was a new thing. People would visit our house and find me, the kid with the computer, remarkable. I don't think it occurred to anyone to call me a geek. Were there even geeks, then? I don't think the phrase computer nerd existed.
Kids, today, are like me, back then. The kids have interesting gadgets, and they learn to program at a young age. Older folks say that kids spend too much time in front of a screen. Today's youth plays cool computer games -- my games were black-and-white with giant pixels, but I thought they were cool. Way back then.
How Did I Get Here?
In 1979, I snuck-in to see the movie Alien. In the film, the shipboard computer, called Mother, blew my mind. That computer could display messages on a screen and seemed to have a personality. I knew right then that I had to make something like that. (I was too young to know about HAL).
A few months later, I convinced my dad to lend me $600 for a Radio Shack TRS-80 Model I black-and-white computer with 4K of memory. I was in heaven. The computer couldn't do much, but I learned BASIC from the manual that came with it. And I typed in programs from magazines like BYTE. And I saved those programs on a cassette tape. And I learned. And learned.
In other parts of the world, the seeds of new industries were being sown back then. In California, Steve Jobs and the Woz had started Apple computer three years before. I hadn't heard of Steve Jobs. If I had, I wouldn't have cared -- he was old. Bill Gates and his pals were working on the Microsoft Basic. Hadn't heard of them, either. The IBM "Personal Computer" would be coming in a couple more years. I was pretty sure I'd never be able to afford anything from IBM.
I kept programming, though. In junior high, I got a summer job at an architecture firm. I wrote software to estimate air-conditioning for buildings using an Apple II computer. In high school, I worked after school as a programmer writing some civil engineering software.
At university, I studied Electrical Engineering. They taught me FORTRAN which was ancient, already, on a VAX . The Computer Science department wouldn't even let engineering students audit the C class. The professor told me I probably wouldn't understand pointers -- I'd been writing assembly language for 5 years by then :)
Later came jobs as a C programmer. Then the object-oriented revolution: I was a C++ programmer. Windows! Visual Basic.
Everything really accelerated as the Internet replaced the dial up services in the mid 90's: HTML, JAVA, PHP, Ruby, Python, C#, Haskell, to name a few.
I worked at a bunch of high-tech start-ups, and even got to make some money doing what I love.
Now everybody is a Geek!
Looking back, I sure did a lot of programming over the last 30 years. I spent a lot of time glued to a computer monitor. I think I turned out okay.
Nowadays, I play Xbox360 and Wii games on my HDTVs. And I have a half dozen PC's and Macs around the house. I have a cool cell phone. My job is on the Internet. I work from home, in whatever country I'm living in. I Twitter, Facebook, Link-In, MySpace, and I Google. I don't do Chat Roulette, but I know what it is. I still program a computer every day.
I may be a little unusual. But I know many people, now, who share my interests.
Where Are We Headed?
Thirty years from now, all of today's new-fangled gadgets will sound as ancient as my late-70's TRS-80 Model I.
The pundits wonder what this new Internet generation will grow up to be like. Now, I have a 12 year old son, and I wonder what he will be like...
Will these kids have interpersonal, real-life skills? Will they be able to distinguish between the computer world and reality? Will they find the real world boring? Will they read books or know how to use a pencil? Will they have spent a huge chunk of their life in front of a computer monitor? What will all these computers do to their brains?
I have an answer, and it's based on my personal experience: These kids will be fine. The games won't turn them into morons. The Internet won't fry their brains. They will grow up to be regular people -- some of them may be engineers and scientists.
And with any luck, the geeky kids that are learning to program today will still be having a great time.
Saturday, February 13, 2010
Add to list of thing California would do if we didn't suck.
http://gigaom.com/2010/02/12/iceland-looks-to-create-information-haven/
Sunday, February 07, 2010
PERL: convert CSV file to hash
open (my $CSV, "< file.csv") || die "Couldn't open file.csv";
my $csv = Text::CSV->new ( { binary => 1 } ) # should set binary attribute.
or die "Cannot use CSV: ".Text::CSV->error_diag ();
# Assume first row contains column names.
$csv->column_names ($csv->getline ($DOMAINS));
while ( my $hr = $csv->getline_hr( $DOMAINS ) ) {
print $hr->{'Col1'} . "\n"; # 'Col1' is one of the column headers from first line of csv
}
Saturday, February 06, 2010
High Definition Security Cameras
The Ajna 720 HD camera is slick and sexy. Very crisp and clear pictures. Nice demo on the site: www.h2asystems.com
Jorge
Tuesday, February 02, 2010
3 Patches for Perl CPAN Module: Net::MySQL
I have another patch, for connecting to old mySQL versions, which is not included:
- BUG#53558: Affected rows length not cleared after new query.
- BUG#36646: When table has an index, a SELECT with a WHERE clause on indexed column fails.
- BUG#14755: Fixed from CPAN bug fixes. Last insert index not correct when > 65535
http://argw.com/MySQL.pm.txt
Monday, February 01, 2010
JS Tookits for iphone
Hybrid development today
- NimbleKit ($99) is a commercial framework for creating JS-based iPhone applications.
- QuickConnect (free) takes a similar approach, enabling you to get JS-based iPhone apps up and running very quickly.
- PhoneGap (free) is an open-source framework for creating JS-based iPhone apps for multiple mobile platforms (iPhone, Android, Blackberry and more) without needing to code separately for each platform.
Thursday, January 28, 2010
Small to big
User tracking without cookies.
I've wanted this several times, so here it is for future reference: http://joshduck.com/blog/2010/01/29/abusing-the-cache-tracking-users-without-cookies/
Wednesday, January 20, 2010
Custom UI Navigation Controller for UIWebView.
http://www.gotow.net/creative/wordpress/?p=16
Sunday, January 17, 2010
Tips for using UIWebView to host content on iPhone app.
Good tips: http://www.codingventures.com/2008/12/using-uiwebview-to-render-svg-files/
Friday, January 15, 2010
Cleanup your CSS.
http://github.com/geuis/helium-css
Monday, January 04, 2010
Nice alternative to Google Trends
Friday, December 18, 2009
Goldmine for Dropping Domains
DomainStryker provides statistics for dropping COM/NET/ORG domains on GoDaddy, SnapNames, and NameJet.
Why is this so good?
Because thousands of domains drop every day! Who has time to look at them all?
With DomainStryker you can instantly sort for names with high search traffic, high CPC, etc.
This is a great technique to quickly find the names you want to buy, bid on them, and then resell them for big profits!
DomainStryker has a subscription model: You pay monthly for access to COM, ORG and NET drop lists. But it's totally worth it -- you'll have access to domain information that other domainers just dream of.This huge advantage will help you win the best names.
Highly recommended. Try it for a month.
For a limited time only you can save up-to 50% on your monthly membership fees by using the unique discount code provided below:
AD1F30
This code is good until the end of this week. So hurry if you want to save some $$$ because this discount code will be expiring.
Wednesday, December 16, 2009
Best comment ever
-- "Tim", Comment seen on TechCrunch.com
Tuesday, December 15, 2009
How to make $10B the easy way
Here's why it doesn't work: http://news.ycombinator.com/item?id=992945
Important note to self about simulating posts.
See: http://www.perlhowto.com/encode_and_decode_url_strings
Monday, December 14, 2009
Sunday, December 13, 2009
Tuesday, December 01, 2009
Friday, November 20, 2009
Cool DB design tool
Wondering if there is someway to apply the changes that you make at design time to your production DB.
--Jorge.
Friday, November 13, 2009
Creating your own C# attributes.
PostSharp makes it easy to create your own custom C# attributes like:
[Log] // Adds logging to function.
public void myFunction()
{
}
Tuesday, November 10, 2009
haha
I'm somewhat reminded of the DOS era story of a voice recognition product
demo where someone in the audience yelled "FORMAT C:" and "YES"....
Thursday, November 05, 2009
Monday, November 02, 2009
Friday, October 30, 2009
Wednesday, October 28, 2009
Hilite.me
Nice simple app for generating HTML (pretty) source code from some pasted text. Supports many languages.
I used this to paste some code into an email, so that it retained some color syntax highlighting in the mail.
-- jorge.
Thursday, October 22, 2009
Question about Web Domains?
AskAboutDomains.com
It's part-WIKI, part-FORUM, and very addicting.
It's built on the latest community software: StackExchange
Check it out.
-- Jorge.
Wednesday, October 21, 2009
iPhone App Approval: Are you kidding me?
I don't make any money from Godaddy.
The app has been approved for a while, but I wanted to patch one little bug, so I submitted a patch.
... And waited two weeks. Apple's testers found a bug that was in the original approved app, and asked me to re-submit.
... And I waited three weeks. This is classic: Apple rejects my app again because they want to test the domain "buying" feature on Godaddy.
It's a website! Not even my app! Not even a new feature.
Please kill me.
Wednesday, September 23, 2009
Java is better than I last time I used it.
2) for( x : y) // Like .NET foreach keyword
3) Generics: hashmap
4) @annotations // Like .NET [attributes]
---
.NET still wins on:
1) Not so much boxing/unboxing.
Saturday, August 29, 2009
Sequence Diagram Creator.
Nice job!
Friday, August 07, 2009
You take your car to work... I'll take my board.
Monday, May 04, 2009
PrestaValve.com
It used to be in the top 5 and the content has not changed much.
The sitemap.xml seems ok, and google webmaster tools don't tell me much. Still gets a ton of type-in traffic, but I'd like to figure out this issue.
Friday, April 03, 2009
MasterPage.Master does not exist
The file '/MasterPage.master' does not exist.
Worked on this for hours and searched google like crazy.
My solution: Installed a missing dependency: "Microsoft ASP.NET 2.0 AJAX Extensions 1.0"
Sunday, March 15, 2009
Password on new account
Ostensibly, the password is hidden so that someone can't read over your shoulder at the time that you create the account.
Is this really that valuable? It just seems like security taken too far. If someone is watching, don't create an account in front of them. Is the added security worth the chance of mistyping our password and never being able to login?
I understand the hidden password when you're logging in, since that action happens more often.
Comments?
Monday, January 12, 2009
Sunday, January 11, 2009
Cheap plugs on Guitar Hero Drums
This happens a lot, because there are instructions on the net for fixing: http://www.ocforums.com/showthread.php?t=588417
Ugh.
Sunday, November 23, 2008
Using WGET for screen scraping HTML pages.
Ever want to get some content from a web page on a schedule? That's a pretty simple programming task, but sometimes the content is behind a password protected page. What do you do then?
Wouldn't it be nice to be able to do the above from a simple batch file, and then run the batch file using the Windows scheduler? This quick tutorial will show you how.
The following procedure will work on WINDOWS or UNIX (at least in concept). But, I'll be writing it from the point of a Windows user.
STEP 0: Plan
Figure out what you want to automate. In this blog, I'm going to show you how to login to GMAIL using your account info and get the first email in the list. This is not particularly useful (there are easier ways to get your email), but it shows the process.
STEP 1: Install WGET and PERL.
Install CYGWIN and select the WGET component (from the "Web" category) during the installation. Another good component we'll be using is the PERL language (from the "Interpreters" category), which is good at simple text processing of the WGET output.
Both of these tools are command line tools, which means this entire example will be runnable from a batch file.
The PERL module is optional.
STEP 2: Install HTTPFOX plugin.
Install FIREFOX and the HTTPFOX plugin. This plugin only works on Firefox. HTTPFOX lets you examine the streams of data going between firefox and the website -- kinda like a network analyzer, but all handled by the plugin instead of a network driver.
STEP 3: Record as session with HTTPFOX
For this step, it is a really good idea to make sure you only have one FIREFOX window open, and only one tab open. Close all the rest.
Start HTTPFOX (it's a small green icon in bottom right corner of your browser) and then navigate to the site: http://gmail.com (I assume you have an account there).
When you start HTTPFOX, it creates a window at the bottom of the screen. There is a START button for starting recording, and a STOP button for when you are done.
So start recording. Just as a not, HTTPFOX isn't recording what you type. It records all the HTTP traffic between your browser and the webserver.
Then, in the GMAIL web page, type in your username and password. Press SIGN IN.
You'll see a bunch of activity in the HTTPFOX window. This is each request being sent to the browser, for each HTML file, image file, javascript file, css file, or media files in the web page. Plus there can be additional traffic for AJAX HTTP requests.
Each request has a header, cookie, query string, post data, and content that you can see as you click on each one.
After the login is complete and you see your mail. Press the STOP button in HTTP fox.
STEP 4: Analyze the HTTPFOX data.
This is really the toughest step. You have to figure out what HTTP requests are important for the problem you are trying to solve. In our case, we're only interested in the HTML content (no images, scripts, etc)
In this case we're looking for the request where the password was sent to the server, and the main page returned. This is often a POST request, which sends data to browser, and returns a response. The post in this case, send your username and password over HTTPS. It is probably the second item in the list:
00:00:13.430 0.274 1428 533 POST 302 Redirect to: https://www.google.com/accounts/CheckCookie?continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3F&hl=en&service=mail<mpl=default&chtml=LoginDoneHtml https://www.google.com/accounts/ServiceLoginAuth?service=mail
If you click on that request, and then look through the tabs, you'll see a "POST Data" column.
There is a radio below that allows you to choose "RAW" format, which is really useful:
ltmpl=default<mplcache=2&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3F&service=mail&rm=false<mpl=default&hl=en<mpl=default&Email=YOURMAIL%40gmail.com&Passwd=PASSWORD&rmShown=1&signIn=Sign+in&asts=
The username and password are highlighted above. Since Google is using HTTPS for the login, no one on the internet between your browser and google can read it, though.
You'll want to keep that RAW POST DATA handy because we are going to copy it later.
There's another interesting tab, the cookie tab, which shows you all the cookies that were sent and returned with this request. That's important to know about, although the details aren't important. Generally any site that sends cookies, probably needs them to work properly, so we'll need to simulate the cookies when we automate with WGET.
STEP 5:
Learn about WGET and it's command line params. WGET does what your browser does, but in a command line. WGET only does one HTTP request at a time, so you may need to run it multiple times.
Here is a sample command line that will get a web page:
wget --keep-session-cookies --load-cookies=cookies.txt --save-cookies=cookies.txt -q --no-check-certificate -O - "https://www.google.com/accounts/ServiceLoginAuth?service=mail" --post-data="ltmpl=default<mplcache=2&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3F&service=mail&rm=false<mpl=default&hl=en<mpl=default&Email=YOURMAIL%40gmail.com&Passwd=PASSWORD&rmShown=1&signIn=Sign+in&asts="
A couple important notes:
1) The first three command parameters make sure all cookies are saved to a local file cookies.txt. This will be the repository for all cookies each request. Cookies are SAVED and WRITTEN to the file. Since the server sends the cookies to the browser (or WGET in this case), then if you run WGET a second time, you want the cookies to be sent back with that request. In other words, maintain a session.
2) The "-O -" option sends the received html to STDOUT. You can also specify a filename there, if you want to keep the HTML.
3) The URL is self explanatory. I copied this URL directly from the POST request in HTTPFOX.
4) The --post-data is copied from HTTPFOX, too. It's the RAW POST DATA that was discussed in the previous step. Pretty nifty eh? [NOTE: I modified the text above to hide my real password]
STEP 6: Write a batch file.
Simulate the interacnption with the website using WGET.
STEP 7: Parse the output from WGET.
If you look at the response, you won't see much. Google is actually throwing us a bit of a curve here. The google webserver just returns a web page that redirects you (via javascript location.replace) to another non-https page:
Some HTML...
location.replace("http://mail.google.com/mail/?auth\x3dDQAAAHwAAADmne2aBCW1j
C8CLoxi-cm6bOgBHKMF-wyh8A_RyKDLjHrbEPCnA53NjBOxPYYk-y6QXQJKeVGyzD8_g9JIDbTbZISyP
H74ub7JP3FiNVGxPrXKGj2V4o-iYOQ9o2RPdYCSOJyil8VApveTpUpBDZqRNtiuR1A-oLTLEnh4gikaW
A\x26gausr\x3ddejasurf%40gmail.com")
More HTML...
This is where PERL will shine: The easiest thing to do is to parse the HTML and get the new url, then WGET that url. The following perls script does it all:
TBD:
Step 8: Make a final batch file to run it all.
You can just run the above perl script like this from Windows Scheduler (or Unix cron job):
perl myscript.pl
Sample Code
If the above statement applies to you, here are some important things you should know about samples:
1) Public Sample code is indicative of the quality of your product.
2) Public sample code is indicative of the quality of your programmers.
3) Public sample code is not for interns or junior programmers.
4) Public sample code should lead your customer to making a great product.
Break these rules at your own risk.
Wednesday, October 29, 2008
Technology website
Saturday, October 18, 2008
HotNameList.com
Also, there is an RSS feed now: http://feeds.feedburner.com/HotNameList
Thanks for checking it out.
Saturday, September 13, 2008
HotNameList.com
Wednesday, March 19, 2008
Can a business plan fit on a post card?
Sunday, February 17, 2008
Saturday, February 16, 2008
We're moving
I'll use this blog for general blogging purposes.
Friday, February 09, 2007
Programmer's Almanac: Feb 10th, 2007
Today in 1902 is the birthday of physicist Walter Houser Brattain, co-inventor of the transistor. The transistor is the basic circuit of all digital computers. The invention of the first transistor garnered Brattain, William Shockley and John Bardeed the 1956 nobel prize.
In fact, an estimate of computer chip’s performance can be given by the number of transistors in it. Transistor count is related to Moore’s law, which says that the number of tranistors in the fastest microchips doubles every 24 months.
The first IBM PC CPU had about 29,000 transistors in its CPU. Today, a typical microprocessor used in a PC, such as an Intel Core duo, has about 290 million transistors
Also today in 1996 was the day that “Deep Blue”, a computer, beat the World chess champion for the first time. Gary Kasparov, arguably the best chess player of all time was beaten by a computer that consisted of approximately 480 million transistors. Deep Blues circuitry was highly optimized for playing chess, including hundreds of custom ASICs. Deep Blue was capable of calculating approximately 200,000,000 chess positions per second. Even with all that horsepower, the computer couldn’t win every game against the human champ.
Project Deep Blitz is a recent attempt to make a computer using off the shelf components that would be more competive than Deep Blue. There’s an interesing table in the link that shows the relationship between chess rating and calculated moves-per-second.
(c) 2007, Jorge Monasterio
Wednesday, January 31, 2007
Programmer's Almanac: Feb 1, 2007
One of Trithemius' crytpographic algorithms can be decoded with this line of perl (Trithemius didn't use ASCII, though):
s/([A-Z])/$c=(ord $1)-$i++; $i%=26; $c+=26 if $c<65;>
By today's standards, Trithemius's cryptography was very basic -- however decoding them has proven to be quite a challenge. The final book, Book III, was decoded in 1998 by Jim Reeds of AT&T Labs. It's an amazing read to see how Reeds did it -- he apparently didn't know Latin.
The technique called steganography, named after Trithemius' book, means hiding messages so that only the recipient knows there is a message. For example, messages can be encrypted in digital images, sound files, and even spam (maybe someone is sending me lots of messages).
Trithemius quote: Speak of things public to the public, but of things lofty and secret only to the loftiest and most private of your friends. Hay to the ox and sugar to the parrot."
- 1848
(c) 2007, Jorge Monasterio
Thursday, January 18, 2007
Programmer's Almanac: Jan 19th, 2007
The origins of the mouse go back to the 1960's -- the first public "mouse" demo was give by inventor Doug Englebert in 1968.
Since the invention of the mouse, many different input devices such as trackballs, 3D mice, and others have come and gone. There is even an mouse for people who cannot use their hands.
Also, today will be the death (and re-birthday), in 2038, of the timestamp used for file times in Unix and Windows. This timestamp is a 32-bit number that represents the number of seconds since January 1st, 1970. The start date is known as the Unix Epoch. The timestamp will rollover to zero on Jan 19th, 2038.
So, you can expect 2037 to be a busy year for programmer's who will be fixing Y2K-like problems on all the ancient software from the late 20th and early 21st century that depends on this number. Even if we are all running 64-bit hardware.
This site has an list of other "computer failure" dates related to timekeeping that you may want to put on your calendar.
(c) 2007, Jorge Monasterio
Tuesday, January 09, 2007
Programmer's Almanac: Jan 10th, 2007
Currently volumes 1 -3 are available. Knuth retired early to dedicate approximately 20 years to writing the first five volumes. He also has plans for volume 6 & 7, after the year 2015. Dr. Knuth offers $2.56 to the first person to report a particular error in his books. Why $2.56? It's a hexadecimal dollar.
Dr. Knuth quote: "Science is what we understand well enough to explain to a computer. Art is everything else we do. "
The online encyclopedia, Wikipedia, was started on this day in 2001. A Wiki is a web page that allows website visitors to edit and collaborate on a website.
The shortest, full-featured wiki program, according to the ShortestWikiContest, is this CGI by Casey West (222 characters of perl and shell):
#!/usr/bin/perl
use CGI':all';path_info=~/\w+/;$_=`grep -l $& *`.h1($&).escapeHTML$t=param(t)
||`dd<$&`;open F,">$&";print F$t;s/htt\S+|([A-Z]\w+){2,}/a{href,$&},$&amp;amp;/eg;
print header,pre"$_Some of the "short" wiki's at ShortestWikiContents have demos -- worth trying out.
(c) 2007, Jorge Monasterio
Friday, January 05, 2007
Thursday, January 04, 2007
Programmer's Almanac: Jan 5, 2007
From a practical standpoint, programmers can thank Kleene for inventing regular expressions in the 1950's. Regular expressions provide a powerful way of matching strings in computer programs.
Here is a regular expression that will parse any xml (the original source is much more readable):
[^<]+|<(!(--([^-]*-([^-][^-]*-)*->?)?|\[CDATA\[([^]]*]([^]]+])*]+([^]>][^]]*]([^]]+])*]+)*>)?|DOCTYPE([ \n\t\r]+([A-Za-z_:]|[^\x00-\x7F])([A-Za-z0-9_:.-]|[^\x00-\x7F])*([ \n\t\r]+(([A-Za-z_:]|[^\x00-\x7F])([A-Za-z0-9_:.-]|[^\x00-\x7F])*|"[^"]*"|'[^']*'))*([ \n\t\r]+)?(\[(<(!(--[^-]*-([^-][^-]*-)*->|[^-]([^]"'><]+|"[^"]*"|'[^']*')*>)|\?([A-Za-z_:]|[^\x00-\x7F])([A-Za-z0-9_:.-]|[^\x00-\x7F])*(\?>|[\n\r\t ][^?]*\?+([^>?][^?]*\?+)*>))|%([A-Za-z_:]|[^\x00-\x7F])([A-Za-z0-9_:.-]|[^\x00-\x7F])*;|[ \n\t\r]+)*]([ \n\t\r]+)?)?>?)?)?|\?(([A-Za-z_:]|[^\x00-\x7F])([A-Za-z0-9_:.-]|[^\x00-\x7F])*(\?>|[\n\r\t ][^?]*\?+([^>?][^?]*\?+)*>)?)?|/(([A-Za-z_:]|[^\x00-\x7F])([A-Za-z0-9_:.-]|[^\x00-\x7F])*([ \n\t\r]+)?>?)?|(([A-Za-z_:]|[^\x00-\x7F])([A-Za-z0-9_:.-]|[^\x00-\x7F])*([ \n\t\r]+([A-Za-z_:]|[^\x00-\x7F])([A-Za-z0-9_:.-]|[^\x00-\x7F])*([ \n\t\r]+)?=([ \n\t\r]+)?("[^<"]*"|'[^<']*'))*([ \n\t\r]+)?/?>?)?)
Also today, in 1984, Richard Stallman started the GNU project. He quit his job at MIT to found the Free Software Foundation. From Stallman's efforts we now have (among other things) the gcc compiler, the GPL license, and a free version of Unix utilities running on the Linux kernel.
Stallman quote: "If programmers deserve to be rewarded for creating innovative programs, by the same token they deserve to be punished if they restrict the use of these programs. "
(c) 2007, Jorge Monasterio
Wednesday, January 03, 2007
Programmer's Almanac: Jan 4, 2007
A few facts about the Spirit's software systems:
- The rovers utilize a radiation-hardened PowerPC chip with 128MB of RAM running at approximately 20 MIPS.
- The rovers run a commercial embedded operations system: vxWorks.
- Even NASA has bugs: All storage is in RAM and 256MB of flash. Due to a failure to manually clean up the memory based file system, the Spirit rover ran out of memory early in the mission. The problem was reproduced on earth and corrected.
And on this day in 1809, Frenchman Louis Braille, inventor of the Braille alphabet for the blind was born. Braille lost his sight at the age of 3 in an accident. The Braille alphabet he later invented uses a pattern of raised dots that a sight-impaired person can read by touch.
Braille technology has come a long way, though as there are now Braille printers, copiers, and translation software. Interestingly, although Braille is an "alternate" alphabet, software to do automatic translation can still have difficulties with mathematical symbols, mixed languages, and the special abbreviations that are common in Braille writing.
You can donate help a blind child read Braille.
(c) 2007, Jorge Monaterio
Monday, January 01, 2007
Programmer's Almanac: Jan 1, 2007
Today is the Birthday of the .COM top-level domain, born in 1985 on this date. The .NET, .ORG and 5 other TLD's were also born on this date.
The design of the DNS system has supported the incredible growth of the Internet since these humble beginnings.
To celebrate the 22nd anniversary of the first .COM domain, symbolics.com, here are some dotcom sites and facts:
1. A list of cool "long" domains, like: http://3.141592653589793238462643383279502884197169399375105820974944592.com/
2. It's hard to be sure, but it looks like sex.com is the most expensive domain name every sold (for which public information is available): $14,000,000 on January 19th, 2006.
3. Are all of the good domains taken? Apparentely about 50,000,000 .COM names are taken. Here is an analysis.
(c) 2006, Jorge Monaterio
Thursday, December 28, 2006
Programmer's Almanac: Dec 28th, 2006
In computer science, Von Neumann is best known for creating the computer architecture that bears his name. Today, every popular computer system is a type of Von Neumann machine: A processing unit with a memory storage for data AND programs -- instead of dedicated circuits for the programs. Indeed, almost every programming language (though not all) in use today is isomorphic with a Von Neumann machine.
Incidentally, Von Neumann is also credited with the invention of the "merge sort" algorithm, which sorts a list by recursively sorting each half of the list:
void mergesort(int lo, int hi)
{
if (loint m=(lo+hi)/2;
mergesort(lo, m);
mergesort(m+1, hi);
merge(lo, m, hi);
}
}
Von Neumann quote: "It would appear that we have reached the limits of what it is possible to achieve with computer technology, although one should be careful with such statements, as they tend to sound pretty silly in 5 years." (Said in 1949)
Happy Birthday today to Finnish software developer Linus Torvalds (b. 1969), the original creator of the Linux operating system. Torvalds started work in 1991 and continues to be the Linux gatekeeper for the kernel, although thousands of developers have contributed to the project.
Linus quote: "With enough eyeballs, all bugs are shallow."
(c) 2006, Jorge Monasterio
Code snippet from: http://www.inf.fh-flensburg.de/lang/algorithmen/sortieren/merge/mergen.htm
Thursday, December 21, 2006
Wednesday, December 20, 2006
Programmer's Almanac: Dec 21st, 2006
On this day in 1878, Polish mathematician and logician Jan Łukasiewicz was born. In the 1920's he developed Polish notation, a way of writing mathematical expressions without parenthesis -- essentially the invention of the computer "stack." The stack was first implemented in hardware by Charles Hamblin (1963). And in HP calculators as "Reverse" Polish notation (RPN) in the late 60's without digital integrated circuits.
Also on this day in 1913, the New York World published the first crossword puzzle, by inventor Arthur Wynne.
At first glance, the crossword puzzle seems as if it would be difficult for a computer to solve, and would make a good Turing test -- because it requires knowledge about the meaning of words, puns, etc.
However, it seems a program called WebCrow, uses a Web search engine to attack the problem quite well -- it's even won a tournament for bilingual crossword puzzle solving (English/Italian). The WebCrow website has a neat flash demo that explains how it wins.
Thank goodness we don't have to worry about Crossword Captcha...
(c) 2006, Jorge Monasterio
HP Calculator Image from http://www.calculator.org/
Tuesday, December 19, 2006
Programmer's Almanac: Dec 20th, 2006
The NeXT OS was written in Objective-C, an object oriented language with roots in C and smalltalk. Objective C features dynamic typing, binding, and loading. The hello world program in Objective C can be written like this:
#includeAnd, today in 1917 was the birthday of David Bohm, American quantum physicist. After helping on the Manhattan Project, he was later branded a communist and moved to Brazil. Besides, physics, he had philosophical theories related to the human brain operating using wave interference, like a hologram.
#include
int main(int argc,char **argv)
{
id set = [Set new];
argv++;while (--argc) [set add:[String str:*argv++]];
[set do:{ :each | printf("hello, %s!\n",[each str]); }];
return 0;
}
Bohm Quote: “The ability to perceive or think differently is more important than the knowledge gained.”
(c) 2006, Jorge Monasterio