<?xml version="1.0" encoding="UTF-8" standalone="no"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:gd="http://schemas.google.com/g/2005" xmlns:georss="http://www.georss.org/georss" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3741714684411272607</atom:id><lastBuildDate>Fri, 06 Sep 2024 18:27:15 +0000</lastBuildDate><category>software development</category><category>hardware design</category><category>testing</category><category>interface design</category><category>gadgets</category><category>Delphi</category><category>personal productivity</category><category>CRM</category><category>bicycle</category><category>64-bit</category><category>Android</category><category>C++</category><category>CodeBlocks</category><category>English</category><category>hp h1910</category><category>linguistics</category><category>physical conditions</category><category>travelling</category><category>wxWidgets</category><title>My thoughts on software development and electrical engineering</title><description>Here I will share some of my insights about embedded and PC software design and modern electronic hardware development. Everyone is welcome to engage into discussion.</description><link>http://swhwengineersblog.blogspot.com/</link><managingEditor>noreply@blogger.com (Engineer's blog)</managingEditor><generator>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:subtitle>Here I will share some of my insights about embedded and PC software design and modern electronic hardware development. Everyone is welcome to engage into discussion.</itunes:subtitle><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-1368152749540379219</guid><pubDate>Sun, 27 Apr 2014 12:45:00 +0000</pubDate><atom:updated>2014-04-27T16:46:30.287+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CodeBlocks</category><category domain="http://www.blogger.com/atom/ns#">software development</category><category domain="http://www.blogger.com/atom/ns#">testing</category><category domain="http://www.blogger.com/atom/ns#">wxWidgets</category><title>wxWidgets strange modal dialog crashes</title><description>Recently, I wrote one program with Code::Blocks version 12.11 and wxWidgets version 2.8.12. Logic of the program required invoking modal form (inherited from wxDialog, created with wxSmith). Once, during debugging, I found that the program continiously crashed after showing this modal form. The crashes usually occured either just after constructing of this dialog instance, or after a few seconds of this dialog being active. I revised all places in the source code which were somehow related with construction of this dialog, and with passing parameters of its construction and initialization. But I was unable to find any error(s) in the source code itself. At last, I got a flash of inspiration: I actually created this dialog from secondary ("worker") thread. After reimplementing this fucntion as running in the main thread (via combination of auxiliary window, SendMessageW with WM_USER and pointer to the structure with function parameters packed into WPARAM message argument, and MSWWindowProc functions), all crashes stopped. So the error was not in some line of the  source code itself, but in the wrong architecture and lack of attention to this fact. The accompanying factor was that in previous version of the program, I used simple standard wxMessageBox function in that place. wxMessageBox apparently invokes WINAPI MessageBoxW function, and this works fine from secondary thread. But when I changed this to invoking of custom wxDialog form, in order to gain additional functionality, crashes began, and it took some time for me to understand where the problem resides.</description><link>http://swhwengineersblog.blogspot.com/2014/04/wxwidgets-strange-modal-dialog-crashes.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-3779806175374611426</guid><pubDate>Fri, 24 Aug 2012 03:05:00 +0000</pubDate><atom:updated>2012-08-24T07:17:14.954+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Android</category><category domain="http://www.blogger.com/atom/ns#">gadgets</category><title>Android-powered Tablet PC for reading books</title><description>A few days ago, I bought &lt;a href="http://market.yandex.ru/model-spec.xml?modelid=7928027&amp;hid=6427100" target="_blank"&gt;MoveO TPC-1VX Tablet PC (in Russian)&lt;/a&gt; with &lt;a href="http://www.android.com" target="_blank"&gt;Android 4.0.3&lt;/a&gt; on board. It features 7" multi-touch 800x480 screen, 4 Gb of built-in flash memory, 512 Mb RAM, and other characteristics are on the line of other devices in this price sector. I wanted low-cost handheld PC mainly to be able to read books (PDF, HTML, and other standard formats). It is much more convinient to do this on 7" than on &lt;a href="http://swhwengineersblog.blogspot.com/2011/09/using-of-pocket-pc-for-reading-books.html"&gt;3.6" screen&lt;/a&gt;. It even fits into pocket of my sleeveless jacket. By far, I have not observed any bugs or software freezings. Maybe one day I will write a program for Android platform. At last, Android today is the &lt;a href="http://en.wikipedia.org/wiki/Mobile_operating_system" target="_blank"&gt;most popular OS for mobile devices&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
P.S.: well, I already have bicycle and Tablet PC. The only thing left to buy is reflex camera, and I will completely fit controversial folklore image of a young programmer :)))</description><link>http://swhwengineersblog.blogspot.com/2012/08/a-few-days-ago-i-bought-moveo-tpc-1vx.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-8479124512572061273</guid><pubDate>Sat, 18 Aug 2012 19:44:00 +0000</pubDate><atom:updated>2012-08-18T23:51:03.391+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gadgets</category><category domain="http://www.blogger.com/atom/ns#">hardware design</category><category domain="http://www.blogger.com/atom/ns#">interface design</category><category domain="http://www.blogger.com/atom/ns#">software development</category><title>Radio-controlled all-wheel drive Robot based partly on Arduino modules</title><description>&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNgZJN79db03t6Id8rEC2OIirsKix064LcP0m9hrdiXliRqnkakZ4oXzxCIVKcTGXXJAkpmJd4B-TJI5XvVCqpWqAsDQP-nHkXGjhsmngU_z9Y4Fh1rBWVWz36YW8wWoKC2Yss5Y6KWg4/s1600/robot4x4ArduinoWiFi.png" imageanchor="1" style=""&gt;&lt;img border="0" height="238" width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNgZJN79db03t6Id8rEC2OIirsKix064LcP0m9hrdiXliRqnkakZ4oXzxCIVKcTGXXJAkpmJd4B-TJI5XvVCqpWqAsDQP-nHkXGjhsmngU_z9Y4Fh1rBWVWz36YW8wWoKC2Yss5Y6KWg4/s320/robot4x4ArduinoWiFi.png" /&gt;&lt;/a&gt;
&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh32POJjO6LIJScnK4tGMVOGSGBMtV_xSGYus2PS_oCrOaJkk-klheMg-7Ll7wCjryETFMWVZifFgPIIvOvjXTOxBWmltX80lTEpXA3e3rRsVDp2Gipo943YSHm-OQDCMs-WvnGe76N6N4/s1600/ModulesForRobot.png" imageanchor="1" style=""&gt;&lt;img border="0" height="240" width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh32POJjO6LIJScnK4tGMVOGSGBMtV_xSGYus2PS_oCrOaJkk-klheMg-7Ll7wCjryETFMWVZifFgPIIvOvjXTOxBWmltX80lTEpXA3e3rRsVDp2Gipo943YSHm-OQDCMs-WvnGe76N6N4/s320/ModulesForRobot.png" /&gt;&lt;/a&gt;

