Monday, September 30, 2013

Micro-Frameworks for web app development

A developer colleague (M.A) sent me a brief list of micro-frameworks organized by language. His list is in the same vein as Microjs: Fantastic Micro-Frameworks and Micro-Libraries for Fun and Profit but quite a bit shorter.

For my own future reference, here's his list organized by server-side language
  • Java – Spark or perhaps something old fashion like Tomcat or Spring MVC in Tomcat
  • Groovy – Grails or Ratpack
  • Javascript – node.js or Meteor
  • Ruby – Sinatra
  • PHP – PHP
  • Python – Django or Bottle
For my own amusement (and perhaps my 14yo) I'd be inclined towards either Django (Python and packaged on DreamHost, my longtime hosting service) or Meteor (he likes).

PS. Clearly the world needs an AppleScript micro-framework. (ok, sick joke)

Saturday, September 28, 2013

The personal (corporate?) search tool I want

The modern publicly traded corporation is to data as water is to iron. Corrosive. There are reasons why this is getting worse - legal, regulatory, economic, political, technological. It's a long story, but trust me on the corrosion part.

Now if I kept all my data  on my personal dry dock workstation (we still have them) I could resist this, but there's power in sharing. So over time pieces of my extended (work) memory have fallen into abandoned repositories. Recently the number and complexity of these abandoned repositories ran past my cognitive limits.

In the long run part of the the solution is a corrosion resistant knowledge repository, but in the short run I need a way to track and search my archives and working repositories. I need an integrated personal search tool for pulling in data from a variety of server based search APIs. [4].

I haven't seen a tool like this and I can't be the only one who needs one; there's probably a (very) wee market here [1]. At least 10 people. Worldwide.

It's not too hard to imagine how it might work as a web app:

Search

There's a search box, a drop down with "All" or single target searches. Send (?Customized) strings to APIs of various repositories like SharePoint_1, SharePoint_2, Yammer, XWiki, Confluence, Rally, JIRA and so on. Get results back, convert to a normal form, display in a grid.

On the other hand, a web page of links to the various search engines would be better than nothing, and an embedded set of search forms would be quite good esp. with a little javascript to copy a string from one field to every search string.

So what I need is an environment that lets me start with a simple web page of links, then add embedded forms, and gradually build more capability over time. A kind of hobby project I can work on when I'm stalled on my real work and need something to that's plausibly work related.

Maybe Meteor ... 

[1] Before Google there were tools like this for the public net, but post-Google those have been relegated to (mostly) failed meta-search engine projects like dogpile, search.com, and, arguably, duck duck go. I haven't found tools that work inside corporate firewalls.

[4] My personal custom search engine fills a similar role for the Google-accessible net.

See also

Tuesday, September 24, 2013

App.net: Supporting account substreams with PourOver

