tag:blogger.com,1999:blog-55917711347201827612024-03-19T22:27:35.033-07:00DeveloperStamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-5591771134720182761.post-73878187352070180822013-10-23T07:55:00.000-07:002013-10-23T12:11:59.438-07:00Windows 8 - The new Windows Search (Goodbye, Windows Start Screen!)<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;">There's the new "Navigation" tab in the taskbar settings. </span><br />
<br />
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://i.imgur.com/2cZf0EK.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://i.imgur.com/2cZf0EK.png" width="269" /></a></div>
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;"><br /></span>
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;">What you see is NOT the default but what I have it set to. </span><span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;">Go through these settings, and get a feel for what they do!</span><br />
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;"><br /></span>
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;">The start search has been streamlined! When "search everywhere" is checked in taskbar settings, search results include EVERYTHING; files, apps, and settings! Results appear below the search field. </span><br />
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;"><br /></span>
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;">When testing this, I found it odd that I would press the windows key, then results would appear below while the apps list would stay idle, so I poked around, and found that <b>Windows-S serves the exact same functionality</b>. No more searching by pressing "windows" and being distracted. Its all about the new streamlined Windows-S. Combo that with the "sign in to desktop" option, i'll hardly see that screen now! </span><span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;"><b>Windows-S is 8.1 only.</b></span><br />
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrbYIoNYabexPcidyPU8qUKiA_9-90CND8_LNEXeB5CYaSN5WMp4lqDqqEA4j1HiR5MqwPT9wauh5ZnT7hnIfKuQppc7jbJoMmk7Najl9fEPmscn5xuhfj3H7xmvF0lla3mbpVtSee7lyJ/s1600/CropperCapture%5B28%5D.Gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrbYIoNYabexPcidyPU8qUKiA_9-90CND8_LNEXeB5CYaSN5WMp4lqDqqEA4j1HiR5MqwPT9wauh5ZnT7hnIfKuQppc7jbJoMmk7Najl9fEPmscn5xuhfj3H7xmvF0lla3mbpVtSee7lyJ/s320/CropperCapture%5B28%5D.Gif" width="91" /></a></div>
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;"><br /></span>
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;"><br /></span>
<span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;">If you click the suggestions below the results, it'll do a bing search for those terms in the bing app. Pretty neat, and what I had expected 8.0 to do before the change in direction to "Modern" apps.</span>Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com1tag:blogger.com,1999:blog-5591771134720182761.post-43552468389246574132013-10-22T07:49:00.001-07:002013-10-22T07:50:01.518-07:00Windows 8 - What developers should know<span style="color: #333333; font-family: Arial, sans-serif; font-size: x-small;"><span style="line-height: 17px;">Here's the quick rundown:</span></span><br />
<br />
<ul>
<li><span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;">Download will happen in MS Store, no estimated time left. </span></li>
<li><span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;">After it is done downloading, the computer WILL reboot after x amount of time (not sure what, I went for lunch), no way to delay it. Keep your documents saved people!</span></li>
<li><span style="background-color: white; color: #333333; font-family: Arial, sans-serif; font-size: 13px; line-height: 17px;">Be sure to upgrade to the latest VMware workstation, network connectivity will not work until you're on VMware 10 (at least, without major rehauling of the network config)</span></li>
<li><span style="color: #333333; font-family: Arial, sans-serif; font-size: x-small;"><span style="line-height: 17px;">Windows-S</span></span></li>
</ul>
<span style="background-color: white;"><span style="color: #333333; font-family: Arial, sans-serif; font-size: x-small;"><span style="line-height: 17px;">From my perspective, I was no worse with 8.0 than 8.1. I tolerated the windows-D combo every time I logged in. The new windows button is worthless, bringing me back to that start menu (or apps, if configured).</span></span></span><br />
<span style="background-color: white;"><span style="color: #333333; font-family: Arial, sans-serif; font-size: x-small;"><span style="line-height: 17px;"><br /></span></span></span>
<span style="background-color: white;"><span style="color: #333333; font-family: Arial, sans-serif; font-size: x-small;"><span style="line-height: 17px;">In conclusion, it's like you ordered coffee with cream and sugar, they forgot the cream and sugar with windows 8.0, then apologizes and gives you just the cream with 8.1. We still need the sugar!</span></span></span>Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-16162528279169585212013-10-15T08:24:00.002-07:002013-10-15T08:25:14.523-07:00CodeRage 8!I'm at Coderage 8, speaking about abstracting your UI and business logic!<br />
<br />
Want to see the code I edited in the session? <a href="https://github.com/thestamp/CodeRage8">https://github.com/thestamp/CodeRage8</a><br />
<br />
Also, checkout my Twitter and LinkedIn accounts!<br />
<br />
<a href="http://twitter.com/pascalcoder">@PascalCoder</a> (For general ramblings)<br />
<a href="http://twitter.com/DelphiTips">@DelphiTips</a> (For Delphi tips)<br />
<a href="http://linkedin.com/in/JeffLefebvre">in/JeffLefebvre</a> (LinkedIn)Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-25909229966320689112012-02-17T09:42:00.000-08:002012-02-17T09:57:58.726-08:00Code Tidbits: Swapping Assignment VariablesSometimes you come across a situation where you want to assignment 20 or variables, then later on assign them back. Situations like:<br />
<br />
<ul>
<li>Class adapter functions</li>
<li>Form Load/Save functions</li>
<li>Queries. Load from fields, then assign to parameters.</li>
</ul>
<br />
This function will save you from having lots of copy pasta. Run your assignment code through this function, and the variables will be swapped on either side of the assignment operator.<br />
<br />
For example:<br />
<br />
<div style="font-family: "Courier New",Courier,monospace;">
frmEdit.edtItemPrice.text := Query1.FieldByName('ItemPrice').AsInteger;</div>
<br />
becomes<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">Query1.FieldByName('ItemPrice').AsInteger := frmEdit.edtItemPrice.text;</span><br />
<br />
Simply replace the FieldByName with ParamByName and presto!<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">Query1.ParamByName('ItemPrice').AsInteger := frmEdit.edtItemPrice.text;</span><br />
<br />
Excellent! And here is the function!<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">procedure SwapAssignments(Lines: tstrings);<br />var<br /> i : integer;<br /> assignIndex : integer;<br /> leftstr, rightstr : string;<br />begin<br /> for i := 0 to Lines.count - 1 do<br /> begin<br /> assignIndex := pos('=',Lines[i]);<br /><br /> leftstr := copy(lines[i], 1, assignIndex - 2);<br /> rightstr := copy(lines[i], assignIndex + 1, length(lines[i]) - assignIndex - 1);<br /><br /> lines[i] := trim(rightstr) + ' := ' + trim(leftstr) + ';';<br /> end;<br />end;</span><br />
<br />
<br />Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-30015918130719764972011-10-18T10:35:00.000-07:002011-10-18T12:20:19.605-07:00Creating a Concave User Interface<i></i><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSYy0LOQdI-HXP15LrVxunCXMhN3qlSYNf5r7j6igmZXLvnZKnxqapbK9WRUp0SWvL0rxYJXSrVDFISxomgeEwbeFFF3VXbXfUMyYHZb1539mmFYW0bpg07TvaqJuF_LCqrER1CzQ4JjrL/s1600/kmdo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="129" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSYy0LOQdI-HXP15LrVxunCXMhN3qlSYNf5r7j6igmZXLvnZKnxqapbK9WRUp0SWvL0rxYJXSrVDFISxomgeEwbeFFF3VXbXfUMyYHZb1539mmFYW0bpg07TvaqJuF_LCqrER1CzQ4JjrL/s320/kmdo.jpg" width="320" /></a></div>
<br />
<i>This post is part of series of posts to help developers develop great user interfaces. </i><br />
<br />
One way to take your FireMonkey HD application into the the 3rd dimension is to make a concave user interface. This interface simply consists of several TLayer3Ds, arranged in a concave fashion. Each TLayer3D simply is the parent of a form on a different unit. Its that simple!<br />
<br />
Well, not quite. You need this bit of code.<br />
<div style="font-family: "Courier New",Courier,monospace;">
<br /></div>
<a href="http://www.learndelphi.com/uSet3DGridPosition.zip">http://www.learndelphi.com/uSet3DGridPosition.zip</a><br />
<br />
This function takes in an X,Y position of your concave user interface, along with other important info, and returns the position, width, and height of your TLayer3D! All you need to do is fill your 3D interface with TLayer3D components, and call this function to set the positions!<br />
<br />
<br />
For more great articles, check out <a href="http://learndelphi.com/">LearnDelphi.com</a>!<br />
To convert your VCL/VGScene applications to FireMonkey, check out the <a href="http://pascalcoder.blogspot.com/search/label/MonkeyGroomer">FREE MonkeyGroomer tool</a>! <br />
Check out more information about 3D and Delphi at the <a href="http://tp.embarcadero.com/ctprefer?partner_id=1438&product_id=0">Embarcadero Developer Portal</a><br />
Follow me during my CodeRaging!<br />
<br />
<ul>
<li style="text-align: left;">Twitter: <a href="http://twitter.com/#%21/CodeRage">@Coderage</a>, or <a href="http://twitter.com/#%21/search/%23CodeRage6">#CodeRage6</a></li>
<li style="text-align: left;"><a href="http://www.embarcadero.com/coderage">CodeRage FREE Signup</a></li>
</ul>Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com2tag:blogger.com,1999:blog-5591771134720182761.post-26053124163572102872011-10-17T15:18:00.000-07:002011-10-17T15:22:59.088-07:00CodeRage 6 is ON!<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwRvaQs0GIJsDHgE0ydLU1q6QNZLPhbUZllb3f7dT-52VTtUA6jVgxcujgRhw9fJoD8VzsnSSriSZnsm50D8dOz4JXlgZhvQ9fskS_GK8qE6Yq2a-3a4MBt48ewK98Wa7rhx6u4JJhEMbz/s1600/CodeRage.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwRvaQs0GIJsDHgE0ydLU1q6QNZLPhbUZllb3f7dT-52VTtUA6jVgxcujgRhw9fJoD8VzsnSSriSZnsm50D8dOz4JXlgZhvQ9fskS_GK8qE6Yq2a-3a4MBt48ewK98Wa7rhx6u4JJhEMbz/s400/CodeRage.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
I am proud to announce that CodeRage 6 is going on right now! Here is how you can follow it!</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<ul>
<li style="text-align: left;">Twitter: <a href="http://twitter.com/#!/CodeRage">@Coderage</a>, or <a href="http://twitter.com/#!/search/%23CodeRage6">#CodeRage6</a></li>
<li style="text-align: left;"><a href="http://tp.embarcadero.com/ctprefer?partner_id=1438&product_id=0">More information about Delphi</a></li>
<li style="text-align: left;"><a href="http://www.embarcadero.com/coderage">CodeRage FREE Signup</a></li>
</ul>
<div style="text-align: left;">
And, be sure to watch my session tomorrow at 12:00 PDT, "<a href="http://www.embarcadero.com/coderage/sessions?session=Tuesday#Session18">FireMonkey FireStarter</a>!" See you there!</div>
<br />
<br />Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com1tag:blogger.com,1999:blog-5591771134720182761.post-23463501192533782412011-10-12T22:46:00.000-07:002011-10-13T15:36:43.108-07:00Announcement: MonkeyGroomer 0.1 Public Release!<b></b><br /><b></b><br />
<b>I am proud to announce the public release of MonkeyGroomer 0.1!</b><br />
<br />
<a href="http://www.mediafire.com/?13mw6w79ozvvunk">Download Now for FREE!</a><br />
<br />
<b><span class="Apple-style-span" style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"><i>MonkeyGroomer <span class="Apple-style-span" style="font-weight: normal;">is a simple application that aims to help convert your Delphi projects to </span><b style="font-weight: normal;">FireMonkey</b><span class="Apple-style-span" style="font-weight: normal;"> projects. </span>Currently only VGScene is supported.<span class="Apple-style-span" style="font-weight: normal;"> It also supports VGScene style files.</span></i></span></b><br />
<br />
<ul>
<li>MonkeyGroomer supports over 100 VGScene classes and components</li>
<li>In this release, components not supported in the selected project will halt the conversion. (with a helpful message)</li>
<li>In the final release, you will have the option of removing unsupported components.</li>
<li>Currently the VCL conversion converts specific properties for any component. In a future release the engine will be more discriminatory.</li>
<li>Most VGScene components have been tested. </li>
</ul>
<br />
<ul>
<li>A wizard is planned, to make the conversion process simple and painless!</li>
<li>Most of the work was done on the form parser and conversion engine. Once support for VCL is complete this engine will be adapted to support other delphi platforms and components in the future, using <a href="http://www.simonjstuart.com/2011/09/12/lua4delphi-fundraiser/">Lua4Delphi</a>! (<a href="http://www.simonjstuart.com/2011/09/12/lua4delphi-fundraiser/">donate now!</a>)</li>
</ul>
<div>
<div>
Special thanks to <a href="http://twitter.com/#!/SimonJStuart">Simon J Stuart</a>!</div>
<div>
<br /></div>
<div>
For inquiries, please contact me at <a href="mailto:thestamp@gmail.com">thestamp@gmail.com</a></div>
</div>
<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: 1em; margin-right: 1em; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg47B8WJWCnMpmAiZ3j5Dz5Dd4mUbY202Z94qMHxMIeqD6RtoDNNbmN_ejqUfzJ8bYRG3AEXMSfky73WzGNstEIL1u7QuB0A9lHrB1Whaj59hVX5MvfsN2touj6UTaObed5uXSBl7J5xFVG/s1600/animals%252Ccat%252Ccats%252Ccute%252Cmonkey%252Crelationship-d960a798931a1048f533c4f51ec48574_h.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg47B8WJWCnMpmAiZ3j5Dz5Dd4mUbY202Z94qMHxMIeqD6RtoDNNbmN_ejqUfzJ8bYRG3AEXMSfky73WzGNstEIL1u7QuB0A9lHrB1Whaj59hVX5MvfsN2touj6UTaObed5uXSBl7J5xFVG/s320/animals%252Ccat%252Ccats%252Ccute%252Cmonkey%252Crelationship-d960a798931a1048f533c4f51ec48574_h.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span class="Apple-style-span" style="font-size: xx-small;">Quoted from: http://tgr.ph/cjQUr2</span></td></tr>
</tbody></table>Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-8014112992783122962011-10-12T07:41:00.000-07:002011-10-13T15:39:59.646-07:00MonkeyGroomer - RoadmapThe feedback from MonkeyGroomer has been tremendous! That, paired with the announcement of MonkeyGroomer <a href="http://www.simonjstuart.com/2011/09/22/monkeygroomer-convert-automagically-from-vclvgscene-to-firemonkey/">having plans for LUA support</a>, this aims to be a very important release for the Delphi community! Not only will you be able to migrate your VCL and VGScene applications, you will be able to script and convert your own custom components! So, whats the plan?<br />
<div>
<br /></div>
<div>
This week:</div>
<div>
<ul>
<li>Release MonkeyGroomer with Full VGScene support (stable) for public use <b>for free!</b></li>
<li>Release an alpha version with limited VCL support, to test the VCL conversion engine.</li>
</ul>
<div>
Over the next month:</div>
</div>
<div>
<ul>
<li>Release continual updates with additional VCL and other common controls</li>
<li>Set up a community for developers to discuss and share experiences on migrating their projects.</li>
</ul>
<div>
And when that's done:</div>
</div>
<div>
<ul>
<li>Add <a href="http://www.simonjstuart.com/2011/09/22/monkeygroomer-convert-automagically-from-vclvgscene-to-firemonkey/">Lua4Delphi</a> support</li>
<li>Set up a community for developers to share and discuss migrating custom and third party components.</li>
</ul>
<div>
If you have any questions, feel free to contact me at <a href="mailto:thestamp@gmail.com">thestamp@gmail.com</a>, or follow me on twitter: <a href="http://twitter.com/pascalcoder">@PascalCoder</a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRzQ8N40AEceiJbOVNwhh8qKon7SCJpdHo_bjC7erMe2zFwdzX7gOqq3bio_ALSFDdyYvQTPgxIWcJlRpUxgYGcg4GnhIDIhicFd8o0L7u1GHrsmfWfBLywZsIvy66exchtckQfsMFxFhJ/s1600/fork-in-the-road.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRzQ8N40AEceiJbOVNwhh8qKon7SCJpdHo_bjC7erMe2zFwdzX7gOqq3bio_ALSFDdyYvQTPgxIWcJlRpUxgYGcg4GnhIDIhicFd8o0L7u1GHrsmfWfBLywZsIvy66exchtckQfsMFxFhJ/s200/fork-in-the-road.jpg" width="150" /></a></div>
<br /></div>
</div>Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-77970418093149776212011-10-07T14:58:00.000-07:002011-10-13T15:41:03.952-07:00Join me at my CodeRage Session: FireMonkey FireStarter<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihTozZpFmFps10HaCBvRJYQu86GqBZHBlMRB8bpEfJaIdar5l_L7fjDrv_cdn8qZSzq34kvTDM9VffVmtcWA6Iu_eNE54paCUCgXeOgJkzWDo0lRzv-vpni_qJfMJkAG0CMEgMbqCT9kTi/s1600/Code-Rage_970x200_v3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="129" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihTozZpFmFps10HaCBvRJYQu86GqBZHBlMRB8bpEfJaIdar5l_L7fjDrv_cdn8qZSzq34kvTDM9VffVmtcWA6Iu_eNE54paCUCgXeOgJkzWDo0lRzv-vpni_qJfMJkAG0CMEgMbqCT9kTi/s640/Code-Rage_970x200_v3.jpg" width="640" /></a></div>
<br />
<br />
That's right! I will be doing a talk on some FireMonkey essential topics, named "<a href="http://www.embarcadero.com/coderage/sessions?session=Tuesday#Session18">FireMonkey FireStarter</a>!"<br />
<br />
<a href="http://forms.embarcadero.com/forms/CodeRage6Registration">Click here to register now!</a><br />
<br />
<br />
Its my first time talking at CodeRage (or any event for that matter), so enjoy me stumbling around the virtual stage, making a fool of myself! I'll be in the official IRC chat as well (url and channel TBA), so we can chat as the session happens! It'll be a great time, see you there! Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-30449365814106904032011-09-15T00:15:00.000-07:002011-10-13T14:21:26.287-07:00MonkeyGroomer - Action Shots and Component List<br />
<b>Update: MonkeyGroomer 0.1 has been released! <a href="http://pascalcoder.blogspot.com/2011/10/announcement-monkeygroomer-01-public.html">Download here!</a></b><br />
<div>
<br /></div>
<br />
<span class="Apple-style-span" style="background-color: white; color: #222222; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;"><i><b><a href="http://pascalcoder.blogspot.com/2011/09/announcement-monkeygroomer-convert.html">MonkeyGroomer</a> </b>is a simple application that converts your Delphi VGScene or VCL form files to <b>FireMonkey</b> form files. It will also support VGScene style files.</i></span><br />
<br />
The upcoming release of MonkeyGroomer Alpha will have support for an incredible amount of components, both for VGScene, VGScene styles, and VCL. <br />
<ul>
<li>MonkeyGroomer supports over 100 VGScene and VCL components</li>
<li>In this release, components not supported in the selected project will halt the conversion. (with a helpful message)</li>
<li>In the final release, you will have the option of removing unsupported components.</li>
<li>The final release will be available as a wizard to simplify migration.</li>
<li>Currently the VCL conversion converts specific properties for any component. In a future release the engine will be more discriminatory.</li>
</ul>
<div>
<i>For more information, contact me at <a href="mailto:thestamp@gmail.com">thestamp@gmail.com</a>.</i></div>
<div>
<i><br /></i></div>
<div>
<b>Action Shots</b></div>
<div>
<br /></div>
<div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW_7ozCnwZsfPPr9acafyzpeane6E5f-PO9CZRiX1pik026DA60d2hkw-aFsfHfLOzBZhLdet4KLdBiYs9Lc2vWhooSK3YyaU6D_IOPfWVVrix-mc9-goqm1qfxejtuYi0fzOIVUnhS55S/s1600/VG.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjW_7ozCnwZsfPPr9acafyzpeane6E5f-PO9CZRiX1pik026DA60d2hkw-aFsfHfLOzBZhLdet4KLdBiYs9Lc2vWhooSK3YyaU6D_IOPfWVVrix-mc9-goqm1qfxejtuYi0fzOIVUnhS55S/s320/VG.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 13px; text-align: center;">VGScene</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikJvni6gzcEc-_Cj_9_oxHZAlncyFbsADVWQKOgCokQdiuptL_K8XmnNmX7RfpjJ_U7tVSh2Yk1CA4O6VfJaEignaHADBH1jZ26_xGw2cJvPFFqJs_sVkmBgnJP5d-Z0UjjVJYvwzTwynp/s1600/VG+-+FM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="159" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikJvni6gzcEc-_Cj_9_oxHZAlncyFbsADVWQKOgCokQdiuptL_K8XmnNmX7RfpjJ_U7tVSh2Yk1CA4O6VfJaEignaHADBH1jZ26_xGw2cJvPFFqJs_sVkmBgnJP5d-Z0UjjVJYvwzTwynp/s320/VG+-+FM.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 13px; text-align: center;">VGScene converted to FireMonkey</td></tr>
</tbody></table>
<br />
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIAtBdQrXvo__l1mMKyTQ_iVOm1fBu0XfS3Yrts2ZOAT_wgePcsrXnpzbPiObBXpmbjCMZ8ETgQNHSv4GiG6LQ4QqIkemeIE0sANxBJqkjH7p1NlawGGCcnytoZHZz-JudWSI5KxVEriWM/s1600/VCL.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="194" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIAtBdQrXvo__l1mMKyTQ_iVOm1fBu0XfS3Yrts2ZOAT_wgePcsrXnpzbPiObBXpmbjCMZ8ETgQNHSv4GiG6LQ4QqIkemeIE0sANxBJqkjH7p1NlawGGCcnytoZHZz-JudWSI5KxVEriWM/s320/VCL.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">VCL</td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSaZXRb54jNp1Bza_EULQ17f5JDcoiE5Cz0m_PWiDIe4QLzTheuI1v_mFss2k_1MPSWMTDsRBmiLr4UzGqM3COUrskj3vvReS1cf573ebeOVCgaGRMllkVUnWVsa8c6ao-a4d3NzZOZRMc/s1600/VCL+-+FM.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="209" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSaZXRb54jNp1Bza_EULQ17f5JDcoiE5Cz0m_PWiDIe4QLzTheuI1v_mFss2k_1MPSWMTDsRBmiLr4UzGqM3COUrskj3vvReS1cf573ebeOVCgaGRMllkVUnWVsa8c6ao-a4d3NzZOZRMc/s320/VCL+-+FM.png" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">VCL Converted to FireMonkey</td></tr>
</tbody></table>
<div style="text-align: center;">
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>Supported Components (so far)</b></div>
<div>
<div>
<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">VCL</span></b><br />
<span class="Apple-style-span" style="font-size: x-small;"><i>(preliminary list)</i></span><br />
<br />
<ul>
<li>TLabel, </li>
<li>TStringBox, </li>
<li>TEdit,</li>
<li>TMemo,</li>
<li>TButton</li>
</ul>
<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">VGScene</span></b><br />
<span class="Apple-style-span" style="font-size: x-small;"><i>(final list)</i></span><br />
<br />
<ul>
<li>TvgBackground,</li>
<li>TvgBitmapAnimation,</li>
<li>TvgBitmapListAnimation,</li>
<li>TvgColorAnimation,</li>
<li>TvgColorKeyAnimation,</li>
<li>TvgFloatKeyAnimation,</li>
<li>TvgGradientAnimation,</li>
<li>TvgButton,</li>
<li>TvgStringListBox,</li>
<li>TvgFloatAnimation,</li>
<li>TvgTreeViewItem,</li>
<li>TvgTextBoxClearBtn,</li>
<li>TvgTextBox, </li>
<li>TvgMemo,</li>
<li>TvgCalendarTextBox, </li>
<li>TvgComboTextBox,</li>
<li>TvgPath,</li>
<li>TvgImage,</li>
<li>TvgShadowEffect,</li>
<li>TvgInnerGlowEffect,</li>
<li>TvgGlowEffect,</li>
<li>TvgAngleButton, (now TArcDial)</li>
<li>TvgTabItem,</li>
<li>TvgRadioButton,</li>
<li>TvgListBoxItem,</li>
<li>TvgCheckBox,</li>
<li>TvgCalendarBox,</li>
<li>TvgBevelEffect,</li>
<li>TvgGroupBox,</li>
<li>TvgPopupBox,</li>
<li>TvgBlurEffect,</li>
<li>TvgCornerButton,</li>
<li>TvgReflectionEffect,</li>
<li>TvgSpeedButton,</li>
<li>TvgDropTarget,</li>
<li>TvgImageViewer,</li>
<li>TvgGrid,</li>
<li>TvgStringGrid,</li>
<li>TvgGridLayout,</li>
<li>TvgArc,</li>
<li>TvgCalloutRectangle,</li>
<li>TvgCircle,</li>
<li>TvgEllipse,</li>
<li>TvgLine,</li>
<li>TvgPaintBox,</li>
<li>TvgPie,</li>
<li>TvgRectangle,</li>
<li>TvgRoundRect,</li>
<li>TvgText,</li>
<li>TvgComboTrackBar,</li>
<li>TvgNumberBox,</li>
<li>TvgSpinBox,</li>
<li>TvgStatusBar,</li>
<li>TvgToolBar,</li>
<li>TvgTreeView,</li>
<li>TvgSizeGrip,</li>
<li>TvgFramedVertScrollBox,</li>
<li>TvgPlotGrid,</li>
<li>TvgCalendar,</li>
<li>TvgSelection,</li>
<li>TvgSelectionPoint,</li>
<li>TvgGridLayout,</li>
<li>TvgLayout,</li>
<li>TvgScaledLayout,</li>
<li>TvgAniIndicator,</li>
<li>TvgCalloutPanel,</li>
<li>TvgExpander,</li>
<li>TvgFramedScrollBox,</li>
<li>TvgImageControl,</li>
<li>TvgLabel,</li>
<li>TvgPanel,</li>
<li>TvgProgressBar,</li>
<li>TvgScrollBar,</li>
<li>TvgScrollBox,</li>
<li>TvgSmallScrollBar,</li>
<li>TvgSplitter,</li>
<li>TvgTabControl,</li>
<li>TvgLayout,</li>
<li>TvgTrackBar,</li>
<li>TvgVertScrollBox,</li>
<li>TvgAlphaTrackBar,</li>
<li>TvgBWTrackBar,</li>
<li>TvgColorBox,</li>
<li>TvgColorPanel,</li>
<li>TvgColorPicker,</li>
<li>TvgColorQuad,</li>
<li>TvgComboColorBox,</li>
<li>TvgGradientEdit,</li>
<li>TvgHueTrackBar,</li>
<li>TvgTrack,</li>
<li>TvgBrushObject,</li>
<li>TvgBitmapObject,</li>
<li>TvgPathObject,</li>
<li>TvgListBox,</li>
<li>TvgThumb</li>
</ul>
<br />
<br />
<br /></div>
</div>Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com2tag:blogger.com,1999:blog-5591771134720182761.post-4249892313373381572011-09-12T22:23:00.000-07:002011-10-13T14:21:00.377-07:00Announcement: MonkeyGroomer - Convert VCL Forms to FireMonkey!<b>Update: MonkeyGroomer 0.1 has been released! <a href="http://pascalcoder.blogspot.com/2011/10/announcement-monkeygroomer-01-public.html">Download here!</a></b><br />
<br />
<br />
<b>I am proud to announce MonkeyGroomer!</b><br />
<br />
<b>MonkeyGroomer</b> is a simple application that converts your VGScene or VCL form files to <b>FireMonkey</b> form files. It will also support VGScene style files.<br />
<br />
<br />
<ul><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaDRYAWAFO5h3RLdAN5_tU4abbbBgNP0Yo9ghN6jqV9VuXRhG2hszDdicoHj750vzQOmNDlLM2AR4v4E1faKjeDfBJMjU7fOfGyXZr8AbteKuLYpOkGod2HAmwQ-U_EeTfw7vH8vnh1zCl/s1600/MonkeyGroomer.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em; text-align: right;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaDRYAWAFO5h3RLdAN5_tU4abbbBgNP0Yo9ghN6jqV9VuXRhG2hszDdicoHj750vzQOmNDlLM2AR4v4E1faKjeDfBJMjU7fOfGyXZr8AbteKuLYpOkGod2HAmwQ-U_EeTfw7vH8vnh1zCl/s200/MonkeyGroomer.png" width="190" /></a>
<li><b><strike>An alpha version will be available shortly!</strike> <a href="http://pascalcoder.blogspot.com/2011/10/announcement-monkeygroomer-01-public.html">Available now!</a></b></li>
<li>Most VGScene components have been tested. </li>
<li>Initially, VCL support will be limited, but quickly expanded.</li>
<li>A wizard is planned, to make the conversion process simple and painless!</li>
<li>Most of the work was done on the form parser and conversion engine. Once support for VCL is complete perhaps this engine will be adapted to support other delphi platforms in the future, possibly using <a href="http://www.simonjstuart.com/2011/09/12/lua4delphi-fundraiser/">Lua4Delphi</a>! (<a href="http://www.simonjstuart.com/2011/09/12/lua4delphi-fundraiser/">donate now!</a>)</li>
</ul>
<div>
<br /></div>
<div>
Special thanks to <a href="http://twitter.com/#!/SimonJStuart">Simon J Stuart</a>!</div>
<div>
<br /></div>
<div>
For inquiries, please contact me at <a href="mailto:thestamp@gmail.com">thestamp@gmail.com</a></div>Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-82586630230652368682011-09-12T13:13:00.000-07:002011-09-12T13:16:27.675-07:00Syndicate: Firemonkey Styles<b>TLDR: Felix Colibri has posted a good tutorial on how to use Firemonkey's styles.</b><br />
<br />
<a href="http://www.felix-colibri.com/papers/delphi/firemonkey_styles/firemonkey_styles.html">http://www.felix-colibri.com/papers/delphi/firemonkey_styles/firemonkey_styles.html </a><br />
<ul>
<li><i><b>abstract</b> : FireMonkey Styles tutorial : changing styles for all or for some selected components.</i> </li>
<li><i><b>key words</b> : FireMonkey Styles - Style Designer - .STYLE files -
</i><i>StyleLookup - </i><i>StyleName - </i><i>FindComponentResource - Predefined Styles - Delphi XE2</i> </li>
<li><i><b>software used</b> : Windows XP Home, Delphi XE2</i> </li>
<li><i><b>hardware used</b> : Pentium 2.800Mhz, 512 M memory, 140 G hard disc</i>
</li>
<li><i><b>scope</b> : Delphi XE2</i> </li>
<li><i><b>level</b> : Delphi developer</i> </li>
<li><i><b>plan</b> :</i> <ul>
<li><i><a href="http://www.felix-colibri.com/papers/delphi/firemonkey_styles/firemonkey_styles.html#firemonkey_styles">FireMonkey Styles</a></i> </li>
<li><i><a href="http://www.felix-colibri.com/papers/delphi/firemonkey_styles/firemonkey_styles.html#custom_styles">Custom FireMonkey Styles</a></i>
</li>
<li><i><a href="http://www.felix-colibri.com/papers/delphi/firemonkey_styles/firemonkey_styles.html#default_styles">Default FireMonkey Styles</a></i> </li>
<li><i><a href="http://www.felix-colibri.com/papers/delphi/firemonkey_styles/firemonkey_styles.html#style_file">.STYLE file</a></i> </li>
<li><i><a href="http://www.felix-colibri.com/papers/delphi/firemonkey_styles/firemonkey_styles.html#download_the_source_code">Download the Sources</a></i></li>
</ul>
</li>
</ul>
<br />
<br />
<br />
<br />Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-18069944505879155602011-09-10T17:05:00.001-07:002011-09-12T13:16:36.429-07:00Syndicate: Embarcadero Insider Reveals Update Schedule for Firemonkey<b>TLDR; Embarcadero employee Michael Swindell reveals that updates will be done for Firemonkey several times per quarter now, then quarterly later.</b><br />
<i><br /></i><br />
<i><span class="Apple-style-span" style="font-style: normal;"><a href="https://forums.embarcadero.com/thread.jspa?threadID=60400">https://forums.embarcadero.com/thread.jspa?threadID=60400</a></span></i><br />
<i><br /></i><br />
<blockquote>
<i>
The product matrix shows that Firemonkey currently supports iOS 4.2.
Apple will be introducing iOS 5 shortly.
Will Firemonkey be updated to support newer iOS features periodically (eg., iOS 5 and possibly other things)? Or just once-a-year when Delphi is updated? </i> </blockquote>
<blockquote>
<i><b>Michael Swindell: Yes, since Firemonkey is 1.0 we're going to be updating early, often, and regularly. The first update is well underway, will address a lot of great feedback, and should be out before the end of the month. We are planning updates on a regular cadence, initially several quarterly. </b> </i> </blockquote>
<blockquote>
<i><br /></i><i> (I'd love to see quarterly updates.) </i> </blockquote>
<blockquote>
<i><b>Michael Swindell: </b></i><i><b>We'll start out updating more often than quarterly, and settle into quarterly updates eventually. Embarcadero is behind FM in a big way, there is a lot of ongoing investment going on into this release, updates, performance enhancements, and future platform/feature support.</b></i></blockquote>
<br />
<br />
<br />Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-73726366948798820842011-09-09T12:43:00.000-07:002011-09-12T13:16:44.052-07:00Syndicate: TeeChart & Delphi XE2 Support Announcement<b>TLDR; TeeChart "TeeChart Standard" for VCL and "TeeChart Lite Chart" for FireMonkey. "TeeChart Pro" available soon.</b><br />
<br />
<a href="http://www.steema.com/entry/71/TeeChart_2C_RAD_Studio_XE2__26_FireMonkey">http://www.steema.com/entry/71/TeeChart_2C_RAD_Studio_XE2__26_FireMonkey</a><b> </b><br />
<blockquote>
<i>Greetings! </i><br />
<i>Time we mentioned what we're doing with TeeChart and Embarcadero's RAD Studio XE2! </i><br />
<i><br />
</i><br />
<i>Steema has been working with the new IDE for some time, preparing both VCL and FireMonkey versions of TeeChart for inclusion in the new programming environment. Agreed versions of RAD Studio XE2 will ship with TeeChart Standard VCL and TeeChart Lite Chart for FireMonkey. Steema are preparing installers for TeeChart Pro that we expect to be ready very soon. We'll be announcing availability of the new installers here; please watch this space. To review the current different versions of TeeChart and how they relate with XE2 please see <a href="http://www.steema.com/featurematrix/vcl">the Feature Matrix</a>. </i><br />
<i><br />
</i><br />
<i>Regards, </i><br />
<i>Steema team </i></blockquote>
<br />
<a href="http://www.steema.com/entry/71/TeeChart_2C_RAD_Studio_XE2__26_FireMonkey"><br />
</a>Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-19304998940506559462011-09-09T12:41:00.000-07:002011-09-09T12:41:23.870-07:00Your "Reliable" Source for Delphi Technology NewsLately a lot of information about Delphi has been flying around on Twitter, the news, Delphi Feeds, and other news sites. I noticed that although you can get information about Delphi, its pretty hard right now. To help alleviate the issue, I'm going to start a series of reposts that simply serve as a single source for news and information for Delphi.<br />
<br />
To follow, simply favorite this link! <a href="http://pascalcoder.blogspot.com/search/label/Delphi%20Syndicate">http://pascalcoder.blogspot.com/search/label/Delphi Syndicate</a>Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-14994360931151431592011-09-05T14:52:00.000-07:002011-09-05T14:52:59.219-07:00Delphi XE2 Released!Delphi XE2 has finally been released! Very exciting times are ahead, with 64bit, FireMonkey, Moc OS X, and iOS applications!<br />
<br />
It is incredibly easy to develop for iOS thanks to FireMonkey. I managed to port a Windows FireMonkey application in a short few hours!<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://a.yfrog.com/img640/1865/97031795.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://a.yfrog.com/img640/1865/97031795.jpg" width="240" /></a></div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://a.yfrog.com/img864/2037/kmdo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://a.yfrog.com/img864/2037/kmdo.jpg" width="240" /></a></div><br />
Here is what I have found so far:<br />
<br />
<ul><li>When you rotate the iOS device, the OnResize event is fired.</li>
<li>Without any extra installations, Indy does not work. Can't find the units in the fpc install.</li>
<li>3D is pretty slow on the iPad 2. Will run a benchmark.</li>
<li>No idea how to access iPod library, or pictures, or any other library functionality. </li>
</ul><div>Ideally extra iOS functionality would be wrapped into different components, and emulated in Delphi. Perhaps this calls for a 3rd party component? </div><div><br />
</div><div><a href="http://tp.embarcadero.com/ctprefer?partner_id=1438&product_id=0"><b>Check out Delphi XE2 here!</b></a></div><div><br />
</div>To celebrate Delphi XE2's release, I am making a series of videos showcasing some new features available in Delphi XE. This first video focuses introduces FireMonkey.<br />
<div><br />
</div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/Df3qbASjlKU?feature=player_embedded' frameborder='0'></iframe></div><div><br />
</div>Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-60495054277779040852011-08-02T07:50:00.000-07:002011-08-02T07:51:42.427-07:00Delphi XE2: Announcement, World Tour, and a Giveaway!Embarcadero has announced Delphi XE2, and its expected to be their best Delphi release since.. Delphi 1! To celebrate this they are hosting the largest world tour ever held, with over 70 locations! Gratz to the folks in New Zealand for being the first to use Delphi XE2! Unfortunately, the closest tour city to me is over 12 hours drive to Calgary. Phooey. Check out the world tour here: <a href="http://www.embarcadero.com/world-tour%20">http://www.embarcadero.com/world-tour </a><br />
<br />
But thats not all! Embarcadero is giving away a copy of RAD Studio XE2 (which includes Delphi XE2, Delphi Prism XE2, and more) to 1 lucky developer! Sign up for it here: <a href="http://forms.embarcadero.com/forms/RADStudioXE2WinBeforeYouBuyPromo">http://forms.embarcadero.com/forms/RADStudioXE2WinBeforeYouBuyPromo</a><br />
<br />
What I find very exciting is their announcement of 64 bit, FireMonkey, and building Mac application support included in Delphi XE2. Being a developer that loves to create beautiful applications for clients FireMonkey sounds very promising, with the GPU being used to drive the UI. Deploy applications to Mac? Yes please!<br />
<br />
Armed with their flexible IDE, fast compiler, and now 64 bit and FireMonkey support, Delphi is set to be the <b>premier native application IDE for Windows</b>.. <i><b>and Mac</b></i>!Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-2883570860069941362011-08-01T22:30:00.000-07:002011-08-01T22:33:02.681-07:00Developing a Messenger Client - Part 1<span class="Apple-style-span" style="font-size: large;">A Messenger Client</span><br />
Are you looking to develop a messenger client for you company, or friends? Developing a client and server seems simple on the outside, but once it becomes popular, there are some things you really need to consider, otherwise your server WILL become overloaded. Take my word for it, it happened to me.<br />
<br />
At Baselan 20, lanHUB was first used as the official tournament software. It had lots of bells and whistles that gamers and tournament organizers wanted. Tournament organizers had a complete solution to organize and notify attendees, and gamers had a "player" list, with which they can chat together. There are tons of other features, but that's a story for another day.<br />
<br />
I had the server on a AMD Athlon II X2 3.2 ghz processor, 4gb corsair ddr2 on a miniITX board. And it went without a hitch.. almost.<br />
<br />
<span class="Apple-style-span" style="font-size: large;">How it Failed</span><br />
I developed along the idea that "everyone should know immediately who is online, away, playing games, or signed off," which is the holy grail of instant messaging. I used RemObjects SDK's brilliantly implemented event push technology to run this. However, as I stared at the server CPU monitor showing 100% utilization right before a large Starcraft tournament, the technology can't get me all the way to my goal. I need to slimline my product.<br />
<br />
As I arrived, the server was already slow as molasses. Asking the tournament organizer about how it came to be so slow, he said that "it was fine, but then it got slower.. and slower.. then it just stopped."<br />
<br />
Hmm.<br />
<br />
<span class="Apple-style-span" style="font-size: large;">Behind the Scenes</span><br />
When someone calls the server, its nicely threaded. Every call gets its own thread, and is squared away without a problem. However, if part of that call requires to take a peek at the player list that thread needs to finish looking at that player list before the rest of the server can continue.As long as I get my player list quickly to allow the app to continue, everything should go smoothly.<br />
<br />
When someone signs in, the server broadcasts to that person the list of available players, and to everyone else that the person is now online. There was a bit of a bump in CPU when clients logged in, but not too much to be considerable.<br />
<br />
The problem was that I was not there when people signed up.<br />
<br />
At the time, when someone signs up for the first time, everyone who is signed in gets a nice fresh list of players<b>.</b> If 10 people sign up, its sending hundreds of player lists around event. The poor soul who signed up first would receive 9 updated player lists! Clearly that's not efficient.<br />
<br />
And to top it off, the player list was threadlocking the server application while it was broadcasting the playerlist.<br />
<br />
It was the perfect storm.<br />
<br />
<span class="Apple-style-span" style="font-size: large;">The Big Night</span><br />
So, lets look back at the event. On night one, I noticed a 15% CPU usage, but since it was the first large scale run, I have insufficient data to compare against, and 15% wasn't bad. However, the next day right before the main Starcraft tournament, <b>30 </b>people signed up within a span 2 minutes. You guessed it, it went down faster than.. well it was pretty gradual (according to the tournament organizer).<br />
<br />
The service is designed to restart if there are multiple errors within a minute, to prevent a single error from stopping all services. So, as everyone signed up, the server slowed down, and the services restarted automatically (as a failsafe). Everyone auto-logged in, system slowed down, rinse and repeat. It appeared that people signing in was a catalyst to lock the server. During the event, I disabled the "send broadcast when someone logs in" and the rest of the event went without a hitch, albeit with limited player visibility support.<br />
<br />
<span class="Apple-style-span" style="font-size: large;">The Drawing Board</span><br />
One of the biggest concerns I had was how to address this "signing in" issue. First thing I did was create a macro application that opens the client, auto-creates an account, and then signs in. All I need to do is say how many, and it will open that many clients on the same computer. Here was the results from my first test:<br />
<br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">Attempted: 50</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">Number of clients opened in 30 seconds: 15</span><br />
<span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;">Notes: Workstation went to a crawl after 10 clients opened</span><br />
<br />
Excellent! I finally have this bug reproduced! Its exactly as he said, after several created an account and signed in, the system went to a crawl! Now, to find and squish this bug...<br />
<br />
Stay tuned for Part 2!Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-87053531390896477852011-06-21T12:38:00.000-07:002011-06-21T12:47:36.657-07:00Delphi Starter Edition - Pave Your Own Road<i>Delphi XE Starter Edition</i> is the ideal IDE for those who want to develop native applications, but don't have a ton of cash.. *almost*<br />
<br />
Don't get me wrong-- Delphi XE Starter Edition is a fantastic IDE! No limitations on 3rd party components (I have VGScene, UniDac, and RO SDK on mine), the full breadth of the pascal language at your fingertips, but theres just one crucial hole that was left open: <i>class completion </i>and <i>templates.</i><br />
<b><br />
</b><br />
For those of you who are new to Delphi, this makes the difference between spending dozens of minutes frustratingly re-researching the class structure and syntax, or doing a few keystrokes and Delphi doing it for you.<br />
<br />
In Delphi XE Pro, Enterprise and Architect SKUs, all you need to do is begin typing your class (or Ctrl-J, and select "class") and Delphi almost paves the road <i>for you. </i>In <i>Starter</i>, it seems as if the tools are there, but turned off; sitting at the side of the road as you shovel the concrete from the truck onto the gravel. Not a fun experience let me tell you.<br />
<br />
Since <i>Starter</i> is a new release, no such tool to fill the void <i>Class Completion</i> filled exists. Hopefully that will be addressed. Other than this issue, <i>Delphi XE Starter </i>can suit most of every developer's needs in Delphi!Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0tag:blogger.com,1999:blog-5591771134720182761.post-53419966579964396512011-06-10T12:54:00.000-07:002011-06-10T12:54:19.034-07:00New blog!Stick around for a great technology discussion, code snippets, and to chill!<br />
<br />
Hopefully this time <a href="http://google.com/">my host</a> won't go out of business.Stamphttp://www.blogger.com/profile/06796052131917689140noreply@blogger.com0