&lt;p&gt;Today I have attended &lt;a href="http://cc.org.ru" target="_blank"&gt;Chaos Construction 2012&lt;/a&gt;  (in Russian) - computers and computer graphics, 8-bit music and demo scene annual festival. For me, one of the most interesting things there was presentation of all-wheel drive radio-controlled robot made partly based on modules from &lt;a href="http://www.arduino.cc/" target="_blank"&gt;Arduino open-source electronics prototyping platform&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://robo-hobby.blogspot.com/" target="_blank"&gt;Robo-hobby blog&lt;/a&gt;  (in Russian) is the official current webpage of these guys (those who are working on a robot, not those who develop Arduino). If you will ever want to learn anything about relatively easy-to-reproduce hand-made radio-controlled robots based on open-source hardware &amp; software components, I would advice to check this blog. Authors share their experience about working on such a project. This is really interesting, even for me, professional electronics developer. I've already added RSS feed of their blog into my feed reader.&lt;/p&gt;
</description><link>http://swhwengineersblog.blogspot.com/2012/08/today-i-have-attended-chaos.html</link><author>noreply@blogger.com (Engineer's blog)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNgZJN79db03t6Id8rEC2OIirsKix064LcP0m9hrdiXliRqnkakZ4oXzxCIVKcTGXXJAkpmJd4B-TJI5XvVCqpWqAsDQP-nHkXGjhsmngU_z9Y4Fh1rBWVWz36YW8wWoKC2Yss5Y6KWg4/s72-c/robot4x4ArduinoWiFi.png" width="72"/><thr:total>0</thr:total><georss:featurename>Санкт-Петербург, Россия</georss:featurename><georss:point>60.0762383 30.1213829</georss:point><georss:box>59.5693143 28.8579554 60.5831623 31.3848104</georss:box></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-2114601321483393079</guid><pubDate>Sat, 11 Aug 2012 09:21:00 +0000</pubDate><atom:updated>2012-08-11T16:37:28.849+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hardware design</category><category domain="http://www.blogger.com/atom/ns#">software development</category><category domain="http://www.blogger.com/atom/ns#">testing</category><title>Broken WM_DROPFILES (Drag-and-Drop) functionality in Windows 7</title><description>Yesterday I spent at least one hour in finding and fixing cause of error due to which in one of my applications Drag-and-Drop functionality did not work in Windows 7 OSes, as was thankfully reported by one user. The reason traced to be that Microsoft decided to disallow applications to receive certain types of messages which are related with inter-process communication. This was done to enhance system security, of course. WM_DROPFILES is one of messages which are now not working by default. Now you need to explicitly tell OS that you want to receive and process this message, via calling appropriate API function: &lt;a href="http://answers.microsoft.com/en-us/windows/forum/windows_7-files/file-drag-n-drop-via-wmdropfiles-doesnt-work-in/d172ed8c-1a5b-e011-8dfc-68b599b31bf5?msgId=2e77dbec-495b-e011-8dfc-68b599b31bf5" target="_blank"&gt;solution for problem with WM_DROPFILES in Windows 7&lt;/a&gt;. It is not difficult to call one more function during program initialization, but I'm really tired of various problems which arise from incompatibility between different Windows and Office versions. In this aspect, development for microcontrollers appeals to me much more, since there you can control everything, and tested procedures will not unexpectedly stop working because of some changes in underlying OS logic. I'm speaking here about MCU hardware+software projects where OS is still not necessary, (i.e., not high-performance high-cost complex monsters) and so you have some confidence in all parts of the system.</description><link>http://swhwengineersblog.blogspot.com/2012/08/broken-wmdropfiles-drag-and-drop.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-4822425982644831021</guid><pubDate>Fri, 10 Aug 2012 13:55:00 +0000</pubDate><atom:updated>2012-08-18T23:50:39.004+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bicycle</category><category domain="http://www.blogger.com/atom/ns#">interface design</category><category domain="http://www.blogger.com/atom/ns#">travelling</category><title>Dummy bicycle lanes in Moscow</title><description>&lt;a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibvJqZYtztEqXrvZ29vFEF7bIeMPYDUAU8bZ6BVmePEsWTv3nl33jKGbAH-3WmYptNfXJ_SfuNIikja3MZx6t8XRTgB1_nz-gbab71jhN_uRPYCZTvWzqdBPyH1_REfntxuwCqiodfeIg/s1600/0_90f90_62e01652_L.jpeg" imageanchor="1" style=""&gt;&lt;img border="0" height="240" width="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibvJqZYtztEqXrvZ29vFEF7bIeMPYDUAU8bZ6BVmePEsWTv3nl33jKGbAH-3WmYptNfXJ_SfuNIikja3MZx6t8XRTgB1_nz-gbab71jhN_uRPYCZTvWzqdBPyH1_REfntxuwCqiodfeIg/s320/0_90f90_62e01652_L.jpeg" /&gt;&lt;/a&gt;



