<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>Vevent Official Blog</title>
	<atom:link href="http://www.v-vent.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.v-vent.com/blog</link>
	<description>An open look into modern development practices on the iphone</description>
	<pubDate>Mon, 20 Apr 2009 22:10:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Handy Info.plist entries for iPhone Projects</title>
		<link>http://www.v-vent.com/blog/?p=127</link>
		<comments>http://www.v-vent.com/blog/?p=127#comments</comments>
		<pubDate>Thu, 16 Apr 2009 12:50:53 +0000</pubDate>
		<dc:creator>gilly</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Blog]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Tips]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[info.plist]]></category>

		<category><![CDATA[Objective C]]></category>

		<category><![CDATA[Xcode]]></category>

		<guid isPermaLink="false">http://www.v-vent.com/blog/?p=127</guid>
		<description><![CDATA[There are a bunch of helpful key-value entries you can put in the Info.plist file of your iPhone app.
These are pretty well documented on the Apple site, but if you&#8217;re like me, you had a really hard time finding them. I decided to post the most useful ones here for easy access.

General
First you need to [...]]]></description>
			<content:encoded><![CDATA[<p>There are a bunch of helpful key-value entries you can put in the Info.plist file of your iPhone app.</p>
<p>These are pretty well documented on the Apple site, but if you&#8217;re like me, you had a really hard time finding them. I decided to post the most useful ones here for easy access.<span id="more-127"></span></p>
<h2><img class="alignnone size-full wp-image-135" title="lines" src="http://www.v-vent.com/blog/wp-content/uploads/2009/04/lines.jpg" alt="lines" width="435" height="182" /></h2>
<h2>General</h2>
<p>First you need to know how to add and manipulate values in the info.plist file. The file lives under the resources bundle in XCode. When you select this file, the contents of the file will appear on the right. Highlight an entry, and a &#8216;+&#8217; will appear. Click on the &#8216;+&#8217;, and new line will appear. Now enter the name of the key that you want to set.</p>
<p>To set the value type, right click the key name, and highlight &#8216;Value&#8217;. The options will appear on the right. The default key type is String.</p>
<h3>UIStatusBarHidden</h3>
<p>This is a boolean value that, when set to yes launches the application with the status bar hidden. Another way to do this is under the method ApplicationDidFinishLaunching method in the application delegate. In this method, you can add the line</p>

<div class="wp_syntax"><div class="code"><pre class="objectivec" style="font-family:monospace;">[UIStatusBar setHidden:YES];</pre></div></div>

<p>This will hide the status bar, but only after the application has, well, finished launching. Meaning your splash screen will come with a status bar for the majority of its appearance.</p>
<h3>UIInterfaceOrientation</h3>
<p>This is a key with a String value. The available options are the orientation options for the iPhone. This is the key you need to set if you want the application to launch in landscape. The default value here is standard portrait</p>

<div class="wp_syntax"><div class="code"><pre class="objectivec" style="font-family:monospace;">(UIInterfaceOrientationPortrait)</pre></div></div>

<p>If you want to launch the application in landscape, use <em>UIInterfaceOrientationLandscapeLeft</em> or <em>UIInterfaceOrientationLandscapeRight</em>.</p>
<p>You can also launch upside down using <em>UIInterfaceOrientationPortraitUpsideDown</em>.</p>
<p>These values are the available orientations for the phone throughout the application.</p>
<h3>UIPrerenderedIcon</h3>
<p>When you put your 57&#215;57 icon in the application, you&#8217;ll notice that when it gets to the springboard, it has an added shine effect and looks glossy. Well, sometimes you don&#8217;t want that. Rami (the designer) can probably explain why better than I can, but you basically sometimes want to control what will show up on the springboard. This is a boolean key that when set to YES, turns off that render effect.</p>
<h3>UIRequiresPersistentWiFi</h3>
<p>This is a Boolean key that when set to YES, will operate a WiFi connection when the application launches. Use this if your application doesn&#8217;t work without WiFi. This is especially helpful with displaying an error to users when no WiFi is available. Apple are careful that you notify your users of WiFi (read - they&#8217;ll reject your app if you&#8217;re not), and as this key opens the connection on launch, it takes care of user notification for you. If this value is set to NO, which is the default, the OS will close any active connection after 30 minutes.</p>
<h3>UIStatusBarStyle</h3>
<p>This is quite easy to set up using the Interface Builder, but its an option, so I&#8217;ll cover it. The value is a String type, and it defaults to <em>UIStatusBarStyleGray</em>. The other options are <em>UIStatusBarStyleDefault</em> (Gray), <em>UIStatusBarStyleBlackTranslucent</em>, <em>UIStatysBarStyleBlackOpaque</em>. You can see what each one looks like in the Interface Builder.</p>
<p>There are more, but I think that these are the most useful ones. For more info, check out the full documentation at the <a href="http://developer.apple.com/iphone/library/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/PListKeys.html#//apple_ref/doc/uid/20001431-BCIJIJBH">iPhone developer center</a>. Thanks for reading.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-vent.com/blog/?feed=rss2&amp;p=127</wfw:commentRss>
		</item>
		<item>
		<title>Wabi Sabi 侘寂 of Designing for the iPhone</title>
		<link>http://www.v-vent.com/blog/?p=85</link>
		<comments>http://www.v-vent.com/blog/?p=85#comments</comments>
		<pubDate>Wed, 08 Apr 2009 14:01:47 +0000</pubDate>
		<dc:creator>ramijames</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[Design]]></category>

		<category><![CDATA[Organization]]></category>

		<category><![CDATA[Philosophy]]></category>

		<category><![CDATA[principles]]></category>

		<category><![CDATA[seven]]></category>

		<category><![CDATA[wabi sabi]]></category>

		<category><![CDATA[zen]]></category>

		<category><![CDATA[侘寂]]></category>

		<guid isPermaLink="false">http://www.v-vent.com/blog/?p=85</guid>
		<description><![CDATA[Doing a bit of personal digging into philosophy earlier this week, I came across the Zen concept of Wabi Sabi.
Breaking it down, Wabi Sabi 侘寂 is a view of the world which embraces the concept of transience. The idea that, simply stated, that which isn&#8217;t done is still beautiful.
For designers, I think this is a [...]]]></description>
			<content:encoded><![CDATA[<p>Doing a bit of personal digging into philosophy earlier this week, I came across the Zen concept of Wabi Sabi.</p>
<p>Breaking it down, Wabi Sabi 侘寂 is a view of the world which embraces the concept of transience. The idea that, simply stated, that which isn&#8217;t done is still beautiful.</p>
<p>For designers, I think this is a very important concept to grasp because nothing we do is every, truly, done. There is always a line in the sand, a point at which we must accept the child birthed before our eyes, from our hands, as a final form.</p>
<p>There are seven main principles behind Wabi Sabi. I want to use them as a framework to talk a bit about design as a field and moreso, designing for the iPhone which can be a very limiting platform.</p>
<p><img class="alignnone size-full wp-image-115" title="flower" src="http://www.v-vent.com/blog/wp-content/uploads/2009/04/flower.jpg" alt="flower" width="435" height="182" /></p>
<h2>FUKINSEI imbalanced, uneven</h2>
<p>Fukinsei describes the beauty in chaos. Odd numbers, wood grains, pebbles in a stream.</p>
<p>It is important in a design to break out of the box. The world we create in these computerised boxes can be overwhelmingly rigid. A line is a line, accurate to the most tiny measurement. Beauty can lie in a crooked line, a broken grid, mis-laid text and even something created without any rules at all. I have taken inspiration from the chaos in a teenager&#8217;s myspace page design and if that isn&#8217;t imbalance, then I don&#8217;t know what is.</p>
<h2>KANSO simple, basic</h2>
<p>Kanso is the elimination of the ornate.</p>
<p>All that Web 2.0 shine, those drop shadows and fake Photoshop bevels won&#8217;t make a poor design look better and more often than not they will make it look much worse. Often times I find myself at the end of a project taking a design and ripping out the bits and pieces that distract the user away from that which truly matters.</p>
<p>That often repeated mantra ever applies: Keep it simple, stupid.</p>
<h2>KOKOU austere, aged</h2>
<p>Kokou is about respecting maturity for the wisdom and maturity that it brings.</p>
<p>A funny thing about design is that mostly people can take a look at something and see intuitively whether it has been developed and evolved to a sufficient extent.</p>
<p>Taking a design and working on it over and over until it feels finished. Stepping back, sleeping on it, working on it again with fresh perspective, these are all steps in creating a good product.</p>
<h2>SHIZEN natural</h2>
<p>Here it is all about the forces of nature and allowing them to take shape without interference by us. We don&#8217;t really know better and it is a folly of imposition for us to try.</p>
<p>In design this is about letting the idea shine through without trying too hard to give it a veneer or polish. Sometimes rough is good enough. As hard as it is for me to admit, sometimes the roughest and least appealing design can be incredibly successful.</p>
<h2>YUGEN subtly profound</h2>
<p>Yugen is suggesting hidden layers of meaning in a simple way.</p>
<p>Designing subtly is a dificult task. Some information screams to be brought to the fore while others do not. The idea here is to allow a layout to bring out that which is needed in a way which isn&#8217;t overly direct and distracting. Allowing the user to explore and learn on his own can be a great way to give them the information they need.</p>
<h2>DATSUZOKU unworldly</h2>
<p>Transcending the conventional and the traditional.</p>
<p>It&#8217;s easy to fall into the trap of going with what works. Standards, guidelines, grids, rules - these things will help you get to a certain level of design but beyond that you have to learn to listen to your intuitive self and create new paths which others have not walked before. It&#8217;s OK to be different and try new things. It&#8217;s OK to make mistakes.</p>
<p>Be different. Take risks.</p>
<h2>SEIJAKU calm</h2>
<p>This is probably the hardest thing for me. Being calm, keeping it together even under stress.</p>
<p>The simple fact of the matter is that I have a fun job and I am incredibly grateful for the opportunity to do what I do. I take great strength from that. It&#8217;s easy to get lost in the work, the pressure and the high expectations that clients can have. It is important to sometimes take a step back and have a little perspective.</p>
<h2>Finishing</h2>
<p>This really isn&#8217;t stuff that I know that much about. Writing this has been as much an exercise for me as anything else.</p>
<p>Before I go, I wanted to give a big thanks to AENUI for his <a href="http://aenui.com/design/wabi-sabi-zen-aesthetic-principles/">great site</a>.</p>
<p>Thanks for reading. As always, feedback is very welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-vent.com/blog/?feed=rss2&amp;p=85</wfw:commentRss>
		</item>
		<item>
		<title>Iphone UI and Usability Experience Series Introduction</title>
		<link>http://www.v-vent.com/blog/?p=80</link>
		<comments>http://www.v-vent.com/blog/?p=80#comments</comments>
		<pubDate>Tue, 07 Apr 2009 06:15:25 +0000</pubDate>
		<dc:creator>amnon</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[Design]]></category>

		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.v-vent.com/blog/?p=80</guid>
		<description><![CDATA[Iphone UI and Usability
Introduction:
This is the first installment in my series about iPhone User Interface Design and Usability.
The iPhone has brought a revolution in the way modern smart phones work. The iPhone interface is seen as defining what a cool UI should look and feel like these days. There is no question that the iPhone [...]]]></description>
			<content:encoded><![CDATA[<p>Iphone UI and Usability</p>
<h2>Introduction:</h2>
<p>This is the first installment in my series about iPhone User Interface Design and Usability.<span id="more-80"></span></p>
<p>The iPhone has brought a revolution in the way modern smart phones work. The iPhone interface is seen as defining what a cool UI should look and feel like these days. There is no question that the iPhone has brough about a major improvement in usability and user experience on the mobile platform. But not all is perfect about this UI.</p>
<p>In this series I’ll be looking at various aspects of the iPhone UI and tell you what I think about them. Sometimes I will bitch about a missing feature, other times I’ll look at typography, and other times I’ll look at technical aspects of UI design implementation on the iPhone</p>
<p>So on to the first Installment:</p>
<p><img class="alignnone size-full wp-image-111" title="mouse2" src="http://www.v-vent.com/blog/wp-content/uploads/2009/04/mouse2.jpg" alt="mouse2" width="435" height="182" /></p>
<h2>Do we really need to Implement MouseDown Effects on the iPhone?</h2>
<p>Anyone designing and implementing GUI interfaces in the last 15 years knows that there are a number of functional states for buttons that have a related visual state. An important example is the MouseDown functionality that allows the user to press and hold on a button. This is especially important in direct manipulation interfaces where you press and hold an object and then move the cursor- in this state the object that has been pressed moves with the cursor and a MouseUp allows you to release the opbject and leave it at that spot. Another use of MouseDown is to give a user visual feedback that they are in fact pressing on an object and helps in lowering mistakes in clicking objects.</p>
<p>Enter the iPhone with its wonderful direct finger interaction. The iPhone supports MouseDown functionality, but in certain cases I think that it is superflous. I raise the issue because of a discussion I had yesterday with one of our designers. He was spending a lot of time with one of our developers in getting a MouseDown implementation to work like he wanted it to work. In the big screen world with Mouse and Cursor I agree that such attention to detail is important. However, my feeling is that on the iPhone there are cases where MouseDown interaction is either not really important to implement, or if implemented, can be done in a simple way.</p>
<p>Why do I say such appocryphal things and what are the cases in which this is relevant? Well- since on the iphone there is no cursor, except for our fingers, then the rule of thumb (sic.) is simple: any target object that is smaller than a finger tip (and therefore when touched/pressed will not be visible to the user) does not really need a mouseDown state. In this case it is nice to have- but is not a Must have.</p>
<p>Opinions?</p>
<p>Next time: when should an action be triggered?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-vent.com/blog/?feed=rss2&amp;p=80</wfw:commentRss>
		</item>
		<item>
		<title>A Generic Color Picker For The iPhone</title>
		<link>http://www.v-vent.com/blog/?p=27</link>
		<comments>http://www.v-vent.com/blog/?p=27#comments</comments>
		<pubDate>Wed, 01 Apr 2009 16:15:54 +0000</pubDate>
		<dc:creator>gilly</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Blog]]></category>

		<category><![CDATA[Daily Routine]]></category>

		<category><![CDATA[Legal]]></category>

		<category><![CDATA[Open Code]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Tips]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[Cocoa]]></category>

		<category><![CDATA[development]]></category>

		<category><![CDATA[Objective C]]></category>

		<category><![CDATA[Touch]]></category>

		<guid isPermaLink="false">http://www.v-vent.com/blog/?p=27</guid>
		<description><![CDATA[We recently developed a generic color picker that can be plugged in to any application.

More than once while designing our applications someone said the sentence, "Ok, now we need a color picker."' More than once means we need a generic, reusable bit of code.]]></description>
			<content:encoded><![CDATA[<p>We recently developed a generic color picker that can be plugged in to any application.</p>
<p>More than once while designing our applications someone said the sentence, &#8220;Ok, now we need a color picker.&#8221;&#8216; More than once means we need a generic, reusable bit of code.</p>
<h2><span id="more-27"></span>Decisions, decisions</h2>
<p>The first thing we needed to decide was which method we wanted to use for selecting a color.</p>
<h2><img class="alignnone size-full wp-image-113" title="color" src="http://www.v-vent.com/blog/wp-content/uploads/2009/04/color.jpg" alt="color" width="435" height="182" /></h2>
<h3>1. A predefined set of colors that the user selects from</h3>
<p><strong>Pros :</strong> This would be very easy to program. We&#8217;d show the user a predefined set of colors, and there are several ways we could do this programmaticly. Each color would be represented by a UIColor , and we would return that color whenever necessary.<strong></strong></p>
<p><strong>Cons : </strong>Giving the user enough options while at the same time keeping a clean and good looking design proved problematic. Also, it seems less fun to limit the user to an arbitrary set of colors.</p>
<p><strong>Decision : </strong>We dropped this option quite quickly since it was limited from the user&#8217;s point of view.</p>
<h3><strong>2.RGB sliders </strong></h3>
<p><strong>Pros</strong> : Allows the user freedom in color selection. Very easy to code. All you need is a UIView to show the selection, and three UISliders - one for Red, one for Blue and one for Green. Then, you&#8217;d need to hook up a function to value changes in each slider that would create a color from the RGB value. To create a color from RGB values, use the</p>

<div class="wp_syntax"><div class="code"><pre class="objectivec" style="font-family:monospace;">UIColor colorWithRed:(CGFloat)red  green: (CGFloat)green  blue:(CGFloat)blue alpha:(CGFloat)alpha</pre></div></div>

<p><strong>Cons : </strong>We felt that the mixing red, green and blue is very much a &#8216;computery&#8217; concept. For people who don&#8217;t work with design or computers it feels akward and is very difficult to visualize.</p>
<p><strong>Decision : </strong>While this is an option that we&#8217;ve seen in several places, we felt that it wasn&#8217;t a good fit for our applications, and would not be intuitive for the average user.</p>
<h3><strong>3. HSL (Hue Saturation Light</strong>)</h3>
<p><strong>Pros: </strong>Intuitive for users. Clear selection of colors from a palette.</p>
<p><strong>Cons: </strong>More difficult to code than the RGB method.</p>
<p><strong>Decision : </strong>After looking at regular desktop applications like Photoshop, We decided to use Hue, Saturation and brightness to select the colors. We felt that this would best communicate the color selection to the user.</p>
<p>After deciding on the method, we decided which parts of the selector would remain the same in every application , and which would be interchangable to fit the look and feel of each application.</p>
<p>We decided in the end that only the background mask would be something that can be changed.</p>
<p>These decisions were all made in cooperation with Rami, the designer.</p>
<p>Basically, we have something that looks like this :</p>
<p><img class="alignnone size-full wp-image-59" title="hue_colorselect__toshow" src="http://www.v-vent.com/blog/wp-content/uploads/2009/04/hue_colorselect__toshow.png" alt="hue_colorselect__toshow" width="320" height="480" /></p>
<p><strong>Explanation:</strong> When using HSL for selecting colors, Hue and Saturation are selected with the middle matrix of color, and brightness is selected using the brightness bar below. The brightness bar shows a gradient of the color from white to black, where brightness moves from 0 to 255 - white to black.</p>
<p>Now, we&#8217;re ready to code it.</p>
<h2><strong>Programming The Color Picker</strong></h2>
<p>The Color Picker code will fit into the modal view controller pattern (as do all things cocoa touch). Basically what we&#8217;ll need is a view - henceforth the ColorPickerView, and a view controller - the ColorPickerViewController. The ColorPickerView will be formed by a nib file for the design, and a corresponding ColorPicker.h with the code.</p>
<p>When developing these apps, one of the questions you&#8217;ll often find yourself asking (or at least I did) is: Do I need the code file? Or is the nib enough? In this instance, I&#8217;ll be needing to recognize touches, so I definitely need the added code files. There are many other considerations for whether to make just a nib file, just a code file, or both, when making a new view for your app.</p>
<p>OK - So we have a <em>ColorView.xib</em>, <em>ColorView.h</em>, <em>ColorView.m</em> and <em>ColorViewController.h</em>, <em>ColorViewController.m</em></p>
<p>This set will be easy to put into any project, but for development stage, I kept it in its own project, so I wouldn&#8217;t get stuck with other programs&#8217; bugs.</p>
<h3>ColorView.xib</h3>
<p>This is where I set up the design - how things will look over all. The xib has in it :</p>
<ul>
<li><strong>Current Color</strong> - This is a UIView* whose backround color will change according to the selection being made. Obviously, it must be an IBOutlet, so that this color can be changed programatically.</li>
<li><strong>Images</strong> - there are two images here - the crosshair for selecting a color within the matrix, and the bar for selecting the brightness. Both of these images will be animated and moving around the screen. Exciting ! These images can also be exchanged to fit the designs of different applications.</li>
<li><strong>Backround</strong> - A UIImageView * the size of the screen. This is set as an IBOutlet, so that it is generic and I can change it from program to program. The background image itself is a mask with clear holes for the color selection matrix, the color display, and the gradient view.</li>
</ul>
<h3>ColorView.h</h3>
<p>This is where I&#8217;ll describe the programmatic additions that I made to the view.</p>
<ul>
<li><strong>Color Matrix - </strong>I added the image of the ColorMatrix programatically. This is because I&#8217;m interested in being modular. The background mask that I put in the nib file can have any kind of sizes and frames, and the when setting up the picker, you set the value for the size of the color matrix image. For example, in one color picker, you might want to add the color in hex or RGB values. There&#8217;s not a lot of room on this screen for that, so an easy way to make room is to make the color matrix smaller. So by adding the color matrix programatically, I left the size of it modular. The size of the frame is something that we&#8217;ll use when implementing the touches.</li>
<li><strong>Gradient View</strong> - Like I stated earlier, when you change the hue and saturation using the color matrix, the brightness bar show a gradient of that hue and saturation ranging from brightness = 0 to brightness = 255. This gradient was acheived using built in Quartz methods. I&#8217;ll get to that in a minute</li>
<li><strong>Touches</strong> - All of the touch implementation is taken care of in the code for this view.</li>
<li><strong>Calculations</strong> - Calculations for all of the colors are also made from the code for this view. This might have been pushed out to the viewController for purist Modal View Controller, but I think we can forgive it staying here.</li>
</ul>
<h3><strong>Gradient View</strong></h3>
<p>The gradient view is a separate class with a 2DQuartz implementation for gradient. When the hue/saturation values change, the gradient view is updated according to the new hue/saturation. To create a gradient, you need to decide on the source and dest colors - I chose White to Black. You can also select colors to go through. I chose the hue and saturation from the main view with the middle of the brightness scale. This gave me a pretty accurate gradient.</p>
<h2><strong>The Interesting parts of code </strong></h2>
<h3>Setting up the gradient with the right colors<strong><br />
</strong></h3>

<div class="wp_syntax"><div class="code"><pre class="objectivec" style="font-family:monospace;">- (void) setupGradient {
&nbsp;
const CGFloat *c = CGColorGetComponents(theColor); CGFloat colors[] = { 255.0/255.0,255.0/255.0,255.0/255.0,1.0,
//WHITE c[0],c[1],c[2],1.00,
//THE COLOR 0.0/255.0,0.0/255.0,0.0/255.0,1.0, //BLACK };
&nbsp;
CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
&nbsp;
CGGradientRef   gradient = CGGradientCreateWithColorComponents(rgb, colors, NULL, sizeof(colors)/(sizeof(colors[0])*4)); CGColorSpaceRelease(rgb);
&nbsp;
}
&nbsp;
Draw Rect
&nbsp;
- (void)drawRect:(CGRect)rect { // Drawing code CGContextRef context = UIGraphicsGetCurrentContext();
&nbsp;
// The clipping rects we plan to use, which also defines the locations of each gradient CGRect clips[] = { CGRectMake(0.0, 0.0, 300.0, 60.0), //self.frame, };
&nbsp;
//The Gradient Will be drawn along a line parallel to the start -&amp;gt; end coordinates you give it. This way you can achieve any //linear gradient start =   CGPointMake(0,0); end = CGPointMake(300,0); CGContextDrawLinearGradient(context, gradient, start, end, 0); CGContextRestoreGState(context); CGContextSaveGState(context); }</pre></div></div>

<p>And that&#8217;s it for the Gradient View!!</p>
<h3>Touches</h3>
<p>For the final trick, you want to give the user control over the crosshair and lightness bar. I did this referencing the &#8216;Touches&#8217; Source code example from Apple.</p>
<p>Remember - we have two regions of interest -</p>
<ul>
<li>Is the user touching the color matrix ? If so - move the crosshair and change the hue + saturation, and gradient bar, and the window containing the current color.</li>
<li>Is the user touching the brightness bar ? If so - move the selection bar, and change the brightness value, and the window containing the current color.</li>
<li>Otherwise - do nothing.</li>
</ul>
<p>So the user can touch anywhere on the screen, and we read all of it, but only react to certain areas.</p>
<p>There are three functions for touches - touchesBegan, touchesMoved, and touchesEnded. I used only began and moved.</p>

<div class="wp_syntax"><div class="code"><pre class="objectivec" style="font-family:monospace;">// Handles the start of a touch
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
&nbsp;
{
&nbsp;
UITouch *touch = [touches anyObject];
[self dispatchTouchEvent:[touch locationInView:self]];
}
&nbsp;
// Handles the continuation of a touch.
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
[self dispatchTouchEvent:[touch locationInView:self]];
}
&nbsp;
-(void) dispatchTouchEvent:(CGPoint)position
{
if (CGRectContainsPoint(colorMatrixFrame,position))
{
[self animateView:crossHairs toPosition: position];
[self updateHueSatWithMovement:position];
&nbsp;
}
else if (CGRectContainsPoint(gradientView.frame, position))
{
CGPoint newPos = CGPointMake(position.x,kBrightBarYCenter);
[self animateView:brightnessBar toPosition: newPos];
[self updateBrightnessWithMovement:position];
}
}</pre></div></div>

<p>The animate view method just takes care of changing the center of each of the images so that its in the new place.</p>
<p>That&#8217;s almost it ! There&#8217;s only one more thing <img src='http://www.v-vent.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h2><strong>Calculations</strong></h2>
<p>1. Color Matrix - Hue and Saturation are values between 0 and 1. To calculate, we need to take use  :</p>

<div class="wp_syntax"><div class="code"><pre class="objectivec" style="font-family:monospace;">Hue = (position.x-kXAxisOffset)/kMatrixWidth;
Saturation = 1.0 -  (position.y-kYAxisOffset)/kMatrixHeight;</pre></div></div>

<p>2. Brightness -</p>

<div class="wp_syntax"><div class="code"><pre class="objectivec" style="font-family:monospace;">Brightness = 1.0-(position.x/gradientView.frame.size.width) + kBrightnessEpsilon;</pre></div></div>

<p>And that&#8217;s it! You now have a color picker.</p>
<h2><strong>Congratulations <img src='http://www.v-vent.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </strong></h2>
<p>Questions and comments are very welcome! Thanks for reading.</p>
<h2>Update with source code link</h2>
<p>Thank you all for your patience. We have released hue under the BSD license. You can get the <a href="http://www.v-vent.com/source/hue/vevent_hue_source.zip">source from here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-vent.com/blog/?feed=rss2&amp;p=27</wfw:commentRss>
		</item>
		<item>
		<title>Application design flickr set</title>
		<link>http://www.v-vent.com/blog/?p=25</link>
		<comments>http://www.v-vent.com/blog/?p=25#comments</comments>
		<pubDate>Sun, 29 Mar 2009 09:21:42 +0000</pubDate>
		<dc:creator>ramijames</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.v-vent.com/blog/?p=25</guid>
		<description><![CDATA[There is now a vevent flickr set with all our app designs.
So you can see screenshots of what we are working on here.
]]></description>
			<content:encoded><![CDATA[<p>There is now a vevent flickr set with all our app designs.</p>
<p>So you can see screenshots of what we are working on <a href="http://www.flickr.com/photos/ramijames/sets/72157616063876528/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-vent.com/blog/?feed=rss2&amp;p=25</wfw:commentRss>
		</item>
		<item>
		<title>Another Hello</title>
		<link>http://www.v-vent.com/blog/?p=22</link>
		<comments>http://www.v-vent.com/blog/?p=22#comments</comments>
		<pubDate>Sat, 28 Mar 2009 01:31:23 +0000</pubDate>
		<dc:creator>gilly</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.v-vent.com/blog/?p=22</guid>
		<description><![CDATA[Hello world! Can you tell I&#8217;m the programmer yet ?
I wanted to add to the introduction previously posted. I&#8217;m Gilly, the more technical programmy part of the Vevent team.
I will be putting up posts with some iPhone programming tips , as well as problems I&#8217;ve come accross with (hopefully) solutions.
I have never had a Blog [...]]]></description>
			<content:encoded><![CDATA[<p>Hello world! Can you tell I&#8217;m the programmer yet ?</p>
<p>I wanted to add to the introduction previously posted. I&#8217;m Gilly, the more technical programmy part of the Vevent team.</p>
<p>I will be putting up posts with some iPhone programming tips , as well as problems I&#8217;ve come accross with (hopefully) solutions.</p>
<p>I have never had a Blog before, so I&#8217;m practicing exercising my new voice.</p>
<p>I&#8217;ve been learning and developing for the iPhone for about 6 months now. I feel like I&#8217;m getting there, but there is still so much to learn! As with any development these days, one of the challenges in learning the platform is not lack of information, but an abundance of it.  It takes time to go through the mountains of forums, blogs, documentation, tutorials, etc. It is very easy to get lost. I find that its good to take some time and find resources that you trust and then keep coming back to them.</p>
<p>Also, its amazing how addicted to Google I&#8217;ve become. When approached with a new problem, I sometimes find that I Google the question before I try to think of an answer. This is a terrible habit that I&#8217;m trying to break. Many times, spending ten minutes with a pen and a piece of paper will beat two hours of searching and clicking and reading.</p>
<p>So, I&#8217;ve learned a lot over the last few months. Mostly about how exciting it is to be involved in developing for this platform.</p>
<p>I guess that concludes my somewhat odd introduction to myself.</p>
<p>I&#8217;ll be posting a code sample over the next couple of days, I want it to be nice and clean and organized before I share it with the world <img src='http://www.v-vent.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&#8211; Gilly</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-vent.com/blog/?feed=rss2&amp;p=22</wfw:commentRss>
		</item>
		<item>
		<title>The Dirty Little Clause in the iPhone App Dev Contract</title>
		<link>http://www.v-vent.com/blog/?p=20</link>
		<comments>http://www.v-vent.com/blog/?p=20#comments</comments>
		<pubDate>Fri, 27 Mar 2009 14:39:13 +0000</pubDate>
		<dc:creator>ramijames</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Legal]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[clause]]></category>

		<category><![CDATA[contract]]></category>

		<category><![CDATA[don't be evil]]></category>

		<guid isPermaLink="false">http://www.v-vent.com/blog/?p=20</guid>
		<description><![CDATA[There is a nasty little clause in the updated version of the iPhone developer contract.
The contract with apple, according to this article from The Washington Post, states:
&#8220;In the event that Apple (NSDQ: AAPL) receives any notice or claim from any end-user that: (i) the end-user wishes to cancel its license to any of the Licensed [...]]]></description>
			<content:encoded><![CDATA[<p>There is a nasty little clause in the updated version of the iPhone developer contract.</p>
<p>The contract with apple, according to <a href="http://www.washingtonpost.com/wp-dyn/content/article/2009/03/26/AR2009032601623.html">this article</a> from The Washington Post, states:</p>
<blockquote><p>&#8220;In the event that Apple (<a href="http://finance.paidcontent.org/paidcontent?Page=QUOTE&amp;Ticker=AAPL">NSDQ: AAPL</a>) receives any notice or claim from any end-user that: (i) the end-user wishes to cancel its license to any of the Licensed Applications within (90) days of the date of download of that Licensed Application by that end-user; or (ii) a Licensed Application fails to conform to Your Specifications or Your Product warranty or the requirements of any applicable law, Apple may refund to the end-user the full amount of the price paid by the end-user for that Licensed Application. In the event that Apple refunds any such price to an end-user, You shall reimburse, or grant Apple a credit for, an amount equal to the price for that Licensed Application. Apple will have the right to retain its commission on the sale of that Licensed Application, notwithstanding the refund of the price to the end-user.&#8221;</p></blockquote>
<p>In short, it means that users can get a refund for their apps up to 90 days after purchasing a license. The user gets 100% back, but Apple reserves the right to keep their commission and demands the 100% from the developer, effectively giving them the shaft. This has the potential to bankrupt small firms, which make up the vast majority of Apple iPhone developers.</p>
<p>As one of those developers, it is my first and foremost desire to create and sell high-quality applications. I want my end users to be happy and satisfied with the app they buy from me. I feel that this is a joint venture of sorts with Apple and they should value us small-time developers for the products we provide. Keeping commission like this is just down-right greedy.</p>
<p>I think this needs to be talked about far and wide until Apple takes it out of the contract. The question, I suppose, is whether the risk outweighs the potential gains and comfort the platform Apple provides. For now, it is on Apple&#8217;s side and we will keep developing for the iPhone happily and productively. But you can only abuse your developer&#8217;s trust for so long before they back out and go somewhere else.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-vent.com/blog/?feed=rss2&amp;p=20</wfw:commentRss>
		</item>
		<item>
		<title>Methodology of Working from Home</title>
		<link>http://www.v-vent.com/blog/?p=15</link>
		<comments>http://www.v-vent.com/blog/?p=15#comments</comments>
		<pubDate>Fri, 27 Mar 2009 14:08:21 +0000</pubDate>
		<dc:creator>ramijames</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[Daily Routine]]></category>

		<category><![CDATA[Organization]]></category>

		<category><![CDATA[Tips]]></category>

		<category><![CDATA[help]]></category>

		<category><![CDATA[home]]></category>

		<category><![CDATA[how to]]></category>

		<category><![CDATA[tricks]]></category>

		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://www.v-vent.com/blog/?p=15</guid>
		<description><![CDATA[Some general ideas I&#8217;ve had about how to go about working at home efficiently and effectively.
I suppose it is important that I stress how fortunate that I feel that I get to do the kind of work that I do and moreso that I get to do it from the comfort of my own home. [...]]]></description>
			<content:encoded><![CDATA[<p>Some general ideas I&#8217;ve had about how to go about working at home efficiently and effectively.</p>
<p>I suppose it is important that I stress how fortunate that I feel that I get to do the kind of work that I do and moreso that I get to do it from the comfort of my own home. Design work is a creative process and in the past when I&#8217;ve worked in hitech or in a studio I&#8217;ve consistently felt boxed in and unable to function to what I feel would be my highest level. That can be a very frustrating feeling.</p>
<p>For me, the solution has been to work from home. It hasn&#8217;t always been easy and over the last two or three years that I have been doing it, I&#8217;ve developed some methods, some tips and some general ideas that I&#8217;d like to share. These apply to both the freelance individual and those that work from home either full or part time.</p>
<p><img class="alignnone size-full wp-image-106" title="home" src="http://www.v-vent.com/blog/wp-content/uploads/2009/03/home.jpg" alt="home" width="435" height="182" /></p>
<h2>Organize your Time</h2>
<p>I can&#8217;t stress enough how important it is to get yourself organized. You will find it incredibly easy to constantly find other things to do besides working. Cooking, cleaning, reading, Facebook, Reddit, the beach, friends and family will distract you and keep you from focusing on the tasks at hand.</p>
<p><strong>Solution:</strong> Make lists, set personal deadlines and stick by them. Make sure that you have a certain time that you start working and a certain time that you stop. Stick to it!</p>
<h2>Set Limits</h2>
<p>For workaholics, working from home can be a dangerous beast. You have so much to do (if you&#8217;re lucky!) and knowing when to stop or back off for a bit just doesn&#8217;t happen when it should. The ultimate danger here is one of burn-out. It is easier to do than you think. Frustration, anger, depression are all side-effects and honestly, who wants that? <img src='http://www.v-vent.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Solution:</strong> Stop working after a certain hour. Put weekends off-limits. Take vacation. These all sound like easy things to do, but once the work starts up it can be very difficult to actually do them. Exert your will and shape your life into one which allows for some down time.</p>
<h2>Push!</h2>
<p>I have a simple rule: if it takes less than fifteen minutes, it gets done now. Having a large list of little things can be overwhelming and every little bite-sized piece of work that you can knock off will really make the difference in the long-run, especially with complex projects. It also helps with making sure that things don&#8217;t fall between the cracks.</p>
<p><strong>Solution:</strong> Do it now if you can!</p>
<h2>Stay Connected and Online</h2>
<p>It sounds almost silly in this day and age of high connectivity, but working from home necessitates a good connection. Pay the little extra and get fast internet if you can get it. I am impatient by nature and hate waiting for downloads and uploads. I hate it even more when what I am trying to do gets bogged down by technical limitations. Keep your computer hardware working and up-to-date as much as fits reasonably within your budget.</p>
<h2>Stay Focused</h2>
<p>It&#8217;s very easy to go off-track when you work on your own. I think that by nature, those that thrive in a work-at-home environment are the ones who have an independent streak. This doesn&#8217;t mean that you can go your own way as much as you like, for better or for worse. You will have to build your own framework and stay on the ball as much as you can.</p>
<p><strong>Solution:</strong> Set daily tasks and do your most to achieve them. I like to use a little todo list application to organize what I will be doing each day. This leads me into my last little piece of advice:</p>
<h2>Break your Projects Up</h2>
<p>No project is really just one monolithic piece. They are composed of many little projects which fit together as a whole. In my case, as a designer, I can break each project up into design phases &#8212; creating a brief describing the functionality, the design phase, the implementation, etc. Each of these tasks themselves can be further divided into smaller ones.</p>
<p><strong>Solution:</strong> Make many little tasks out of a bigger project. This helps immensely with organizing yourself, avoiding feeling over-whelmed and most importantly for me: with a feeling of daily accomplishment.</p>
<p>That&#8217;s about it. Working from home is a wonderful thing and if you can, I highly recommend it! I&#8217;d love to hear your ideas as I&#8217;m always looking for ways to make my days more fun and more efficient.</p>
<p>- Rami James</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-vent.com/blog/?feed=rss2&amp;p=15</wfw:commentRss>
		</item>
		<item>
		<title>Getting Started</title>
		<link>http://www.v-vent.com/blog/?p=8</link>
		<comments>http://www.v-vent.com/blog/?p=8#comments</comments>
		<pubDate>Mon, 23 Mar 2009 08:20:31 +0000</pubDate>
		<dc:creator>ramijames</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[Daily Routine]]></category>

		<category><![CDATA[Organization]]></category>

		<category><![CDATA[about vevent]]></category>

		<category><![CDATA[objectives]]></category>

		<category><![CDATA[rami james]]></category>

		<guid isPermaLink="false">http://www.v-vent.com/blog/?p=8</guid>
		<description><![CDATA[Hi to everyone out there!
I just wanted to take this opportunity to introduce Vevent, talk a bit about the objectives of this blog and tell a little about myself.
About Vevent
Not to repeat myself too much, Vevent is a small development house for iPhone apps. We sit in beautiful Tel Aviv, in Israel. Working from home, [...]]]></description>
			<content:encoded><![CDATA[<p>Hi to everyone out there!</p>
<p>I just wanted to take this opportunity to introduce Vevent, talk a bit about the objectives of this blog and tell a little about myself.</p>
<p><strong>About Vevent</strong></p>
<p>Not to repeat myself too much, Vevent is a small development house for iPhone apps. We sit in beautiful Tel Aviv, in Israel. Working from home, we use the internet, good music and too much coffee to drive this ambitious project forward.</p>
<p>Some of the apps which we have created include MimoPlus, <a href="http://akimba.v-vent.com/">Akimba</a>, Momints and Eventcorder. Our newest addition to this family of apps is a very fun little toy app called <a href="http://lush.v-vent.com">Lush</a> which allows you to recreate the effect of making musical sounds on the rim of a glass.</p>
<p><strong>What&#8217;s this all about anyway?</strong></p>
<p>This blog is really something new for us. None of us have ever really kept up an online and public face and we are all really excited about it. We have two main objectives for this:</p>
<ol>
<li>Create an avenue where we can talk to our users, get feedback, let them know what we are thinking, etc.</li>
<li>Be a part of the larger iPhone dev community.</li>
</ol>
<p>We think that these are righteous causes ( <img src='http://www.v-vent.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) and can&#8217;t wait to hear back from all of you out there.</p>
<p><strong>About Rami James</strong></p>
<p>As the author of this first post, I&#8217;d like to take the opportunity here to say a little about myself, my prior experience and what I do for Vevent.</p>
<p>I&#8217;ve been working as a designer here in Tel Aviv for the better part of the last ten years. I&#8217;m 29 years old, have two cats and pretty much live for the work that I do. I really like my job! <img src='http://www.v-vent.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> You can see some of the work I&#8217;ve done at my company&#8217;s website, <a href="http://www.uboodu.com">Uboodu.com</a>.</p>
<p>With Vevent, I see a great chance to be very creative and to create unique user-interface experiences. It should be a fun ride.</p>
<p>I intend to write about my experiences both as a designer for the iPhone, which I haven&#8217;t seen much input about on the internet, and my general experience working from home, which I&#8217;ve been doing for the better part of the last two or three years. I feel I have a lot to say and would love to share.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.v-vent.com/blog/?feed=rss2&amp;p=8</wfw:commentRss>
		</item>
	</channel>
</rss>
