Archives for category: Web Development

I haven’t been writing a bunch of topics lately about web design but this one caught my eye:

Top Minimalist Website Designs: Trends and Examples » Color, Layout » Design Festival

When you think of minimalism, you may conjure up images of black and white color schemes, overly-??simple layouts, maybe a splash of color here and there. The actual concept in context of web design is about stripping out anything unnecessary. While this can produce boring design, there is a LOT of creative freedom within this framework.

Seems like the principles apply to other areas (read: “app design”) as well. Thanks to SitePoint for the referral, and thanks to Design Festival for the content…

Google introduces Dart: “a language for structured web programming” 

Dart: a language for structured web programming – The official Google Code blog

Today we are introducing an early preview of Dart, a class-based optionally typed programming language for building web applications.

Dart’s design goals are:

  • Create a structured yet flexible language for web programming.
  • Make Dart feel familiar and natural to programmers and thus easy to learn.
  • Ensure that Dart delivers high performance on all modern web browsers and environments ranging from small handheld devices to server-side execution.

Dart targets a wide range of development scenarios: from a one-person project without much structure to a large-scale project needing formal types in the code to state programmer intent. To support this wide range of projects, Dart has optional types; this means you can start coding without types and add them later as needed. We believe Dart will be great for writing large web applications.

HTML5 Logo

I didn’t know if this would be helpful but SitePoint has been putting together an “HTML 5 Development Center”

http://www.sitepoint.com/tag/html5-dev-center/

The only thing that made me “raise an eyebrow” was that the banner on the page says “Developed in part for you by Internet Explorer 9″ and evidently Microsoft has been assisting in the project.

[Pause...]

But the good news is this statement on this page:

Browser Neutrality
The HTML5 Dev Center is browser neutral, these are growing technologies and the browsers are always evolving and updating.

In general I really like SitePoint’s reference material, so hopefully they will live up to the browser neutrality policy… ;)

Recently, I was trying to understand what happens when an iOS app goes into the background and then re-emerges later in various ways. It actually wasn’t as straightforward as I thought it would be. This may have already be documented somewhere, but it was a useful educational exercise nonetheless.

The driving reason for exploring the sequence was that I needed to suspend an NSTimer-based process when the app went into the background, and then start it back up when the app returned from suspended animation. Additionally, I needed to refresh a list from a web service when the app emerged, and the issue is that I needed to have it occur just once.

I needed to discover the events that occur and in what order when an app is active in the foreground and the following things happen:

  • User presses Home button
  • User Locks the device

I was also interested in seeing what happens when the reverse scenarios happen:

  • User re-launches app when in background
  • User unlocks the device
  • Initial launch of the app

Turns out the sequence wasn’t quite what I was expecting — but it was very instructive. The following table illustrates my results. The numbers just indicate sequence of events (what happened first and second).

Will Resign Active Did Become Active Did Enter Background Will Enter Foreground
App in FG + Home Button 1 2
App in FG + Lock 1
App in BG + Relaunch 2 1
App in FG + Unlock (after locking) 1
Initial Launch 1

The good thing about creating this table is that it was very helpful in activating and deactivating the NSTimer-based process and also triggering the list refresh when the application submerged and then emerged.

Let me know if anyone is interested in code for this…

I wasn’t having a problem, but I was just curious about the question of whether or not it was necessary to make all your shouldAutorotateToInterfaceOrientation:interfaceOrientation overrides jive when using a UISplitViewController.

Sure enough, as is mentioned here in this Stackoverflow thread:

All of your view controllers INSIDE the split view controller have to override [shouldAutorotateToInterfaceOrientation:interfaceOrientation]… To make it rotate to all orientations, return YES in all overrides.

Makes sense to me. Thanks to Krumelur.

I really appreciated how Greg Hewgill summarized the difference between the two Git functions “Pull” and “Fetch” on Stackoverflow:

In the simplest terms, “git pull” does a “git fetch” followed by a “git merge”.

You can do a “git fetch” at any time to update your local copy of a remote branch. This operation never changes any of your own branches and is safe to do without changing your working copy. I have even heard of people running “git fetch” periodically in a cron job in the background (although I wouldn’t recommend doing this).

A “git pull” is what you would do to bring your repository up to date with a remote repository.

 

