<?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-3363672606513530797</id><updated>2011-11-27T18:02:47.469-06:00</updated><category term='Celebratory'/><category term='Dave Nielsen'/><category term='regasm'/><category term='Twitter'/><category term='XBox 360'/><category term='danc'/><category term='New Year&apos;s'/><category term='Argyle'/><category term='XBLA'/><category term='Consulting'/><category term='Pragmatic Investment Plan'/><category term='Pragmatic'/><category term='The Scruggs Group'/><category term='Cognitive Science'/><category term='lostgarden'/><category term='XNA'/><category term='pm hut'/><category term='software development'/><category term='mda'/><category term='cgd'/><category term='VSTO'/><category term='Visual Studio 2008'/><category term='First Post'/><category term='DLLs'/><category term='TSG'/><category term='free to play'/><category term='skill chains'/><category term='stage gates'/><category term='Worth Reading'/><category term='Evan Williams'/><category term='Travel'/><category term='ClickOnce Deployment'/><category term='agile development'/><category term='business case'/><category term='Facebook'/><category term='xp'/><category term='gate meetings'/><category term='extreme programming'/><category term='Grand Prairie'/><category term='Content'/><category term='tweeting'/><category term='Scheduling'/><category term='Updates'/><category term='good advice'/><category term='iterative development'/><category term='Christmas'/><category term='gamasutra'/><category term='Arlington'/><category term='Happy Holidays'/><category term='Well Wishes'/><category term='Introspection'/><category term='Blogger'/><category term='MySpace'/><category term='Goals'/><category term='XNA Game Studio'/><category term='Google'/><category term='point of sale'/><category term='Welcome'/><category term='Blogging'/><category term='C#'/><category term='Interop'/><category term='Anne Lamott'/><category term='VBA'/><category term='game design'/><category term='iPhone'/><category term='Andy Hunt'/><category term='Tweetie'/><category term='MATLAB'/><category term='Shitty First Drafts'/><category term='software'/><category term='portfolio models'/><category term='SMART Objectives'/><category term='XBox Live Arcade'/><category term='project management'/><category term='Self-Improvement'/><category term='foodtronix'/><category term='XNA Framework'/><title type='text'>BRWN 2.0</title><subtitle type='html'>what can brown do for you?</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://brwn20.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://brwn20.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ahad L. Amdani</name><uri>http://www.blogger.com/profile/06938455433697555924</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://a722.ac-images.myspacecdn.com/images01/49/l_91db64c065d7c30a44cd93cfc1d5bcd1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3363672606513530797.post-3396263321888412021</id><published>2009-04-10T14:52:00.003-05:00</published><updated>2009-04-10T14:59:43.339-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySpace'/><category scheme='http://www.blogger.com/atom/ns#' term='Facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='Blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='iPhone'/><category scheme='http://www.blogger.com/atom/ns#' term='Tweetie'/><category scheme='http://www.blogger.com/atom/ns#' term='Evan Williams'/><category scheme='http://www.blogger.com/atom/ns#' term='Blogging'/><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='tweeting'/><title type='text'>Twitter - can it be merged with Blogger?</title><content type='html'>I just signed up for a Twitter account, and after using it a bit and liking it immensely, tried it out on my iPhone using the free application Twitterific. It works fine and I immediately checked out Evan Williams (CEO of Twitter, who I follow on Twitter now) and read his blog, ironically, about how blogging seems to be dying and how improvements to the workflow could lead to a resurgence of activity. I tend to agree.&lt;br /&gt;&lt;br /&gt;But, this begs the question - can Google leverage the power of Twitter (or vice versa) and come out with some hybrid of twitter/blogger that would allow for quick, easy, painless access and posting? I like twitter's limits on status updates, and I've quickly integrated it into my MySpace, Blogger and Facebook accounts. To say nothing else, it's extremely easy. I also saw that EV used an application called Tweety, and I decided, hell, if the CEO is using this iPhone app (available for $2.99, check out this link: &lt;a href="http://www.atebits.com/tweetie-iphone/"&gt;http://www.atebits.com/tweetie-iphone/&lt;/a&gt;) then I may as well give it a shot. And I really do like it. The API these people have put out is ridiculously good, and it's such a nifty little social utility.&lt;br /&gt;&lt;br /&gt;It doesn't succeed blogging, because it does have limited status updates - but what if I could just as easily blog (through my iPhone or other mediums) as I could tweet? And if my updates were all streamlined and integrated across, like Twitter works with Facebook's status updates? That would be impressive.&lt;div class="blogger-post-footer"&gt;Feed from http://yblis.blogspot.com/
-Ahad L. Amdani&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3363672606513530797-3396263321888412021?l=brwn20.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brwn20.blogspot.com/feeds/3396263321888412021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brwn20.blogspot.com/2009/04/twitter-can-it-be-merged-with-blogger.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/3396263321888412021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/3396263321888412021'/><link rel='alternate' type='text/html' href='http://brwn20.blogspot.com/2009/04/twitter-can-it-be-merged-with-blogger.html' title='Twitter - can it be merged with Blogger?'/><author><name>Ahad L. Amdani</name><uri>http://www.blogger.com/profile/06938455433697555924</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://a722.ac-images.myspacecdn.com/images01/49/l_91db64c065d7c30a44cd93cfc1d5bcd1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3363672606513530797.post-4367057777261961469</id><published>2009-04-01T12:53:00.000-05:00</published><updated>2009-04-01T12:50:26.831-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SMART Objectives'/><category scheme='http://www.blogger.com/atom/ns#' term='Pragmatic'/><category scheme='http://www.blogger.com/atom/ns#' term='Goals'/><category scheme='http://www.blogger.com/atom/ns#' term='Pragmatic Investment Plan'/><category scheme='http://www.blogger.com/atom/ns#' term='Shitty First Drafts'/><category scheme='http://www.blogger.com/atom/ns#' term='Consulting'/><category scheme='http://www.blogger.com/atom/ns#' term='Self-Improvement'/><category scheme='http://www.blogger.com/atom/ns#' term='Travel'/><category scheme='http://www.blogger.com/atom/ns#' term='Andy Hunt'/><category scheme='http://www.blogger.com/atom/ns#' term='Introspection'/><category scheme='http://www.blogger.com/atom/ns#' term='Cognitive Science'/><category scheme='http://www.blogger.com/atom/ns#' term='Anne Lamott'/><title type='text'>Long-term Planning &amp; Goals</title><content type='html'>I sat down at a hookah lounge last week and as I meditate there, smoking, I reflected on what had been missing so sorely in the past few months. It hadn't truly been missed until I reflected on it, however. Ironic.&lt;br /&gt;&lt;br /&gt;Regardless, I realized all of a sudden that I hadn't made any really long-terms goals or thoughts on how to achieve them. When I was younger, 17 or so, I had known exactly what I wanted, when I wanted it, and how I would go about getting at it. By age 20, I had achieved all of my original aims and intents, even if it hadn't been purely by the manner I envisioned them.&lt;br /&gt;&lt;br /&gt;I lived how I (had) wanted, worked where I (had) wanted, was nearly complete with my formal educational process, and did as I desired, with convenience, comfort, and interesting, profitable prospects.&lt;br /&gt;&lt;br /&gt;I was also completely unhappy.&lt;br /&gt;&lt;br /&gt;Through counseling by religious leaders, friends, and family, as well as self-analysis, meditation, and reflection I realized many factors were the cause of this, not least of which being that I had achieved everything I had intended, but long-term goals as they were, they were within an immediacy I hadn't considered (3-5 years seems like such a long time when you're caught up in the romance of it all - life, youth, innocence) and not achieving them in the manner I had desired played a large part too. I resolved at that point to return my life to where I had left off, to my younger, more ideal self, even if I had been scarred, matured, experienced, or whatever terms you may want to use, in the intervening years. Foolish sounding, but it seemed a logical course of action at the time.&lt;br /&gt;&lt;br /&gt;I made drastic changes to my lifestyle, took a vacation out of the country, visited family, and returned to my roots, though I struggled to retain a semblance of the freedom and lack of true responsibility that I had experienced previously. Over the course of a little over a year, I turned away from that arrogant brashness as well.&lt;br /&gt;&lt;br /&gt;So there, smoking thoughtfully all the while, I considered, feeling much older (unfortunately, considering I'm short of 23 by a few months, yet) than I was, what I should be doing in my life, and how I should go about achieving it. The reason this entire thought process had entered my frame of mind in the first place was the cognitive science book I had completed the month prior, &lt;a href="http://pragprog.com/titles/ahptl/pragmatic-thinking-and-learning"&gt;Andy Hunt's Pragmatic Thinking &amp;amp; Learning&lt;/a&gt;, which mentioned generating a roadmap to success, or using his terminology, creating a "Pragmatic Investment Plan." You list out your goals, and "SMART" (Specific, Measurable, Achievable, Relevant, Time-Boxed) objectives to reach those individual goals. It makes a lot of sense: if you don't already know what it is you want to do, list it out and make a plan for it; and if you do know what it is you want to do, make action items to facilitate the process. But consider the context of people in general, and you realize that the obvious or common sense things in life tend to sometimes go over our heads and around our tunnel vision. Thinking about these things, I resolved to get my life back in order. Mind you, my life is in pretty good order, considering - I have a comfortable home, a loving family, caring friends, blessed good health, a steady job that I love, and at least a small measure of faith. However, God (or Nature, Science, Life, the Spaghetti Monster, you pick) doesn't reward those who sit idly. You have to continue to work hard and try and reduce that incredible ignorance we all somehow retain.&lt;br /&gt;&lt;br /&gt;I made a list of 20 goals, short-, mid- and long-term, interspersed. I know some are repeats or off-shoots of the others, tying in on themselves in some fashion - but it's a start. The thing about rough drafts, or scratchy starts, is that at least it's something. In fact, in Andy's book, there's a great sidebar: "Shitty First Drafts." And I quote:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Part of being comfortable with uncertainty means being comfortable with something that's incomplete and unfinished. You want to avoid the headlong rush to try to achieve "perfection." Author Anne Lamott is an advocate of purposefully creating a shitty first draft. That is, it's better to complete a shitty first draft than to never complete a perfect one. In her book &lt;em&gt;Bird by Bird: Some Instructions on Writing and Life&lt;/em&gt;, Lamott explains the dangers of perfectionism:&lt;br /&gt;&lt;blockquote&gt;"Perfectionism is the voice of the oppressor, the enemy of the people. It will keep you cramped and insane your whole life, and it is the main obstacle between you and a shitty first draft. I think perfectionism is based on the obsessive belief that if you run carefully enough, hitting each stepping-stone just right, you won't have to die. The truth is that you will die anyway and that a lot of people who aren't even looking at their feet are going to do a whole lot better than you, and have a lot more fun while they're doing it."&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;I mention this because I have made an internal goal, ongoing, to always be willing to scratch the surface, even if it's a shitty first draft. I don't care what the project. I've always been an advocate of perfectionism, and therefore I've spent countless hours in the design room before writing a line of code, or willing to make an outline, etc. - time I could have spent revising and refining something that I could have worked with. I believe in the newer philosophy, the "agile" philosophy of prototyping and being flexible. Adaptability counts, and you can't adapt until you've at least initially attempted.&lt;br /&gt;&lt;br /&gt;1. Travel: Sweden, Switzerland, Egypt, London (again), France (again), Spain, Montreal, Germany, Holland, India (again), Japan, China, Russia, Jordan, Lebanon, Dubai.&lt;br /&gt;2. Own and run my own successful business.&lt;br /&gt;3. Consult and teach.&lt;br /&gt;4. Develop and design games.&lt;br /&gt;5. Write a fiction book as well as an informative text.&lt;br /&gt;6. Write a weekly column.&lt;br /&gt;7. Have an immediate family and still live with my parents (I bless my culture).&lt;br /&gt;8. Be famous for my knowledge and skills or my designs and products, but stay out of the "limelight."&lt;br /&gt;9. Excel in my career and be a hard worker.&lt;br /&gt;10. Be cultured, well-read and articulate.&lt;br /&gt;11. Be in excellent physical condition and know at least one discipline of the martial arts.&lt;br /&gt;12. Memorize the Quran in Arabic, and read interpretations and translations.&lt;br /&gt;13. Become a good/better Muslim.&lt;br /&gt;14. Network to the point that I have at least one contact per industry across all industries that are pertinent to me who is in a position to be called upon and be useful and who may find use in knowing me.&lt;br /&gt;15. Be versed in many technologies and languages, verbal, programming, scripting, and otherwise.&lt;br /&gt;16. Have (even more) interesting and reliable friends.&lt;br /&gt;17. Be a good and dependable friend and family member.&lt;br /&gt;18. Show my younger brother the right path and the virtues of working hard.&lt;br /&gt;19. Be a good son, husband, father and brother. A good man.&lt;br /&gt;20. Innovate and improve my community.&lt;br /&gt;&lt;br /&gt;I need to categorize and organize these goals and break them out into specific tasks (SMART objectives, if possible) with priorities and deadlines where applicable. I need to also ensure I don't ignore my immediate concerns and reliabilities or outstanding duties. I also want to document the process and make visible my progress. That, at least, will psychologically bolster and reinforce my constitution. I don't want to take shortcuts or give in to temptations. I never want to burn any bridges. There's never any profit, in the truest sense of the term. No one stands to gain anything by it.&lt;br /&gt;&lt;br /&gt;This blog entry is essentially a mission statement to myself. I want to be able to look back at this post, and the eventual Pragmatic Investment Plan I generate within the next few posts, and see progress. I want to be able to look back and say "Okay, I achieved these objectives and reached these goals. Where does that leave me, and how do I move forward from here?"&lt;br /&gt;&lt;br /&gt;There's always room for improvement in any endeavor, especially self-improvement. Let's hope this, at least, drives me.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Ahad.&lt;div class="blogger-post-footer"&gt;Feed from http://yblis.blogspot.com/
-Ahad L. Amdani&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3363672606513530797-4367057777261961469?l=brwn20.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brwn20.blogspot.com/feeds/4367057777261961469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brwn20.blogspot.com/2009/03/long-term-planning-goals.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/4367057777261961469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/4367057777261961469'/><link rel='alternate' type='text/html' href='http://brwn20.blogspot.com/2009/03/long-term-planning-goals.html' title='Long-term Planning &amp; Goals'/><author><name>Ahad L. Amdani</name><uri>http://www.blogger.com/profile/06938455433697555924</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://a722.ac-images.myspacecdn.com/images01/49/l_91db64c065d7c30a44cd93cfc1d5bcd1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3363672606513530797.post-4020597890632368470</id><published>2009-03-31T10:05:00.001-05:00</published><updated>2009-04-12T08:40:19.392-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pragmatic'/><category scheme='http://www.blogger.com/atom/ns#' term='Goals'/><category scheme='http://www.blogger.com/atom/ns#' term='Scheduling'/><category scheme='http://www.blogger.com/atom/ns#' term='Blogging'/><category scheme='http://www.blogger.com/atom/ns#' term='Self-Improvement'/><category scheme='http://www.blogger.com/atom/ns#' term='Updates'/><category scheme='http://www.blogger.com/atom/ns#' term='Andy Hunt'/><category scheme='http://www.blogger.com/atom/ns#' term='Cognitive Science'/><title type='text'>Blog Updates and Scheduling</title><content type='html'>I want to more actively post on this blog, but the issues comes up with respect to a few things:&lt;br /&gt;&lt;br /&gt;(1) Frequency versus Schedule - I tend to be very busy with work during the day when I'm at or near a computer for non-recreational use. On the opposite end, if I'm using a computer after work, it's typically for "play" purposes such as a PC game or to peruse various blogs or entertaining/informative websites. At that point, I don't feel like doing anything that feels like work, and writing a blog feels like a chore. Even people who do it for fun or to have updates for their friends look at it as a chore at one point or another; I need to figure out how to get past that point. As far as an update schedule, I think Tuesdays and Fridays of every&lt;span style="font-weight:bold;"&gt; [EDIT]other[/EDIT] &lt;/span&gt;week ought to do just fine, with optional weekend updates. The reason I want a schedule is to encourage the habit of blogging - which is a very important part of the learning cycle (see &lt;strong&gt;Pragmatic Thinking &amp;amp; Learning&lt;/strong&gt; by Andy Hunt). Once a month, if that, seems to not be as effective.&lt;br /&gt;&lt;br /&gt;(2) Topics - My topics of choice tend to relate to fairly nerdy items, such as video games, computer science and various fields, or work-related updates. I haven't had too many personal life topics, and maybe I should expand on that - but I've always felt blogs that focused on too much personal life tended to have an almost whiny feel to them, even if they weren't "emo" or full of complaints. This tends to not be so much of a problem for me, but does clearly alienate the people I consider my friends from the passions in my life, with the topic of video games being the exception to the rule there. However, as I mentioned above, the point of blogging for me is to serve as part of an educational process, both for myself, and for externally interested parties/readers. Therefore, I've decided that until I get a good "groove" on what to write on, I'm going to write on any topic that takes my fance, be it relevant or random. I shall pursue this course until another presents itself.&lt;br /&gt;&lt;br /&gt;Also, I've wanted to become proficient as a writer for quite some time now, and I feel this will help. Especially because I think that since people will want to read only interesting blogs, I will hopefully learn to write about interesting topics, or failing that, write interestingly about mundane topics. And since people will not spend too much time reading (or will complain quite a bit about) blogs that are poorly written in terms of spelling, grammar, clarity, etcetera, that I will hopefully learn to write with increasing skill in those areas.&lt;br /&gt;&lt;br /&gt;This falls in line with one of my goals. There will be a blog on that topic within a day or two.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Ahad.&lt;div class="blogger-post-footer"&gt;Feed from http://yblis.blogspot.com/
-Ahad L. Amdani&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3363672606513530797-4020597890632368470?l=brwn20.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brwn20.blogspot.com/feeds/4020597890632368470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brwn20.blogspot.com/2009/02/blog-updates-and-scheduling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/4020597890632368470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/4020597890632368470'/><link rel='alternate' type='text/html' href='http://brwn20.blogspot.com/2009/02/blog-updates-and-scheduling.html' title='Blog Updates and Scheduling'/><author><name>Ahad L. Amdani</name><uri>http://www.blogger.com/profile/06938455433697555924</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://a722.ac-images.myspacecdn.com/images01/49/l_91db64c065d7c30a44cd93cfc1d5bcd1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3363672606513530797.post-222994016886237147</id><published>2008-12-19T12:01:00.004-06:00</published><updated>2009-04-01T12:40:39.866-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Celebratory'/><category scheme='http://www.blogger.com/atom/ns#' term='Happy Holidays'/><category scheme='http://www.blogger.com/atom/ns#' term='Christmas'/><category scheme='http://www.blogger.com/atom/ns#' term='Well Wishes'/><category scheme='http://www.blogger.com/atom/ns#' term='New Year&apos;s'/><title type='text'>Happy Holidays 2008!</title><content type='html'>Happy Christmas! Merry New Year! And all that good stuff!&lt;br /&gt;&lt;br /&gt;I'm just taking a moment to touch bases with the masses and say that I hope every has some pretty jolly holidays. Each year we celebrate and/or remember the things that mean the most to us - the new year, the coming of spring, history's late and great presidents and notable figures like saints and prophets and actors and activists, fathers, mothers, sons and daughters, the fools, the wise men, the days of thanks and terror, the days of costumes and candies, parties and panties, the days of our youth and the days of our prime, the days of our old age, and the days of our secret crimes. Here's to the days we start off ranting and rambling, and the days we somehow lead to rhymes.&lt;br /&gt;&lt;br /&gt;It's fun to be festive, and fun to be alive. If you're a software developer or game developer, it's an especially merry new year coming up with great things just over the horizon and events that will lead to a whole new revolution in technology as well as games. So, take a moment to respect and acknowledge the developments of this past year and take a moment to revel in our prospects for the immediate future.&lt;br /&gt;&lt;br /&gt;I probably won't be able to publish another post this month, so I want to thank everyone who reads this blog for their support and encouragement, and I want to appreciate the coming to a close of a great year for me and mine.&lt;br /&gt;&lt;br /&gt;Good luck, and take care,&lt;br /&gt;  Ahad L. Amdani&lt;div class="blogger-post-footer"&gt;Feed from http://yblis.blogspot.com/
-Ahad L. Amdani&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3363672606513530797-222994016886237147?l=brwn20.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brwn20.blogspot.com/feeds/222994016886237147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brwn20.blogspot.com/2008/12/happy-holidays-2008.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/222994016886237147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/222994016886237147'/><link rel='alternate' type='text/html' href='http://brwn20.blogspot.com/2008/12/happy-holidays-2008.html' title='Happy Holidays 2008!'/><author><name>Ahad L. Amdani</name><uri>http://www.blogger.com/profile/06938455433697555924</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://a722.ac-images.myspacecdn.com/images01/49/l_91db64c065d7c30a44cd93cfc1d5bcd1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3363672606513530797.post-5084961320744279235</id><published>2008-11-24T15:29:00.003-06:00</published><updated>2008-11-24T15:47:55.983-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XNA Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA Game Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='good advice'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='iterative development'/><category scheme='http://www.blogger.com/atom/ns#' term='Content'/><category scheme='http://www.blogger.com/atom/ns#' term='Worth Reading'/><category scheme='http://www.blogger.com/atom/ns#' term='XBox 360'/><category scheme='http://www.blogger.com/atom/ns#' term='XNA'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='XBLA'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='XBox Live Arcade'/><title type='text'>Game Developer Magazine: A great resource.</title><content type='html'>GD: I absolutely love it.&lt;br /&gt;&lt;br /&gt;I figured I'd take the time out of my day today to read the magazine I'd decided to evaluate on a lark: Game Developer. I paid I believe $50 to $60 for a year's subscription and it took a little over a month to process, but I got November's issue. This would be the issue whose cover article is Certain Affinity's Age Of Booty. I had previously not heard of this game beforehand and didn't know anything at all about it. &lt;br /&gt;&lt;br /&gt;It just so happens that I have recently been re-interested in game development on a serious level and I was re-evaluating Microsoft's XNA Framework. I wanted to make a strategy game (decision is still being held off on whether or not to approach it turn-based or real-time) for the XBox Live Arcade (XBLA) that I've been designing out and want to prototype soon. Well, as I read the first page of the article, and it's source development tools, I soon realized that Certain Affinity had, with a small group of core designers and developers, done exactly what it is that I wanted to do myself, or at least try out. Except they did it with Capcom, a major publisher, as their backer, and their team consisted of experts in the field; veterans, shall we say, of the Game Development Wars that wage ceaselessly. According to GD, they had (in general) 5 full time developers, 9 shared, and 3 part-time contractors to produce 457 source files yielding 117,000 lines of code with only 2,147 bugs reported (either open, resolved or addressed) with a development time of 13 months: 2 months pre-production, 11 months production. They made the XBox 360 version, contracted out the Windows version, and Capcom took on the PS3 version. These are the same people who make Left 4 Dead. This is now a game I'm going to purchase simply to support them. I'll probably have fun and enjoy it quite a bit too, as I'm an RTS fan and I love board games, which this game is inspired from.&lt;br /&gt;&lt;br /&gt;Anyways, I wanted to point out that their post-mortem was an excellent resource and covers the essential ideas and processes that I want to implement myself and how I believe the wave of the indie future is going to run for the immediate future. &lt;br /&gt;&lt;br /&gt;Anyone who is interested at all in game development should check this magazine out - it's available both online and in print, and I prefer print editions of most resources, but it allows for some serious flexibility if you're on the road a lot and have only your laptop or digitally-enabled mobile phone to accompany you.&lt;br /&gt;&lt;br /&gt;Also, an excellent additional resource I enjoyed was their ads. I tend to hate ads in magazines, but the tools they list and the offers they provide were all things I seriously considered - and they tend to be either full page spreads or out of tabbed to the sides or bottoms of pages where they aren't annoying (*cough*websites should do this more and stop inserting weblinks everywhere*cough*) or distract from the main content.&lt;br /&gt;&lt;br /&gt;Thanks and I hope you check them out,&lt;br /&gt;  Ahad L. Amdani&lt;div class="blogger-post-footer"&gt;Feed from http://yblis.blogspot.com/
-Ahad L. Amdani&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3363672606513530797-5084961320744279235?l=brwn20.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brwn20.blogspot.com/feeds/5084961320744279235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brwn20.blogspot.com/2008/11/game-developer-magazine-great-resource.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/5084961320744279235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/5084961320744279235'/><link rel='alternate' type='text/html' href='http://brwn20.blogspot.com/2008/11/game-developer-magazine-great-resource.html' title='Game Developer Magazine: A great resource.'/><author><name>Ahad L. Amdani</name><uri>http://www.blogger.com/profile/06938455433697555924</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://a722.ac-images.myspacecdn.com/images01/49/l_91db64c065d7c30a44cd93cfc1d5bcd1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3363672606513530797.post-6863626883176735743</id><published>2008-11-18T15:02:00.003-06:00</published><updated>2008-11-18T15:09:26.042-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stage gates'/><category scheme='http://www.blogger.com/atom/ns#' term='Dave Nielsen'/><category scheme='http://www.blogger.com/atom/ns#' term='pm hut'/><category scheme='http://www.blogger.com/atom/ns#' term='project management'/><category scheme='http://www.blogger.com/atom/ns#' term='good advice'/><category scheme='http://www.blogger.com/atom/ns#' term='business case'/><category scheme='http://www.blogger.com/atom/ns#' term='gate meetings'/><category scheme='http://www.blogger.com/atom/ns#' term='agile development'/><title type='text'>Stage Gates Revisited: Gate Meetings</title><content type='html'>The PM Hut (specifically, Dave Nielsen) published an article last week that I feel deserves some special attention. The article can be found here: &lt;a href="http://www.pmhut.com/conducting-successful-gate-meetings#comment-60469"&gt;Conducting Successful Gate Meetings&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My comments (visible on the article) have been re-published below:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Dave,&lt;br /&gt;&lt;br /&gt;Sorry it took a week for me to approve your comment (I never realize comment moderation was on at my blog). I'm glad you pointed this article out to me - specifically because it made me realize a couple of additional points with regards to stage gates.&lt;br /&gt;&lt;br /&gt;Primarily, the gate meetings themselves - why they should be held, and when they should be held during your projects. &lt;br /&gt;&lt;br /&gt;The parts dealing with who should attend and how to run the meetings are more political in nature and I feel are different/unique per situation.&lt;br /&gt;&lt;br /&gt;&gt; Gate meetings also serve the purpose of validating the Business Case. As the project’s scope, budget, and schedule change throughout its life cycle, your Business Case will change. &lt;br /&gt;&lt;br /&gt;Hadn't considered this aspect. I realize that the project evolves, the customers evolve and the business relationship evolves, so we would have to update documentation, but I hadn't considered the need to update the business case for the project. We usually work with technical writers and they take care of this for us - but it's definately something an independant consultant or small team should take into account.&lt;br /&gt;&lt;br /&gt;&gt; The Business Case may also be changed by circumstances outside the span of your control such as changes in the market place. The Gate Meeting is your opportunity to have the updated Business Case validated by your project’s executive sponsors. &lt;br /&gt;&lt;br /&gt;Yes, another great effect of updating your business case would be its re-validation against the market.&lt;br /&gt;&lt;br /&gt;&gt; The second [gate meeting] is critical because this is the meeting where the customer will formally accept the products of the project. It should drive any formal sign offs and final payments that conclude the project.&lt;br /&gt;&lt;br /&gt;I've always preached and practiced holding what I now call gate meetings many times over the development cycle of a project, but I don't think I've ever held one before customer sign-off. We had small reviews to ensure whether or not all of the features had been fully completed and tested out, but never to evaluate whether the business case still stood, whether or not to cut the project off or restructure it, etc. I'll have to try it out and see if the sponsors / clients would be interested in changes from what we had originally considered the "final release." I think mostly because since we follow the Stage Gate process, we feel that things are aligned towards a successful completion assuming all coding and functionality are completed for the fully evolved project. But always room to try and it costs no more than a day of work.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The article also goes into the fine points of actually conducting the meetings, deciding who should attend, etc. These are the details that I feel deserve a look at, even though I consider most of these points unique to the situation within a company, because they form good, general advice.&lt;br /&gt;&lt;br /&gt;Take care,&lt;br /&gt;  Ahad L. Amdani&lt;div class="blogger-post-footer"&gt;Feed from http://yblis.blogspot.com/
-Ahad L. Amdani&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3363672606513530797-6863626883176735743?l=brwn20.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brwn20.blogspot.com/feeds/6863626883176735743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brwn20.blogspot.com/2008/11/stage-gates-revisited-gate-meetings.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/6863626883176735743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/6863626883176735743'/><link rel='alternate' type='text/html' href='http://brwn20.blogspot.com/2008/11/stage-gates-revisited-gate-meetings.html' title='Stage Gates Revisited: Gate Meetings'/><author><name>Ahad L. Amdani</name><uri>http://www.blogger.com/profile/06938455433697555924</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://a722.ac-images.myspacecdn.com/images01/49/l_91db64c065d7c30a44cd93cfc1d5bcd1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3363672606513530797.post-4683940188777914155</id><published>2008-10-08T08:52:00.007-05:00</published><updated>2008-10-08T10:18:37.047-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DLLs'/><category scheme='http://www.blogger.com/atom/ns#' term='MATLAB'/><category scheme='http://www.blogger.com/atom/ns#' term='Grand Prairie'/><category scheme='http://www.blogger.com/atom/ns#' term='VBA'/><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='ClickOnce Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='VSTO'/><category scheme='http://www.blogger.com/atom/ns#' term='Interop'/><category scheme='http://www.blogger.com/atom/ns#' term='Worth Reading'/><category scheme='http://www.blogger.com/atom/ns#' term='Arlington'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='TSG'/><category scheme='http://www.blogger.com/atom/ns#' term='The Scruggs Group'/><category scheme='http://www.blogger.com/atom/ns#' term='Argyle'/><category scheme='http://www.blogger.com/atom/ns#' term='regasm'/><title type='text'>MATLAB / C# / VBA Interop</title><content type='html'>I work at an actuarial outsourcing company in Argyle, TX called The Scruggs Group (or TSG for short). I live in Grand Prairie, TX and primarily hang out in Arlington, TX so I drive around quite a lot. For those that don't know, Argyle is about an hour away from Arlington, whereas Arlington is about 15 minutes away from Grand Prairie. Thankfully, due to my house's location, I'm still only an hour away from work, since I live right off of the major highway, 360. I just mention all of this because I heard on the radio this morning that gas is finally dropping below $3 a gallon in certain places in North Texas, and I hope that extends further down south.&lt;br /&gt;&lt;br /&gt;Anyways, this seems like a very random topic, and it is to some extent, but I was tasked with creating a proof-of-concept and figuring out the pipeline to allow a developer to produce a managed excel document using Visual Studio 2008 and the latest VSTO 3.1 runtime while working with the MATLAB Compiler Runtime 7.8 to wrap around and access MATLAB routines for use in the managed excel document. The secondary condition is that we wanted to turn around and maintain access to the MATLAB Compiler Runtime with VBA directly, and also indirectly through managed C#. The reasoning behind this secondary condition is that it allows the actuaries I work with to write temporary VBA routines against the Excel document that feature their own MATLAB routines, and also to allow for more formal and permanent features to be written in via managed C# directed through me and published out to the network via ClickOnce Deployment. There are of course serious performance benefits to utilizing C# to handle file I/O and SQL Server access and data manipulation versus utilizing VBA to do similar operations, so things of a performance-heavy nature, especially if they also incorporate MATLAB, will be written in a MatlabLibrary class and wrapped for use both in the managed excel file via VSTO and if necessary (for whatever bizarre reasons) accessible to calls via VBA.&lt;br /&gt;&lt;br /&gt;There are a few ways you can do this, and I was able to locate some good articles online about the simplest of them: creating a dynamic linked library (DLL) in C# in which you reference the MathWorks libraries and the MATLAB exported routines (via MATLAB® Builder™ NE for the Microsoft® .NET Framework) and generating wrapper classes and functions for those routines, ensuring that they adhere to an interface. Then, you take and build this DLL and run regasm against the library with the \tlb option to create a TLB file (a type library) for use in an excel file. You open up or create the excel file in question, hit Alt+F11 to go into the Microsoft Visual Basic Editor, get to the module you'll be utilizing the C# code in, and add in a reference (Tools &gt; References) to the TLB you just generated via regasm from the C# DLL. You can now use simplified code (see below) to make calls against the C# functionality.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Assumptions: MatlabTest is the solution name. MatlabLibrary is the class name. You've generated the necessary interface (say, IMatlabLibrary, which doesn't matter in the VBA code) that exposes the functionality you want, and you've followed the above steps to build your DLL, tranlated it to a type library, and referenced it in your VBA code.&lt;br /&gt;&lt;br /&gt;Simplified Code:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Public matlib As MatlabTest.MatlabLibrary&lt;br /&gt;&lt;br /&gt;Public Function VectorSum(arrA as Excel.Range, arrB as Excel.Range) as Double()&lt;br /&gt;    Set matlib = New MatlabTest.MatlabLibrary&lt;br /&gt;    Dim &lt;br /&gt;    VectorSum = matlib.VectorSumDoubles(arrA, arrB)&lt;br /&gt;End Sub&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Also, you have to be aware of the way MATLAB and/or C# return the results to you - in the above example, I wanted to put the returned results of the array function vertically in 5 columns (I used 2 5-column inputs as the arguments) and needed to perform a TRANSPOSE on top of the =VectorSum(A2:A6, B2:B6) formula against the C2:C6 range.&lt;br /&gt;&lt;br /&gt;In either case, this serves just fine for regular usage of Excel, but what if you're not using a regular Excel file, but one that is generated via VSTO and managed C#? You want to have the embedded managed functionality be accessible via VBA as well, right? And you want to ensure that every time you publish an update via ClickOnce, that the new functionality you generated is still accessible via VBA without the users having to go through a complicated process (or yourself for that matter) of updates.&lt;br /&gt;&lt;br /&gt;This more sophisticated method allows me to write new functionality against my managed excel file in VS2008 and hit publish and everything "just works" - due to steadfast preparation, of course.&lt;br /&gt;&lt;br /&gt;Okay, so how do we get an excel workbook with C# functionality and Matlab access that we can have interact directly or indirectly with VBA? &lt;br /&gt;&lt;br /&gt;Step Zero: However you obtain your Matlab routine (my actuary provided it to me using MATLAB Builder NE), ensure you have a deployed/exported Matlab routine (we're going to use VectorSum) and the necessary runtimes to develop with. These include:&lt;br /&gt;Matlab Compiler Runtime (I used v7.8)&lt;br /&gt;VSTO (I used 3.1)&lt;br /&gt;Visual Studio (I used 2008 Professional Edition)&lt;br /&gt;Microsoft Office (I used 2007 Professional Edition)&lt;br /&gt;&lt;br /&gt;The exported routine we called PhilipTest.dll and it deployed with the PhilipTest.ctf file as well. It deployed with PhilipTest_pkg.exe which I used to install the "DLL" and the MCRInstaller runtime to my machine.&lt;br /&gt;&lt;br /&gt;Step One: Create yourself a new solution (go ahead and backup your other solution or remove it) in VS2008, a managed C# Excel 2007 Workbook solution called MatlabTest, naming the actual workbook MatlabVectorSum, ensuring that it is a macro-enabled workbook, thus having the ".xlsm" extension. Add references to the MWArray.dll from where you installed the compiler runtime (should be in C:\Program Files (x86)\MATLAB\MATLAB Compiler Runtime\v78\toolbox\dotnetbuilder\bin\win32\v2.0, disregard the (x86) if you're not on a 64-bit OS) and the MATLAB DLL (PhilipTest.dll) file.&lt;br /&gt;&lt;br /&gt;Step Two: Add a class and an interface to your Managed Excel project called MatlabLibrary [MatlabLibrary.cs and IMatlabLibrary.cs] and ensure the class contracts to that interface. Code in the functionality you want; I stuck with making sure my using directives were in place, to make typing simpler, and had Excel.Range as inputs to the function, converting them to MWArrays, calling the PhilipTest.VectorSum(arrA, arrb) function, and returning the result set as an array of values. Add into your ThisWorkbook.cs file the following code under the ThisWorkbook_Startup event:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;             matlib = new MatlabLibrary();&lt;br /&gt;            // this will start "CallbackReg" macro in the workbook using matlib&lt;br /&gt;            ThisApplication.Run("MatlabModule.CallbackReg", matlib, missing, missing, missing, missing, missing,&lt;br /&gt;                                missing, missing, missing, missing, missing, missing, missing, missing,&lt;br /&gt;                                missing, missing, missing, missing, missing, missing, missing, missing,&lt;br /&gt;                                missing, missing, missing, missing, missing, missing, missing, missing); &lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Step Three: Register your project for COM interop (Project Properties) and ensure that your platform is specific to x86, sign your ClickOnce manifests, include your prerequisites and setup your publish options, update the AssemblyInfo.cs file to make sure the COM visibility is true, and mark your MatlabLibrary class and IMatlabLibrary interface with the [System.Runtime.InteropServices.ComVisible(true)] directives.&lt;br /&gt;&lt;br /&gt;Step Four: Go into your Excel view inside of Visual Studio 2008, click "View" on the Office Fluent Ribbon, Click "Macros" &gt; "View Macros" and create a new Macro called CallbackReg (found this little gem on the internet as well). Update your module name to "MatlabModule" and erase all code you see in it. Now, add in at the least the following code:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Public matlib As MatlabTest.MatlabLibrary&lt;br /&gt;&lt;br /&gt;Public Sub CallbackReg(callback As MatlabTest.MatlabLibrary)&lt;br /&gt;    Set matlib = callback&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Public Function PMTVectorSum(arrA As Excel.Range, arrB As Excel.Range) As Double()&lt;br /&gt;    PMTVectorSum = matlib.VectorSumDoubles(arrA, arrB)&lt;br /&gt;End Function&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Step Five: Test. I created a button control in the excel view inside of VS2008 through the Toolbox, generated an event handler, and wrote code in C# that utilized the MatlabLibrary class to make sure that C# itself could talk to MATLAB. I also used the above VBA function and an Office shape assigned to a macro that called the VBA function with specific arguments to prove that the VBA could call my C# function. And then I made a third button that proved VBA could talk directly to Matlab.&lt;br /&gt;&lt;br /&gt;Step Six: Publish. This is where I had the biggest issues. ClickOnce typically works extremely well for me, but with this project I had issues. 2 files (the PhilipTest.ctf.deploy file and a CPPAPI.netmodule.deploy file) would not publish so every time the end user tried to install from the VSTO manifest or the setup file, it would fail. I placed them manually into the Application Files folder, under the v1.0.0.2 folder, and when the users tried installing it after that, it worked fine. However, I need to figure out how to get all the necessary files to publish. VS2008 reports the publish succeeds just fine, but as witnessed by my end users, this is not the case. If anyone finds a solution for this, please let me know!&lt;br /&gt;&lt;br /&gt;I know the above tutorial doesn't show every little step and all of the code, but it's specific enough that a C# or VB.NET developer shouldn't have any real problems following along on it. The biggest steps are understanding what's going into the Matlab routines and what's coming out of them so that you can write your code efficiently and understand and document what's going on.&lt;br /&gt;&lt;br /&gt;Good luck, folks.&lt;div class="blogger-post-footer"&gt;Feed from http://yblis.blogspot.com/
-Ahad L. Amdani&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3363672606513530797-4683940188777914155?l=brwn20.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brwn20.blogspot.com/feeds/4683940188777914155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brwn20.blogspot.com/2008/10/matlab-c-vba-interop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/4683940188777914155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/4683940188777914155'/><link rel='alternate' type='text/html' href='http://brwn20.blogspot.com/2008/10/matlab-c-vba-interop.html' title='MATLAB / C# / VBA Interop'/><author><name>Ahad L. Amdani</name><uri>http://www.blogger.com/profile/06938455433697555924</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://a722.ac-images.myspacecdn.com/images01/49/l_91db64c065d7c30a44cd93cfc1d5bcd1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3363672606513530797.post-274952056499710299</id><published>2008-09-24T11:50:00.008-05:00</published><updated>2008-09-24T13:00:24.093-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='danc'/><category scheme='http://www.blogger.com/atom/ns#' term='software development'/><category scheme='http://www.blogger.com/atom/ns#' term='extreme programming'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='foodtronix'/><category scheme='http://www.blogger.com/atom/ns#' term='iterative development'/><category scheme='http://www.blogger.com/atom/ns#' term='stage gates'/><category scheme='http://www.blogger.com/atom/ns#' term='gamasutra'/><category scheme='http://www.blogger.com/atom/ns#' term='free to play'/><category scheme='http://www.blogger.com/atom/ns#' term='xp'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='portfolio models'/><category scheme='http://www.blogger.com/atom/ns#' term='point of sale'/><category scheme='http://www.blogger.com/atom/ns#' term='agile development'/><title type='text'>Agile and Stage Gate Development</title><content type='html'>I've long been a proponent of small teams of individuals working together in a fast-paced development environment, reminiscent of "xp" (or extreme programming), and I came across another great article from Lost Garden, &lt;a href="http://lostgarden.com/2007/02/rockets-cars-and-gardens-visualizing.html"&gt;Rockets, Cars and Gardens: Visualizing waterfall, agile and stage gate&lt;/a&gt;, which described a succinct and clear development platform and management methodology that I already embrace and didn't have any name for and simply believed to be "agile best practices." &lt;br /&gt;&lt;br /&gt;It's called Stage Gate and consists of cross-breeding portfolio models and iterative development. I worked at Lockheed Martin Missiles &amp; Fire Control over in Grand Prairie for about 7 months in an internship, and they believe strongly in following the waterfall method for their projects, although they were at that time also researching agile practices and methods. I subequently worked at L-3 Communications Link Simulation &amp; Training for roughly 10 months in 2 separate terms, first as an intern, then as a Software Engineer I, and their ethic was more of an iterative development approach with constant integration of the coding platform, so it was a bit closer to achieving that agile best practice method for such a large company. &lt;br /&gt;&lt;br /&gt;Both of these work experiences enriched my belief in the iterative system, especially since in between the two, I worked at a small company called FoodTronix. FoodTronix is a great company, but during my tenure there, the company was expanding faster than it could handle and hadn't looked into these techniques, falling into that haphazard pattern of developing whichever feature was being demanded most by the customers without a rigorous testing process or any thought into documentation, alongside being severely understaffed. These problems are typically considered huge, but the company was able to handle the fires primarily because they were in a constant dialogue with their customers. FoodTronix is a Restaurant Point of Sale system. I've seen better and worse. What sticks out with this company is their customer service and their adaptation to changing and evolving customer needs - they always handled their customers with care and immediately helped them address their issues and resolve their problems, putting out patch after patch until the biggest fires were extinguished acrossed the board for all of their customers. &lt;br /&gt;&lt;br /&gt;To summarize, I learned from these experiences that an iterative development model worked very well for me as in individual and for large companies, along with agile and xp practices such as continuous integration, adaptation early and late into development. I had also seen that I worked better across multiple projects with a selection process of picking which ones to proceed with through a series of comparisons, which I can now call kill gates, in which I examined each project, its pros and cons, its required estimated time left, its original purpose and its final, intended result. &lt;br /&gt;&lt;br /&gt;I hadn't heard of portfolio models until I read the post, but it seems like a very logical solution - that of spreading and managing risk via multiple projects in parallel. Now, I don't work on multiple products at a time, but I love the breakdown of how even an individual product can be compartmentalized into several isolated projects with focused teams on a susbet of features or some sort of a divisional area. Of course you have to have overall management, but the Cabal method described by Valve in the Gamasutra article he referenced seems to impart to me a singular philosophy of involving everyone in a project from each of the individual areas in a face-to-face meeting of brainstorming, understanding the individual areas a bit better, and learning how to work with each other better, overall.&lt;br /&gt;&lt;br /&gt;I think I'm going to put together a post, eventually, that summarizes my exact philosophy and posit if it can be beneficial to others to follow along and see what intuitive changes they make to the process. As an independent consultant and a typical nine-to-fiver in a small team at a mid-sized company, I find that I don't have to necessarily adopt separate methodologies of work in order to fully harness and focus my energies. In fact, having this one, tight philosophy of adaptation and managing your time across multiple projects with constant customer interaction allows me to state that the focal point is in organization, management and preparation of the overall product in conjunction with the rest of your team and your vested customers, whether you're a project manager, a software developer, a customer, or an external party relying on a completed component for your own development or use and aren't originally invested in the product. &lt;br /&gt;&lt;br /&gt;Yes, you have to get the work done, and you have to test, and you have to ensure that everything is consistent, visually, functionally, etc. - but the focus isn't on making sure you're meeting some deadline and writing x amount of source lines of code, or writing tons of documentation or trying to "design" and "architect" the perfect end-all solution, but rather that you're achieving the customers' current and immediate needs with a look ahead (but not a project) to the future, and that you, your team, and the customer all understand that as customer needs evolve, the product evolves, the project schedules evolve (be it a delay or a cut in time), the team evolves, and the business relationship evolves.&lt;br /&gt;&lt;br /&gt;Either way, some of the great resources I've come across that I prefer to read and take a look at whenever I have some spare time include:&lt;br /&gt;&lt;a href="http://www.freetoplay.biz/"&gt;Free To Play&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://www.lostgarden.com"&gt;Lost Garden&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://www.agilegamedevelopment.com/blog.html"&gt;Agile Game Development&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://www.xprogramming.com"&gt;Extreme Programming&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://www.gamasutra.com"&gt;Gamasutra&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also, if you're ever bored, check out &lt;a href="http://www.nuklearpower.com/latest.php"&gt;8-Bit Theatre&lt;/a&gt;, &lt;a href="http://www.cad-series.com/"&gt;CAD the Series&lt;/a&gt;, and &lt;a href="http://www.pandora.com/"&gt;Pandora&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;Feed from http://yblis.blogspot.com/
-Ahad L. Amdani&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3363672606513530797-274952056499710299?l=brwn20.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brwn20.blogspot.com/feeds/274952056499710299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brwn20.blogspot.com/2008/09/agile-and-stage-gate-development.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/274952056499710299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/274952056499710299'/><link rel='alternate' type='text/html' href='http://brwn20.blogspot.com/2008/09/agile-and-stage-gate-development.html' title='Agile and Stage Gate Development'/><author><name>Ahad L. Amdani</name><uri>http://www.blogger.com/profile/06938455433697555924</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://a722.ac-images.myspacecdn.com/images01/49/l_91db64c065d7c30a44cd93cfc1d5bcd1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3363672606513530797.post-670852729180235041</id><published>2008-09-23T10:58:00.005-05:00</published><updated>2008-09-23T11:06:52.485-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mda'/><category scheme='http://www.blogger.com/atom/ns#' term='danc'/><category scheme='http://www.blogger.com/atom/ns#' term='lostgarden'/><category scheme='http://www.blogger.com/atom/ns#' term='cgd'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='skill chains'/><title type='text'>An old post to a great article by LostGarden</title><content type='html'>I was perusing once again one of my favorite blogs out there, &lt;a href="http://www.lostgarden.com"&gt;http://www.lostgarden.com&lt;/a&gt;, and since he's recently re-tagged his entire blog and updated his directory listing, I was reviewing an old article Danc had written, called The Chemistry of Game Design (which was also featured on Gamasutra).&lt;br /&gt;&lt;br /&gt;I like to read the comments the users post in response to his article, as Danc also tends to reply to these remarks, and I'd made a post with respect to his article that I had forgotten about and that I think is still worth noting. The link to the Wikipedia article about game design no longer features the Psychological Profiling section, but some googling about on your own should give you a nice insight on what you're looking for with regards to that.&lt;br /&gt;&lt;br /&gt;Here's Danc's article:&lt;br /&gt;&lt;a href="http://lostgarden.com/2007/07/chemistry-of-game-design.html"&gt;http://lostgarden.com/2007/07/chemistry-of-game-design.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's my post:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;em&gt;Great article Danc. A few things I noted, since I just got a chance to reading your article in its entirety:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Psychological Profiling / Player Model:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The player described in the player model is limited, in that it describes a specific subset of the set of players: those that are "driven," usually to learn or dominate (and to dominate, they must learn first). Due to the fact that a psychological model is called for, the player model described contains the following player subsets: Timmy Power gamers, Timmy Diversity, Johnny Combo, Johnny Offbeat, Johnny Uber, and all the Spikes, who, evidently, this player model is perfect for. [See Game Design in Wikipedia, specifically Psychological Profiling: http://en.wikipedia.org/wiki/Game_design]&lt;br /&gt;&lt;br /&gt;So what about the Timmy Social, Timmy Adrenaline, and Johnny Deck profiles? One could argue that they aren't the mainstream of gamers, because they aren't "hardcore" gamers - however, Timmy Adrenaline would disagree vehemently, as witnessed by DOOM3's and F.E.A.R.'s success, and The Sims is proof that Timmy Social is a very large demographic that can't simply be ignored. Johnny Deck's profile, in my honest opinion, represents those players that build or generate some sort of expression of themselves or their experiences in the game, such as a guild or clan, a house or empire, etc. And they're usually rooted into the other player profiles on some level as well.&lt;br /&gt;&lt;br /&gt;The reason I mention this is to ask if maybe there isn't a player model that abstracts out a bit further to include a more involved psychological model. The purpose of your original abstraction was to focus on the core that is the player - but if the player is too loosely or too strictly defined, then it degenerates a critical component of the chemistry of game design. In this situation, the player is too strictly defined.&lt;br /&gt;&lt;br /&gt;On that same note, I believe the Wiki should be updated to include your article on game design and your blog in general, as there is a wealth of game design information available here.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Pre-Existing Skills:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Shouldn't the general assumption be, of every game, only that a player cues in to the screen for some sort of visual feedback, and that they know that pressing buttons or moving analog sticks is supposed to do SOMETHING, as opposed to nothing? With this same thought process comes the need for every game to have at least a very simple tutorial, if not more involved for more complex games, which defines and describes the game controller and its general actions, and the capability to learn advanced skills by utilization of mastered basic skills, thus teaching even a non-gamer that mastery and utilization of certain skills leads to game advancement and skill advancement. &lt;br /&gt;&lt;br /&gt;Most games today do provide a tutorial, but not all of them, and often times the "New Features" or "Tutorials" sections are nested into sub-menus that aren't necessarily clear in the first place (Example: Madden '08 by EA Sports). And in some cases, the tutorials are demonstration-based (see earlier: Madden '08, which provides nice video and audio tutorials showing exactly what to do) but don't allow the player to interact there directly to try a skill-set out and see if they can't get the basis for it down outside of actual gameplay instead of possibly trying it out during gameplay, messing up, and costing yourself time to re-load from a game death, etc. As such, these games are less effective in delivering the message to non-gamers or gamers who like directly to "jump into the action" and there's no built-in game-based tutorial. Obviously, advanced gamers may want to skip a built-in tutorial, and so they should be given that capability, just as newer gamers may want to listen/interact with the built-in tutorial and given that capability. (This goes with what you state in the Pre-Mastery of Skill Taught In The Game section regarding feelings of boredom and frustration for advanced players.)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Skill Atoms &amp; Skill Chains: (Objectives, Future Topics)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Proposal: an artificial intelligence analysis framework, in comparison with the MDA game analysis framework for game analysis that you mentioned, that utilizes Skill Atoms and Skill Chains as they are progressed throughout the Player's Gameplay Life Cycle (as I like to call the fundamental game play, skill mastery and burnout flow described by your Chemistry of Game Design). If some sort of CGD architecture is built into the game itself and actively monitors a players partial mastery, full mastery and burnout of Skill Atoms, then it can eventually generate data by which an adaptable artificial intelligence can play against the player, allowing for variable levels of interaction and difficulty for the player, constantly providing a challenging stimulus without leading to frustration or boredom. Such information would be tremendously useful in any number of applications within the gameworld itself, and as a preferences experience for future game titles (and has numerable applications in the marketing world as well). In addition, this analysis could clue players into how using certain previously burned-out atoms may advance their skill-set later on during the game, by knowledge of their usage history with the skill atom in question and the necessity of learning the skill atom further down the chain for completion of their current objectives.&lt;br /&gt;&lt;br /&gt;Just some food for thought. I do apologize that it took me as long as it did to read such an excellent article, and I'd love to hear your reply.&lt;br /&gt;&lt;br /&gt;-Ahad&lt;/em&gt;&lt;/blockquote&gt;&lt;br /&gt;It's an interesting read, and my post reminds me of some of the more interesting notions I had regarding AI.&lt;br /&gt;&lt;br /&gt;Take care,&lt;br /&gt;  Ahad L. Amdani&lt;div class="blogger-post-footer"&gt;Feed from http://yblis.blogspot.com/
-Ahad L. Amdani&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3363672606513530797-670852729180235041?l=brwn20.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brwn20.blogspot.com/feeds/670852729180235041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brwn20.blogspot.com/2008/09/old-post-to-great-article-by-lostgarden.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/670852729180235041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/670852729180235041'/><link rel='alternate' type='text/html' href='http://brwn20.blogspot.com/2008/09/old-post-to-great-article-by-lostgarden.html' title='An old post to a great article by LostGarden'/><author><name>Ahad L. Amdani</name><uri>http://www.blogger.com/profile/06938455433697555924</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://a722.ac-images.myspacecdn.com/images01/49/l_91db64c065d7c30a44cd93cfc1d5bcd1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3363672606513530797.post-1337924724377278820</id><published>2008-09-23T10:24:00.005-05:00</published><updated>2008-09-23T11:07:33.377-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Worth Reading'/><category scheme='http://www.blogger.com/atom/ns#' term='Welcome'/><category scheme='http://www.blogger.com/atom/ns#' term='First Post'/><category scheme='http://www.blogger.com/atom/ns#' term='Content'/><title type='text'>Echo Consulting, Small Business Consultations, Software Automation and Development, and Business Efficiency... in a big way!</title><content type='html'>&lt;strong&gt;Welcome!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This site is about everything the title of this post entails, along with some articles and links here and there about game design and development. I might throw a little light in on things such as software algorithms, the struggles of a young, independent game developer (myself! -- that is, if you can count a 22-year old full-time employee with his own small business who plays video games most of his spare time and wants to make a game of his own one day an indie), the small business advice I receive or give, the books I've read to come to the conclusions I've come to in the present time, and a bunch of other content that probably has no bearing whatsoever on anything important except that I find it interesting or special in some way. &lt;br /&gt;&lt;br /&gt;I have extensive ramblings and rants on a wide variety of topics, I just seem to lack the proper time frame to focus all of the daily knowledge I come across into a textual format, properly edited, and publish it on the internet in the form of a blog.&lt;br /&gt;&lt;br /&gt;In any case, I welcome you and hope you get something positive out of this, or even if it's just a waste of time and a way to kill that ever-present and sinister calamity: monotony.&lt;br /&gt;&lt;br /&gt;Good luck, good hunting, and good gaming!&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;  Ahad L. Amdani&lt;div class="blogger-post-footer"&gt;Feed from http://yblis.blogspot.com/
-Ahad L. Amdani&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3363672606513530797-1337924724377278820?l=brwn20.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://brwn20.blogspot.com/feeds/1337924724377278820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://brwn20.blogspot.com/2008/09/echo-consulting-small-business.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/1337924724377278820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3363672606513530797/posts/default/1337924724377278820'/><link rel='alternate' type='text/html' href='http://brwn20.blogspot.com/2008/09/echo-consulting-small-business.html' title='Echo Consulting, Small Business Consultations, Software Automation and Development, and Business Efficiency... in a big way!'/><author><name>Ahad L. Amdani</name><uri>http://www.blogger.com/profile/06938455433697555924</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://a722.ac-images.myspacecdn.com/images01/49/l_91db64c065d7c30a44cd93cfc1d5bcd1.jpg'/></author><thr:total>0</thr:total></entry></feed>