This summer, I was in Moscow for a few hours, walking through the city while waiting for my train. My attention, among other things, draws to the fake (dummy) bicycle lane on prospekt Vernadskogo, near the "University" metro station. This "bicycle path" is actually one metre wide green band drawn on the pavement. The problem is that people do not regard it as a road for bicyles - instead, all pedestrians treat this piece of asphalt simply as part of pavement, and behave accordingly. Everyone who will try to move on this path on bicycle with a speed more than 15-20 km/h, will inevitably bump into someone else (pedestrian) during the first minute of trip. So this "bicycle lane" is absolutely useless, this is essentially just a mock-up. Even more, it is not only useless, but harmful for all cyclists. This is because if anyone wants to cycle with reasonable speed here, right solution would be to move in traffic area of this prospekt, in the first traffic lane, near the border. But Russian road laws states that cyclists should move through the special "bicycle lane", if there is one. So if any cyclist would bump into another object (car, bus, or pedestrian), while moving on traffic area of this prospekt, one could say that this happens because of he/she do not abide this particular rule of road laws. Shame on those who were responsible for this fake "bicycle lane".</description><link>http://swhwengineersblog.blogspot.com/2012/08/dummy-bicycle-lanes-in-moscow.html</link><author>noreply@blogger.com (Engineer's blog)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibvJqZYtztEqXrvZ29vFEF7bIeMPYDUAU8bZ6BVmePEsWTv3nl33jKGbAH-3WmYptNfXJ_SfuNIikja3MZx6t8XRTgB1_nz-gbab71jhN_uRPYCZTvWzqdBPyH1_REfntxuwCqiodfeIg/s72-c/0_90f90_62e01652_L.jpeg" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-6905714951019858732</guid><pubDate>Thu, 09 Aug 2012 21:24:00 +0000</pubDate><atom:updated>2012-08-14T23:47:57.433+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gadgets</category><category domain="http://www.blogger.com/atom/ns#">hardware design</category><title>Reanimating NiMh Battery Pack in home cordless phone</title><description>At home, we have cordless "TELECOM" phone. This summer, after two weeks of idle time during our vacations, it refused to continue working. It also refused to charge its pack of 3 NiMH batteries (T160 600 mAh 3.6V D4 marking). I.e., green LED which should indicate chraging process and presence of phone tube on the base module did not turn on when I tried to start charge the cordless receiver by putting it to its place (its dedicated socket). I tried to apply the same method I used for my LiIon smartphone battery (&lt;a href="http://swhwengineersblog.blogspot.com/2012/03/how-to-reanimate-li-ion-or-li-pol.html"&gt;see my previous post on it&lt;/a&gt;): firstly to charge battery directly via lab DC power supply. The difference is that this pack of 3 NiMH batteries does not have internal built-in charge controller, so there is no need to disclose internal connector pins. I set up output voltage to about 4 Volts, and max. current to about 50 mA. After approximately 2 hours, power supply switched from constant current into constant voltage regulating mode, and I disconnected the battery. After placing this slightly recharged battery back into cordless phone tube, and putting this tube back on base station, green LED which indicates charging process, turned on, and device continued to work in normal mode. Apparently, charge controller built into this phone tube needed for its operation higher voltage than discharged battery was able to deliver. So be aware of this method, and do not throw out your battery prematurely.
&lt;br&gt;&lt;br&gt;
&lt;b&gt;UPD:&lt;/b&gt; the same method works with NiMh AAA accumulators, I've just checked this today. 900 mAh acc. battery discharged to ~0.7 volts has been charging with ~90mA current for a few hours, after that I was able to complete the process with standard charger.
&lt;br&gt;&lt;br&gt;
&lt;b&gt;P.S.: Caution!&lt;/b&gt; In absense of temperature monitoring circuit, do not charge the battery with currents more that 0.1*C, for example, in my case I had battery with 600 mAh Capacity (designated by capital "C" letter), so max. safe charging current was 60 mA. Also, do not try to repeat this without proper setting of output voltage limit in your power supply. Put the battery into protective box for a period of charging to prevent damage from its possible explosion. Make sure that you are ready to quickly disconnect the power supply and to extinguish a fire in case if it will arise.</description><link>http://swhwengineersblog.blogspot.com/2012/08/reanimating-nimh-battery-pack-in.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-5089667682025726010</guid><pubDate>Sat, 09 Jun 2012 21:41:00 +0000</pubDate><atom:updated>2012-06-10T01:42:08.515+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hardware design</category><category domain="http://www.blogger.com/atom/ns#">software development</category><category domain="http://www.blogger.com/atom/ns#">testing</category><title>Bugs in Windows Application Development</title><description>Today I at last have found time to fix some long-lasted bugs in one of my programs. Some of these bugs have been annoying users for about one year. They inconspicuously appeared after some phase of editing of source code. During fixing, I found two other previously completely overlooked bugs. They are not critical in nature, but annoying. It seems that this process (of finding and fixing bugs) can last forever.

Development for Windows OS, comparing to development for microcontrollers, allows you to employ many ready-to-use system (as well as third-party) libraries, thus freeing you from the task of implementing service code for yourself, but at the same time, bugs and inconsistencies in system and third-party libraries can force you to spend much time in efforts to figure out why your application is not behaving as you expected, and I'm pretty tired of it.