Can you guess what I’ve been doing lately?

Here’s another great tutorial from Dan Grigsby of Mobile Orchard, this time on playing audio with the AVAudioPlayer in the iOS SDK…

Tutorial: Easy Audio Playback With AVAudioPlayer

The iPhone SDK’s AVFoundation framework includes AVAudioPlayer, an easy, feature rich, Objective-C based way of playing audio files.

This tutorial demonstrates how to use AVAudioPlayer. When you’ve finished the tutorial you’ll have created a simple app that plays an MP3 audio file in a loop when the app starts.

 

enjoy!

 

For some reason I edited the iPhone wireframing files article a while back and added the individual PDF file links. Unfortunately they 404ed since they were the wrong URL.

This situation has been rectified and the individual PDF files can now be downloaded by themselves (though I suspect most people have been just using the zip file…).

After weeks/months of work I have submitted my first app to the iTunes AppStore!

NineOneOneNineOneOne ~ one-touch emergency dialer

So, now we wait for the approval/rejection to occur (hopefully not the latter)…

In truth, the amount of work can actually be measured in hours or perhaps days, with the actual building of the app being the least time consuming part since this is a very basic application.

I had no idea going into this the amount of time that would be spent on the preparation of the application for submission. At this point it is probably the most daunting aspect of the process — the development of the product was the simple[r] part. I expect that it will get easier the more apps I create, and having gone through the process once already, at least now I know what’s involved and what some of the potential gotchas are.

It’s tough to go it alone, but for now that’s what I have to stick with, having a day job and no capital to back up my projects or to hire other staff, much as I would like to be able to focus on this alone. It seems to me like you really need a team of three (+/-) people to make a really decent app in a timely fashion. Ideally, I think  I could get by on a relatively lean three-person team and would consist of:

  • Me. (duh)
    • product design and specification
    • UX/interaction design
    • iPhone development/programming
    • Web site programming (if required)
  • graphic designer (my graphic design skills are limited, and I’m really slow at what I do…)
    • iPhone interface eye candy
    • Icon design
    • Web site design
  • Deployment/distribution (and marketing) engineer
    • Manages distribution for testing, arranging and managing alpha and beta tests.
    • Handles all iTunes AppStore preparations (SKUs, marketing materials)

That last one is kind of squidgy, but it was the stuff that really made me insane on this first go-round, and having someone – even just part time – to collect the resources and manage the iTunes part of the equation would be really helpful. This persone would be someone who has done it a number of times and knows all the little gotchas. There are many.

Thankfully, I chose to create an app that was very small and not real complicated to construct. Otherwise, this app would never have gotten submitted! However, since it was an app that I personally needed (but didn’t realize until after I needed it), I felt pretty strongly about just getting it DONE!

I will announce when the app is approved, if it is approved. In the meantime I will be planning out the next update for NineOneOne, in addition to the next app in line…

Seems that I occasionally need to trigger the postback on an UpdatePanel, and invariably I forget between usages.

Since this particular post from Encosia has saved my bacon on more than one occasion, I shall share it here (and for my own future benefit):

Easily refresh an UpdatePanel, using JavaScript | Encosia:

I’ve noticed a lot of discussion lately regarding methods to refresh an UpdatePanel via client script. This is very easy on the server side, of course. You can just call UpdatePanel.Update(). However, on the client side, the most common solutions I’ve been seeing just don’t feel right. Many will advise you to use a hidden button control inside the UpdatePanel, manipulated via button.click(), to trigger a partial postback of the UpdatePanel. While it does work, I never have been able to get past the kludgey nature of that solution.

In a nutshell, we can use the __doPostBack() method:

Luckily, there’s an easy method for triggering a postback targeted at the UpdatePanel: __doPostBack().

As long as the event target of a __doPostBack() call is an async trigger of an UpdatePanel, the ASP.NET AJAX framework will intercept the postback and fire a partial postback instead. For purposes of demonstration, I’m going to add that to the OnClick event of the container div:

<div id="Container" onclick="__doPostBack('UpdatePanel1', '');">

Now, clicking anywhere in the UpdatePanel will trigger a partial postback, targeting the UpdatePanel. Since partial postbacks follow the full page lifecycle, this will fire UpdatePanel1_Load and update the Label’s text.