|
title: Put the knife down and take a green herb, dude. |
descrip: One feller's views on the state of everyday computer science & its application (and now, OTHER STUFF) who isn't rich enough to shell out for www.myfreakinfirst-andlast-name.com Using 89% of the same design the blog had in 2001. |
||
|
x
MarkUpDown is the best Markdown editor for professionals on Windows 10. It includes two-pane live preview, in-app uploads to imgur for image hosting, and MultiMarkdown table support. Features you won't find anywhere else include...
You've wasted more than $15 of your time looking for a great Markdown editor. Stop looking. MarkUpDown is the app you're looking for. Learn more or head over to the 'Store now! |
|||
| Sunday, September 30, 2012 | |||
|
iCloud glitch offers users 25GB of storage space until 2050: In what appears to be an internal error with Apple's iCloud management system, a number of users are seeing their accounts credited with 25GB of storage space, with the next renewal date coming up 38 years from now. You know, I don't think I've included the Columbia, SC Maps fail in this list. "Hey guys, let's go see the #6 NCAA football team in the country smash Kentucky Saturday! Woohoo!" [30 hours later] "Why does this remind me of that scene in Bedazzled where Brendan Fraser is speaking Spanish?" Testing at Apple has turned to mush post-Jobs. It makes me wonder if Jobs' didn't spend a crudloads of time testing (and by "crudloads of time" I mean "was on top of a team of folks that spend crudloads of time testing"). I mean, we know he would get obsessed about things like the color of icons. If there wasn't a trickle down of that sort of precise review, there was a forced march. Whoever is running software dev isn't scared of whoever is doing the post-Jobs app review, and Apple's worse for it. My perception of what Jobs must have been doing reminds me a lot of Spolsky talking about Bill Gates. Here's a little from that post from Spolsky titled "My First BillG Review": June 30, 1992. Worth reading the rest (start to finish) in context. Let's just say the BillG reviews are missing at Apple right now. Labels: apple fail, Jobs, testing posted by ruffin at 9/30/2012 10:52:00 PM |
|||
| 0 comments | |||
| Saturday, September 29, 2012 | |||
|
NYT: iOS Maps another internet services blunder for Apple: The Times claims "numerous interviews" with former Apple employees "made it clear that Mr. Jobs and other executives rarely paid as much attention to Internet services as they did to the devices for which Apple is best known." I've been hinting a while here that software development really isn't Apple's strength. Look at the iMovie debacle for a good, end-user specific example. The newest iMovie isn't half as useful as its pre-rewrite predecessor, starting with the simple fact that Apple killed plugins. The Java VM went all over the place, adding Mac-specific stuff, then pulling it away, changing available look and feels, etc, without warning. The Final Cut Pro rewrite had a similar, but much more vocal, backlash too, enough that Apple refunded purchases and rereleased the old version, iirc. You can get away with this stuff when it's USB-only and you've killed serial ports on the iMac -- and nobody's really using your hardware anyhow except those predisposed to cope with changes like this. I guess that doesn't work so well with iPhones. Aside: How many people use iPhones? It didn't really hit me until the recent report that Apple is tracking 800,000 workers in China. Wow. They apparently added 300k since January of this year. That's a lot of iPhones being made in China. A lot. I realize without the savings almost inherent to the use of a Chinese factory, that many jobs don't exist, but can you imagine if they could move all of those jobs to the US? They could bring a third NFL franchise to the Bay area beside the campus in Cupertino. The biggest find from the NYT is that Apple doesn't understand testing. That's not a surprise, honestly, but it explains a lot. You'd've thought the Final Cut Pro issue would have been obvious if they had a good sized group of professionals doing beta testing. Apple is a hardware company. I keep seeing folks on the forums at rumor sites contesting that claim. They shouldn't. Apple makes software to sell their focus: hardware. The end. Of course, in retrospect, we now know Apple obviously did Maps wrong. Wild idea: They would have done better to hire/buy/whatever some great GIS iOS developers to rewrite the Google app first. They could and should even have used Google data for the app. I'm not sure how you make cash doing that, but instead of offering to disgruntled users what's already on the App Store a few weeks after the iPhone 5 comes out, know you've got a great back-up waiting on them. Heck, even push the code that reads directions from your Maps dev to these guys in a garage replacing the Google powered app.
It's as if Microsoft decided, when cornered by the EU, to do away with Internet Explorer by replacing it with a horribly hastily written, completely new browser. Instead, Apple needs to do what the EU required Microsoft to do (though for very different reasons): Preload the platform with map choices rather than a definitive app. Slowly grow a subset of folks' comfort level with yours, have those that chose to use Maps Beta laugh at the foibles rather than rant, and remove the Google app a year later when your license runs out (or, in the hypothetical above, release the "Apple-funded garage GIS development app" as part of iOS 6 too). The neat part: You weren't charged with anti-competitive practices, so you can remove the choice screen when you're ready. Anyhow, hindsight is 20/20, but anyone who has actually used Apple software for years isn't particularly surprised. Heck, very few companies get it right every time, and most of those don't range as widely as Microsoft, Google (hello, new Blogger interface; I'm looking at you), or Apple. You know, shoot, Evernote can't even get Skitch 2.0 right. Labels: apple, development posted by ruffin at 9/29/2012 08:22:00 AM |
|||
| 0 comments | |||
| Friday, September 28, 2012 | |||
|
Validate numbers in JavaScript - IsNumeric() - Stack Overflow: I think is worth sharing this set of 30 unit tests made to numerous function implementations, and also share the one that passes all my tests: Thanks again, SO. Labels: javascript posted by ruffin at 9/28/2012 09:36:00 AM |
|||
| 0 comments | |||
|
Mouse not quick enough in OS X? Here's a win: How to speed up mouse tracking in OS X - MacRumors Forums: defaults write -g com.apple.mouse.scaling 5.0 Actually works. I'm impressed. The default max is apparently 3 in OS X settings (with the slider, above, set to the far right). I'm using 8 on my Dell mouse, and it's too fast, if that gives you any idea of where to start testing, but YMMV by mouse. Note that setting the scroll with the bar, above, apparently overwrites the setting made in the terminal, which would cause you to run the statement again, log out, and then log back in to reset. Labels: os x, problem solved posted by ruffin at 9/28/2012 09:00:00 AM |
|||
| 0 comments | |||
| Wednesday, September 26, 2012 | |||
|
Surprisingly little about this on the web, at least from where I'm sitting. I want to create reusable panels in ExtJS, and the inherited code for the project I'm coding doesn't quite understand how it's done. Instead of extending ExtJS components, like the Panel, it creates generic object types that wrap around the components instead. So you have to run myObj.myPanel to get to Panels rather than just myCustomPanel. Weird. I have ExtJS in Action by Jesus "Jay" Garcia, which is pretty good, but his extension example skips past the simplest case for some reason and dives right in to a filled out example. And the extension example is a singleton. He doesn't really extend a type and instantiate several times until he's going 55 into plugin creation. Anyhow, here's some code. Just a half baby step past the trivial implementation, so that we can play around a little. PnlCustom = Ext.extend(Ext.Panel,
{
title: "Title",
html: "spam",
initComponent : function(){
PnlCustom.superclass.initComponent.call(this);
if (null == this.someVal) {
this.someVal = "NOTHING";
}
console.log("#" + this.someVal + "#");
}
});
Ext.onReady(function() {
var pnlCustom = new PnlCustom({
someVal: "3"
});
var pnlCustom2 = new PnlCustom({});
var pnlPlain = new Ext.Panel({
title: "TITLE",
items: [
pnlCustom,
pnlCustom2
],
renderTo: "uiHook"
});
//Ext.Msg.alert("test","test"); // compulsory test that Ext is set up correctly.
});
The only other thing you might want to consider is if you want to throw extra "procedural" code into initComponent or the constructor function. There's plenty on the web to help you with that, including some stuff on StackOverflow with one comment that refers to text from one Jay Garcia's books. For now, initComponent is fine.
Also remember that I was looking for an ExtJS 2.2 simplest case. There is some decent (not great, afaict) stuff on 3+. EDIT: Man, complicated. You can't use your typical Swing/Windows.Forms mental model when building ExtJS UI elements. The items collection can't be accessed inside of a definition of an extended object. Check out this thread (Jay's & Condor's answers are quite useful) to see how what you're apparently really doing is defining a prototype, not a class, per se. Labels: code, ExtJS, javascript posted by ruffin at 9/26/2012 11:55:00 AM |
|||
| 0 comments | |||
|
FOSS Patents: Upcoming Wisconsin trial in Apple-Google FRAND case to be held without a jury: I believe that FRAND issues are even less amenable to jury trials than the technical issues relating to patent infringement and validity. That's interesting -- have we (rhetorical; the answer is almost certainly yes) gotten to the point that we need specialists to hear specific types of cases? So far, I think the quote above just suggests that we need really smart folks to hear these cases, and judges are, on average, very smart. But do we need technology and patent specialist judges? Pre-vetted specialist jury pools? A very large part of me screams both are anti-American -- as in against the intent of the Constitution, which suggests in turn that the cases are what's wrong. If there's a problem without a solution, it's the problem that's bogus. If Joe and Jane Schmoe on the street can't understand what constitutes justice, should it really fall under the purview of our public courts? Would it really be so bad to either 1.) Have these guys sign some collective agreement that falls under a separate system of arbitration? 2.) Throw the whole patent mess out? So Samsung can make its own iPhone under 2.). Do we really care? (And I say that as an Apple stockholder.) There is a growingly apparent disconnect between our courts and their subject matter. posted by ruffin at 9/26/2012 09:34:00 AM |
|||
| 0 comments | |||
| Monday, September 24, 2012 | |||
|
A List Apart: Articles: Getting Out of Binding Situations in JavaScript: JavaScript is very dynamic and relies on “prototypal inheritance,” which is a significantly different paradigm than class-based inheritance. You've probably seen all this before, but this article in particular does a pretty nuanced job of explaining scoping with Javascript, and is from 2008. None of this should be a surprise, though it sometimes is. ;^) (I'm assigning event listeners in ExtJS as part of a GridPanel's original parameter object, but though it's working fine in one workflow, the listening function and/or the link to the event is being dropped completely in another. So it's time for a quick refresher to see if I can find out where the listener is going.) Labels: ExtJS, javascript posted by ruffin at 9/24/2012 01:03:00 PM |
|||
| 0 comments | |||
| Thursday, September 20, 2012 | |||
|
So my relative dislike of any mergetool that I've tried (list below) has me slowly coding my way to one of my own. I think it's a doable task, now that I've nearly got the [exceptionally simplistic] diff engine close to done. A good mergetool seems to be mostly about the UI, honestly. Can I tell what I'm doing, what's in the current file I'm about to check back in, and the source of each of those edits? Can I tell that I've handled each conflict? I've got a number of ideas of what's really needed -- saves of past unconflict sessions, quick summations of how much of each file (local, remote, base) you've put into the unconflicted file, the ability to look at the file's history beyond local/remote/base into other branches and farther back in history, etc -- and that's largely GUI driven. I might need a middleware tier for interfacing with git, but that's about it for the faceless code. The UI, on the other hand, is going to be a bear. Anyhow, doing this in Mono so that it's crossplatform is both exceptionally cool and horribly painful. Cool in that the faceless C# code really does work great no matter where I run it. Cool in that my code, all written in MonoDevelop on OS X, "just runs" when I opened it in Visual Studio 2010 for fun today. I'm inserting a screenshot, just because it's crazy cool how easily the Mac developed code opens in Microsoft-land. (Note that it's obviously not close to done yet; still just playing with the diff engine and learning how to do everything in Windows.Forms programmatically -- no RAD designers in MonoDevelop for Windows.Forms. Gtk#, sure. Windows.Forms, no.) The pain I've documented largely already. You'll notice no highlighting in that screenshot; just colored text. That's b/c highlighting doesn't work on Mono's Windows.Forms for Mac. Nor do ToolStrips. Nor does every menu accelerator. It's a mess. Just for fun, I'll include a Mac screenshot here... I don't have it handy, so I'll include the one from sourceforge for now. For some bizarre reason, their system added a horrible black border around the image to make it look like it's on an old TV. Go figure. Which means I'll eventually need to use MonoMac -- a bridge between Mono code and native UIs designed in XCode -- to finish up a quality unconflict for OS X. And since it appears so much of a good mergetool is UI, that means a lot of repeated logic. Oh well. For now, I'll just use the ugly lowest common denominator of Windows.Forms on OS X, then fork like mad when I get to a good stopping point. Final thought for now: Writing the diff engine is actually pretty neat. Makes you appreciate what mergetools and diff functions are really doing. You'll notice the "-1" out in front of some lines. That means those lines "didn't change", relatively speaking. That's the wrong way to do a diff. Initially I had way too much of a file-centric approach to diffs, and not diff-centric enough. Working on that. And to do it right, you have to make at least two passes through the code to work out when what's moved has changed order or not. mergetools I've tried and not really liked: WinMerge: No three-way merge. Leaves crappy files to clean up. Not updated in a long time, and the rewrite seems dead. p4merge: Great ideas, poor implementation. Love the icons, but I can't always see them. Also hard, with current highlight scheme, to see what I've inserted and what's an option for inserting. No hard confirm on saves. FileMerge: Two-way merge, poorly done, at least when SourceTree calls it. Works fine (aka, "reliable"), I guess, but featureless. vimdiff: Good, but though I love VIm in general, I'm newbie enough to merging files to want to to use a mouse and have more helpful UI cues than just highlighted colors over what amount to tiled xwindows. kdiff3: For some reason, I can't get this to integrate correctly. Using something as a mergetool should be easy. Few are. I don't think this is always saving when and where I think it's saving (same deal with WinMerge and p4merge at times), and often (likely b/c of a flaw in my script, I guess) isn't opening when it's called from cmd line or the git GUI I'm using. Also a little bit of a stodgy interface. Labels: git, mono, monomac, unconflict posted by ruffin at 9/20/2012 01:25:00 PM |
|||
| 0 comments | |||
|
Click here for decent coding practices when using ExtJS or Sencha Touch, in this case. But there are times when I want to use ownerCt. I've got a Toolbar on a TabPanel of GridPanels that needs to, surprise, access the Store of the active GridPanel to get some information. I need to instantiate the Toolbar before the TabPanel if I want to set it as its tbar, but if I can't use ownerCt to drill back up and over from the Toolbar's Button's event handler, then the Toolbar anachronistically needs a reference to its unofficial "parent" when it's created. Get it? So sure, there are unclean ways around this, and I'm about to pick one. But if I could use ownerCt, I would be in business already. Why not use ownerCt? Not just because it's "good advice", above, but because... toolbars in the current version [ExtJS 2.2 in this case] aren't implemented as containers. I believe this is planned in 3.0/sigh I love legacy codebases. Labels: ExtJS, javascript posted by ruffin at 9/20/2012 12:22:00 PM |
|||
| 0 comments | |||
|
Apple's new Maps in iOS 6 draw ire from users around the world: One AppleInsider reader noted that a search for "Columbia SC" returns the city of Santiago De Cali in the nation of Colombia in South America. Use cases: 1.) Somebody wants to locate all 50 US state capitals. Really? That didn't make it into Apple's test plans? Though the real question isn't, "Does it stink?" (of course; it's version 1) but "How quickly can they fix this?", that the testing was so spotty on an app that's being released to millions doesn't speak well for Apple's development process. I've often gotten the feeling that Apple's software development side is very small company-ish. This is one of the reasons. Great hardware and good software for showing off the hardware, but occasionally some really rough version 1.0s (remember OS X 10.0?) -- and, like with the new iMovie, some really monkey-on-a-string approaches to older versions. posted by ruffin at 9/20/2012 11:36:00 AM |
|||
| 0 comments | |||
| Wednesday, September 19, 2012 | |||
|
Time Warner would give up user interface control to an Apple cable box:
Well, duh. Who wouldn't want to cede the design headache for a cable box OS to someone else? And let's not pretend anyone's doing a bang up job right now. Have those interfaces changed much since the 1980s? Well, yes, but that's mostly to support DVRs. Often, it's still just an accordion of shows by channel. What surprises me is that DirecTV or Dish isn't all over this for some sort of exclusive. Want to outfox cable? Have a better interface. And since many more folks could theoretically all have DirecTV or Dish than any one cable service, it's a no-growth barred proposition for Apple too. So why isn't Apple pushing for DirecTV as a partner for Apple TV? One word: Cloud. AppleInsider's post doesn't quite put one and one together, but they're getting there here: Apple is said to have had discussions with major cable operators to let consumers use a branded set-top box to view both live television and Internet-based content. Apple is rumroed to have proposed an advanced cloud-based video recording service that some said would blur the line between live and on-demand content. (pretty bad when the rumor site can't spell "rumored") So the deal isn't just TV (duh). It's about zeroes and ones. Satellite providers don't have an interactive pipe into folks' homes. Cable companies do. Apple knows that interactive pipes are what drive computerized hardware sales. Satellite can essentially only drive conventional TV. Apple's after much more than your television. They want your movies (commercial and personal), your refrigerator, your toaster, your car when it's parked outside -- they want your centralized, almost always on "entertainment" center and a front-row seat not just providing content, but providing access to all content. Make sense? It's not about the TV. It's about the literal cable. Labels: apple, digitization, DTV, TV posted by ruffin at 9/19/2012 03:00:00 PM |
|||
| 0 comments | |||
|
Note to self: Installation – Sublime Package Control – a Sublime Text 2 Package Manager by wbond Should make setting up Sublime Text on a new box easier. Also, today seems to be the day that Blogger throws me out of the old blogging interface. Needless to say, I don't like it. I think I have to insert br tags myself now, and I have to open labels every time I want to enter them rather than nav to the open textbox. Stinks. Labels: noteToSelf, sublime text posted by ruffin at 9/19/2012 09:00:00 AM |
|||
| 0 comments | |||
| Tuesday, September 18, 2012 | |||
|
Using p4merge as Git mergetool on Mac OS X. — Gist: [merge] p4merge is pretty good. Labels: git, noteToSelf posted by ruffin at 9/18/2012 11:51:00 AM |
|||
| 0 comments | |||
|
There are a number of sites that describe the way these coordinate systems work in theory, but this single Powerpoint presentation combines the theory with the practical side better than any other single resource I've found on the topic: Navigating the Disaster There's a sustained conversation about using grid systems vs. decimal degrees (lat,lon points) for dealing with on-the-ground emergencies (grids apparently seriously reduced human error when finding points), and a thorough test case for grids during the Katrina disaster response. The worst part of the test? That the 9th Ward in New Orleans was, of course, cut in two by two UTM zones. Here are pictures from the ppt: ![]() UTM is apparently lots of little mini-projections so that we have equal area (?) blocks to slap onto a map that seem to keep their distance at scale. This causes some real issues where zones overlap, however, which receive more illustrative attention within the Powerpoint linked to, above. Here, apparently the pictured overlap was too much for the FEMA GIS Coordinator to handle, and they went from the Military Grid Reference System (MGRS) to decimal degrees instead. What should have been done with the overlap is below. Note the dark line cutting through what's ultimately hexagonal transitional tiles. In FEMA's defense, you admittedly might still have to occasionally figure out where 15 is in 16 and vice versa if someone's GPS reported they were still in one zone after stepping past that bold line. That's a task that, unfortunately, would take especially competent responders (FEMA office and everyone in the field). ![]() So New Orleans' 9th Ward was literally a worst-case scenario for the MGRS. Why, then, was using lat,lon potentially a very bad idea? The presentation here argues that the potential benefits for grid use (at least where there isn't overlap, or where overlap can be dealt with properly) appear immense. I'm going to include two more pictures, one showing grids vs. lat,lon "blunders" (red is over 150 meters, green under 15) and another picturing the difference. ![]() ![]() Those last two are taken from a publication from the Powerpoint's author: Terry, 1994, Photogrammetric Engineering & Remote Sensing, Vol 63, No. 4, Apr 1997, p.381 - 383. Now, again, the Powerpoint author doesn't relate those findings to using the grids in multizone areas like the 9th Ward of New Orleans. I imagine those numbers would change quite a bit. At least lat, lon is unambiguous -- there's no mental calculation when traversing arbitrarily placed bold lines (arbitrary in that the MGRS could have started a mile father east and spared at least New Orleans the trouble). (Aside: If Sweden can have its own UTM zone exception, it might be worth putting one in for New Orleans as well. But even so, it's hard to think that a little preventative education wouldn't've allowed grids to work well -- likely significantly better than lat,lon -- even in this worst case.) What's the connection to programming? I inherited code with a horrible, inaccurate, buggy UTM to MGRS translator, and I'm trying to make sure I'm educated enough to test the at least excellent looking new library our team's found to make sure it's a solid improvement. That link also has excellent descriptions of what's going on with MGRS and a walkthrough of his code. Labels: gis, javascript posted by ruffin at 9/18/2012 09:56:00 AM |
|||
| 0 comments | |||
| Monday, September 17, 2012 | |||
|
In prog: window.onload = function() {Labels: code, javascript, noteToSelf posted by ruffin at 9/17/2012 10:48:00 AM |
|||
| 0 comments | |||
| Sunday, September 16, 2012 | |||
|
FOSS Patents: If Google can cancel Acer's license, why should Apple have to grant one to Google?: Acer is a member of the Google-dominated "Open Handset Alliance" and was about to release a smartphone running an Android fork named Aliyun, which was created by Alibaba, a Chinese Google competitor, but Google essentially says: "you're with us or you're against us". You can be a member of the OHA and an official licensee of Android, or you want to distribute forks (derivative programs), in which case we'll throw you out of the OHA and cancel your official Android license. Google got its way. It's strange, but endlessly fascinating, how corporations configure themselves around Free and open source licensing. Some places use GPL'd software on their server, but argue that's not distribution, so they're not under any obligation to release the source (I've forgotten how the argument goes, but I've worked for people who claim it). Others, like that bizzarre kickup around MySQL, have strange forks of code into Free and non-Free codebases. Did MySQL really never incorporate anything submitted by the community? Or there's the dual licensed stuff, which really isn't a huge deal unless you're doing it retroactively, like Mozilla, where, iirc, some stuff had to be rewritten before the new licensing was done. And here, it's not the code so much as the access to the coders. Support is worth as much as the code in some cases, especially when the code is especially complex, like I'm assuming Android is. Probably more important here is early access to Google's R&D, which Acer stands to lose if its most favored nation status is revoked. It's hard not to exploit Free software. Apple didn't always play nice with WebKit and Darwin (and still doesn't give back everything, I'm sure), and, in Darwin's case, wasn't under any compulsion to do so. With webkit, we're lucky to have an Apple that follows the LGPL as closely as they do, I'm afraid. Android, in my opinion, pretty obviously stole some of Java. GPL'd software has been discovered in a number of closed source products. Google's maneuvering of cultural affiliation, loosely de/coupled with and from open source software, is the obvious move. I wonder if RMS would (or, perhaps better asked, should) even be against what Google is doing. Should you get to see Free software as it's being developed, before it's released? Is Android the perfect example of how open source can power commerce? Labels: android, apple, free, Google, gpl, lgpl, licensing, linux, open posted by ruffin at 9/16/2012 02:11:00 PM |
|||
| 0 comments | |||
| Saturday, September 15, 2012 | |||
![]() That said, this is one of the smarter "downtimes" I've seen in a while. Why any service has long downtimes for scheduled maintenance, I don't know. There are good, smart, low-cost alternatives to planning to fail. Labels: nines, stackoverflow posted by ruffin at 9/15/2012 08:52:00 PM |
|||
| 0 comments | |||
| Wednesday, September 12, 2012 | |||
|
The colors are a cash grab. I love Easter Eggs as much as the next guy, but the pastels are just an excuse to buy. "I have this black iPod touch, but now I can be myself with blue!" Whatever. Not sure why I didn't feel the first iMacs were like that -- perhaps because that was the first colorful computer I remember. Now color's just the shine on a shiny bauble. The new iTunes' emphasis on albums is either an extension of skeuomorphism talk from yesterday or it's a concession to music labels. Emphasizing albums might sell more albums, which means sell more b-rate tracks than you're currently selling. The iPod touch is insanely expensive. That you could spend within $100 of a Kindle Fire or iPad on a touch is insane. How much is the unlocked iPhone 5 going to be? The touch was a great buy when $180 at Black Friday got you the current model, but the current $200 version is long in the tooth. There's no longer a model that's an obvious great deal. Buy a real phone. The new touch isn't tempting. Wait, I take that back. The wrist strap would have potentially saved mine, which was dropped by a tiny hoodlum a few months back. That part is tempting. The nano, otoh, is pretty cool. Video is back. Until now, my old 5th gen nano was my favorite iPod precisely because of video and camera with a quick, tactile pause button (the last I will miss). Bluetooth is brilliant. And here, the colors at least have a history. Buying the red seems a no brainer, though. Nike+ stinks in general, but at least without the dongle it'll honestly work with a nano now. It was nearly worthless for me until I got an iPod touch (I use Runkeeper on my phone now), as the nano dongle would come out or get wet and stop working. Running involves sweat and jarring motion, Apple. Earbuds. Who cares. Can you really run in in-the-ear headphones? I can't. They fall out. Cheapie behind the neck or nothing for me when I'm mobile. Giving me Ives' finest seems wasteful. I've already got at least 8 of their 1.2 billion (or whatever) tiny speakers in my desk drawer. Overall, especially with the iPhone, nothing interesting. Natural progression for a company looking to print more loot. Nothing revolutionary. Nothing that distinguishes these as new devices. Just more Apple keeping their lead (and the stock went up wildly too, last I'd looked). posted by ruffin at 9/12/2012 06:44:00 PM |
|||
| 0 comments | |||
| Tuesday, September 11, 2012 | |||
|
Coding Horror: Death to the Space Infidels!: The only programming project with no disagreement whatsoever on code formatting is the one you work on alone. Wherever there are two programmers working on the same project, there are invariably disagreements about how the code should be formatted. Sometimes serious disagreements. No truer words have ever been spoken. Or have they? (I see what I did there.) Labels: coding posted by ruffin at 9/11/2012 09:11:00 AM |
|||
| 0 comments | |||
|
unscriptable.com � JSLint puked on my javascript!: I’m not sure what specs you were looking at but ECMAScript defines the following syntax: JSLint apparently told the OP not to write code like... if (!already) You needed brackets, JSLink said. The OP thought Javascript's specs backed JSLint. (Aside: I know, it's apparently supposed to be JavaScript, but we've already talked about style rules.) The commenter claims ECMAScript says that's not the case. I think JSLint is useful but crazy. It's fun to see I'm not alone. Also fun to see searching for JSLint foibles turns up hits like this. Edit: Crockford really is a little crazy. Have you ever heard someone speak in so many absolutes that wasn't speaking religion? Wait a minute... Listen to the fetish on perfection. He actually believes it exists. He's Plato. He's stuck in the Renaissance. It's a dated, neurotic, naive worldview. Bizarre. "There has been no human evolution since the paleolithic age." Oh, okay. This claim drives me mad. Of course there has been. Are you kidding me? No, we don't have a different number of genes than we used to, if that's what he means. Sure, we could reproduce with a fairly old model of homo sapiens. No, we're not (yet) a new species. /sigh But that's not what evolution is. Rather, that's not all that evolution is. Here's how evolution works: An organism morphs randomly. It doesn't improve viability. There's no selective advantage. The mutation goes away, or, if zero sum (or only a small disadvantage), it randomly sticks around, hoping to tack itself to other traits that are useful. You know, like widow's peaks or nearsightedness. Or the mutation improves the organism's selective condition. Crockford might pick up Falk's Braindance (iirc). Mutations happen quickly, at times. There's some evidence our hands became feet in an evolutionary second. WHAM. More footed homo whatevers than not. Our brains? Braindance says we WHAM, got better radiators around our brains. They could be cooled, and they exploded in size and ability. Turns out that was the right way to go, at least in the short run. The brain didn't grow like mad because we needed to use tools. The randomness allowed us to use tools in a manner than provided a selective advantage for a time. It didn't make us hunters and gatherers. It enabled hunting and gathering. Get this -- the move to large brains works for programming too. The brain isn't a hunter and gatherer's brain. It's a mutation, ready to try on whatever comes its way. It's not (literally) directed. It's a passive selective system. There's no a priori reason why our mutations can't push us to be better at both -- hunting and gathering and programming. And moonwalking, both kinds. Can you imagine the real world Fred Flintstone equivalent having this discussion? "We have brains that allowed us to pick fruit from trees with more efficiency, not to be hunters and gatherers. We're not evolved to do this! Our feet were made to allow us to travel between trees quickly, not to run along the savannah! This is madness! We're not made to do this, Nemo!" The point is that if we forced Fred from the trees to the laptop-equipped cubicle instead of the savannah, he'd have done just as well as we're doing now. In a sense, Crockford's arguing against himself. We haven't changed a heck of a lot, and that means we're even less hunter and gatherer than he assumes. We're simply human. Admittedly, at that incensed point, I stopped listening and got Videobox to save it for me to watch offline later. /sigh Some smart people get caught up in their own press. Doesn't make them dumb. Makes them lazy. Never be positive. Never. (What? Oh yes, yes I am. Positive, not smart.) Labels: JSLint posted by ruffin at 9/11/2012 09:03:00 AM |
|||
| 0 comments | |||
| Friday, September 07, 2012 | |||
|
TweetStation has all the important features for a twitter client: Chicken noises Music Playback More importantly, it's a sample app for using MonoTouch and building for iOS, and has an MIT X11 license. It looks like MonoTouch for iOS is much more fully supported (and by that, I certainly include sample code) than Mono on the Mac in general, which, of course, makes sense. Mobile's where it's at right now, and there are more C# programmers trying to code iOS apps than Mac OS X apps, I'd imagine. Unfortunately, all I've got right now is an iPhone 3G, and though TweetStation supports iOS 4, it requires a 3GS. Not sure why. Still, free code that does cool stuff. That's good. posted by ruffin at 9/07/2012 10:31:00 AM |
|||
| 0 comments | |||
| Thursday, September 06, 2012 | |||
|
douglascrockford/JSLint: The place to express yourself in programming is in the quality of your ideas, and the efficiency of execution. The role of style is the same as in literature. A great writer doesn't express himself by putting the spaces before his commas instead of after, or by putting extra spaces inside his parentheses. A great writer will slavishly conform to some rules of style, and that in no way constrains his power to express himself creatively. See for example William Strunk's The Elements of Style [http://www.crockford.com/wrrrld/style.html]. E. E. Cummings might disagree. Look, I've written about JSLint's Crockford before. He's a little off his rocker. It's perhaps a productive neurosis, but it's something of a [non-clinical, popular connotation only] neurosis nonetheless. The important thing here is that there are not persistent rules of grammar, in writing or coding. Strunk & White didn't decide what was a best practice when they wrote of grammar and style. They tried to capture current convention. Language doesn't sit, sessile. It's morphs. Nobody says, "Verbing weirds language," until they do. Maybe he's against illegal opcodes too? Well, that'd be stupid. Why not do what the machine lets you, if there's an advantage? Let your peers decide if what you've written is better, and the circle of peers is lots larger than just Crockford. We don't all evolve lockstep with someone's plan. That's the whole point of a passive selective system. The worst part is the take it or leave it mentality JSLint has. Found an error? Sometimes, apparently, it just stops. I'm sure there's a setting somewhere, but a coworker has experienced it stopping on (var i; i < intLimit; i++). Stopping. No additional information. Change where the i is declared or I'm taking my toys and going home. If you don't fix each error, I'm not letting you know where all of them are, regardless of if the code works or not. That's wack, man. Bring back the poetry. Or at least the chance for all us primates slapping at keyboards to accidentally make some. EDIT: This, from the Criticism section of Elements of Style's entry on Wikipedia, has some interesting info... In criticizing The Elements of Style, Geoffrey Pullum, professor of linguistics at Edinburgh University, and co-author of The Cambridge Grammar of the English Language (2002), said that:The book's toxic mix of purism, atavism, and personal eccentricity is not underpinned by a proper grounding in English grammar. It is often so misguided that the authors appear not to notice their own egregious flouting of its own rules . . . It's sad. Several generations of college students learned their grammar from the uninformed bossiness of Strunk and White, and the result is a nation of educated people who know they feel vaguely anxious and insecure whenever they write however or than me or was or which, but can't tell you why.[10] Yeah, see, that's not the paradigm we're looking for. [sic] Labels: coding, communication, javascript, JSLint posted by ruffin at 9/06/2012 09:15:00 AM |
|||
| 0 comments | |||
| Tuesday, September 04, 2012 | |||
|
http://www.grammarmudge.cityslide.com/articles/article/426348/2805.htm Two or more adjectives before a noun that act as one idea (one-thought adjectives) are connected with a hyphen. Seems like a reasonable rule of thumb. posted by ruffin at 9/04/2012 08:42:00 AM |
|||
| 0 comments | |||
| Saturday, September 01, 2012 | |||
|
[Mono-bugs] [Bug 75996][Maj] New - menuitem event not triggered by Shortcut: [Mono-bugs] [Bug 75996][Maj] New - menuitem event not triggered by Shortcut/sigh I don't think that's been fixed. You know how, when you initially write an app, that you pretty go in and create a good 80% of what it's supposed to look like, it finally all works together, and for at least three minutes you feel like you can rest and call it done? That's where Mono's Windows.Forms support is. It's a great, horrendously impressive beta. Tons of stuff is there, and I can use straight C# to get it all to work, no silly workarounds. But then, that last 20% is obviously lacking. I can't get SelectionBackColor on RichTextBoxes. There's potentially no working Shortcuts on MenuItems. And the Mono IRC channels says Windows.Forms is dead. I guess if I was bright enough I could fix it myself, but I don't believe the place I need to fix (some drawing lib) is even written in C#. I'm really impressed the community got this far, but they didn't quite make the Mozilla turning point before the steam disappeared. It's a "write once, rewrite your GUI everywhere" situation. I guess that's okay, but it makes me wonder how much time to sink into writing the Windows.Forms app before I make sure I understand XCode's Interface Builder. In other news, Blogger is finally starting to get backwards compatibility right. The old-style BlogThis! bookmark now opens a window that, I think, is starting to get blockquote closer to right (still borked, though), and also expands from its old size to one large enough to see the whole window now. Saves me the trouble of editing the old bookmark's javascript, which I'm embarrassed to say I still haven't. I just resized the window each time I got the new interface. Labels: c#, mono, monomac, windows.forms, xcode posted by ruffin at 9/01/2012 09:53:00 AM |
|||
| 0 comments | |||
|
|
All posts can be accessed here: Just the last year o' posts: |
|||||||||||||||||||||
|
||||||||||||||||||||||
|
|
|
|