Conclusion is to test as big fraction of program's functionality as possible after every source code change.</description><link>http://swhwengineersblog.blogspot.com/2012/06/bugs-in-windows-application-development.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-7293593437862759745</guid><pubDate>Wed, 09 May 2012 19:52:00 +0000</pubDate><atom:updated>2012-05-09T23:54:36.341+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bicycle</category><category domain="http://www.blogger.com/atom/ns#">personal productivity</category><category domain="http://www.blogger.com/atom/ns#">physical conditions</category><title>Bicycle off-city trips</title><description>A week ago, I had joined a bicycle club, and took part in two off-city trips, during weekend, -- about 100 km distance each, with 20-25 km/hour (up to 30) average speed. These were not competitions, but nevertheless they gave some physical load, and after them, sleep is deep. I plan to continue such trips. I hope that such physical exercises will increase my overall productivity and feeling, and give some energy. Aside from this goal, Saint-Petersburg's suburbs are very beautiful in nature, and have strong historical meaning and trace.</description><link>http://swhwengineersblog.blogspot.com/2012/05/bicycle-off-city-trips.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-9085395176293667990</guid><pubDate>Wed, 14 Mar 2012 08:05:00 +0000</pubDate><atom:updated>2012-03-23T18:25:57.058+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gadgets</category><category domain="http://www.blogger.com/atom/ns#">hardware design</category><category domain="http://www.blogger.com/atom/ns#">hp h1910</category><category domain="http://www.blogger.com/atom/ns#">testing</category><title>How to reanimate Li-Ion or Li-Pol battery from your smartphone</title><description>Today I want to share my experience in repairing the Li-Pol smart battery in my &lt;a target="_blank" href="http://handheld.softpedia.com/devices/HP/HP-iPAQ-h1930-12.shtml"&gt;HP iPAQ 1930&lt;/a&gt;. &lt;a href="http://swhwengineersblog.blogspot.com/2011/09/using-of-pocket-pc-for-reading-books.html"&gt;See my previous post on it.&lt;/a&gt;. My battery was marked with HP H1910 string on its paper box. The problem with it is if you'll leave device without even a single charge cycle for several weeks, it will discharge to a level from which it is impossible to initiate further recharging. If nominal voltage is 3.7 Volts, and you have allowed to discharge to about 3 V, this is the situation considered. A small piece of electronics, consisting of charge controller IC (integrated circuit), and a couple of power field (MOSFET) transistor keys, is placed between actual Li-Ion (or Li-Pol) battery and the outer contacts. Charge controller IC monitors voltage levels at the battery itself and outer contacts, opens necessary power key transistors, and communicate with host device via SMBus or other protocol to allow it to know state of the battery. Problem with discharging of a battery below certain level is that this controller IC stops working, so it is impossible to recharge the battery, since power key transistor have become permanently closed. But in many cases it is still possible to reanimate the smart battery. &lt;br /&gt;
&lt;br /&gt;
To do this, cut off small pieces of plastic from both sides of the battery, to open access to the inner contacts of Li-Ion (Li-Pol) battery. You should see and have access to two metal stripes after this operation. Get laboratory DC power supply unit, with both constant current and constant voltage, modes of operating. I use SHENZHEN MASTECH HY3005D-3. Constant current mode is indicated by "C.C." red round LED at the front panel, while constant voltage -- by the nearby LED named "C.V.". My battery has capacity of 950mAh. The usual current for charging Li-Ion batteries is calculated as capacity x 0.2 (in the appropriate units, in my case, it would be 950 x 0.2 = 190 mA). Since we want to bypass control electronics, and will not monitor temperature of the battery, it would be safer to decrease this value, I think, two times will be enough, so I assumed charge current of 100 mA. I shortened outputs of one channel of SHENZHEN MASTECH HY3005D-3 power supply unit, and set short-circuit output current to this level. (Be aware also that maximum allowable current that USB port should be capable of providing by its spec, is 500mA. So if your device is charged through USB, do not exceed this value under any conditions. Even safer would be to use half of that value, that is, about 250 mA, as an upper threshold for charging current.) Then I set output voltage to nominal voltage of the battery, 3.7Volts in my case. After this, I connected output of power supply to inner batteries contacts. Initial current will be 100 mA, equal to short-circuit, and "Constant Current" LED should be active. During a few hours, the battery will be charging, after which voltage should rise to its nominal value (3.7 Volts in my case), current drops to near zero, and power supply switch to "Constant Voltage" mode. That's it. Now you can power off power supply, disconnected wires from battery, place it into your handheld device, and continue using it, without having to buy a new battery.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;WARNING 1&lt;/b&gt;: Do not try to repeat the process without power supply with both "Constant Current" and "Constant Voltage" output mode, and without proper and carefully checked set-up values.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;WARNING 2&lt;/b&gt;: Li-Ion batteries might fire and explode. It is safer to put the battery into the metal or other solid case during the process to avoid possible harmful accidents.</description><link>http://swhwengineersblog.blogspot.com/2012/03/how-to-reanimate-li-ion-or-li-pol.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-5543323580059383859</guid><pubDate>Tue, 21 Feb 2012 17:12:00 +0000</pubDate><atom:updated>2012-02-21T21:12:12.594+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">English</category><category domain="http://www.blogger.com/atom/ns#">linguistics</category><title>Simplified English</title><description>I have recently stumbled upon such thing as Simplified English. Even for my ears, Russian being my native language, Simplified English sounds rather strange and, well, oversimplified. I read a few sample sentences, and it is clear that all of them lack some part of sense comparing to the original English sentences upon which they were constructed.&lt;br /&gt;
&lt;br /&gt;
It seems that there is no "Velvet Way" or "Silver Bullet" that could solve the problem of communication between people with different native languages worldwide. I did not ever hear about language school that teaches "Simple, or Simplified Language". Just opposite, all of them claim that their method allows one to master English (or other language of interest) to maximum possible level, and this fact clearly indicates that there is no or little demand for learning Simple Language.&lt;br /&gt;
&lt;br /&gt;
My conclusion is that there are no ways, except for long persistent systematic work, to learn any foreign language.</description><link>http://swhwengineersblog.blogspot.com/2012/02/simplified-english.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-5995559764078899530</guid><pubDate>Mon, 16 Jan 2012 18:44:00 +0000</pubDate><atom:updated>2012-01-31T23:11:08.883+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CRM</category><category domain="http://www.blogger.com/atom/ns#">hardware design</category><category domain="http://www.blogger.com/atom/ns#">software development</category><category domain="http://www.blogger.com/atom/ns#">testing</category><title>Requiem to Phobos-Grunt</title><description>Yesterday, after about two months of orbiting the Earth on an intermediary, low-altitude elliptic orbit, Russian interplanetary station had finally fallen back to Earth, luckily into Pacific Ocean, not on some populated area.&lt;br /&gt;
&lt;br /&gt;
Its short flight raised many questions to Roscosmos and even state's officials. Combined with several other satellite launch failures during last year, these questions are especially vital today. Maybe something in the area of top management of Roskosmos is really going wrong, maybe someone still think that world-class high-tech unique things can be developed for amount of money much less than world market suggests. Maybe something is broken at the bottom end of a technological chain, say poor quality control of production. &lt;br /&gt;
&lt;br /&gt;
But here I want to point to only one side of the problem: nowadays, we have many strong rigorous math instruments that can be used to assess reliability and probability of failure for virtually any piece of hardware and software. Researches in the area of development of error-tolerant and reliable hardware and software systems allow one to employ many scientifically proved methods of designing and testing. This is XXI century, at last.&lt;br /&gt;
&lt;br /&gt;
If scarce funding had really taken place, why main engineers and their bosses who were responsible for device subsystems could not just say: "Hey, guys, this is not enough to achieve the project's goals. You either will give us enough resources (time, money, people, equipment, etc.), or we will not sign for the work.". It seems that something is broken in the whole chain of decision making in Roskosmos. Sadly, but such conclusion came to mind after reading news.</description><link>http://swhwengineersblog.blogspot.com/2012/01/requiem-to-phobos-grunt.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-7745051828942708435</guid><pubDate>Sun, 01 Jan 2012 14:30:00 +0000</pubDate><atom:updated>2012-01-01T18:30:04.307+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gadgets</category><category domain="http://www.blogger.com/atom/ns#">hardware design</category><category domain="http://www.blogger.com/atom/ns#">interface design</category><title>Digital Photo Frame Texet TF-618</title><description>Last week, I had have to choose digital photo frame as a New Year gift to my mother. I stopped at Texet TF-618 due to its placement of control buttons at the front panel instead of at the backside. All other devices that I saw, have built-in control buttons made as usual mini-knobs, at the back side of them. TF-618 have just opposite design solution: a series of sensor LED-highlighted buttons at the front, just below its screen. This, I suspect, does not significantly raise its cost, but make usability and feel of control much better. I do know that there is small remote infrared control unit supplied with almost each digital photo frame device, including TF-618, but I prefer to have ability to deal with device without it in case it will be lost or accidentally hidden somewhere.</description><link>http://swhwengineersblog.blogspot.com/2012/01/digital-photo-frame-texet-tf-618.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-5468634912263837233</guid><pubDate>Fri, 30 Dec 2011 09:51:00 +0000</pubDate><atom:updated>2011-12-30T13:51:18.051+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hardware design</category><category domain="http://www.blogger.com/atom/ns#">personal productivity</category><category domain="http://www.blogger.com/atom/ns#">testing</category><title>Attentiveness in engineering work</title><description>The day before yesterday I had finally finished firmware in VHDL which is burned into Altera CPLDs in my design. Now all works fine, including surrounding digital schematics. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, I spent about two months on this part of project instead of planned four weeks. The reason is lack of attention during initial schematics development and VHDL program writing. Little logical error in VHDL program and lack of thorough test simulations caused me to solder several wires to key logic nets of the design under consideration, connect them to special debug connector and examine its pins with oscilloscope. Physical layout of the two mezzanine PCBs does not allow to access all logic nets directly with oscilloscope probes. At the end, error in firmware was found and fixed, but at price of extra time and nerves.&lt;br /&gt;
&lt;br /&gt;
After VHDL firmware was fixed, the device still did not function as it should. The reason traced to be a subtle difference in my schematics in comparison with third-party device to which my design should be compatible. My schematics was right, but incompatible with third-party software from manufacturer of that device. This was fixed by means of one 0603 resitor and two equipment wires.&lt;br /&gt;
&lt;br /&gt;
Finally, this part of device passed all tests.&lt;br /&gt;
&lt;br /&gt;
The lesson learned is the impermissibility of neglecting thorough and attentive requirement analysis and creating simulation tests during initial design phase.</description><link>http://swhwengineersblog.blogspot.com/2011/12/attentiveness-in-engineering-work.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-4864004744425994184</guid><pubDate>Wed, 02 Nov 2011 08:53:00 +0000</pubDate><atom:updated>2011-11-02T12:53:23.200+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">interface design</category><category domain="http://www.blogger.com/atom/ns#">software development</category><title>Multi-Platform User Interface and GTK+</title><description>During last days, I have being working with one program which uses GTK+ 2.22 for its user interface. It works, but some things look as something foreign on Windows XP. In particular, this is strange folder opening dialog, lack of flashing of active modal window title when clicking with mouse on inactive parent window, and some other small things. &lt;br /&gt;
My conclusion is trivial: if you target only one platform, it is better to use GUI libraries created for this particular platform that fully complains with established de-facto standards.</description><link>http://swhwengineersblog.blogspot.com/2011/11/multi-platform-user-interface-and-gtk.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-1109200961304562469</guid><pubDate>Wed, 05 Oct 2011 15:34:00 +0000</pubDate><atom:updated>2011-10-27T12:30:16.171+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hardware design</category><category domain="http://www.blogger.com/atom/ns#">testing</category><title>Stupid Connector Pinout Problem</title><description>Today I spent half of a working day correcting the problem with wrong IDC2-10 connector pinout. The usual pattern in which pins are ordered is as follows:&lt;br /&gt;
&lt;pre&gt;1 3 5 7 9
2 4 6 8 10
&lt;/pre&gt;In the User's Manual of industrial PC, to which I must connect, the picture looks like:&lt;br /&gt;
&lt;pre&gt;1 2 3 4 5
6 7 8 9 10
&lt;/pre&gt;I was slightly alarmed when I saw it the first time, but I thought that this is their right to re-order pins on their own module. Today, when I tried to get my PCB and this third-party industrial PC to work together, it was revealed that pins on its socket are actually ordered in a usual way, as shown in the first block. The unusual order that I observed in the manual was result of mere inaccuracy of their documentation writer. Strictly speaking, this is not my fault, but if I would check the actual ordering of pins before working on PCB, it would save me several hours of my life. Instead, today I have had to do some mounted-wire soldering on all manufactured devices to bring PCB footprints pinout to an actual state.&lt;br /&gt;
&lt;br /&gt;
UPD: They fixed this error in the latest version of the manual. I should had to check for the latest version before using it.</description><link>http://swhwengineersblog.blogspot.com/2011/10/stupid-connector-pinout-problem.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-8790552006498225028</guid><pubDate>Sat, 01 Oct 2011 14:01:00 +0000</pubDate><atom:updated>2011-10-25T17:43:33.968+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">CRM</category><category domain="http://www.blogger.com/atom/ns#">hardware design</category><category domain="http://www.blogger.com/atom/ns#">software development</category><title>CRM and Electronics/Software Development</title><description>In my spare time, I like to read one aviation forum. From there I learned that in the area of civil aviation there exists the whole concept about how members of aircraft flying crew should communicate and behave with each other, in order to achieve the best possible flying safety. I think, that something similar can be adopted to the field of electronics/software command development projects.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/Crew_resource_management" target="_blank"&gt;Crew Resource Management explanation on Wikipedia&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
CRM is all about preventing, detecting and correcting (even potential) human errors at the earliest possible stage, thus achieving the best flight results and safety. If you will regard flight of an aircraft as a multi-people PROJECT, you may naturally see that CRM principles can be applied also to electronics/software multi-people development PROJECTS. Unfortunately, I did not hear that even basics of such approach are studied in any university. This leads to very big role of project leader and his personal communication skills in overall success of any development project.&lt;br /&gt;
Such dependency could be mitigated, in my view, by working out and accepting concept of interpersonal communication in software/electronics development industry.&lt;br /&gt;
&lt;br /&gt;
In particular, co-pilots are specially trained to correct the captain and to question potentially wrong decisions if it seems appropriate in a given situation. But in the area of electronics/software development, authoritarian project leader often has too much power and possibilities to send a project in totally wrong direction.</description><link>http://swhwengineersblog.blogspot.com/2011/10/crm-and-electronicsoftware-development.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-1197263716675884441</guid><pubDate>Mon, 26 Sep 2011 17:20:00 +0000</pubDate><atom:updated>2011-10-25T17:43:01.601+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hardware design</category><category domain="http://www.blogger.com/atom/ns#">testing</category><title>Wrong Pin Numbers in PS/2 socket</title><description>Today I spent almost the whole working day to make (solder) a few adapters to remedy my PCB designing error. The problem was that I used MINIDIN-6 surface-mount female socket on my PCB, and I incorrectly routed PCB tracks to pins of that socket. It revealed that I used mirrored view of the socket when direct, non-inverted view should be used. Only one additional checking procedure would save me almost a whole working day.&lt;br /&gt;
&lt;br /&gt;
&lt;a target="_blank" href="http://en.wikipedia.org/wiki/PS/2_connector"&gt;PS/2 connector on Wikipedia&lt;/a&gt;</description><link>http://swhwengineersblog.blogspot.com/2011/09/wrong-pin-numbers-in-ps2-socket.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-5582534946267408977</guid><pubDate>Tue, 20 Sep 2011 17:30:00 +0000</pubDate><atom:updated>2011-09-20T21:30:34.493+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">interface design</category><category domain="http://www.blogger.com/atom/ns#">software development</category><title>Forms (Windows) Interface Font</title><description>Delphi 7, while being very powerful IDE for Windows development, has some deviations from standards set by Microsoft. One of them is that by default, VCL forms use MS Sans Serif, 8pt font for all controls. This may look good on developer's machine, but on some target machines, this may look very bad because of lack of this font and substituting it for some another.&lt;br /&gt;
Standard behavior would be to use default OS Dialog font.&lt;br /&gt;
To overcome this, in each form's OnCreate event, invoke the following procedure:&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;procedure SetFormFontToSystemDefaultFont(Form: TForm);
var
  NonClientMetrics: TNonClientMetrics;
