tag:blogger.com,1999:blog-4594588598170429682024-03-05T21:04:16.814-08:00Artak's Tech BlogDodoBirdhttp://www.blogger.com/profile/01416044052053974523noreply@blogger.comBlogger10125tag:blogger.com,1999:blog-459458859817042968.post-4314233027460909772016-03-29T15:58:00.001-07:002016-03-29T16:02:58.832-07:00Working With Freelancers<a href="https://www.linkedin.com/pulse/five-tips-working-freelancers-dana-manciagli?trk=hp-feed-article-title-share">Five Tips for Working With Freelancers</a>DodoBirdhttp://www.blogger.com/profile/01416044052053974523noreply@blogger.com0tag:blogger.com,1999:blog-459458859817042968.post-65808302990329146262012-02-08T19:39:00.000-08:002013-07-24T12:51:27.807-07:00Hold'em Odds Calculator for AndroidWe have released Hold'em Odds Calculator for Android.<br />
<br />
It has a free version:<br />
<a href="https://market.android.com/publish/Home#AppEditorPlace:p=com.burlymarmot.holdem.free">https://market.android.com/publish/Home#AppEditorPlace:p=com.burlymarmot.holdem.free</a><br />
<br />
and a pro version<br />
<a href="https://market.android.com/publish/Home#AppEditorPlace:p=com.burlymarmot.holdem.pro">https://market.android.com/publish/Home#AppEditorPlace:p=com.burlymarmot.holdem.pro</a>.<br />
<br />
Or if you prefer Amazon app store<br />
<a href="http://goo.gl/G7Sm8">http://goo.gl/G7Sm8</a>DodoBirdhttp://www.blogger.com/profile/01416044052053974523noreply@blogger.com0tag:blogger.com,1999:blog-459458859817042968.post-1560986108843595282011-02-05T14:42:00.000-08:002011-02-05T14:42:06.907-08:00We do not like not avoiding double negatives when unsubscribing<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEJG7khVlDKSHBxYirzP87X55_EhMc_-27hRfg40rDJePjxGwDS0a1x1i9Frqzkcg2rms7ovA5b5eF07rrM1nuevT-0I5X-n9kxdX5fzS0vmIPV1Yb_h4F09429ZfdO4U_orC566Go9rEu/s1600/do+not+notify-sm2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="87" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEJG7khVlDKSHBxYirzP87X55_EhMc_-27hRfg40rDJePjxGwDS0a1x1i9Frqzkcg2rms7ovA5b5eF07rrM1nuevT-0I5X-n9kxdX5fzS0vmIPV1Yb_h4F09429ZfdO4U_orC566Go9rEu/s400/do+not+notify-sm2.jpg" width="400" /></a></div>DodoBirdhttp://www.blogger.com/profile/01416044052053974523noreply@blogger.com0tag:blogger.com,1999:blog-459458859817042968.post-10177376931645544042011-01-17T14:11:00.000-08:002011-01-17T14:25:21.802-08:00Dear Oracle Java teamDeal Oracle / Java team,<br />
<br />
I am happy you keep popping up Java updates on my computer. All the hard work you put in fixing all this issues and security holes in the Java runtime is appreciated.<br />
<br />
I know you have been very busy lately, but have you heard about modern Operating systems like Vista and 7 where you do not have to log on as administrator to apply updates?<br />
<br />
If you have heard about them, I am sure you can find time a few moments and make sure Java updater works from non-administrative account using the User Account Control.<br />
<br />
The least you can do is to change you fabulous error message that says "Error: Failed to download required installation files", which may be technically right, but does not help a bit, with something more like "Java updates only work when you are logged on as administratior, sorry about the inconvenience" for example.<br />
<br />
There are about 1,8 million complains about that when you Google (for you busy folks at Oracle, Google is a web site many people use for searching the web).<br />
<br />
Thanks again for your hard work.DodoBirdhttp://www.blogger.com/profile/01416044052053974523noreply@blogger.com0tag:blogger.com,1999:blog-459458859817042968.post-56372948919100767352009-05-02T13:21:00.000-07:002009-05-02T14:08:39.789-07:00Hold'em SimulatorWe just released Burly Marmot Software Hold'em Simulator.<br /><br /><a href="http://holdem-odds.com/">http://holdem-odds.com/</a><br /><br />The easy to use program estimates hand odds and provides all sorts of statistics.DodoBirdhttp://www.blogger.com/profile/01416044052053974523noreply@blogger.com0tag:blogger.com,1999:blog-459458859817042968.post-15839154297371728152008-09-11T20:41:00.000-07:002008-09-11T20:48:38.120-07:00Events versus delegates in C#Finally somebody clearly defined the difference between C# events and multicast delegates.<br /><br /><a href="http://blog.monstuff.com/archives/000040.html">http://blog.monstuff.com/archives/000040.html</a><br /><br /><em>Conclusion</em><br />We have seen that the event keyword is a modifier for a delegate declaration that allows it to be included in an interface, constraints it invocation from within the class that declares it, provides it with a pair of customizable accessors (add and remove) and forces the signature of the delegate (when used within the .NET framework).DodoBirdhttp://www.blogger.com/profile/01416044052053974523noreply@blogger.com0tag:blogger.com,1999:blog-459458859817042968.post-67631969029928053582008-07-01T13:56:00.000-07:002008-07-02T22:42:44.207-07:00"delete []" versus just "delete" in C++This week I was asked for the second time to "fix" a bug in my code and use "delete []" on arrays instead of "delete". I did an informal survey and all of the people I asked told me using plain "delete" on arrays is wrong.<br /><br />As I remembered that it is ok, I decided to do some experiments.<br /><br />I wrote this code and compiled it in VS2008:<br /><br /><pre style="font-size:small"><br />#include "stdafx.h"<br />TCHAR * buf = NULL;<br />int * intbuf = NULL;<br /><br />class Foo<br />{<br /> public:<br /> int x;<br /> // ~Foo() { x = 2; }<br />};<br />Foo * fooBuf = NULL;<br /><br />int _tmain(int argc, _TCHAR* argv[])<br />{<br /> delete buf;<br /> delete [] buf;<br /> delete intbuf;<br /> delete [] intbuf;<br /> delete fooBuf;<br /> delete [] fooBuf;<br /> return 0;<br />}<br /></pre><br /><br />Now let us check the disassembly:<br /><pre style="font-size:small"><br /> delete buf;<br />003E1000 mov eax,dword ptr [buf (3E3370h)]<br />003E1005 push eax<br />003E1006 call operator delete (3E105Ch)<br /> delete [] buf;<br />003E100B mov eax,dword ptr [buf (3E3370h)]<br />003E1011 push eax<br />003E1012 call operator delete (3E105Ch)<br /><br /> delete intbuf;<br />003E1017 mov eax,dword ptr [intbuf (3E3374h)]<br />003E101D push eax<br />003E101E call operator delete (3E105Ch)<br /> delete [] intbuf;<br />003E1023 mov eax,dword ptr [intbuf (3E3374h)]<br />003E1028 push eax<br />003E1029 call operator delete (3E105Ch)<br /><br /> delete fooBuf;<br />003E102E mov eax,dword ptr [fooBuf (3E3378h)]<br />003E1034 push eax<br />003E1035 call operator delete (3E105Ch)<br /> delete [] fooBuf;<br />003E103A mov eax,dword ptr [fooBuf (3E3378h)]<br />003E1040 push eax<br />003E1041 call operator delete (3E105Ch)<br /><br />003E1046 add esp,18h<br /><br /> return 0;<br /></pre><br />All identical.<br /><br />Now if you uncomment the destructor interesting things start to happen on the last two deletes:<br /><pre style="font-size:small"><br /> delete fooBuf;<br />002C103E mov eax,dword ptr [fooBuf (2C3378h)]<br />002C1043 add esp,10h<br />002C1046 test eax,eax<br />002C1048 je wmain+71h (2C1081h)<br />002C104A push eax<br />002C104B mov dword ptr [eax],2<br />002C1051 call operator delete (2C1094h)<br />002C1056 mov eax,dword ptr [fooBuf (2C3378h)]<br />002C105B add esp,4<br /><br /> delete [] fooBuf;<br />002C105E test eax,eax<br />002C1060 je wmain+71h (2C1081h)<br />002C1062 mov ecx,dword ptr [eax-4]<br />002C1065 push esi<br />002C1066 lea esi,[eax-4]<br />002C1069 push offset Foo::~Foo (2C1000h)<br />002C106E push ecx<br />002C106F push 4<br />002C1071 push eax<br />002C1072 call `eh vector destructor iterator' (2C10F8h)<br />002C1077 push esi<br />002C1078 call operator delete (2C1094h)<br />002C107D add esp,4<br />002C1080 pop esi<br /></pre><br /><br />The calls are very different because in second case it goes through the array and destructs individual elements, while in the first just deletes the memory.<br /><br /><strong>Conclusion:</strong><br />“delete” and “delete []” are equivalent unless the array contains objects and that objects have a destructor.<br /><br />This said it is still probably good idea to use "delete []" for the clarity alone.DodoBirdhttp://www.blogger.com/profile/01416044052053974523noreply@blogger.com0tag:blogger.com,1999:blog-459458859817042968.post-61694579607955669482008-06-10T16:07:00.000-07:002008-06-10T16:13:05.869-07:00.NET ZeroI second <a href="http://blogs.msdn.com/digitalnetbizz/archive/2007/01/27/net-book-zero.aspx">digitalnetbizz.</a><br /><br />The most amazing book about .NET is free and is available at <a href="http://www.charlespetzold.com/dotnet/index.html"> Charles Petzold's web site. </a><br /><br />In general check out everything written by Charles. He is a category of his own among technology writers.DodoBirdhttp://www.blogger.com/profile/01416044052053974523noreply@blogger.com0tag:blogger.com,1999:blog-459458859817042968.post-70660491428580628872008-06-03T18:40:00.000-07:002008-07-02T22:26:54.970-07:00Breaking the Myth of MegapixelsYou would think, that by now the computer magazines would manage to get it right.<br /><br />Well, <a href="http://www.nytimes.com/2007/02/08/technology/08pogue.html?_r=2&ref=technology&oref=slogin&oref=slogin">at least someone who writes for NY times does. </a>DodoBirdhttp://www.blogger.com/profile/01416044052053974523noreply@blogger.com0tag:blogger.com,1999:blog-459458859817042968.post-47659868082174885612008-06-03T11:58:00.000-07:002008-06-03T11:59:59.909-07:00Don't Let Architecture Astronauts Scare YouCheck what Joel says about <a href="http://www.joelonsoftware.com/articles/fog0000000018.html">Architecture Astronauts</a>DodoBirdhttp://www.blogger.com/profile/01416044052053974523noreply@blogger.com0