I did a quick matrix to compare various mobile JS frameworks in late May. It is probably a little outdated, especially with the recent Sencha merger, and I did not know DashCode could create web applications at the time, but maybe it will help someone. Enjoy! http://bit.ly/d6Gsaj
Monthly Archives: July 2010
Scifihifi-iPhone Keychain Wrapper
Here’s a great wrapper that really simplifies working with KeyChain in iOS http://log.scifihifi.com/post/55837387/simple-iphone-keychain-code. The code is on GitHub as well http://github.com/ldandersen/scifihifi-iphone/tree/master/security/.
Apple’s official documentation is here, and there is also a sample project, but it’s not a good example for getting up and running quickly. The version of the project (last updated 10/2009) doesn’t even run on the simulator.
Twitter Weekly Updates for 2010-07-25
- zmog #thor being directed by Kenneth Branagh? lol #
- #life Find something you are passionate about and figure out how you can get paid to do it. One of my passions is learning. #
- #life Accept an internal locus of control. #
- Watch Lagoa Multiphysics 1.0 – Teaser on Vimeo! http://vimeo.com/13457383 #
- #live Virtue is an asset that must be strived for. You are not delivered into the world with virtue, nor is it the product of dreams. #
- #life Paraphrasing Seneca, it's not how long life is, but how good. #
- He was moving like Shakira. Hips don't lie. #
- @briandonahue Sorry I couldn't make it. Keep me in the loop! in reply to briandonahue #
- A blank Unix screen is simple, but true simplicity is in the head #whartonui #
- The goal of the designer is to relish complexity, but avoid complication. #whartonui #
- The GUI was about simplification through the opportunity for discovery. #whartonui #
- Is Google's interface really that simple? There are 20 things to click! #whartonui #
- The experience matters more than the interface. #whartonui #
- Your organization needs designers. #whartonui #
- Don Norman likes to watch iPhone users try to change the date. The fumble and the UI is cumbersome but the memory is positive. #whartonui #
- UI. What just happened? Where am I? What can I do now? Feedback. Learn by exploration. Visibility Consistency Wysiwyg Undo Menus #whartonui #
- New forms of interaction. Rotate pivot blow gps audio tap shake multifinger drag long-press gyroscope haptics WiFi pinch spread. #whartonui #
- Is the salt shaker on the left or the right? It's not what you think, it's what the person who filled it thinks. #whartonui #
- Asian cultures dislike whitespace? #whartonui #
- People with messy offices can find stuff, like using an Asian portal page. #whartonui #
- Studies show we desire a medium level of complexity. The mean amount of complexity depends on skill level. #whartonui #
- Analyze tasks using service blueprints. #whartonui #
- All points from Don Norman, Living with Complexity. #whartonui #
- @deirdre_woods the virtual platform is unresponsive for me. Maybe it's under too high of a load. in reply to deirdre_woods #
- @davekonopka Domino's for dinner lol in reply to davekonopka #
- @dalig Jamie has placed your pizza into the oven with a nod of satisfaction. in reply to dalig #
- Quantify things in terms of development iterations. Show users interfaces rather than diagrams. #whartonui (I agree – users don't get UML) #
- Post-mortems for client meetings #whartonui #
- Did #BP Fake Its 'Crisis Center' with #Photoshop | The Atlantic Wire: http://bit.ly/bNwDxg #
- @Fishbreakfast Documentation is dangerous. Wouldn't want someone to poke their eye out! in reply to Fishbreakfast #
- @eevans Avoid cheesy soundtracks FTFY #whartonui #
- @briandonahue obligatory: emacs in reply to briandonahue #
- How do you know that you're not polishing a turd? #whartonui Stay classy
# - How would you describe your mobile device? An extension of my being. #whartonui #
- An Ask Wharton Knowledgebase would be awesome. #whartonui #
- #wordsidislike bitsmith #
- #life Know when to lead, and when to follow #
- @FlipperPA whoa…mootools? in reply to FlipperPA #
- Creative Culture blueprint http://bit.ly/baknk8 #whartonui #
- Drexel is moving toward blended classes, Distance Learning + some F2F. #WhartonUI (via @Fishbreakfast) Temple's already there! #foxmba #
- Practice transparency. Tear those cubicle walls down. #whartonui #
- Idea: technical mentors, leadership coaches #whartonui #
- @hectcastro Alright, pass the keyboard over and I'll pull up a chair!
in reply to hectcastro # - Retweet this & @Bing will donate $10 to @CNN's Gulf Telethon up to $100K. More at http://bit.ly/howtodonate. #BingforGulf #
- I liked a YouTube video — Korean Freestyle Roller Blading http://youtu.be/3qzBVge0A0Q?a #
- @LewG ideally we wouldn't face each other. I wouldn't want to subject you to ny ugly mug. in reply to LewG #
- @FrewYou Step two put your **** in the box. in reply to FrewYou #
- RT @LewG: From the Site: Ben on the Bench http://j.mp/9LNFQY #
- @ "Angry Dinosaurs" accelerating change and institutional incompetence – via @coryondrejka , #WhartonUI #
- agility is about adapting to change #whartonui #
- Waterfall = madness. Requirements never completely known. #whartonui #
- innovation is productized knowledge #whartonui #
- efforts to build "innovation teams" often fail because innovation cannot be directed #whartonui #
- "Innovation is like pornography: you know it when you see it." –Cory O. #WhartonUI (via @vismajor) #
- #RoR = Spherical Geometry of late 1800s #whartonui #
- punishment for attempts at innovation is common institutional behavior #whartonui #
- 100x change is hard to fathom #whartonui #
- NYT versus Craigslist should've been like clubbing a baby seal–too bad for NYT. #whartonui #
- Despite productivity growth, return on assets is plummeting over the past 40 years. Institutional incompetence. #whartonui #
- I feel bad for the people who cannot view the slides for @coryondrejka's talk #whartonui #
- There's been a shift in value in public corps to customers and high-value employees #whartonui #
- Only 7 of the top 25 most successful companies in 1999 are still there in 2010. Cory Ondrejka / #WhartonUI (via @martytdx) #
- being able to spend money is not a competitive advantage. #whartonui #
- first mover is not a competitive advantage unless you are able to capture customers #whartonui #
- First tool of institutions: data. Customer data in particular is really important. #whartonui #
- Maury found patterns in Naval ship logs after being banished. He wrote Physical Geography of the Sea to deliver his results. #whartonui #
- Innovation in music industry stifled by focus on piracy in the early 2000s #whartonui #
- Institutional hack: find a patron. Maury got support from John Quincy Adams. #whartonui #
- agile institutions need to rethink their boundaries #whartonui #
- break down the boundaries between us and them #whartonui #
- if you've done something wrong for your customers, they will tell you. Listen! #whartonui #
- Second Life avatars on fire is still hilarious seven years later. I was one of them. #whartonui @coryondrejka (via @FlipperPA) #
- Stop treating people as customers, treat them as partners. Their ideas and data are valuable. #whartonui @coryondrejka (via @FlipperPA) #
- @nmische let's expose all Wharton non-personal data in the API! #
- It's hard to be fearless, which is required for institutional change #whartonui #life live without fear #
- institutions are very good at not observing the reality around them #whartonui #
- people often overestimate change in the short term, underestimate change in the long term. #whartonui #
- exponential change is around us right now. automakers, music industry, book sellers. #whartonui #
- Failure happens. Don't be afraid to fail. Fail fast, fail cheaply, fail publicly. #whartonui @coryondrejka #life #
- @coryondrejka's giving a great talk at #whartonui #
- vanity metrics – facebook followers must be linked to some key aspect of business #whartonui #
- "Be aware of the geek wanking problem" @coryondrejka #whartonui #
- Find oxygen, avoid angry dinosaurs, spread the wealth, engage patrons @coryondrejka #whartonui #
- all this morning's points from a talk by @coryondrejka at #whartonui #
- lol @ question: "Can agile methodologies produce high-quality code?" #whartonui #
- Agile is producing poor code (aka worse than waterfall)? You're doing it wrong. #whartonui #
- Bringing print to the web with Jeff Croft #whartonui "There is more than one way to tell a story" #
- Bringing Print to the Web http://www.pictorymag.com/ #whartonui #
- Love that someone brought up On The Media's coverage of hyperlocal blogs in the print-to-web session #whartonui (via @phillylauren) #
- Try http://www.skygrid.com/ news aggregator #whartonui #
- tablets v desktop computers comparison in session "Bringing Print to the Web", slightly unexpected #whartonui #
- Tablets are used in more relaxed settings. You use tablets leaning back. You use desktops leaning forward. #whartonui #
- @apple Can I bring the iPad into the pool? #
- @FlipperPA anytime! in reply to FlipperPA #
- Understand the user context #whartonui Design 101? I really need to take some design classes. #
- Investigating Dashcode for a native-looking Mobile Safari web app. #
- @FlipperPA, @guamaniac Slides were important but not necessary to enjoy the presentation in reply to FlipperPA #
- Comparing native to web mobile apps in "Bringing Print to the Web" Unexpected. Not the right forum IMO. #whartonui #
- @jcroft Talking about PhoneGap, Python, and Django at "Bringing Print to the Web" Very unexpected. #whartonui #
- @jcroft "It's not a newspaper. It doesn't need to look like one." NO FAUX COFFEE SCREENS IN YOUR DESIGN! #whartonui #
- @Fishbreakfast wants an iPad! in reply to Fishbreakfast #
- Check out http://www.flipboard.com/, the personalized social magazine #whartonui #
- Upcoming tweets about/from/source Usability testing in the WILD! @danachis #whartonui #
- What does "in the wild" suggest? Very little time. Stealth/guerilla. @danachis: adhoc, unstructured, in the field #whartonui #
- You have 1 day to do a usability test w/ quick results required. Use the scavenger hunt technique. How easily is info found? #whartonui #
- Semi-random participants. Combinations of live/remote sessions. Find users in context! Improvise! #whartonui #
- #bestofcraigslist #seattle Dear University Alumni Office http://bit.ly/aSxLJd #
- observing a student in the wild (his tiny dorm room) his for an e-learning application…observers pile onto the bunkbeds! #whartonui #
- @FlipperPA future tech talk topic: The right framework/language by task. in reply to FlipperPA #
- @bendystraw F this, I quit! in reply to bendystraw #
- @FlipperPA Submitted in reply to FlipperPA #
- #life The Gambler – Know when to hold 'em, know when to fold 'em #
- I liked a YouTube video — Tron Legacy Theatrical Trailer http://youtu.be/OFEbY9Q8dBE?a #
- In the Mobile Fanboy session at HigherEd Camp Philly #hec #
- Droid fanboys at #hec #
- #hec "iOS doesn't do anything" Droid Fanboy #
- @TuttleTree You have to be the iOS fanboy here! #hec in reply to TuttleTree #
- #hec talking about flash at the mobile fanboy session…how did that happen? #
- @FlipperPA tech talk idea: an analysis of the amount number of messages received by the typical wcit employee in reply to FlipperPA #
- institutions need hackerspaces #hec #
- @mathplourde says hackerspaces should be student-run initiatives #hec in reply to mathplourde #
- @TuttleTree thanks but I like more subtle shirts, something that makes you think a bit in reply to TuttleTree #
- @mbteach IMO coworking places like Indy Hall are at the fringe of what you could call a hackerspace /cc @mathplourde in reply to mbteach #
- @mathplourde says hacking is a 21st century skill #hec #
- @mbteach I think libraries and student unions are the co-working spaces of higher education. /cc #mathplourde #
- @coreyondrejka's incredible talk from #whartonui "Angry Dinosaurs: Accelerating Change and Institutional Incompetence" http://bit.ly/bY4E15 #
- #wordsidislike freemium #
- Social media is a loss leader–gets people in the door so you can really make the sale.#hec #
- Before using social media in marketing, find out where the conversations are already happening #hec #
- Marketing in social media: can I add value to the conversation? #hec #
- Goal of social media: to cut down the number of impressions before a sale is made. #hec #
- Social media is not a quick fix. It's a long term commitment. #hec #
- @hglasser One of the albeit ambiguous underlying goals is to add value to whatever conversations exist . /cc @mpowers3 in reply to hglasser #
- uproar in session, my 32 year old roomates did not use email in college! #hec #
- @mpowers3 Context is always key. In education, a key goal is to find and RETAIN students. #SM can weed out misfits. /cc @hglasser in reply to mpowers3 #
- @hglasser Misfits: you hate cities? Don't come to UPenn, Temple, or Drexel. Hate parties? Avoid U of FL. #hec /cc @mpowers3 in reply to hglasser #
- The University of Delaware uses Google Apps. The cost of providing e-mail to students: $0 #hec #
- @bflad Temple is on Google Apps too. It was sweet using Gmail with Temple. #hec in reply to bflad #
- @mariatsciarrino Thanks good to know! in reply to mariatsciarrino #
- @hectcastro go owls! in reply to hectcastro #
- Meet in 370 for the wrap-up and raffle. #hec #
- OK Go: End Love music video http://bit.ly/bejAMT #
Twitter Weekly Updates for 2010-07-18
- FlightCaster – predicts flight delays using Rails front, Clojure back http://ow.ly/29vG3 #
- Diffable, uses differential compression to improve load times of large JS http://ow.ly/29vQJ #
- #wordsidislike impactful #
- The perfect contestant on the price is right http://bit.ly/9B1Thy #
- I liked a YouTube video — App Inventor in Action http://youtu.be/8ADwPLSFeY8?a #
- Google App Inventor makes it easy for grandma to make Android apps! http://bit.ly/cAM9TJ #
- I liked a YouTube video — RSA Animate – The Secret Powers of Time http://youtu.be/A3oIiH7BLmg?a #
- I subscribed to hchsknights08's channel on YouTube. http://www.youtube.com/user/hchsknights08?feature=autoshare #
- I subscribed to hiphopRINROX's channel on YouTube. http://www.youtube.com/user/hiphopRINROX?feature=autoshare #
- "I'm supposed to be such a scumbag that people are bringing me diamonds in nothing but a mayonaise jar?" Charles Taylor #warcrimes #
- @bflad Narnia lies through @lewg 's window. The doorway closed on his shadow the last time he escaped. It watches, frozen in time. in reply to bflad #
- Just got my first UPenn tuition bill reimbursed! <3 Upenn! #
- I liked a YouTube video — BP Spills Coffee http://youtu.be/2AAa0gd7ClM?a #
- #finalfantasy logos explained http://bit.ly/9ELhQH /cc @FrewYou in reply to FrewYou #
- @Fishbreakfast The Church is great at showing where its priorities are. in reply to Fishbreakfast #
Invalid entitlements
I was having big issues deploying to an iPad from XCode tonight. There was an error concerning invalid entitlements.
The executable was signed with invalid entitlements.
The entitlements specified in your application’s Code Signing Entitlements file do not match those specified in your provisioning profile.
(0xE8008016)
I was able to fix this by making sure a valid provisioning profile existed, adding this profile to Organizer, and then making sure the application identifier created in the Apple Developer portal matched the bundle identifier field in my applications Info.plist file.
Here are some of the references I used:
Twitter Weekly Updates for 2010-07-11
- Shopping for vitamin supplements to invigorate this aging shell. #
- Going to the art museum to experience a starry night. #
- Goo Goo dolls @ art museum #
- @guamaniac that sucks man hope it went okay in reply to guamaniac #
- Printer support technician extraordinaire 333-499 E 24th St, Chester, PA 19013, USA #
- #wordsidislike guru #
- just watched #princeofpersia It lacks the whimsy of #piratesofthecarribean #
- Ordered some Gob Dol bi Bim Bap. About to savor some sweet spiciness. #
- Gop Dol bi Bim Bap goodness http://tweetphoto.com/31045321 #
- I liked a YouTube video — Year On Earth http://youtu.be/IhqzW97_47w?a #
- @trevmex you've seen the datejs library? Check it out if you haven't. in reply to trevmex #
- @davekonopka Ballmer as a designer is hillarious! #
- @popcap_games I'm excited about games coming to Android but I am a little sick of buying games for multiple platforms. Any resolution? #
- I wonder if when tweens google #eclipse they wonder, wtf is #java Team #eclipse #
- @popcap_games i have pvz for iPad and OSX. You are a great game company and you're right, but Zuma isn't that much different be PC and OSX. #
- @TuttleTree @LewG Septa isn't known for coddling the old and sick in reply to TuttleTree #
- Ruby Quiz http://icio.us/e0ddgy #
- How to Node http://icio.us/bqgkfc #
- Home run derby http://tweetphoto.com/31540216 #
- #javascript needs modules! http://bit.ly/9Q81FB #
- @FlipperPA I think I have a PMP book laying around is that's what you mean. in reply to FlipperPA #
- OfficeCat is a cli util search MS Office Docs for exploits http://icio.us/p3zflb #
- John Resig discusses "use strict", new JS directive http://ow.ly/29vLZ #
- ECMAScript 5 Strict Mode, JSON, and More http://bit.ly/aALiE #
- @hectcastro gl with the scavenger hunt! in reply to hectcastro #
- Yum cha! Gotta love those taro cakes.http://bit.ly/bfpL6h #
- Crab smothered with old bay at grand
ma's birthday http://tweetphoto.com/31938207 # - @bflad oblong is my favorite! Loose leaves for the win! in reply to bflad #
Philly Give Camp 2010: Part 5
The Builder
To keep the teams working as separately as possible with the least interference, we decided that the PAAL Builder, the tool used to build student schedules and lessons, would be completely HTML and Javascript. That means that there would be no server-side code, no ERB or HAML template files, and no Rails special sauce. This allowed the designers to work without developer support, and allowed developers who did not know Ruby or Rails to work solely on Javascript code. The Builder would interact with the API via ajax calls with JSON responses. A simple format for the response envelope was designed:
{
version: 0.1,
error: '',
data: {
task: {
id: 1,
name: 'Brush Teeth'
}
}
}
This is an example response upon the creation of a task with the name “Brush Teeth.” On each request, the error property would be checked to make sure that it was blank. The version property would also allow changing the API in the future without breaking the application.
In the previous post I discussed the problems of having a simple API. One common scenario is to create a task and link it with a parent task. This would happen if you wanted to create a task like “Brush Teeth” and steps underneath it like “get toothpaste,” “get toothbrush”, “brush front teeth.” Here is the code necessary to do that (I am just posting the necessary jQuery calls rather than the wrapper functions I wound up writing):
// create the task via a POST
$.post(
'/tasks',
taskData,
function(envelope, textStatus, request) {
if ( envelope.error != '' ) {
// error
}
else {
// on success, tie the newly created task
// to a parent task
function callbackSuccess(newTask, envelope) {
$.post(
'/task_parents',
{
task_parent: {
task_id: newTask.id,
task_parent_id: some_parent_id
}
},
function(innerEnvelope, textStatus, request) {
if ( innerEnvelope.error != '' ) {
// error
}
else {
// success!
}
},
'json'
);
}
callbackSuccess(envelope.data.task, envelope);
}
},
'json'
);
Wrapper functions make this simpler to understand, but the fact that it requires two posts troubled me. Still, I avoided adding a new method to the API to do this all in one step.
When we were working on the project, the designers and another developer worked mostly on basic UI. I then worked on “installing the plumbing” as I put it, making all the API calls and using the live data. A lot of this plumbing went into the product after Give Camp. One aspect of the project I found hard after Give Camp was figuring out how a feature or UI element would work. Often, I’d be hooking up the plumbing, but be unsure of whether they wanted a stand-up shower or a bathtub. Both would get the job done, but I wasn’t sure what they had in mind, and it wasn’t clear from the design.
Part of this was due to the fact that I didn’t have the most recent design. We switched versioning systems two times during the course of Give Camp, and repository locations 3-4 times. Part of this was due to lack of notes or obvious visual stimuli. In general, after Give Camp was over, it was hard to coordinate with each other.
Twitter Weekly Updates for 2010-07-04
- Sebastian – "Make it like windows!" #
- Test driving Divvy. Allows you to divide your OSX workspace. http://mizage.com/divvy/ #
- Fine dining at the Texas roadhouse. http://tweetphoto.com/30414777 #
- Khai comments on Hung's running ability. http://bit.ly/cQvNdQ #
- @trevmex I want to go see it too! Totoro cameo FTW! #toystory3 in reply to trevmex #
- I had a UITabBarController eureka moment today! Oh obj-c, you're not so bad! #iphonedev #
- Gu chai gue for lunch http://tweetphoto.com/30551530 #
- Fiddling with the new incredible! #
Philly Give Camp 2010: Part 4
Thinking about the problem domain, Trevor, Sebastian, and I decided to abstract away the complexity. The problem (as I understood it then) can be explained thusly:
Students need a way to follow a list of scheduled tasks throughout the day, to assist them in performing daily activities. These tasks can be broken into more detailed tasks with steps or choices. A choice, such as what to have for lunch, is non-linear. A choice helps a student develop his sense of independence. Each choice and task may have accompanying text and audio.
Day to day within a week, the schedule of tasks may be different. Weeks can also differ from each other.
Given these simple business requirements, we decided that a step, a task, and a choice were all the same in that they had a name, audio content, text content, and that they had a parent-child relationship with each other. We decided that all of these would be “tasks” and that there would be a “task type” field to differentiate between these. The “task” paradigm yields the following definitions:
- A task is a task with linear/sequential sub-tasks
- A step is a task with no sub-tasks
- A choice is a task with non-linear, non-sequential sub-tasks
We also decided, after further discussion to make certain other things tasks. We thought that days and weeks were similar enough to a task in the parent-child relationship. We decided that
- A day is a task with linear/sequential sub-tasks whose name is a weekday
- A week is a task with day sub-tasks (days as defined above)
This allowed us to have a single Task model, and a Task Parent model, which greatly simplified the API. Instead of making REST calls to create a step, create a week, or create a choice, there would be just one create call, with a task type defining the behavior of the task. This would also make copying tasks and task trees easier, since we would only have to work with one model when doing a deep copy of a task tree.
Although this made the API really quick to build, when I started writing the builder code, interacting with the API, I found the API to be a bit low level. For example, I would have to make two calls to bind a new task to a user. First, I would have to create the task via the API, and then create the user-task relationship via the API. As I was writing nested callbacks with the jQuery ajax functions, I questioned our decision to make the API so simple. Still, I think the API is a thing of beauty, and I am still proud of what we did that weekend.