begin
  NonClientMetrics.cbSize := SizeOf(NonClientMetrics);
  SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, @NonClientMetrics, 0);
  Form.Font.Handle := CreateFontIndirect(NonClientMetrics.lfMessageFont);
  if Form.Scaled then
  begin
    Form.Font.Height := NonClientMetrics.lfMessageFont.lfHeight;
  end;
end;
&lt;/pre&gt;&lt;br /&gt;
(Set ParentFont property to True for all controls on the Form for this to have effect).</description><link>http://swhwengineersblog.blogspot.com/2011/09/forms-windows-interface-font.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-1191364356805896955</guid><pubDate>Sun, 18 Sep 2011 07:57:00 +0000</pubDate><atom:updated>2011-09-18T11:57:04.522+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">interface design</category><category domain="http://www.blogger.com/atom/ns#">software development</category><title>Delphi Inactive Forms Behavior</title><description>In Delphi 7, there is one drawback in VCL, which appears as lack of any indication of which window is active when user clicks with mouse on inactive window. Standard behavior of compliant windows application is to flash the title bar of active modal window in that case, but Delphi forms do not respond to this action.&lt;br /&gt;
&lt;br /&gt;
To remedy this, add the following code to your modal forms:&lt;br /&gt;
&lt;pre&gt;type
  TMyForm = class(TForm)
  ...
  protected
    procedure CreateParams(var Para: TCreateParams); override;
  ....
  end;
