Saturday, December 27, 2008
Objective C blocks
Sunday, September 21, 2008
App store observations
- There are still plenty of business issues (mktg, customer service, ip, taxes, etc) to deal with even though Apple takes care of some (distribution, payment, part of taxes). I think there's some opportunity there (publishing houses, co-ops?, consolidation?), but I'm not sure what yet.
- 'mimic' apps are making there way on to the store...sometimes better, sometimes not, often stealing wording and sample data straight from other apps and cross-posting reviews to drive traffic to their apps
- Not a lot of apps that access critical consumer data (i.e. - my bank, my frequent travler info, etc) -- slow-moving large corps [opportunity]
- Surprise market for apps for 'little kids' (parents appear to gladly pay 99c-4.99 to keep a kid busy for some period of time)
- Great market for taking something that's specialized and mechanical (sleep sounds, chess clock, specialized calculator) and making a cheap digital version.
- Still lots of new game concepts that haven't been tapped . . .
- When you have something that's selling all over the world, it's a challenge to keep up with what's going on in all the different country-based app stores, and partitioning feedback, marketing, and sales to drive prioritization.
However, the NDA is still in effect for experienced developers and publishers, though the enforcement seems erratic (some developers are openly violating it in discussion forums, app descriptions, blogs, tweets, etc).
Sunday, July 27, 2008
New apps on the store RSS feeds
Thursday, July 17, 2008
Environment Optimization: Marco Polo + Synergy
- [Both machines] Automatically launch the synergy daemons (on both machines) to share my desk's keyboard/mouse when laptop & desktop are both at home
- [laptop] Launch my work chat client (iChat) at work, and my home chat (Adium) client at home.
- [laptop] Set my iChat status to 'at work' when at work.
- [laptop] Set the default printer appropriately based on location.
Sunday, June 22, 2008
Interacting with GIT
update (July 1): just for comparison, a co-worker sent me one of those wonderful scripting commands for subversion to add all unknown files:
svn stat -u | awk '/^[?]/ { print $NF }' | xargs svn add
Monday, June 16, 2008
Time to GIT you a quick update
$ svn up
U Classes/ClassA.m <-- _awesome_ single letter indicator for
U Classes/AppDelegate.m <-- what happened to the file during the update
U Classes/DynamicSheetDelegate.m
U Classes/AlertDelegate.m
U Classes/SalesTransaction.m
U App.xcodeproj/user.pbxuser
Updated to revision 1028. <-- _short_ summary
$
$ git pull
remote: Counting objects: 58, done. <- Keeps you apprised of comm.
remote: Compressing objects: 100% (48/48), done. <- rather than pauses w/o info
remote: Total 48 (delta 37), reused 0 (delta 0)
Unpacking objects: 100% (48/48), done.
From git://machineB/projectA
f355111..99258fb master -> origin/master <- SHA-1's of from and to
From git://machineB/projectA <- versions on remote repo
* [new tag] aftermemfixes -> aftermemfixes <- New tags on remote repo
Updating f355111..99258fb <- SHA-1's of current to new ver
Fast forward <- on local repo + current op.
Classes/ClassA.m | 25 +-
Classes/AppDelegate.m | 11 +- <- Counters and visual (ascii :)
Classes/DynamicSheetDelegate.m | 2 + <- indicators show amount of
Classes/AlertDelegate.m | 2 + <- change on per-file basis
Classes/SalesTransaction.m | 5 +-
App.xcodeproj/user.pbxuser | 2510 ++++++++++++++++++--------------
7 files changed, 1604 insertions(+), 1176 deletions(-) <- Summary totals
$
Sunday, June 15, 2008
WWDC 2008 wrap-up
Does it GIT any better than this?
# renamed: AllViewController.h -> RootViewController.h
# renamed: AllViewController.m -> RootViewController.m
Saturday, June 14, 2008
The Pragmatics of Innovation
Tuesday, June 10, 2008
It's GIT'ing better all the time.
- I have some source code that I need to share between a desktop and laptop sporadically.
- When I'm working on the code on the laptop (potentially disconnected from any network for several days), I want all the same scm style capabilities (tagging, branching, roll-backs) that I get when I'm working on the desktop.
- I don't want the overhead of maintaining a server securely or paying for a hosted solution.
- I'll only ever be actively developing on either the laptop or desktop at any given time, so merges are no concern [for now].
GIT Recipe #1. One-way pushes between two trusted peers.
Given:
Base dir
|-> Myproject dir
Step 1. Create a GIT repo and index on machine #1 for your project.
machine1$ cd /myproject
machine1$ git init
machine1$ git add .
machine1$ git commit
Step 2. Start the git server component on Machine #1. Warning this allows fully anonymous unauthenticated access, so only do this in a secured LAN environment -- and personally, I would only do it for short sporadic bursts of time even in that environment. For a more secure option (i.e. - apache/ssh/etc), see the git docs (it's a bit more work).
machine1$ git-daemon --verbose --export-all --enable=receive-pack --base-path=/parentof/myproject/dir
Step 3, clone the repo to machine 2.
machine2$ git clone git://machine1/myproject
To do work on machine 1, and send the updates to machine 2
On Machine 1 (origin repo), remove a file and commit the change.
machine1$ vi README.txt
machine1$ git add README.txt machine1
machine1$ git commit
On Machine 2, pull those changes across
machine2$ git pull
To do work on machine 2, and send the updates to machine 1
Make some change . . .
machine2$ vi README.txt
machine2$ git add README.txt
machine2$ git commit
Push those changes over to the origin repo
machine2$ git push
Then, on Machine A [be careful not to have any local changes], to get those changes into your working copy:
machine2$ git checkout -f
Some of the better GIT Resources I've found:
- http://rails.wincent.com/wiki/Git_advantages
- http://www.youtube.com/watch?v=4XpnKHJAok8
- http://www.sourcemage.org/Git_Guide
- http://www.gitcasts.com
- http://www.rockstarprogrammer.org/post/2008/apr/06/differences-between-mercurial-and-git/
- http://cheat.errtheblog.com/s/git
- http://cheat.errtheblog.com/s/git_usage/
- http://ktown.kde.org/~zrusin/git/git-cheat-sheet-medium.png
- http://code.google.com/p/git-osx-installer/
- http://www-cs-students.stanford.edu/~blynn/gitmagic/index.html
- http://google-opensource.blogspot.com/2008/05/develop-with-git-on-google-code-project.html
- http://osteele.com/archives/2008/05/my-git-workflow
- http://ktown.kde.org/~zrusin/git/git-cheat-sheet-medium.png
- http://www.dekorte.com/blog/blog.cgi?do=item&id=2539
Saturday, June 07, 2008
Eric Schmidt - What can others copy from Google, how does his style compare to other CEO's
Great video with CEO Eric Schmidt on a variety of mgmt topics, challenges he faces at google, and how he tries to facilitate the focusing of the energies of passionate engineers and founders. He alludes to what he thinks would be hard for others to copy, and what wouldn't.
Saturday, May 17, 2008
Attaining Agile Mastery -- Forget the word Agile!
Sunday, January 27, 2008
From Tiger to Leopard
- Spotlight performance: +1; (usable!)
- General OS responsiveness: +1;
- Safari Speed: +1;
- Safari Reliability: -1; (has crashed on two different web sites for me so far! -- guess I'll go back to my camino/firefox combo)
- Quicklook: +1;
- Dock improvements (grids and fans): +1;
- Time machine: ?; I set it up, but for me the jury is out on any backup software until I actually need to restore something.
- Haven't found any major app incompatibilities yet.
Don Brown is working on serious Maven 2 improvements
Thursday, January 24, 2008
Links
Options for showing an ajaxy 'wait' indicator in wicket:
http://www.nabble.com/best-practice-for-a-wait-page-td15070792.html
Last.fm announced you can now stream full songs and albums (from all major labels) for free...
http://www.last.fm
Tuesday, January 22, 2008
Wicked Fast Wicket
http://wicket.apache.org/quickstart.html
It uses a maven archetype to generate the project structure, and then you can use the typical mvn eclipse:eclipse or idea:idea to get your project into an IDE. 2 methods for running jetty are automatically built in as well:
- Start.java
- mvn jetty:run.
It's soooo much better than piecing together your first wicket project by hand. Believe me! (These aren't the droids you're looking for)
Now, I'm generally of the opinion that template based code generation can only take an application so far... which is why it's exciting to see extensible code based approaches to sharing behaviors across pages in a web app --> Wicket Web Beans . Next time I build a data-entry app, I'll definitely consider WWB.
Tuesday, January 15, 2008
Wicket is taunting me.
The magic line of wicket code which eludes forums and wiki documentation follows...drum roll...
In your Application's init() method add the following. :
getResourceSettings().setAddLastModifiedTimeToResourceReferenceUrl(true);
Hmph... method names don't get much clearer than that do they?
This causes a 'wicket:lm=######' (lm stands for lastModified) url parm to be appended to package resource url's that are rendered. Now the browser has a url based clue as to when it REALLY needs to refresh from the server.
It's nice that it can be turned on in one place for all generated package resource url's.
Monday, January 14, 2008
Environment Optimization: Eye-fi + Smugmug. One step wireless photo sharing and backup (at full resolution)
Couple that with the fact that I've had 2 external hard drives die in the last 7 years, I'm tired of burning CD/DVD backups ad nauseam, I'm lazy when it comes to posting and sharing photos, and you can see my dilemma
In walks the solution . . .
As I'm setting up the Eye-fi, I see that they've done their homework and offered out-of-the-box integration with 15+ photo sharing sites. One of the sites they integrate with is phenomenal -- unlimited high-res photo sharing (SmugMug). I set my Eye-fi up to automatically create galleries on SmugMug. Here's how it works now:
- My wife and I take some pictures at some event (wedding/family get-together/etc)
- We come home, turn on the camera. The camera automatically, wirelessly (802.11 - no special camera usb cables!) transmits the high-resolution (8megapixel) photos to my computer. During transmission, a new SmugMug gallery is automatically created with a default name like "Photos taken on January 27th, 2007". The photos are automatically uploaded to that gallery.
- If the photos are ones I want to share, I only have to flip a switch on that gallery and give it a name. If they are photos I don't want to share, I simply leave the gallery as is.
Now inevitably, the people that I've explained this process to so far have responded in one of the following ways:
- I back my photos up to an external hard drive.
- I don't trust photo sites . . .they've disappeared on me . . . How do you know they won't go out of business?
- How do they make money?
- That's cool. But still a look a of skepticism -- as if you have to be some tech guru to set this all up.
- They store the full res photos????? (i.e. - How can they afford that?)
- Hard drives have a limited life span. It will die eventually. What happens if your house burns down?
- This is a profitable business focused on a discriminating user. They are a standalone company who's entire consumer base has bought into the specific services they offer. Go read about them and see what you think. Also, you can order a DVD backup of your photos at anytime (about $20). If you use the Eye-fi approach I'm describing, you'll have a backup on your computer anyway. For the more technical, you can mount your photo site as a virtual drive (WebDAV) and drag and drop backup photos to whatever other format you like at any time. They are not free. They are, however, fairly priced. $40/year for unlimited high-res photo storage and spam-free, login-free sharing. They claim the photos are backed up in three different states.
- You pay them $40/year.
- The Eye-fi makes it simple to get the photos there. You still have to learn a little SmugMug to get your sharing settings right, but it's quick once you get familiar.
- You pay them $40/year. Hard disk space is cheaper than it has ever been.
Maybe I'm just a sucker for shiny things, but the almost effortless instant wireless photo sharing and backup at full resolution, for the cost of an Eye-fi ($99) and SmugMug ($40/yr) feels like a heck of a deal.
Environment optimization: iCalViewer
Environment optimization: Single Hotkey to large Terminal
after the post notes: hmmm..looks like blogger downsized my video. doh :)
Saturday, January 12, 2008
Here comes the Tardis
That's right, now you are on the hook. And by you, I mean me.
Saturday, December 29, 2007
Gadgets, Games, and Hardware
RocketFM - turns your pc/mac into an FM broadcaster. Any set of speakers with an FM tuner can now become a jukebox if I just set my laptop near it.
Super Mario Galaxy - 5 stars !
- Good variety in level design and difficulty progression (easy if you've played mario games in the past though)
- Good intentional use of the wii controller -- i.e. - flick of wrist throws a turtle shell, shake of wrist causes spin attacks, etc.
- Fun whether or not you have played guitar before.
- Good difficulty progression (even guitar shredders can get to something challenging).
- Good re-use of the wii controller wireless/sensors. The Wiimote plugs right into the plastic guitar body. Uses tilt sensor to switch into rock-out mode :)
Eye-fi - 802.11 + SD memory in the footprint of an SD card that plugs in to your existing digital camera. It wirelessly syncs to your computer and nearly any photo site you might want to use. Set up was very smooth -- didn't even have to type in my wireless security info. Only known negative so far: not Camino compatible.
Nike + IPod - wireless accelerometer/pedometer for the ipod. We're going to try one of the clip adapters on ebay which purports to bypass the need for the $100 pair of specialized Nike's.
And here are some things I discovered I'd like to keep my eye on for 2008:
Asus eee pc
Amazon Kindle - ebook reader with online purchasing, backup, no connectivity fees, and paper-like screen (claims to read well under bright light).
OLPC pc
next gen Apple iPhone (currently vapor)
next gen Apple portable (tablet?/ultralite notebook?) (currently vapor)
Wednesday, November 07, 2007
Google Collections quick intro
Some quick examples: Coding in the small with Google Collections
Friday, November 02, 2007
Software Professionalism - Autos (Automated Tests) make for sustainable, realistic software
We, responsible software development professionals, MUST build sustainable, realistic software.
I've intentionally chosen not to use the word 'working' in that statement. 'Working' seems to be a word that is easily perverted to alternate definitions. It's not enough to build software that works once! It's not enough to build software that can be judged as working after several weeks of manual testing! Sustainable, and realistic might be better adjectives. I've never been on a project where there was no expectation of being able to enhance the software that was initially delivered, or that the software being delivered not be something which serve the needs of the person it was written for (though that does get confused easily it seems).
Statement: B
In order for software to be enhance-able (in any reasonable time frames, with a high truck-number) a powerful suite a autos (automated/executable tests) is required.
The more diverse the types of autos (unit/integration/acceptance/etc), the better. The more realistic paths exercised, the better. The faster that auto suite can run, the better. The less autos you have, the more risky it is to make changes. The less autos you have, the harder it is to introduce new developers.
Statement: If (A and B) then C
Being a software professional requires that you build autos with your software. Doing anything less is unprofessional.
I am guilty of not building autos in the past. But I hope I have learned from my mistakes. As responsible developers, we absolutely must make it a regular part of development to build autos for our companies, our clients, and each other. It is the professional thing to do.