[This one's for @duerig.]

The earliest mention of "channels" in my web archives dates to 1996 [1]. There's not much more than a word about them, but I remember what I was thinking. There were a lot of things I wanted to share [2], but I didn't enjoy harming unwilling bystanders. I wanted broadcast channels (now we call them streams) that could be carved from my global shares [3].

The problem, of course, is that my interests are probably not your interests. Emily is my most faithful reader, but she skips my tech shares. On app.net some like my diverse shares, but others favor dialog and social chat. Political opinions? Religion? Right. Limited scope.

So, in the interests of minimizing collateral damage, like a political post appearing in a stream of iOS comments, I'd like an easy way to do streams off my shares.

Happily Pinboard, which I use as a micro-blogging platform publishing to @johngordon  (PourOver) and kateva.org/sh (IFTTT), supports those kinds of streams. Every tag has a feed, and when posting to Pinboard I can enter single character tags corresponding to streams. It's not the most elegant UI, but it works.

At the moment though all of my shares stream into one app.net channel (mixing metaphors there, but it kind of works). If my app.net account supported sub-channels/streams (I know that work is in progress, might be done) it seems like either PourOver and/or Pinboard stream-feeds would be a good step towards reducing drive-by share damage.

Update: app.net thread. Hope to see these pieces come together over the next few months.

- fn-

[1] My web "posts" from the early 90s are now embarrassing. The web was new then, even Alta Vista was years away. There was so much I couldn't imagine. More subtly, we live in the Randall Munroe web now. I know there are minds at play far beyond my own meager insights.
[2] Sharebot I am.
[3] In those days Global Shares were static web pages. I tried to generate things that were a cross between blog posts and Simplenote entries via FileMaker web page generation.

See also

Monday, September 23, 2013

Aperture's multi-project display and why you've never heard of it.

Since at least 2010 Aperture has been able to display multiple Projects side-by-side in a tabbed UI by option-click on Project name. I was amazed to learn about this a few weeks ago. Why isn't this prominently discussed in Aperture's manual or help file? Why, even after I showed it worked, is it so hard to find documentation?

I mean - this is big. I've been looking for it for years, missing iPhoto 9's easy ability to split and merge Projects and move images between them. Aperture's single project focus is my biggest complaint. At last I can move images between Projects ...

No. You can't. 

Which is probably why Apple has never documented this feature -- it's obviously only half-built. Rather than pull tabbed albums projects from the release Apple left them in, but removed documentation. Sad that in some fine Aperture updates since 2010 this feature was never completed.

Maybe in Aperture 4.

Saturday, September 21, 2013

Apple still has an express replacement service for iPhone: $187 for iPhone 4

Years ago I think I used Apple's 'express replacement service', probably for a 3G. Apple sent me a refurb, I returned my phone and used the refurb.

Turns out, the express replacement service is still around. Request the express replacement option for an out of warrantee service and you can swap your defective old iPhone for a refurb (with a fresh battery). In our case we have an iPhone 4 with a balky home button and another with a balky power button -- both with bad batteries. Good devices, but not much resale value. An Apple Store service swap would be great if one could be arranged, but an express replacement service would be a lot more convenient.

According to Apple's web site there's a $29 service fee, a $7 shipping fee, and device specific fees:

  • iPhone 4 or earlier: $150
  • iPhone 4s: $199
  • iPhone 5, 5c, 5s: $269

I don't know if the replacement phones are carrier locked, so there's a risk of sending in an unlocked phone and getting a carrier locked phone back. 

An eBay iPhone 5 seems to cost $200-$300 and is probably much lower quality than an Apple refurb, so $187 is pretty competitive.

Analyzing mobile phone plans: Our old AT&T plan vs. H2O wireless

We're enrolled in a no longer available AT&T plan that included a secondary phone option of 

  • shared family minutes, long distance, etc.
  • $10 monthly per device
  • $15 for 200MB data (with alerts when limit nears)
  • No SMS

At the moment my daughter is on this plan, the boys are on H2O wireless. Thanks to typical carrier hidden fees and some SMS usage billed at extortionary rates** the average monthly cost is about $33.

I'd been planning to switch her to H2O wireless too, but after doing a bit of analysis I can see why AT&T discontinued the plan we have -- it's oddly cost-effective for someone with the discipline to control data use. (The latter requires a level of self control that excludes her brothers.)

Here's a rough cut at what a valuation looks like for staying on this plan over 2 years (with a new contract iPhone) vs. switching to H2O wireless:

ItemEstimated value
Phone subsidy450
AT&T sneaky phone fee-40
iPhone 5S 16GB initial fee-200
Two year payments-840
H2O plan cost120*
NET-510

So compared to H2O wireless staying on this plan would mean:

  • Pay an extra $510 over two years
  • Get an iPhone 5S (list $650)
  • Get enough data for location services, light email, iMessage, Facetime-audio

If we wanted an extra iPhone 5S her current plan would make sense. We don't, so I'm likely to switch her to H2O wireless when her contract expires - like her sibs. On the other hand, if we lose a phone it makes sense to add her back on this plan and get a new contract.

Again, I can see why AT&T discontinued this plan. It is oddly competitive with paygo options.

* As of today H2O wireless for our kids use pattern costs about $80 for two years - voice and SMS only. It used to cost $200 for two years, this $80 price is weird and seems unlikely to last. In fact I'm not sure I can even get this plan for her any more, I think it was an artifact of some pre-smartphone pricing.

** Most of her texting is via iMessage.

PS. Walmart online has an interesting list of prepaid options for AT&T compatible MVNOs.

iOS 7 has completely removed ability to play Podcasts through Music.app and Video.app

Message received when connecting my daughter's iOS 7 4S to iTunes:

Screen Shot 2013 09 21 at 2 10 03 PM

Until iOS 7 one could get reliable iTunes Podcast sync by deleting Podcast.app and viewing Podcasts in Music.app or Video.app. Those abilities are now gone. Not a surprise, too bad Apple brought a lot of bugs with the transition including iTunes 11.1 Media Kind bugs causing podcast invisibility, and claims of massive data loss when synchronizing archived podcasts with iOS 7

It's well past time for me to switch to either Downcast or Instacast. My app.net colleagues are reviewing the tradeoffs with me.

(I'm still on iOS, I like the kids to find these bugs first.)