tag:blogger.com,1999:blog-27095577484743963872024-03-12T18:50:49.442-07:00Knaskodlaserdavidhttp://www.blogger.com/profile/15464992806649778806noreply@blogger.comBlogger11125tag:blogger.com,1999:blog-2709557748474396387.post-66417770785923477072011-12-13T15:44:00.000-08:002011-12-13T15:44:42.913-08:00So Many Options......but not the one I'm looking for. How about introducing the "take me to the corresponding .cpp-file" in Visual Studio. Visual Assist has had that feature for ages so it can't be that hard.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxuVjEpRkE9ABr09nZqzoXwkYK0u2QSdXEz-oZx7UrqfZwDyEyCT38S-g7rgwY0KaiY3vqv9Yi8taVYRMypVVQmNI2jbYxsURHgfiv4uw2B_-UFQd7uz_yv2YbqN-AP9uKPVdAsyQ_KvJ-/s1600/options.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxuVjEpRkE9ABr09nZqzoXwkYK0u2QSdXEz-oZx7UrqfZwDyEyCT38S-g7rgwY0KaiY3vqv9Yi8taVYRMypVVQmNI2jbYxsURHgfiv4uw2B_-UFQd7uz_yv2YbqN-AP9uKPVdAsyQ_KvJ-/s320/options.png" width="255" /></a></div>
<br />laserdavidhttp://www.blogger.com/profile/15464992806649778806noreply@blogger.com0tag:blogger.com,1999:blog-2709557748474396387.post-24049606658253691512011-12-01T22:58:00.001-08:002011-12-02T09:03:35.302-08:00Secret User InterfacesRecently I've been upset with applications hiding user interfaces from me. It's quite annoying when relevant information about how to use an application is hidden until I move my mouse over a control and it transforms into something different.<br />
<div>
<br />
First out is GMail.<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsbT4RgmFVX66eeYNN2mg8hYZoU2SrL9trZzBG_aotCokWO6-zUweNrMfY1QPtcAjMjZqFo9OcgK6lAbtK7k8B2SvPbeWrAs-IUvSv4zRZ4-XuckpvWJcuO6nb2s5MGPMeYfgE3Ra73tJU/s1600/gmailnoscroll.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsbT4RgmFVX66eeYNN2mg8hYZoU2SrL9trZzBG_aotCokWO6-zUweNrMfY1QPtcAjMjZqFo9OcgK6lAbtK7k8B2SvPbeWrAs-IUvSv4zRZ4-XuckpvWJcuO6nb2s5MGPMeYfgE3Ra73tJU/s320/gmailnoscroll.png" width="121" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy132Ak9RIrVxVw30wpHV3vtHKYrD8WYI4BvhHeT0AK1warR1Q-nRFnUWuLuGvc9WDv6gI5Atj4aN3LWmGEXsIulYR0OQsXsgiqjxZI_t4ntyxaLRt61Mce82XcG2MLP9h8swhiSskAKbX/s1600/gmailscroll.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy132Ak9RIrVxVw30wpHV3vtHKYrD8WYI4BvhHeT0AK1warR1Q-nRFnUWuLuGvc9WDv6gI5Atj4aN3LWmGEXsIulYR0OQsXsgiqjxZI_t4ntyxaLRt61Mce82XcG2MLP9h8swhiSskAKbX/s320/gmailscroll.png" width="105" /></a></div>
<div>
<br /></div>
<div>
Note how the left version of the user interface has no scroll bar. When moving the mouse cursor over the list of mail folders suddenly a scroll bar appears that signals that there are hidden folders to scroll to.</div>
<div>
<br /></div>
<div>
Then there is Facebook:</div>
<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/AVvXsEiB2ecmqw2zvrH58Wh_561eG63Q3o2PVe1Hn_mON2TTZbPoLZtGWWMvXBfhH-N2Ygwmc0nP2rMS8uHPzNLN2Ggd6-dfsrKab4lXitG149xqsa3_eKcdgzWgGC33Sggh5gh5fwz7J0g3kPb9/s1600/facebooknoscroll.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB2ecmqw2zvrH58Wh_561eG63Q3o2PVe1Hn_mON2TTZbPoLZtGWWMvXBfhH-N2Ygwmc0nP2rMS8uHPzNLN2Ggd6-dfsrKab4lXitG149xqsa3_eKcdgzWgGC33Sggh5gh5fwz7J0g3kPb9/s1600/facebooknoscroll.png" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVjW1UXFAIBaytDN448PxsxEB8T7hA38k7mRVx_Oe9PrWWJcEi8yR44cUhZMicqk_jIGebp029csFrg5l1Bwc1dPWgomeRLqN832Xje3kA8QDFkBpKqUbmYF3jmvliyrP1T1VjIGMbi651/s1600/facebookscroll.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVjW1UXFAIBaytDN448PxsxEB8T7hA38k7mRVx_Oe9PrWWJcEi8yR44cUhZMicqk_jIGebp029csFrg5l1Bwc1dPWgomeRLqN832Xje3kA8QDFkBpKqUbmYF3jmvliyrP1T1VjIGMbi651/s1600/facebookscroll.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Look at this short list of online friends just waiting to be interacted with in the top image. Well by moving the cursor over the control we discover there are actually way more people to interact with, since the scroll bar is exposed. A bonus point for writing "more online friends" at the bottom of the control. A scroll bar would show it without any kind of special engineering effort.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Finally we have the PDF reader in google chrome.</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj8h22CJyaramObQB-Bvj9laypwEC3X74FIKYQsBNnoS4ppEX9IHWVXsFIdHqNLK_BZ0JCT2KSfyAcQ3nfBw_SOMQXIPJhlTheE5ht9PY5vbdrh61BCXv9d-ZuoAa6aX9NQBE7GzE5fz2l/s1600/chromepdfnoui.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj8h22CJyaramObQB-Bvj9laypwEC3X74FIKYQsBNnoS4ppEX9IHWVXsFIdHqNLK_BZ0JCT2KSfyAcQ3nfBw_SOMQXIPJhlTheE5ht9PY5vbdrh61BCXv9d-ZuoAa6aX9NQBE7GzE5fz2l/s320/chromepdfnoui.png" width="296" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha-2MX0hDkscCrAC3vG5Qoz6zwTQDK3AlT4ONWdtqJMCkjnUgM7-iAYM2l3d7Qn0637dmFyqyOODiUd1PUQHppu_6gZyiCOop7n57ynUTN9f8D1fqGCVQo1NBtXugvdOe6sOQLA8722V54/s1600/chromepdfui.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEha-2MX0hDkscCrAC3vG5Qoz6zwTQDK3AlT4ONWdtqJMCkjnUgM7-iAYM2l3d7Qn0637dmFyqyOODiUd1PUQHppu_6gZyiCOop7n57ynUTN9f8D1fqGCVQo1NBtXugvdOe6sOQLA8722V54/s320/chromepdfui.png" width="296" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Note how the top version shows absolutely no signs of zooming capabilities, then when moving the mouse to the bottom of the page it magically appears. Some weeks ago I spent over a minute trying to figure out how to zoom in a PDF document.</div>
<div>
<br /></div>
<div>
Bad user interfaces because of ignorance is something I understand, not everybody was meant to do that kind of work. What really annoy me about these examples are that someone actually put engineering effort into hiding the user interface from the user. If they just left the UI in the state it is in when the mouse is over it everything would be just fine.</div>
</div>laserdavidhttp://www.blogger.com/profile/15464992806649778806noreply@blogger.com0tag:blogger.com,1999:blog-2709557748474396387.post-45607134097044765022011-06-08T14:18:00.001-07:002011-06-08T14:18:23.593-07:00Am I right or am I right? Part 2Microsoft is on the bandwagon too!<div><a href="http://www.youtube.com/watch?v=p92QfWOw88I">http://www.youtube.com/watch?v=p92QfWOw88I</a><div><br /></div></div>laserdavidhttp://www.blogger.com/profile/15464992806649778806noreply@blogger.com0tag:blogger.com,1999:blog-2709557748474396387.post-91127967265089325282010-12-05T16:30:00.000-08:002010-12-05T16:33:01.815-08:00Am I right or am I right?Seems like Apple listened to my <a href="http://knaskod.blogspot.com/2010/04/ipad-is-revolution.html">blog post</a> about the iPad and full screen applications. <a href="http://www.apple.com/macosx/lion/">Lion</a> seems to be a big step in the right direction!laserdavidhttp://www.blogger.com/profile/15464992806649778806noreply@blogger.com0tag:blogger.com,1999:blog-2709557748474396387.post-15677648824440127192010-04-19T15:10:00.000-07:002010-04-19T15:51:24.747-07:00Another Pet PeeveEditors that automatically introduces a closing bracket or parenthesis when typing an opening one. I just get the impression that I delete (or forget to delete it so my code gets wrong) more than half of the times it happens. When modifying old code, which seems to be what most coders actually do, it always get in my way.<div>Typically you have something like:</div><div><span class="Apple-style-span" style="font-family:'courier new';">float temp = a * b + c; </span></div><div>and you realize it bugs if the result gets negative so you want to modify the code to:</div><div><span class="Apple-style-span" style="font-family:'courier new';">float temp = std::max(a * b + c, 0.0f);</span></div><div>For these situations you always end up needing to erase that stupid autogenerated parenthesis when wrapping up the previous expression in a new one. I also often find myself creating my expressions from the inside out as opposed from left to right when typing new code and then it's just getting in my way.<br /><div><br /></div><div>For me it seems like a stupid micro optimization based on the idea that you spend more time creating new code than working with old that makes the programming editor behave differently and confusingly from almost any editor without giving any noticeable speed improvements. In order to motivate a change the expected result of typing (like visual assist does when suggesting function/variable names that changes the behavior of the tab or space key while suggesting) you'd better get a noticeable improvement. In this case I think it's getting in the way most of the time. </div></div>laserdavidhttp://www.blogger.com/profile/15464992806649778806noreply@blogger.com1tag:blogger.com,1999:blog-2709557748474396387.post-5087327014255134382010-04-11T12:09:00.000-07:002010-04-11T12:54:57.981-07:00The iPad is a RevolutionHaving had an iPad for about a week now I'm pretty sure it will change how we interact with computers. It's not the multi touch with a big screen I'm thinking of but the fact that it seems like the first real attack on the overlapping windows UI approach in a very long time.<div>I've always been a bit sceptical to the idea of having two windows partially overlap like we do in most OS. If you are interacting with one program, it should be filling the screen, if you are interacting with two programs they should share the the screen in way that both of the windows have their share of the screen, having them overlap doesn't make sense. I can't remember how many times I've been upset trying to drag something from a window to a different window that happens to be partially covered by the first one.</div><div>There are many programs that solves this locally. My favorite example is <a href="http://en.wikipedia.org/wiki/Total_Commander">Total Commander</a> or <a href="http://en.wikipedia.org/wiki/Norton_Commander">Norton Commander</a>. It's remarkably faster to get things done in that kind of environment rather than the seas of explorer or finder windows that tends to occupy the desktop after a days work.</div><div>For X environments there have been window managers like <a href="http://en.wikipedia.org/wiki/Larswm">larswm</a> and <a href="http://en.wikipedia.org/wiki/Dwm">dwm </a>that approaches the problem, but it has always seems like they are fighting a battle they can't win since most applications doesn't play very well with the paradigm. I've always been skeptical to turn into the person running WeirdOS with Dvorak keyboard setup and telling everybody how fast you get things done, since you tend to spend so much time on different computers in you everyday life so you'd better be good with what's most common.</div><div>This is why the iPad is very interesting. Suddenly we have a platform with a big adaptation and an OS built in a way where applications are full screen by default. I'm very happy they made it a big iPhone as opposed to a touch enabled desktop MacOSX. The upcoming multi tasking ability will take it closer to a real computer and with a real keyboard and a mouse, it's pretty close to be useful as a desktop OS.</div><div>Ironically XCode, the environment you develop for iPad in is the very opposite. It's, from a window point of view, one of the most messy pieces of software I've ever used. It's horrible to use on a laptop with a touchpad since it needs lots of window changes and precision mouse movements and you always end up with a stamp sized editor window for you code in order to fit the other relevant stuff you need on the screen.</div>laserdavidhttp://www.blogger.com/profile/15464992806649778806noreply@blogger.com0tag:blogger.com,1999:blog-2709557748474396387.post-80898431650414818702010-03-06T18:09:00.001-08:002010-03-06T18:26:08.035-08:00Who to blame, Apple or Microsoft?I've been having problem with my air tunes box for a while and I really couldn't figure out why it's silent for a few seconds every minute or so. Today I found the explanation on the <a href="http://support.apple.com/kb/TA21536">apple home page</a>. It seems like when Windows updates the list of present wireless networks the music skips. The solution, make sure the network you're on is in the top of the list of known networks. What makes this even more interesting is that it seems like air tunes has a buffer of some 3 seconds which makes volume changes and music pausing really frustrating since all effects are delayed. How can a system with 3 seconds buffering start skipping because of the short interruption when the network list is updating? Why am I not experiencing the same gaps in other internet connections? Who shall I be upset with, Apple or Microsoft? Perhaps both for good measures.<div><br /></div><div>A completely unrelated thing, <a href="http://en.wikipedia.org/wiki/Dependency_injection">Dependency Injection</a> is probably the most hyped trivial concept I've seen so far. I've read the explanation of it some 5 times and I just can't figure out what the buzz is about. The way I understand it, it turns out to be as trivial as passing an implementation of a class through the constructor for another class rather than choosing the exact type inside the constructor. This makes it easier to switch implementations and provide testing mock classes. I've done this for ages, just didn't come up with a fancy name. It turned out I wasn't the <a href="http://jamesshore.com/Blog/Dependency-Injection-Demystified.html">first</a> to make this observation.</div>laserdavidhttp://www.blogger.com/profile/15464992806649778806noreply@blogger.com0tag:blogger.com,1999:blog-2709557748474396387.post-10402434780774258982009-12-10T11:08:00.000-08:002009-12-10T13:11:21.804-08:00Pet PeeveIf you ever make a recently used file menu, make sure it's updated directly after the file is loaded, preferably between you choose to load the file and the program actually loads it!<div><br /></div><div>I often use editors and tools that are in an unstable state and crashes all the time. Typically the crash is related to a particular file that makes it easy to reproduce the problem. When you are working with this kind of problem you typically make some change to the program that you hope fix the problem, load whatever you loaded last time and try to make some actions that crashes the editor again. The recently used files menu is your best friend for this kind of workflow, however lots of tools don't save the recently opened files until it does a clean exit. This means that when you work with a support case in some obscure temp directory you find yourself browsing for this file 10 times and at some point you get so tired of it so you load the file, exit the editor cleanly and open it again to make sure it's available in the recently used file the next time you open the editor.</div>laserdavidhttp://www.blogger.com/profile/15464992806649778806noreply@blogger.com0tag:blogger.com,1999:blog-2709557748474396387.post-66224711378149635592009-11-21T14:20:00.000-08:002009-12-11T00:01:28.262-08:00File Format Rant<div>File formats is something necessary evil that shows up in almost every program of some kind of complexity.</div><div>Modern languages often have good serialization systems that can take care of much of this automatically, but in the end if the data should be passed between different applications written in different languages on different platforms you'd most likely need some kind of standardized format to store stuff.</div><div>I've used and created many file formats in my life and there is one thing that makes me really upset. When the format designers think they are doing the users a favor by supporting many ways of storing data.</div><div>Typical examples:</div><div><ul><li>Is the file format big endian or little endian when it comes to storing the words? Let's introduce a flag so it's up to the writer, after all you don't want to introduce unnecessary conversions!</li><li>Is the image stored as RGBA or ARGB? Well, introduce a big enum with lots of different encodings, why should two be enough, someone may have ABGR encoded images.</li><li>Is the image coordinate system with a upward or downward pointing Y axis? Let's support both, after all it makes it so much easier to write the file if you don't have to convert it before!</li><li>Is the camera stored as a point and a look direction, or perhaps a lookat point, or perhaps a matrix. And what about the projection, horizontal fov, aspect ratio, or vertical fov? Let's support all of them, preferably with some kind of redundancy conventions like if you have stored horizontal fov, vertical fov and aspect ratio, the vertical fov should be ignored.</li></ul></div><div>I personally think a file format should have the confidence to be a standard rather than supporting every standard. For a file format that has some kind of data interchange role, there is guaranteed to be way more readers than writers out there, so make sure reading the file is the priority, not writing it! </div><div><br /></div><div>From the reading point of view it's a nightmare to be able to support thousands of permutations for how the file is stored. Often you need a big test suite with sample data and differently encoded files to make sure you cover every single way of doing things. I ran into a TIFF file the other week that failed in my application because it was stored in a non interleaved way (i.e rrrrrr...gggggg...bbbbbb rather than rgbrgbrgb...). I've never seen one of those in my entire life and also Maya didn't handle it properly!</div><div><br /></div><div>There are of course times where the requirements makes it important be flexible when it comes to writing.</div><div><ol><li>Your format has high performance requirements. Perhaps you need to know that you can memory map your image in a buffer to load it blazingly fast, or perhaps being able to read it as a blob and typecast it to a struct with well known padding to avoid having to translate every read word in some fancy way. This however is a dangerous path, there are many platforms out there and if you start using a highly platform dependent format you may make your program worse performing or hard to port. It completely makes sense for data stored in the temp directory though.</li><li>Your format represents the internal state of your program. A 3d modelling package that supports many ways of working and specifying a camera needs to make sure whatever what used is what's in the file when loading it again. These formats should generally not be used for data exchange though.</li></ol><div>So please think about the people reading the files, rather than the ones writing them. They are more than the writers. If there are programs that claims to be compatible with your format but fails to load a file someone wrote you didn't really made anyone a favour by making your format easy to write.</div></div>laserdavidhttp://www.blogger.com/profile/15464992806649778806noreply@blogger.com0tag:blogger.com,1999:blog-2709557748474396387.post-3529545108006996952009-01-25T08:05:00.000-08:002009-01-26T09:46:23.852-08:00Memory mapped missunderstandingI've become a <a href="http://stackoverflow.com/">stack overflow</a> addict recently. Stack overflow is actually a really awesome programming community. It seems to be working very well when it comes to pushing the good and relevant answers to the top of the list so you don't need to spend time reading stupid, redundant or incorrect answers.<div>Regardless of that, reading programming forums is always stressing for me since sometimes people seem to be cooperatively clueless.<br /></div><div><br /></div><div>I recently had one of those experiences started by someone claiming one of my posts being stupid because I suggested using memory mapped files for large (4GB+) random file access. His motivation was that a memory mapped file that large would use all the address space of a 32 bit process. This is plain wrong, if anyone tells you that you need to map up the entire file in your address space, they don't know what they are talking about. You can choose how much of the file you want to map using one or multiple <span class="Apple-style-span" style="font-style: italic;">windows</span> into the file. These are possible to move and manipulate in many cool ways. It's not for free, but it's definitely not a reason not to use memory mapped files!</div><div><br /></div><div>Anyway I did some more search on postings on memory mapped files on the site and it seemed like people found this <a href="http://stackoverflow.com/questions/192527/what-are-the-advantages-of-memory-mapped-files">address</a> <a href="http://stackoverflow.com/questions/258091/when-should-i-use-mmap-for-file-access">space</a> issue a reason not to use them!</div><div><br /></div><div>The irony of the story is that the reason I started using memory mapped files in the first place was to prevent a problem caused by lack of (continous) address space in a 32 bit process :)</div><div>They are not only good for fast io, but also for throwing out large runtime data to disk and access it more like memory than files. </div>laserdavidhttp://www.blogger.com/profile/15464992806649778806noreply@blogger.com0tag:blogger.com,1999:blog-2709557748474396387.post-86200152595586989142009-01-14T12:19:00.000-08:002009-10-23T10:59:23.516-07:00CMakeInstead of telling you about the purpose of this blog I'm going to write a note about my experiences with <a href="http://www.cmake.org/">CMake</a>. <div>I've been upset about not having a good cross platform tool for writing make files. Make files actually is a somewhat too specific description. Perhaps a better one is build configurations.</div><div><br /></div><div>First of all, I prefer to develop in visual studio, I really need a visual studio project file to work with. Visual Studio projects is a source of problems themselves. Typically when introducing new library paths or other global changes I tend to forget to update all versions (Release, Debug, Release with symbols, ia32, x64, etc.) so after commiting my code, a co worker who works on a different configuration, or even worse in a different project file (we used to need both visual studio 2003 and 2005 to build for all platforms) ends up in a shitty situation. Add to this a separate build system based on make for Linux and Mac that needs to be updated. </div><div>You can always blame this kind of errors on sloppy coders, but the problem is really in the process. If there are things that's easy to get wrong, people will make errors so it's better to make things easier to get right. </div><div><br /></div><div>My personal experience with setting up a build system that works properly on Windows, linux and mac with working dependency tracking is quite painful. The root of all evil in our situation is that you want no redundancy in the included files and settings for the projects. They should be specified in only one place. You also need quite much flexibility in platform specific file lists and compiler flags. The natural approach would is to have the same build system on all platforms with abilities to make platform specific exceptions. I've seen lots of programs that claims to be better than good old make, but CMake is the first I've found that lets me work in Visual Studio without pain and still supports linux and mac properly.</div><div><br /></div><div>My first impression of CMake wasn't that good. It was quite obvious that the script language was not designed by Donald Knuth. It was built around some macro like constructions with poor type checking and global variables where you feed in your compiler options. Accidentially getting a character wrong in a global variable name means you silently define a new nonsense variable rather than changing the setting you wanted. This is really a pity. I definitely think the CMake developers should have built their system around python or some other decent scripting language rather than creating their own less than stellar language.</div><div><br /></div><div>After playing around some more with it, it seems very much like a program that does what it's supposed to do. Perhaps not in the most fancy and extensible way, but it gets the job done. That's truely awesome, I've been looking for this program for ages!</div><div><br /></div><div>The major change in how I will develop with this system is that adding new files, library dependencies is done in a separate configuration file instead using the gui in visual studio. Then you just regenerate the projects and all is fine. The added bonus is that this one change update all configurations and platforms. To make things more convenient, they actually have a dependency on the specification files in the generated visual studio projects so when you change the project definition it will trigger a rebuild of the visual studio project. It seems to work good for most situations but I've managed to make things wrong in a way where the old project file was ruined and no new one was generated. This meant I had fix the error and manually run CMake to get the project file generated properly.</div><div><br /></div><div>We've run into lots of problems so far, but all of them has been possible to work around. I've noticed when googling about the problems we've had, many of them have been solved quite recently. I chose to think of this as a good thing. If there are serious problems they provide some kind of solution rather than letting the users know that they are doing things wrong.</div><div><br /></div><div>So far I've only been using it in Windows and it seems to do good. I've got it to use precompiled headers, build dll's, generate projects for both x64 and ia32. Soon, I'll see if the system pass the final tests, Linux and Mac. </div>laserdavidhttp://www.blogger.com/profile/15464992806649778806noreply@blogger.com2