<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6401482771676364372</id><updated>2011-11-27T19:16:57.545-05:00</updated><category term='ActionScript 3.0'/><category term='Flash'/><category term='TDD'/><category term='Resources'/><category term='flex 3'/><category term='tips'/><category term='ASDoc'/><category term='CSharp DotNet'/><category term='Tools'/><category term='stylemarks'/><category term='web development'/><category term='projects'/><category term='requirements'/><category term='Java'/><category term='Flex 2'/><category term='midland'/><category term='web design'/><category term='JavaFX'/><title type='text'>Qwick Thoughts</title><subtitle type='html'>Java, C#, Flex, ActionScript, PHP, and Web Development
&lt;br&gt;
&lt;br&gt;
http://qwickthoughts.blogspot.com/</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-178377506677356206</id><published>2010-01-28T12:02:00.003-05:00</published><updated>2010-01-28T13:47:22.936-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='requirements'/><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>3 Tips for Getting that Large Project Going</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the past, I have had a hard time getting large projects off the ground.  I kept thinking about all of the technical details, which libraries and languages I will use, and how successful the project will be once it is finished.&lt;br /&gt;&lt;br /&gt;The problem is, I never started on the work.  Every time I got 20 minutes or an hour to work on it, all I could think about were these technical details.&lt;br /&gt;&lt;br /&gt;I have long since learned from my mistakes and have found 3 general processes for getting large programming projects off the ground.  If you're stuck in design mode, try giving these methods a shot:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Method 1 - Requirements Are The Key&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Write only the generic requirements on a single sheet, in a binder on its own, or in a single document.&lt;br /&gt;&lt;br /&gt;Keep the requirements short and sweet.&lt;br /&gt;&lt;br /&gt;Keep all technical notes that you just can't stop thinking about elsewhere - they are not important in this phase.  If possible, don't write them down at all.  You will think of them later (or better ideas) and you don't want to force yourself into the wrong library later.&lt;br /&gt;&lt;br /&gt;Think about how you will use this application/library, what will be difficult, what will be beneficial (again staying away from technical details including the language and library).&lt;br /&gt;&lt;br /&gt;Begin writing code or manipulating wire frames as if you are using your newly completed project.  Keep this "test code" for reference but don't make it the golden rule.&lt;br /&gt;&lt;br /&gt;Collect flaws and focus areas and add them to a "things to consider" sheet.&lt;br /&gt;&lt;br /&gt;Start writing simple implementation code starting at the easiest thing first (very similar to TDD but without the tests).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Success&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have used this method for some of my larger research type projects.  It was very easy to adopt.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Failure&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Three projects using this method never made it past this phase due to marketability and usability factors that were exposed.  They seemed like fun research projects but were not practical so they remained a paper-only experiment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Method 2 - Spike It&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Maybe the best thing to do is a quick Spike (term from XP).  Simply start writing a bunch of code you won't keep but will learn from.  You get a feel for the project and end up writing version 2 first.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Success&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have used this successfully when picking up a modified version of the MVP pattern and some complex UI code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Failure&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have kept the code written using this method due to time constraints.  It has bitten me and was rewritten at a later date.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Warning&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This works best for new requirements to existing systems.  New projects also benefit as long as you are disciplined enough to toss the spike when you're finished with it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Method 3 - TDD It To Death&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This method is the hardest to master but one of the most powerful.  Using Test Driven Development to work top-down (never TDD up) is very fun and productive.&lt;br /&gt;&lt;br /&gt;First you starting at what you want to be the outcome (your initial requirements).  Continue testing down until it is the implementation.&lt;br /&gt;&lt;br /&gt;This takes practice especially when writing and maintaining the requirements list the TDD way.  Refactoring and writing as little as possible while still adding value is also difficult when you've been writing legacy code for so long.&lt;br /&gt;&lt;br /&gt;This method helps isolate dependencies so you can replace them easily if requirements change down the road.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Success&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have used this for a simple C# device interface project and a string template class.  Both were to help learn TDD and both were never 100% completed.  These projects had a lot of power, worked very well, and the code looked like a work of art.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Failure&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This has failed just as many times as it succeeded for me.  The reason was simply not knowing TDD, how to write requirements, and keeping myself from writing more code than I need to.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Start doing something NOW!  Don't wait, think more, put it off... start doing something.  Even failures are learning experiences.  You cannot succeed if you don't try.&lt;br /&gt;&lt;br /&gt;Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-178377506677356206?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/178377506677356206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=178377506677356206' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/178377506677356206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/178377506677356206'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2010/01/3-tips-for-getting-that-large-project.html' title='3 Tips for Getting that Large Project Going'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-8824983365951596582</id><published>2010-01-15T09:25:00.005-05:00</published><updated>2010-01-16T00:09:17.098-05:00</updated><title type='text'>Test Driven Development in One Page or Less</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I was writing a co-worker to explain TDD.  It ended up being a short and sweet guide to test driven development that I wish I had when learning TDD so I decided to share it.  This is barely a starting point for TDD.  I suggest reading "Test Driven: Practical TDD and Acceptance TDD for Java Developers" (even if you don't write in Java).  &lt;a href="http://www.amazon.ca/Test-Driven-Practical-Acceptance-Developers/dp/1932394850/ref=sr_1_5?ie=UTF8&amp;amp;s=books&amp;amp;qid=1263565728&amp;amp;sr=1-5"&gt;Amazon.ca link here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you would like a sample project for each step including tests, please leave a comment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Development Environment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Refactoring support is crucial because you do it so often with TDD.  When developing with Flex Builder (no refactoring other than rename), it was very painful and I caught myself skipping steps.&lt;br /&gt;&lt;br /&gt;I prefer to use Visual Studio 2008 Professional (C#) + Resharper + NUnit.&lt;br /&gt;&lt;br /&gt;NetBeans + JUnit works well and it's free.&lt;br /&gt;&lt;br /&gt;I'm sure IntelliJ Idea is also a nice environment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;TDD In One Page&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You write out requirements in a certain way that makes producing tests  from the requirement very easy.  As you develop, you may think of new  requirements (what if I pass in null?) so you add these to your list but  don't start them right away unless they are the next best test to develop.&lt;/li&gt;&lt;li&gt;Then you start with your test class and write your first test function.&lt;/li&gt;&lt;li&gt;Then you instrument the class you intend to write before writing it.&lt;/li&gt;&lt;li&gt;Since your tests are very basic and you start with the easiest one  first, this should be short and sweet.&lt;/li&gt;&lt;li&gt;Then you write the class with an empty method (just to pass  compilation), and run your test.  It should &lt;span style="color: rgb(255, 0, 0);"&gt;fail &lt;/span&gt;because you're probably  not testing doing nothing.&lt;/li&gt;&lt;li&gt;Then adjust the class in the simplest way possible that adds value.   So for this one, we just want to make it pass.  Return the expected  value and viola!  You're &lt;span style="color: rgb(51, 204, 0);"&gt;green&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Now refactor (no need here - with this example)&lt;/li&gt;&lt;li&gt;Continue with your next test&lt;/li&gt;&lt;li&gt;This time you're looking at a different aspect of the same function.   If we were making a function that returned string length, the first test  may have been: when I pass in a null, I expect a NullPointerException.   Now we may be expecting a 0 when an empty string is passed in.&lt;/li&gt;&lt;li&gt;Run test &lt;span style="color: rgb(255, 0, 0);"&gt;(red - expected 0, got NullPointerException)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;So adjust the function to test for null &amp;amp; throw an exception,  otherwise return 0.  It still adds value because now we test for null.&lt;/li&gt;&lt;li&gt;Run tests &lt;span style="color: rgb(51, 204, 0);"&gt;(green)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Now refactor (no need here)&lt;/li&gt;&lt;li&gt;Add a test for a single character string.&lt;/li&gt;&lt;li&gt;Run tests &lt;span style="color: rgb(255, 0, 0);"&gt;(fails - expected 1, got 0)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;So adjust the function to return the string length rather than 0.&lt;/li&gt;&lt;li&gt;Run tests &lt;span style="color: rgb(51, 204, 0);"&gt;(green)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;As you can see, TDD is about Red, Green, Refactor, next test.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;So What Do We Have Here?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;At this point you have some great tests that stay with the project  forever and didn't take long to write.  Your code is clean  and easy to use.&lt;br /&gt;&lt;br /&gt;Without TDD, you may not have accounted for (or documented) what happens when you pass a null parameter into this function.  We all get busy and working fast causes oversights such as this... ones that you will pay for later.  *haunted house sounds*&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;More Complex Behaviors&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If your function is more complex than this one,  refactoring may bring pieces of the logic into private methods.  These private methods still have test coverage which is why TDD is better than Unit Testing after the  fact.&lt;br /&gt;&lt;br /&gt;It could also become a new class.  If so, you either pretend the  class already exists (create a stub for now) or create the new class as if it were now the starting point and  write tests for the new class first then integrate it back into your first class when finished.   I prefer the 2nd method.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Your Implementation (not test code)&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;// first pass&lt;br /&gt;int GetStringLength(string str)&lt;br /&gt;{&lt;br /&gt;throw new NullReferenceException();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// second pass&lt;br /&gt;int GetStringLength(string str)&lt;br /&gt;{&lt;br /&gt;if (str == null)&lt;br /&gt;{&lt;br /&gt;  throw new NullPointerException();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// third pass&lt;br /&gt;int GetStringLength(string str)&lt;br /&gt;{&lt;br /&gt;if (str == null)&lt;br /&gt;{&lt;br /&gt;  throw new NullPointerException();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;return str.Length;&lt;br /&gt;} &lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;When NOT to Unit Test&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;I may get some arguments here but TDD should be avoided when dealing with UI code.&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;  &lt;/span&gt;&lt;/span&gt;That said, Model, View, Presenter is a great pattern if you want to test the code directly behind the UI.  Testing the front-end is not very productive unless you absolutely have to.&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Finishing Up&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hope this helps at least one person figure out what TDD is all about.  I found it to be faster to develop with because I wasn't troubleshooting bugs, my code was always clean, and I knew exactly what to do next.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-8824983365951596582?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/8824983365951596582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=8824983365951596582' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/8824983365951596582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/8824983365951596582'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2010/01/test-driven-development-in-one-page-or.html' title='Test Driven Development in One Page or Less'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-6207713427790032455</id><published>2009-10-02T16:26:00.003-04:00</published><updated>2009-10-02T16:31:12.311-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='flex 3'/><title type='text'>Flex 3.4 Illegal override of FlexModuleFactory</title><content type='html'>&lt;b&gt;An important note for those switching from Flex 3.2 to Flex 3.4&lt;/b&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you have css styles which were compiled (likely in FlexBuilder), you must re-compile them with the Flex 3.4 SDK to get rid of this error.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Line Causing Error&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;StyleManager.loadStyleDeclarations("yourexternalstyles.swf");&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Exact Error Message&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;VerifyError: Error #1053: Illegal override of FlexModuleFactory in mx.core.FlexModuleFactory.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;at global$init()&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-6207713427790032455?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/6207713427790032455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=6207713427790032455' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/6207713427790032455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/6207713427790032455'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2009/10/flex-34-illegal-override-of.html' title='Flex 3.4 Illegal override of FlexModuleFactory'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-3496001947173933800</id><published>2009-07-07T10:32:00.009-04:00</published><updated>2009-07-07T11:33:04.652-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSharp DotNet'/><title type='text'>Help with "ref" and "out" in C# .NET 3.5 2008</title><content type='html'>&lt;div&gt;In this article, I will discuss the out keyword and the ref keyword in C Sharp.  These should be used sparingly but are handy in certain situations (especially when dealing with structs and sorting).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you do not understand pointers yet, I would advise steering clear of these.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Similarities to other languages&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Both "out" and "ref" mean pass the variable into the function "by reference".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you are a VB6 guru, this is similar to the "ByRef" keyword.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you're a C++ writer, you would use the address of operator "&amp;amp;" (if you did not already have a pointer to the object) and the function would have "*" following the data type.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is no such modifier in Java.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;What do they mean?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Out and ref extend the meaning of "by reference" by additionally stating that the variable must be initialized and will be modified (ref) or that it will be initialized inside of the function (out).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The default (no prefix to the parameter) is a "by value" copy of a structure/simple data type or a "read-only reference" of an object meaning you cannot change where it points to but you can change the variables inside of the class.  This is how Java works.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The "ref" Parameter Modifier&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;"ref" is by reference&lt;/li&gt;&lt;li&gt;It does not give a compiler error if it was not passed in the argument list for the function&lt;/li&gt;&lt;li&gt;It gives you the ability to modify the pointer of the original object&lt;/li&gt;&lt;li&gt;It is a great way to pass structures around in code because it does not make a "by value" copy of them&lt;/li&gt;&lt;li&gt;Parameter must be initialized before calling the function&lt;/li&gt;&lt;li&gt;"ref" prefix exists when defining the function and when calling it (making it obvious that this is a by reference call)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Example of By-Reference Parameters in C#&lt;/b&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;public void SimpleSwap(ref String string1, ref String string2)&lt;br /&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// store the pointer of string1&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;String temp = string1;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// set string1's pointer to point to string2&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;string1 = string2;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;// set string2's pointer to point to string1 (HINT: this is not pointing to string2)&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;string2 = temp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// ... code using this ...&lt;br /&gt;String string1 = "ABC";&lt;br /&gt;String string2 = "DEF";&lt;br /&gt;SimpleSwap(ref string1, ref string2);&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// string1 now points to "DEF"&lt;/div&gt;&lt;div&gt;// string2 now points to "ABC"&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The "out" Parameter Modifier&lt;/b&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;"out" is by reference&lt;/li&gt;&lt;li&gt;The parameter must be assigned or you get a compile error&lt;/li&gt;&lt;li&gt;A new object is created and returned (the variable you passed in points to the one created inside of the function)&lt;/li&gt;&lt;li&gt;"out" parameters do not need to be initialized&lt;/li&gt;&lt;li&gt;This is a great way to fill structures&lt;/li&gt;&lt;li&gt;It allows the language to safely handle multiple return values without the need for new objects/structs&lt;/li&gt;&lt;li&gt;"out" prefix exists when defining the function and when calling it (making it obvious that this variable will be initialized by the function call)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;Example of a Function Returning Multiple Values in C#&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;public void GetCoordinates(out int x, out int y)&lt;br /&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;x = 5;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;y = 9;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;// ... code using this ...&lt;br /&gt;int x;&lt;/div&gt;&lt;div&gt;int y;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;GetCoordinates(x,y);&lt;br /&gt;// x is now 5&lt;/div&gt;&lt;div&gt;// y is now 9&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Out and ref are great tools when you need them.  I hope this article helps you understand more about how they work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note: I use the terms "keyword", "modifier", and "prefix" when discussing ref and out.  The actual term (AFAIK) for these is "modifier".&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note: Code examples in this article are incomplete and will not compile.  If you require complete examples, please leave a comment and I will post them for everyone.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-3496001947173933800?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/3496001947173933800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=3496001947173933800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/3496001947173933800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/3496001947173933800'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2009/07/help-with-ref-and-out-in-c-net-35-2008.html' title='Help with &quot;ref&quot; and &quot;out&quot; in C# .NET 3.5 2008'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-4067188979988556674</id><published>2009-06-08T11:09:00.007-04:00</published><updated>2009-06-08T11:53:21.683-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaFX'/><title type='text'>Why can't I import javafx.ui.*?</title><content type='html'>&lt;span style="font-weight: bold;"&gt;The Answer for the Impatient (like me!)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Short answer for those who are impatient... see &lt;span style="font-style: italic;"&gt;javafx.scene.layout.*&lt;/span&gt; and use something like &lt;span style="font-style: italic;"&gt;HBox&lt;/span&gt;.  Reason you ask?  JavaFX 1.1 vs 1.2 had many non-backwards compatible changes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Background&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So I was trying out JavaFX with NetBeans 6.5.1 while I was waiting for a software build to complete.  I created a simple project then wanted to do a more advanced component layout.  I Googled "javafx positioning elements side by side" and noticed that many of the tutorials were importing &lt;span style="font-style: italic;"&gt;javafx.ui.*&lt;/span&gt; to get &lt;span style="font-style: italic;"&gt;BorderLayout&lt;/span&gt;.  Looks great!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Absolute Positioning&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Before I continue, here is my code which has a simple &lt;span style="font-style: italic;"&gt;Text &lt;/span&gt;and an&lt;span style="font-style: italic;"&gt; ImageView &lt;/span&gt;component:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;/*&lt;br /&gt;* Main.fx&lt;br /&gt;*&lt;br /&gt;* Created on Jun 8, 2009, 9:50:23 AM&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;package javafxapplication1;&lt;br /&gt;&lt;br /&gt;import javafx.stage.Stage;&lt;br /&gt;import javafx.scene.Scene;&lt;br /&gt;import javafx.scene.text.Font;&lt;br /&gt;import javafx.scene.image.Image;&lt;br /&gt;&lt;br /&gt;import javafx.scene.image.ImageView;&lt;br /&gt;import javafx.scene.text.Text;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @author graeme&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;Stage {&lt;br /&gt;   title: "Flask"&lt;br /&gt;   width: 800&lt;br /&gt;   height: 600&lt;br /&gt;   scene: Scene {&lt;br /&gt;       content: [&lt;br /&gt;           Text {&lt;br /&gt;               font : Font {&lt;br /&gt;                   size : 16&lt;br /&gt;               }&lt;br /&gt;               &lt;span style="font-weight: bold;"&gt;x: 10&lt;/span&gt;&lt;br /&gt;               &lt;span style="font-weight: bold;"&gt;y: 30&lt;/span&gt;&lt;br /&gt;               content: "Flask 0.01"&lt;br /&gt;           }&lt;br /&gt;           ImageView {&lt;br /&gt;               &lt;span style="font-weight: bold;"&gt;x: 10&lt;/span&gt;&lt;br /&gt;               &lt;span style="font-weight: bold;"&gt;y: 50&lt;/span&gt;&lt;br /&gt;               image: Image {&lt;br /&gt;                   url: "{__DIR__}flask-2.jpg"&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;       ]&lt;br /&gt;   }&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Adding the Infamous BorderLayout&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I simply added &lt;span style="font-style: italic;"&gt;BorderLayout &lt;/span&gt;inside of my scene content and did the old &lt;span style="font-weight: bold; color: rgb(153, 153, 153);"&gt;CTRL+SHIFT+I&lt;/span&gt; to fix imports and... nothing.  &lt;span style="font-style: italic; color: rgb(192, 192, 192);"&gt;Confused++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So I typed the import in manually and noticed it was not there.  &lt;span style="font-style: italic; color: rgb(192, 192, 192);"&gt;Confused++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I figured I had an old version of NetBeans.  So I went to get NetBeans 6.7 RC2 and JavaFX is not available for it... &lt;span style="font-style: italic; color: rgb(192, 192, 192);"&gt;Confused++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Maybe my Plugin was old...?  I checked - nope!  Brand new.  &lt;span style="font-style: italic; color: rgb(192, 192, 192);"&gt;Confused++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is the code that &lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;will not work&lt;/span&gt; in JavaFX 1.2 - I have bolded the reasons why:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;/*&lt;br /&gt;* Main.fx&lt;br /&gt;*&lt;br /&gt;* Created on Jun 8, 2009, 9:50:23 AM&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;package javafxapplication1;&lt;br /&gt;&lt;br /&gt;import javafx.stage.Stage;&lt;br /&gt;import javafx.scene.Scene;&lt;br /&gt;import javafx.scene.text.Font;&lt;br /&gt;import javafx.scene.image.Image;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import javafx.ui.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;import javafx.scene.image.ImageView;&lt;br /&gt;import javafx.scene.text.Text;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @author graeme&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;Stage {&lt;br /&gt;   title: "Flask"&lt;br /&gt;   width: 800&lt;br /&gt;   height: 600&lt;br /&gt;   scene: Scene {&lt;br /&gt;       content: [&lt;br /&gt;           &lt;span style="font-weight: bold;"&gt;BorderLayout &lt;/span&gt;{&lt;br /&gt;               content: [&lt;br /&gt;                   Text {&lt;br /&gt;                       font : Font {&lt;br /&gt;                           size : 16&lt;br /&gt;                       }&lt;br /&gt;                       content: "Flask 0.01"&lt;br /&gt;                   }&lt;br /&gt;                   ImageView {&lt;br /&gt;                       image: Image {&lt;br /&gt;                           url: "{__DIR__}flask-2.jpg"&lt;br /&gt;                       }&lt;br /&gt;                   }&lt;br /&gt;               ]&lt;br /&gt;           }&lt;br /&gt;       ]&lt;br /&gt;   }&lt;br /&gt;}&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Breaking Through the Confusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So now that Confused = 4, I Googled once more.  &lt;span style="color: rgb(192, 192, 192);"&gt;(Rhyming not intentional)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I read that many classes moved from &lt;span style="font-style: italic;"&gt;javafx.ui.*&lt;/span&gt; to &lt;span style="font-style: italic;"&gt;javafx.application.*&lt;/span&gt; then distributed somewhere inside to &lt;span style="font-style: italic;"&gt;javafx.scene&lt;/span&gt;.  This makes more sense!&lt;br /&gt;&lt;br /&gt;So I found HBox and VBox (which are quite familiar to me in the Flex world) and gave those a shot.  Worked like a charm!&lt;br /&gt;&lt;br /&gt;Here is the code that &lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;will work&lt;/span&gt; in JavaFX 1.2:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;/*&lt;br /&gt;* Main.fx&lt;br /&gt;*&lt;br /&gt;* Created on Jun 8, 2009, 9:50:23 AM&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;package javafxapplication1;&lt;br /&gt;&lt;br /&gt;import javafx.stage.Stage;&lt;br /&gt;import javafx.scene.Scene;&lt;br /&gt;import javafx.scene.text.Font;&lt;br /&gt;import javafx.scene.image.Image;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import javafx.scene.layout.HBox;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;import javafx.scene.image.ImageView;&lt;br /&gt;import javafx.scene.text.Text;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @author graeme&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;Stage {&lt;br /&gt;   title: "Flask"&lt;br /&gt;   width: 800&lt;br /&gt;   height: 600&lt;br /&gt;   scene: Scene {&lt;br /&gt;       content: [&lt;br /&gt;           &lt;span style="font-weight: bold;"&gt;HBox &lt;/span&gt;{&lt;br /&gt;               content: [&lt;br /&gt;                   Text {&lt;br /&gt;                       font : Font {&lt;br /&gt;                           size : 16&lt;br /&gt;                       }&lt;br /&gt;                       content: "Flask 0.01"&lt;br /&gt;                   }&lt;br /&gt;                   ImageView {&lt;br /&gt;                       image: Image {&lt;br /&gt;                           url: "{__DIR__}flask-2.jpg"&lt;br /&gt;                       }&lt;br /&gt;                   }&lt;br /&gt;               ]&lt;br /&gt;           }&lt;br /&gt;       ]&lt;br /&gt;   }&lt;br /&gt;}&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Screenshot of NetBeans 6.5.1 Flask Example&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_uJRdqyT4msw/Si0xgQAnOwI/AAAAAAAAAAM/evIwxPssF0U/s1600-h/Flask+Example.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 236px;" src="http://4.bp.blogspot.com/_uJRdqyT4msw/Si0xgQAnOwI/AAAAAAAAAAM/evIwxPssF0U/s400/Flask+Example.gif" alt="" id="BLOGGER_PHOTO_ID_5344982762881760002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Good ones:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/javafx/1/tutorials/ui/layout/index.html#hbox"&gt;http://java.sun.com/javafx/1/tutorials/ui/layout/index.html#hbox&lt;/a&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/javafx/1/tutorials/ui/"&gt;http://java.sun.com/javafx/1/tutorials/ui/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Old ones:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/java/library/j-javafx/"&gt;http://www.ibm.com/developerworks/java/library/j-javafx/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.informit.com/guides/content.aspx?g=java&amp;amp;seqNum=418"&gt;http://www.informit.com/guides/content.aspx?g=java&amp;amp;seqNum=418&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-4067188979988556674?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/4067188979988556674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=4067188979988556674' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/4067188979988556674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/4067188979988556674'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2009/06/why-cant-i-import-javafxui.html' title='Why can&apos;t I import javafx.ui.*?'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_uJRdqyT4msw/Si0xgQAnOwI/AAAAAAAAAAM/evIwxPssF0U/s72-c/Flask+Example.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-5622261740353517901</id><published>2009-05-15T12:04:00.004-04:00</published><updated>2009-05-15T12:15:39.887-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stylemarks'/><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><category scheme='http://www.blogger.com/atom/ns#' term='midland'/><title type='text'>Websites in Midland</title><content type='html'>It's important to have great looking web pages.  Many sites in Midland, Ontario (my home town) need a revitalization to bring out the quality, atmosphere, and appeal that the town and businesses of Midland offer in-person.&lt;br /&gt;&lt;br /&gt;If you look around the internet, there are great looking websites and some older style ones.  The difference?  People tend to be more comfortable buying from amazing looking sites.  See &lt;a href="http://www.alistapart.com/articles/indefenseofeyecandy"&gt;this article&lt;/a&gt; posted at A List Apart which visually demonstrates the importance for "eye candy" when presenting information and products to customers.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Do you want a great looking website in Midland?&lt;/span&gt;  Head over to &lt;a href="http://www.stylemarks.com/"&gt;StyleMarks&lt;/a&gt; (a local web design and development company) for more information.  StyleMarks offers polished looking websites without the hassle and at a reasonable price.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-5622261740353517901?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/5622261740353517901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=5622261740353517901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/5622261740353517901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/5622261740353517901'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2009/05/websites-in-midland.html' title='Websites in Midland'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-3653396616609997334</id><published>2009-05-14T11:39:00.003-04:00</published><updated>2009-05-14T11:57:33.028-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='stylemarks'/><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><title type='text'>Simcoe County Web Development</title><content type='html'>Looking for the best web design and development in Simcoe County? &lt;a href="http://www.stylemarks.com/"&gt;StyleMarks&lt;/a&gt; has the best services in the Lake Simcoe area.  Midland, Toronto, Scarbourough, Orangeville, Newmarket, Richmond Hill, Markham, Brampton, Mississauga, Oakville, Pickering, Collingwood, Gravenhurst, Bracebridge, and as far north as Huntsville are some of the best places in Canada.&lt;br /&gt;&lt;br /&gt;All SyleMarks sites are fast, friendly, reliable, and secure.  They offer many different services and products including CMS (Content Management Systems), web hosting, website design or templated sites, custom web development, customer form pages, databases, interactive web 2.0 sites, and just about anything else you can find on the internet.&lt;br /&gt;&lt;br /&gt;They have experience in SEO, Creative Marketing, Viral Marketing, and E-Commerce solutions.&lt;br /&gt;&lt;br /&gt;If you are looking for a friendly, knowledgeable web provider, &lt;a href="http://www.stylemarks.com/pages/contact"&gt;contact StyleMarks&lt;/a&gt; today!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-3653396616609997334?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/3653396616609997334/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=3653396616609997334' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/3653396616609997334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/3653396616609997334'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2009/05/simcoe-county-web-development.html' title='Simcoe County Web Development'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-4653697484210428873</id><published>2009-05-13T13:19:00.005-04:00</published><updated>2009-05-14T12:00:06.042-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='stylemarks'/><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><title type='text'>StyleMarks Web Design and Development</title><content type='html'>&lt;span class="Apple-style-span" style="line-height: 16px; font-weight: bold;font-family:Verdana;font-size:100%;"  &gt;When it's fast, friendly, and reliable you know it's StyleMarks.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 16px;font-family:Verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 16px;font-family:Verdana;font-size:100%;"  &gt;I am proud to announce that I own &lt;a href="http://www.stylemarks.com/"&gt;StyleMarks&lt;/a&gt; Web Design and Development!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 16px;font-family:Verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 16px;font-family:Verdana;font-size:100%;"  &gt;StyleMarks offers many solutions including Hosting, Content Management, Templated Sites, Search Engine Optimization, E-Commerce, Application Development, and many other solutions.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 16px;font-family:Verdana;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 16px;font-family:Verdana;font-size:100%;"  &gt;Contact me direct through the site &lt;a href="http://www.blogger.com/www.stylemarks.com/pages/contact"&gt;www.stylemarks.com/pages/contact&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-4653697484210428873?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/4653697484210428873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=4653697484210428873' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/4653697484210428873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/4653697484210428873'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2009/05/stylemarks-web-design-and-development.html' title='StyleMarks Web Design and Development'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-7199666260786767827</id><published>2009-01-10T20:06:00.003-05:00</published><updated>2009-01-10T20:13:18.194-05:00</updated><title type='text'>Developer Resources</title><content type='html'>Great news!  I hope to be posting again daily.&lt;br /&gt;&lt;br /&gt;This time from my new blog and it's all about helping web developers.  I have been collecting helpful links from around the web and I will be sharing these with everyone.&lt;br /&gt;&lt;br /&gt;Many more posts to come on the new site so check back often.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://qwick.wordpress.com/"&gt;http://qwick.wordpress.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-7199666260786767827?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/7199666260786767827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=7199666260786767827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/7199666260786767827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/7199666260786767827'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2009/01/developer-resources.html' title='Developer Resources'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-1558776969646474490</id><published>2007-08-19T10:03:00.000-04:00</published><updated>2007-08-19T10:42:16.114-04:00</updated><title type='text'>The Downfalls of Flex</title><content type='html'>I know I've been saying Flex all over the office and stating how great it is and how it makes some things so easy... But there are problems with it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;States - Great or Not?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The mx:State tag is very nice for grouping changes to a screen and applying effects easily.  I only have a few issues with the implementation of this.&lt;br /&gt;&lt;br /&gt;1) It caches the last time the user navigated there.  Ok - not too bad you say.  This could be a good thing right?  Well, yes and no.  If you are building a static screen that won't change again in your program then sure, it's great.  If you know exactly what you are going to display, it works fine.  The problem is: you won't get startup events again and you can't "reset" the state to clear out this "cache".&lt;br /&gt;&lt;br /&gt;This makes dynamic applications difficult to write.  How?  Well I need to know how many options I can display on a screen so I can split it up into multiple screens (no scroll bars).  I need to know how large the area is that I can draw in so I can create multiple screens which have an equal number of options in each.  Getting this to work the first time was a bit of a pain... but getting it to work the second time (with different options) required a lot of frustrating work.  You may be thinking of solutions - trust me it was difficult and not obvious to implement what I was working on.&lt;br /&gt;&lt;br /&gt;2) States are in the same mxml file and share the same code.  Yes, you can write components for all of your screens and place them in a ViewStack but, well it has the same problem.  You would have to remove the screen each time if you wanted to ensure it would get properly recreated.  (and having multiple applications isn't a viable solution).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You could create a wrapper for the ViewStack, or create your own State class called Screen - why did this not come bundled?  Or you do what the rest of the world does and write a lot of ActionScript rather than mxml so you can control startup/shutdown code, events, etc.  Blah.&lt;br /&gt;&lt;br /&gt;Waiting for JavaFX may not be the solution you are looking for either -- I know it's different than Flex but, like most things written in Java, it's very sophisticated and probably will not have these types of problems.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other Issues&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Most of the issues I've had all stem from States and their inability to re-dispatch events and re-apply "overrides".  This causes a lot of confusion for traditional developers who work with screens.  Creating components for each screen doesn't work well if you require other things to change (such as a title bar which is shared with all other components - yes, you can duplicate it in each, but that's not the OO way and doesn't leverage any of the powers of flex such as applying common transitions to some but not all elements.)&lt;br /&gt;&lt;br /&gt;Oh ya.. and I want at least a dozen Adobe made themes to come bundled with Flex Builder.  Why am I paying money for eclipse to edit mxml?  Oh, right, it has better code completion than Flash and FlashDevelop.&lt;br /&gt;&lt;br /&gt;I like states - I just want a flag on them that says "re-apply every time it's used".  It would also be nice to have them in a separate file (1 per state) if desired.  This way, the main mxml file would be quite small.  This other file should be able to contain event handlers for the state as well.&lt;br /&gt;&lt;br /&gt;I may be able to come up with a solution but I shouldn't have to.  This is a very obvious oversight on Adobe's part.  I suppose most RIAs are quite static (even though they don't appear to be) but I have situations where I have to produce an application which is different in each install without re-writing it every time.&lt;br /&gt;&lt;br /&gt;Please post my oversights below.  =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-1558776969646474490?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/1558776969646474490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=1558776969646474490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/1558776969646474490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/1558776969646474490'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2007/08/downfalls-of-flex.html' title='The Downfalls of Flex'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-7669867124152713190</id><published>2007-07-02T12:12:00.000-04:00</published><updated>2007-07-02T13:02:46.487-04:00</updated><title type='text'>Get/Set in ActionScript 3 Explained</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you have seen &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ActionScript&lt;/span&gt; 3 in Flash CS3 or Flex 2, you may have noticed the &lt;span style="font-style: italic;"&gt;get&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;set &lt;/span&gt;statements.  Correctly written, these statements follow this format (minus &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ASDoc&lt;/span&gt; comments and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;bindable&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;metadata&lt;/span&gt; tags):&lt;br /&gt;&lt;blockquote&gt;public function get name():String {&lt;br /&gt;    return _name;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public function set name(value:String):void {&lt;br /&gt;    _name = value;&lt;br /&gt;}&lt;/blockquote&gt;Note that the private class variable is &lt;span style="font-style: italic;"&gt;_name&lt;/span&gt;.  This is a standard for get/set methods and somewhat a standard for any private variable in Flex.  The underscore (_) is required because the functions are named the same as the variable and the compiler (and those viewing the code) would be confused as to which was being referenced.&lt;br /&gt;&lt;br /&gt;Naming the &lt;span style="font-style: italic;"&gt;set&lt;/span&gt; parameter "&lt;span style="font-style: italic;"&gt;value&lt;/span&gt;" is a common practice and works well when renaming variables.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What Do get/set Offer?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;They act as if the class had a public variable but allow you to do more.  If this is to be a read-only property, simply provide only the &lt;span style="font-style: italic;"&gt;get&lt;/span&gt; function.  If this is to be a write-only property (rare), simply provide only the &lt;span style="font-style: italic;"&gt;set&lt;/span&gt; function.  You may also write code to do additional work such as log something, check permissions, set a different variable, or do extra business logic.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;ASDoc&lt;/span&gt; get Methods&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is a little odd to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;ASDoc&lt;/span&gt; these methods.  Remember &lt;span style="font-style: italic;"&gt;Get &lt;/span&gt;methods should come before &lt;span style="font-style: italic;"&gt;set &lt;/span&gt;methods.  The &lt;span style="font-style: italic;"&gt;get&lt;/span&gt; should be documented with a short explanation of what the variable represents.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;* The first name provided by the credit card&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;*/&lt;/span&gt;&lt;br /&gt;private function get &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;firstName&lt;/span&gt;():String {&lt;br /&gt;    return _&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;firstName&lt;/span&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;Remember, just like in Java, documentation of the "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;firstName&lt;/span&gt;" property of the "Person" class shouldn't say "The first name of the person".  Offer something more to the reader.  Where could the first name come from (credit card, typed by person, typed by customer service agent, parsed from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;fullName&lt;/span&gt;)?  What letters could it contain?  Could a middle initial exist here?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;ASDoc&lt;/span&gt; set Methods&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Documenting the &lt;span style="font-style: italic;"&gt;set&lt;/span&gt; methods is a little different.  Since the meaning of the variable was explained in the &lt;span style="font-style: italic;"&gt;get&lt;/span&gt;, it does not need to be repeated in the &lt;span style="font-style: italic;"&gt;set&lt;/span&gt;.  To accomplish this, mark the set as private in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;ASDoc&lt;/span&gt;.&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;* @private&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;*/&lt;/span&gt;&lt;br /&gt;private function set &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;firstName&lt;/span&gt;(value:String):void {&lt;br /&gt;    _&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;firstName&lt;/span&gt; = value;&lt;br /&gt;}&lt;br /&gt;&lt;/blockquote&gt;This will produce one comment in the generated documentation.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;See the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;livedocs&lt;/span&gt; reference for more information:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&amp;file=asdoc_127_9.html"&gt;http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&amp;amp;file=&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;asdoc&lt;/span&gt;_127_9.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Bindable&lt;/span&gt; get/set Methods&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Normally, I mark the class as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;Bindable&lt;/span&gt; so all get/set methods are marked as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;bindable&lt;/span&gt;.  It does so with an event named "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;variableChange&lt;/span&gt;" where variable is the get/set method name.  Simply putting &lt;span style="font-style: italic;"&gt;[&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Bindable&lt;/span&gt;] &lt;/span&gt;just above your class definition will accomplish this.&lt;br /&gt;&lt;br /&gt;If you need more control, you may write the following at the top of your &lt;span style="font-style: italic;"&gt;get &lt;/span&gt;method (assuming this is the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;firstName&lt;/span&gt; property):&lt;br /&gt;&lt;blockquote&gt;[&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;Bindable&lt;/span&gt;(event="&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;firstNameChange&lt;/span&gt;")]&lt;/blockquote&gt;This works the same for public variables.  See &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;livedocs&lt;/span&gt; for more information:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&amp;file=asdoc_127_9.html"&gt;http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&amp;amp;file=&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;asdoc&lt;/span&gt;_127_9.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In Other Languages&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Java uses &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;getFirstName&lt;/span&gt;() and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;setFirstName&lt;/span&gt;() functions which can be generated by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;NetBeans&lt;/span&gt; using the "&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_29"&gt;refactor&lt;/span&gt;" option (also has a keyboard shortcut).  They don't name the private variables differently because there is no need.  The parameter for the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;setFirstName&lt;/span&gt; is typically the same as the private variable and is assigned by stating: &lt;span style="font-style: italic;"&gt;this.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;firstName&lt;/span&gt; = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;firstName&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;VB6 had the get/set functionality in the form of: &lt;span style="font-style: italic;"&gt;public property let&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;public property set&lt;/span&gt;, and &lt;span style="font-style: italic;"&gt;public property get&lt;/span&gt;.  Where let was by value and set was by reference (for Objects).&lt;br /&gt;&lt;br /&gt;I'm sure there are plenty of other implementations.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My 2 Cents&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I use these for every private variable; however, it is much easier to have a public variable and change it to private scope and write get/set functions later if you ever need to do more processing or if you like the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;ASDoc&lt;/span&gt; output better.  This does not change the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;API&lt;/span&gt;  for the class and allows it to be written much faster.&lt;br /&gt;&lt;br /&gt;I like the Flex method the best for simple &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;getters&lt;/span&gt;/setters; however, if the function does more work than meets the eye, it should be written as normal get/set methods.  This allows you to provide more parameters and alerts users of the class that it may do some additional processing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-7669867124152713190?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/7669867124152713190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=7669867124152713190' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/7669867124152713190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/7669867124152713190'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2007/07/getset-in-actionscript-3-explained.html' title='Get/Set in ActionScript 3 Explained'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-6546508861305909270</id><published>2007-06-29T20:30:00.000-04:00</published><updated>2007-06-29T20:47:15.161-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='ASDoc'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex 2'/><title type='text'>Flex Coding Guidelines</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Flex Coding Guidelines&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I found this great document about flex coding guidelines that one company uses.  It is perfect and very much like Java coding conventions.&lt;br /&gt;&lt;br /&gt;&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://blog.dclick.com.br/2007/02/13/adobe_flex_coding_guidelines_english/" target="_blank"&gt;&lt;/a&gt;&lt;a href="http://blog.dclick.com.br/2007/02/13/adobe_flex_coding_guidelines_english/"&gt;http://blog.dclick.com.br/2007/02/13/adobe_flex_coding_guidelines_english/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Most of this stuff should be enforced by the compiler (in my opinion) in every language.  I know it's strict, but it makes everything so much easier to read and work with.  I advise that this become a standard in every company writing in Flex no matter how big or small.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ASDoc&lt;/span&gt; Guidelines&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you haven't heard about &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ASDoc&lt;/span&gt; yet, it's a lot like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;JavaDoc&lt;/span&gt; which produces a nice web &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;API&lt;/span&gt; reference for all classes and methods.  This document describes how to properly write &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;ASDoc&lt;/span&gt; comments in your classes.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://flexed.wordpress.com/2007/01/05/action-script-comment-guidelines/"&gt;http://flexed.wordpress.com/2007/01/05/action-script-comment-guidelines/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This site may also be helpful.  It mentions tags that I didn't see in Adobe's documentation (such as author) -- but maybe I missed that one.  I haven't tried it yet.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://unleashing.wordpress.com/2007/01/05/action-script-comment-guidelines/"&gt;http://unleashing.wordpress.com/2007/01/05/action-script-comment-guidelines/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;ASDoc&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The method I have used is to write a batch file (or shell script) that executes the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;asdoc&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;exe&lt;/span&gt; file from the bin folder with my command line arguments.&lt;br /&gt;&lt;br /&gt;Default location in Windows is:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;C:\Program Files\Adobe\Flex Builder 2 Plug-in\Flex &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;SDK&lt;/span&gt; 2\bin\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;asdoc&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;exe&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;More information on command line arguments and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;ASDoc&lt;/span&gt; usage:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&amp;file=asdoc_127_9.html"&gt;http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&amp;amp;file=&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;asdoc&lt;/span&gt;_127_9.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://labs.adobe.com/wiki/index.php/ASDoc:Using_ASDoc"&gt;http://labs.adobe.com/wiki/index.php/ASDoc:Using_ASDoc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Flex &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;ActionScript&lt;/span&gt; Editor (free)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I haven't written anything using this tool but I have downloaded and installed it.  I was very impressed.  Could be a good tool if you were writing a bunch of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;ActionScript&lt;/span&gt; classes and didn't like only seeing 4 or so tabs in Flex Builder.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flashdevelop.org/community/viewtopic.php?t=1001"&gt;http://www.flashdevelop.org/community/viewtopic.php?t=1001&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-6546508861305909270?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/6546508861305909270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=6546508861305909270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/6546508861305909270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/6546508861305909270'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2007/06/flex-coding-guidelines.html' title='Flex Coding Guidelines'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-1535238640223031340</id><published>2007-06-29T20:12:00.000-04:00</published><updated>2007-06-29T20:24:20.283-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Resources'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex 2'/><title type='text'>Flex Resources</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have compiled a list of very useful sites for finding out more information on hard-to-find topics.  A lot of them are on Adobe's live docs site.  These do not talk about ASDoc or coding conventions (coming soon).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Documentation References&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;a general reference&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/support/documentation/en/flex/"&gt; http://www.adobe.com/support/documentation/en/flex/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Live Docs Lessons&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;good for getting started&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00000064.html"&gt; http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;amp;file=00000064.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Assorted Links from Adobe&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;find some information here&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/devnet/flex/?tab:quickstart=1"&gt; http://www.adobe.com/devnet/flex/?tab:quickstart=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Flex Meta Data Tags Listing&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;before you write too many classes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&amp;file=metadata_141_11.html"&gt;http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&amp;amp;file=metadata_141_11.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&amp;file=asdoc_127_3.html#189665"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&amp;file=asdoc_127_3.html#189665&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Coordinates&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;a must-know when working with mouse and component coordinates&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00000624.html"&gt;http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;amp;file=00000624.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Data Providers&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;mainly for drop-down lists&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00000499.html"&gt;http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;amp;file=00000499.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Looping&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;very useful with arrays&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00001831.html"&gt;http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;amp;file=00001831.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Using Query String Parameters and Flash Vars&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;for integrating with browsers and ActiveX&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00001006.html"&gt;http://livedocs.adobe.com/flex/2/docs/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;amp;file=00001006.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Loading Style Sheets at Runtime&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;runtime CSS for Flex&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&amp;file=styles_069_26.html"&gt;http://livedocs.adobe.com/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&amp;amp;file=styles_069_26.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Assorted Free and Pay Flex Components&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;slightly useful, not a large list&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&amp;exc=15&amp;amp;loc=en_us"&gt;http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&amp;exc=15&amp;amp;loc=en_us&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Adobe Labs Flex&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;talking about upcoming Flex 3&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://labs.adobe.com/technologies/flex/"&gt;http://labs.adobe.com/technologies/flex/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-1535238640223031340?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/1535238640223031340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=1535238640223031340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/1535238640223031340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/1535238640223031340'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2007/06/flex-resources.html' title='Flex Resources'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-464054655509703976</id><published>2007-06-27T22:36:00.000-04:00</published><updated>2007-06-27T23:27:45.752-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex 2'/><title type='text'>Flex 2 - Flash for Programmers</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Flex 2 Discovered&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Wow.  Moving from Flash CS2 to CS3 (with ActionScript 3.0), I was surprised and excited.  Now after trying Flex 2 for the first time, I'm amazed.  Finally it makes sense to develop in Flash.  Since I have completely switched to Flex 2 development, I will no longer post about Flash development.  If you have Flash questions, I will still answer them to the best of my ability.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why Flex is Better for Me&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I'm not an animator, I'm a programmer.&lt;/li&gt;&lt;li&gt;Flex has named "States" while Flash has "frames" and "keyframes" (I know, they can be named).&lt;/li&gt;&lt;li&gt;I don't consider applications/screens/UI components as MovieClips.&lt;/li&gt;&lt;/ul&gt;There are lots of other small reasons for me to choose Flex over Flash.  The main one is the development environment.  Assuming you've shelled out the $ for Flex 2 Builder, you are now working in Eclipse (yes, that's right -- Flash in a real programming IDE).  If you haven't spent all that money and simply have a command line compiler, I'm sure you're still using a good programming IDE.  This makes a big difference.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How do you get Started?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you're looking to write a Web 2.0 application, a nice looking desktop application, a rich Internet component, or a fancy UI component, you've started in the right direction.  Finding good programming information can be a little harder than usual in the Flash/Flex world.&lt;br /&gt;&lt;br /&gt;ActionScript 3.0 and MXML are your languages.  MXML compiles down to AS3 but allows Flex Builder to display components in the editor.  Mixing both is ok so don't worry too much if you are doing the right thing.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Get a copy of Flex 2 Builder.  Even the 30 day trial is fully featured.  I strongly advise this over the compiler-only free version.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Read tutorials, get books, read through Adobe's online documentation.&lt;/li&gt;&lt;li&gt;Of course, check back here for new information.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Your Project&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Write components for anything graphical.  Even if you aren't going to re-use this component, having it wrapped up nicely keeps your code away from the main application's code.&lt;br /&gt;&lt;br /&gt;Use ASDoc everywhere.  If you're a Java fan or have used other document generation products, ASDoc will be familiar.  Use it, use it properly, and use it heavily.&lt;br /&gt;&lt;br /&gt;Write classes and code correctly.  Don't write garbage and follow a common format.&lt;br /&gt;&lt;br /&gt;UI components should: be able to re-size/reposition based on the window size, have styles, and use events.&lt;br /&gt;&lt;br /&gt;Experienced developers can work with interfacing with web services, class hierarchies, and advanced code while junior developers can easily work with  user interfaces, UI backing code, and small components.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Concepts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You are forced into using good practices by not allowing direct database access (both a design decision and a natural limitation I'm sure).&lt;br /&gt;&lt;br /&gt;Meta data tags (like annotations in Java) are used to extend certain concepts.&lt;br /&gt;&lt;br /&gt;After the function keyword, you may place "get" and "set" keywords to mark this function as a getter or setter.  This allows simple get/set methods to act like public properties and reduce documentation.  Don't forget not to name your variable the same as the method (it is common to place an underscore at the front of the private variable if it is accessed by get/set methods).&lt;br /&gt;&lt;br /&gt;The override keyword (placed before the access type "public" etc.) is used to say "I am overriding a super class method."  Meaning if it was spelled incorrectly, the compiler will give an error.&lt;br /&gt;&lt;br /&gt;If you are familiar with Java, this will help when trying to learn ActionScript 3.0:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://flexblog.faratasystems.com/?p=115"&gt;http://flexblog.faratasystems.com/?p=115&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Coming up...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I hope to post a lot of helpful links to things that developers want and need when working in Flash.  Check back often for new links, tutorials, and reviews to help you get ahead.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-464054655509703976?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/464054655509703976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=464054655509703976' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/464054655509703976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/464054655509703976'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2007/06/flex-2-flash-for-programmers.html' title='Flex 2 - Flash for Programmers'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-4724126439503636762</id><published>2007-06-10T16:32:00.000-04:00</published><updated>2007-06-10T17:04:09.346-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Flash'/><title type='text'>Flash for Developers</title><content type='html'>Are you a software developer new to Flash? I will be writing many mini tutorials which will help you overcome your frustrations and turn you into a Flash coding professional.&lt;br /&gt;&lt;br /&gt;&lt;font style="font-weight: bold;"&gt;Introducing Flash CS3&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Just a lead-in about the improvements in Flash CS3 (Flash 9): ActionScript 3.0 is simply amazing compared to the previous versions. It is no longer a headache especially now that the compiler reports errors to you and allows you to click on the line that contains the error. I know this is normal for every other language but ActionScript 2.0 was lacking this crucial feature.&lt;br /&gt;&lt;br /&gt;&lt;font style="font-weight: bold;"&gt;Getting Started&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;So where does a developer start? First, you will want to check out Adobe's video tutorials located here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/designcenter/video_workshop/"&gt;http://www.adobe.com/designcenter/video_workshop/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These tutorials will help you get used to the editor and the development environment. The interface will appear very odd at first but remember this was developed for 2D animation.&lt;br /&gt;&lt;br /&gt;&lt;font style="font-weight: bold;"&gt;I Want to Write Code!&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;If you have a strong programming background, you want to start writing classes, libraries, and find the ins and outs about the language. This can be a challenge at first.&lt;br /&gt;&lt;br /&gt;The easiest way to start is by creating a new "Flash File ActionScript 3.0" with a layer called "actions" (this is a standard and should be the only layer containing ActionScript).&lt;br /&gt;&lt;blockquote&gt;Tip: Double click the layer to rename it&lt;/blockquote&gt;From the Window menu, select Actions (or Press F9 on your keyboard) to bring up the actions tab. By default, this will appear in the middle of the screen. Simply drag and drop the tab down to where you see the Parameters tab.&lt;br /&gt;&lt;blockquote&gt;I added the Align tab to beside the Swatches tab, the Components tab near the Library tab, and the Movie Explorer tab to the bottom-right hand side on it's own. I found these to be of critical importance.&lt;br /&gt;&lt;/blockquote&gt; Click on the Actions tab and you will be able to start typing ActionScript 3.0 code. But wait! You don't have any components on the screen. Use the Text Tool (the "T" on the left-hand side) and place a text element on the stage. Type Hello in the text area then click the Properties tab. From the dropdown menu, select "Dynamic Text" instead of "Static Text" and type in "textbox_txt" where you see "&lt;instance name&gt;" (appending _txt is a standard in the Flash world).&lt;br /&gt;&lt;br /&gt;Now you have a text area that can be referenced in ActionScript using the following code:&lt;br /&gt;&lt;br /&gt;textbox_txt.text = "Hello World!";&lt;br /&gt;&lt;br /&gt;Once you type that on the Actions tab, click on Test Movie from the Control menu.&lt;br /&gt;&lt;blockquote&gt;Tip: Hit Ctrl+Enter to test a movie at any time&lt;/blockquote&gt;You should see "Hello World!" in the text area on screen. Wow!... not that impressive, I know.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In the Future&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the next tutorial, I will discuss creating classes in packages (and how to make them work), Document Classes (main), and some of the features of the language that are really helpful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-4724126439503636762?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/4724126439503636762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=4724126439503636762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/4724126439503636762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/4724126439503636762'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2007/06/flash-for-developers.html' title='Flash for Developers'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6401482771676364372.post-1791563508570034003</id><published>2007-06-10T13:01:00.000-04:00</published><updated>2007-06-10T13:08:07.287-04:00</updated><title type='text'>Brand New</title><content type='html'>You got here early! My first blog site is now up and running.  I know blogs are supposed to have content... I'm working on that next.&lt;br /&gt;&lt;br /&gt;For now, please see Ryan's site for some good Java content:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ryandelaplante.com/"&gt;http://www.ryandelaplante.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My focus will be on technical gems and ideas.  There will be content on Flash CS3 (ActionScript 3.0) for programmers and open (free) web development resources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6401482771676364372-1791563508570034003?l=qwickthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qwickthoughts.blogspot.com/feeds/1791563508570034003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6401482771676364372&amp;postID=1791563508570034003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/1791563508570034003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6401482771676364372/posts/default/1791563508570034003'/><link rel='alternate' type='text/html' href='http://qwickthoughts.blogspot.com/2007/06/brand-new.html' title='Brand New'/><author><name>Graeme Wicksted</name><uri>http://www.blogger.com/profile/02008165864640588640</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