.... 
procedure TMyForm.CreateParams(var Para: TCreateParams);
begin
  inherited;
  Para.WndParent := GetActiveWindow;//to allow title flashing of child modal dialogs
end;
&lt;/pre&gt;</description><link>http://swhwengineersblog.blogspot.com/2011/09/delphi-inactive-forms-behavior.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-6781064714852999404</guid><pubDate>Fri, 16 Sep 2011 18:00:00 +0000</pubDate><atom:updated>2011-10-23T13:23:07.995+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hardware design</category><category domain="http://www.blogger.com/atom/ns#">interface design</category><category domain="http://www.blogger.com/atom/ns#">testing</category><title>Electronic Component Misorientation Problem</title><description>Today the first preproduction batch of my devices, consisting of four PCBs (Printed Circuit Boards), was finally completely mounted, and I began to power them up in order to test the mounting accuracy and device functionality. It was revealed during mounting that I had placed some components too close to each other, although this will not prevent embedded software developers from using the devices to debug their firmware. When I started to bring the live into the device, I found that at one position, on all devices, stabilitrons were mounted in opposite polarity. It seems that assemblers who performed actual soldering, are accustomed to the fact that diodes' Anode pole are usually goes to positive polarity, and Cathode pole - to negative. This is true for simple forward usage of regular and shottky diodes, but stabilitrons need to be used in reverse direction. I marked where the Anode should be on assembly drawing, nevertheless it seems that assembler was guided by datasheet, where Anode mark is showed, and polarity of PCB padstacks. I'm thinking about resorting to using SOT-23 case for this component in second version of a scheme (for those who are not familiar with it: this is 3-leads case, it have 2 leads on one side and one on another, thus it is impossible to place it in wrong orientation). It may be _slightly_ more expensive than currently used 2-leads case, but it will leave us from necessity to think about right orientation and to control it.&lt;br /&gt;
&lt;br /&gt;
It seems, that many engineering decisions are often driven by similar motivation - to ease manufacturing and/or repairing processes, at price of slightly increasing components cost.&lt;br /&gt;
&lt;br /&gt;
It also reminds me that responsibility of everyone who design any type of interfaces, is to make every interface as clean and consistent as possible, and to make sure that working with this interface requires from user absolutely minimum of possible knowledge of a system.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.nxp.com/#/page/content=[f=/packages/SOT23.xml]" target="_blank"&gt;SOT-23 drawing&lt;/a&gt;</description><link>http://swhwengineersblog.blogspot.com/2011/09/electronic-component-missorientation.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-5843649333105473305</guid><pubDate>Thu, 15 Sep 2011 08:29:00 +0000</pubDate><atom:updated>2011-09-15T12:29:10.091+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">interface design</category><category domain="http://www.blogger.com/atom/ns#">software development</category><title>On Interface Design</title><description>For historical reasons (it was chosen by management of our firm to process salary payments), I have an account in one bank, with Internet banking option. The problem with its bank-client application, which should be used to access an account and to perform financial operations, is that it is evident that in some points it looks very unprofessional. The most prominent things are appearing of default Borland C++ Builder Icon as an Icon for Alt+Tab window and in the title bar of some windows, and inability of built-in browser window to resize accordingly when its parent window is expanded to the whole screen size. I believe that their application does not contain flaws that may compromise data transfer security, but if I would choose from different banks now, I would not stick with such a poorly written software. Their offices look as they should be - clean, modern, with polite staff, but it seems that their management do not realize that when I work with Internet banking, the face of the bank is actually the software.&lt;br /&gt;
After noticing that, I began to tend to double-check all my user interface look-and-feel features and logic, although neither of my programs deal with user's financial data.</description><link>http://swhwengineersblog.blogspot.com/2011/09/on-interface-design.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-6004625862460767379</guid><pubDate>Wed, 14 Sep 2011 08:41:00 +0000</pubDate><atom:updated>2011-09-14T13:19:24.742+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gadgets</category><category domain="http://www.blogger.com/atom/ns#">personal productivity</category><title>Using of Pocket PC for Reading Books</title><description>I have an old Pocket PC iPAQ h1930 with Windows CE 4.20 on board. I'm not interested in beautiful flash games or watching video on it, so it serves me well for the purpose of reading books. It has about 3.6'' inches screen diagonal, so it can be put into any pocket, that is very handy. It does not have built-in GSM transceiver, so I have to use a separate cell phone in addition. This scheme has three main drawbacks:&lt;br /&gt;1. When you have two devices instead of one, it is easier to forget one of them or to forget to charge one of them.&lt;br /&gt;2. When you have a scanned book in PDF format, Adobe Acrobat, even in "Reflow mode", cannot reformat the strings to shorten them and to fit them into the available screen space. So if with minimum acceptable scaling value the text strings do not fit into the screen height, you have to constantly drag the document view back and forth in order to be able to see the whole sentences. This is rather annoying, although with some practice you become to pay much less attention to it.&lt;br /&gt;3. Sometimes the device for unknown reason goes into totally unresponsive state, and I have to do a hard reset via special technical button and a pen. It happens about once a week or in a few days. &lt;br /&gt;&lt;br /&gt;Although despite the above cases, the device saves me a lot of time by allowing me to educate myself during trips in public transport, and I understand, that buying any new modern gadget of similar form factor will not improve my productivity in this area. Electronic books have larger screens, but they are less handy to put into your pocket.&lt;br /&gt;&lt;br /&gt;What I like in the device, is that there are many applications already written for Windows Mobile, so I have no problems with viewing of virtually any needed file format. Yes, I know that this OS is in fact abandoned by MS, but this does not matter, since all practically required  applications are already there.</description><link>http://swhwengineersblog.blogspot.com/2011/09/using-of-pocket-pc-for-reading-books.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-4870230608348823591</guid><pubDate>Tue, 13 Sep 2011 08:36:00 +0000</pubDate><atom:updated>2011-10-23T11:36:59.721+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">software development</category><title>Reusing of Classes in a New Project</title><description>I recently started a new small software project (program). Part of its functionality and GUI is common with another my relatively mature program. The latter consists of many classes written during 2 years. Although I tried to apply the best principles of Object-Oriented design and programming, such as incapsulation, the least possible coupling between classes and units, programming via interfaces and not implementations, etc., but when code of your classes is used in only one project, it is very easy to leave some project (or domain-) specific code in places where it should not be found. This leads to more tightly coupled code and reduce overall system maintainability. When you attempt to use such classes in another application, all such poorly written places become obvious. I have already fixed several errors of that kind, and I see now that my first project also will gain benefits from it, via improved code readability and structuring, despite the fact that I did not add features to it. I think it would be a good practice to always have at least two projects which both use a set of common classes, in order to be sure that those classes are written properly and do not make unnecessary assumptions about their usage.</description><link>http://swhwengineersblog.blogspot.com/2011/09/reusing-of-classes-in-new-project.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-456750063774292318</guid><pubDate>Mon, 12 Sep 2011 07:44:00 +0000</pubDate><atom:updated>2012-08-10T12:41:13.867+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">64-bit</category><category domain="http://www.blogger.com/atom/ns#">C++</category><category domain="http://www.blogger.com/atom/ns#">Delphi</category><category domain="http://www.blogger.com/atom/ns#">software development</category><title>64-bit Delphi version is ready</title><description>Embarcadero has finally released so long-awaited Delphi IDE version with 64-bit target compilation mode support. By far, I have been using Delphi 7 for about 10 years, and it still allows one to create first-class windows apps. I reluctantly considered an idea of upgrading to newer versions of IDE because of large amount of source code written during these years and of old habit. But I feel that now it is time to upgrade. For me, three main reasons are:&lt;br /&gt;
&lt;br /&gt;
1. 64-bit compilation support&lt;br /&gt;
&lt;br /&gt;
For example, if you have MS Office Add-In, clients will inevitably ask for support of 64-bit MS Office. You have to create 64-bit DLL in order to be able to integrate with any of 64-bit MS Office application, 32-bit, no matter how good it is, will not work. The only plausible solution before was to create a 64-bit stub DLL in Microsoft Visual Studio. Now one can provide 64-bit support without using another IDE.&lt;br /&gt;
&lt;br /&gt;
2. Native Unicode support&lt;br /&gt;
&lt;br /&gt;
Although using of WideString type instead of AnsiString everywhere, and components such as TNT Unicode Controls, in general solves the problem, there still remains some artefacts. For example, you can not register COM server with regsvr32 command, if DLL resides in a path that contains characters which are not representable in the default system Ansi Code Page. And WideStrings was designed to be compatible with system OLE interface calls, and thus they are not reference-counted and use a special system memory allocation routine, which degrade performance. In &lt;br /&gt;
contrast, since Delphi 2009, the new native UnicodeString type was introduced, which is reference-counted and uses internal memory manager to allocate space, more efficiently than system-wide does. TNT Unicode controls are also, while work, look a bit like a crutch.&lt;br /&gt;
&lt;br /&gt;
3. Bugs fixing in the IDE&lt;br /&gt;
&lt;br /&gt;
Delphi 7 is convenient IDE, but some intricate bugs sometimes annoy. These include "internal compiler error", AVs, and inability to customize the IDE watches and debug windows in arbitrary way (I constantly got AV after effort to do this). The same applies to C++ Builder 5.5 which I also used for several years.&lt;br /&gt;
Embarcadero seems to pay much attention to quality in last years, I hope that their latest products are much more stable.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, C++ Builder XE2 does not yet include 64-bit compilation mode, but its next version anyway seems to fix that. All what is said above, applies also to C++ Builder (I used it for several years).&lt;br /&gt;
&lt;br /&gt;
During last years, Embarcadero are making great efforts to rehabilitate Delphi &amp; Builder IDEs reputation in comparison with MS Visual Studio and open-source competitors. I hope that when demand of support for ARM CPUs will become evident, they will add it in time.</description><link>http://swhwengineersblog.blogspot.com/2011/09/64-bit-delphi-version-is-ready.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3741714684411272607.post-4527535637736771758</guid><pubDate>Sat, 10 Sep 2011 14:06:00 +0000</pubDate><atom:updated>2011-10-23T13:20:27.730+04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hardware design</category><category domain="http://www.blogger.com/atom/ns#">software development</category><category domain="http://www.blogger.com/atom/ns#">testing</category><title>About testing</title><description>While working on my software projects, I often encountered a situation when almost all was ready for releasing a next version, but after starting final tests on different systems, many unexpected bugs were revealed. Sometimes after a small change in one part, other, presumably totally unrelated functionality, started to work wrong, sometimes the program worked right on one OS, but not on another, sometimes something very strange at first look appears.&lt;br /&gt;
The end conclusion that I have drawn is that testing should never be neglected or shrunk. It takes time, but if not done well, the end users will be whose who will find bugs and errors.&lt;br /&gt;
&lt;br /&gt;
Similar thing has to be said about hardware testing. You should never be confident that a given part of device is working properly if it was not properly and thoroughly tested.</description><link>http://swhwengineersblog.blogspot.com/2011/09/about-testing.html</link><author>noreply@blogger.com (Engineer's blog)</author><thr:total>0</thr:total></item></channel></rss>