I’ve been looking for something like this for years: a central, easy-to-use site for stock photos. Called PhotoPin , the site features a search engine that trolls Flickr for pictures. Some of them are also available to buy, but the vast majority are CC licensed. Obviously the site (it’s more a widget, really) reminds you to link back to the original image, but if you’ve ever tried to find an acceptable image for “ ninja stormtrooper ” then you’ll understand the value of the site. Just search for any topic using the search box (ex: passion, puppies, etc.), preview the photo, and click “get photo” to download the photo as well as the proper attribution link. If you prefer to pay for the photo rather than linking to it, the results at the top will take you to a partner stock photo site where you can buy the photo (currently fotolia). The site is surprisingly barren but quite handsome and much better than the jumble that is Flickr’s own CC site . It’s a clever site and an interesting diversion on this fine Friday afternoon. There is actually no contact information on the site itself, so there’s no telling how long it will stay up or if they’re looking for funding.
Posts Tagged ‘results’
PhotoPin: Creative Commons Photos For All Your Stock Photo Needs
Meshcentral.com – More bug fixes
After a few weeks of vacation and being sick, I started getting back into gear and working on getting the basics of Meshcentral.com working better and better. Today, I fixed a few bugs that caused the server message bus to stop working (a critical bug) and made a few improvements to the mesh search feature (picture below). The mesh search feature allows a user to search for a filename in all the computers of a mesh at once. Not only that, but the results comeback with working download links for all the results found. Until today, the download links did not work well, the search page would cause problems under some browsers, etc. Just not the quality I generally except, but it’s been greatly improved today. Another worked on getting fixed in the Java VNC viewer not working thru HTTP proxies. When you click on a device’s “VNC” link at the bottom of the page, we load a Java VNC viewer and the viewer connects back to meshcentral.com to start the session. Sadly, if you have an HTTP proxy in the middle, this connection will fail and the VNC session will not work. After getting a normal Java VNC application to go thru the firewall, I realized that because of security reasons, there is no way a Java Applet would be able to do that same… so I added a note saying the Java VNC viewer does not work thru proxies and left it at that… sadly… Not sure if I can ever fix it. I also worked on an Java/Android library to interface with Meshcentral.com. I will try to get it released soon. Ylian meshcentral.com
Database Command Executor
Database Command Executor is a simple utility that can perform a sql commands on a database. You can execute an insert, update or delete commands as well as select statements. Utility returns the number of processed records as its ExitCode and you can also save the results (selected records or the…
Google testing new search results pages? – CNET
New York Times Google testing new search results pages? CNET When it comes to change, sometimes it's hard to believe in. And sometimes it's just hard to believe your eyes. Some people have begun to notice that their Google search pages look different from those they had come to know, love, … Google Appears To Be Testing A Sparse, Ugly New Results Page TechCrunch An Engine's Tall Order: Streamline the Search New York Times Google Experimenting With Redesigned Search Results Page [SCREENSHOT] Mashable Search Newz
FreeUndelete
FreeUndelete is a data recovery tool that enables you torecover files that have been accidentally deleted and/or are removed from the recycle bin. It scans a selected drive for any files that can be recovered, and displays the results along with an estimated status, indicating chances of recovery…. [ Data Recovery Software ]
Google Launches First Ever Online Science Fair
Google introduces a new innovative idea targeted at students, a online science fair. Google has launched the first ever Science Fair that will be conducted online, students aged 13-18 from around the world are invited to design interesting, creative science projects that are relevant to today’s world and to compete for scholarships and other prizes. Partnered with CERN, the LEGO Group, National Geographic and Scientific American on the new fair, students will have to come up with their own hypothesis, experiment to test it, and should present the results and conclusion in either a two-minute video or a 20-slide presentation. The winner will get a $50,000 scholarship and a trip to the Galapagos Islands. In addition to this Google will announce 60 global semifinalists in early May, whose projects will be posted online and open to public voting for a ‘People’s Choice Award’.15 global finalists will be announced who will come to Google headquarters in California for a science fair event, which will be judged by a panel of acclaimed scientists including Nobel Laureates, tech visionaries and household names.
64-bit programs and floating-point calculations
A developer who is porting his Windows-application to the 64-bit platform sent a letter to our support service with a question about using floating-point calculations. By his permission we publish the answer to this question in the blog since this topic might be interesting for other developers as well. The text of the letter I want to ask you one particular question concerning 32 -> 64 bits migration. I studied articles and materials on your site and was very astonished at the discrepancy between 32-bit and 64-bit code I had encountered. The problem is the following one: I get different results when calculating floating-point expressions. Below is a code fragment that corresponds to this issue. float fConst = 1.4318620f; float fValue1 = 40.598053f * (1.f – 1.4318620f / 100.f); float fValue2 = 40.598053f * (1.f – fConst / 100.f); MSVC 32, SSE and SSE2 are disabled /fp:precise: fValue1 = 40.016743, fValue2 = 40.016747 MSVC 64, SSE and SSE2 are disabled /fp:precise: fValue1 = 40.016743, fValue2 = 40.016743 The problem is that the resulting values of fValue2 are different. Because of this discrepancy the code compiled for 32 bits and 64 bits produces different results what is invalid in my case (or perhaps invalid in any case). Does your product detect anything related to this issue? Could you please tip me in what way 32/64 can impact the results of real arithmetic? Our answer The Viva64 product does not detect such variations in a program’s behavior after it’s recompilation for the 64-bit system. Such changes cannot be called errors. Let’s study this situation in detail. Simple explanation Let’s see first what the 32-bit compiler generates: fValue1 = 40.016743, fValue2 = 40.016747. Be reminded that the float type has 7 significant digits. Proceeding from that we see that actually we get a value that is a bit larger than 40.01674 (7 significant digits). It does not matter if it is actually 40.016743 or 40.016747 because this subtle difference is out of the float type’s accuracy limits. When compiling in 64-bit mode, the compiler generates the same correct code whose result is the same “a bit larger than 40.01674″ value. In this case, it is always 40.016743. But it does not matter. Within the limits of float type’s accuracy we get the same result as in the 32-bit program. So, once again the results of calculations on 32-bit and 64-bit systems are equal within the limitations of the float type. Stricter explanation Accuracy of the float type is the value FLT_EPSILON that equals 0.0000001192092896. If we add a value smaller than FLT_EPSILON to 1.0f, we will again get 1.0f. Only addition of a value equal to or larger than FLT_EPSILON to 1.0f will increase the value of the variable: 1.0f + FLT_EPSILON !=1.0f. In our case, we handle not 1 but values 40.016743 and 40.016747. Let’s take the largest of these two and multiple it by FLT_EPSILON. The result number will be the accuracy value for our calculations: Epsilon = 40.016743*FLT_EPSILON = 40.016743*0.0000001192092896 = 0,0000047703675051357728 Let’s see how much different numbers 40.016747 and 40.016743 are: Delta = 40.016747 – 40.016743 = 0.000004 It turns out that the difference is smaller than the deviation value: Delta < Epsilon 0.000004 < 0,00000477 Consequently, 40.016743 == 40.016747 within the limits of the float type. What to do? Although everything is correct, unfortunately, it does not make you feel easier. If you want to make the system more deterministic, you may use the /fp:strict switch. In this case the result will be the following: MSVC x86: /fp:strict: fValue1 = 40.016747, fValue2 = 40.016747 MSVC x86-64: /fp:strict: fValue1 = 40.016743, fValue2 = 40.016743 The result is more stable but we still did not manage to get an identical behavior of 32-bit and 64-bit code. What to do? The only thing you can do is to put up with it and change the methodology of result comparison. I do not know how much the following situation I want to describe corresponds to yours, but I suppose it is rather close. Once I developed a computational modeling package. The task was to develop a system of regression tests. There is a set of projects whose results are looked through by physicists and estimated as correct. Code revisions brought into the project must not cause a change of output data. If pressure is at some moment t in some point is 5 atmospheres, the same pressure value must remain after adding a new button to the dialogue or optimizing the mechanism of initial filling of the area. If something changes, it means that there were revisions in the model and physicists must once again estimate all the changes. Of course it is supposed that such revisions of the model are quite rare. In normal development state of a project there must always be identical output data. However, it is in theory. In practice everything is more complicated. We could not get identical results every time even when working with one compiler with the same optimization switches. Results easily started to diffuse all the same. But since the project was even built with different compilers, the task of getting absolutely identical results was admitted as unsolvable. To be exact, perhaps the task could be solved but it would require a lot of efforts and lead to an inadmissible slow-down of calculations because of the impossibility to optimize the code. The solution appeared in the form of a special result comparison system. What is more, values in different points were compared not merely with the Epsilon accuracy but in a special way. I do not remember now all the specifics of its implementation but the idea was the following. If in some point processes run that make the maximum pressure of 10 atmospheres, the difference of 0.001 atmosphere in some other point is considered an error. But if a process is running in areas with pressure of 1000 atmospheres, the difference of 0.001 is considered an admissible error. Thus, we managed to build a rather secure system of regression testing that, as I believe, has been working successfully to this day. The last thing: why do we get different results in 32-bit and 64-bit code at all? It seems that the reason lies in using different sets of instructions. In 64-bit mode, these are SSE2 instructions which are always used nowadays and which are implemented in all the processors of the AMD64 (Intel 64) family. By the way, because of this, the phrase in your question “MSVC 64, SSE and SSE2 are disabled” is incorrect. SSE2 are used by the 64-bit compiler anyway. References MSDN. Visual C++ Compiler Options. /fp (Specify Floating-Point Behavior). http://www.viva64.com/go.php?url=400 Scott Wasson. 64-bit computing in theory and practice AMD and Intel make the leap to 64 bits. The 64-bit advantage. http://www.viva64.com/go.php?url=398
iOS 4.2 bringing speed improvements to iPhone 3G?
The recent iOS updates have mostly been welcome improvements for iPhone 4 and 3GS users, but it’s been a decidedly different story for folks sticking to their venerable iPhone 3G . Not only have they been left out of some of the fun , but they were dealt a serious performance hit with iOS 4.0 that was only somewhat corrected by IOS 4.1. Could iOS 4.2 finally bring things back up to speed? According to the folks at TiPb , it just might — they’ve now tested the iOS 4.2 gold master on an iPhone 3G and found that performance was noticeably improved across the board. Head on past the break to check out their results for yourself, and keep your fingers crossed that you’ll actually see a similar improvement when the official update finally hits your 3G. Continue reading iOS 4.2 bringing speed improvements to iPhone 3G? iOS 4.2 bringing speed improvements to iPhone 3G? originally appeared on Engadget on Mon, 08 Nov 2010 15:23:00 EDT. Please see our terms for use of feeds . Permalink
Use This Free Split Test Results Tool to Find Your Split Test Winner
My previous article talked about finding keywords with high commercial intention and not just keywords with a high click-through rate (CTR). A combination of a high CTR and a high commercial intention would be the best outcome.
After finding a good CTR and high level of commercial intention for a keyword, you’ll want to write a compelling PPC ad. After writing your ad, try improving it by running a split test on your ad copy. Test only one aspect of the ad at a time. For example, split test your headline and then on the offer or main body of each ad, doing both split tests separate from each other.
Here are some tips on how to write a good PPC ad.
Use your headline to offer a solution or ask a question that will grab the attention of the reader. Always bold your keyword phrase. Ad an appealing promise that offers a solution to a problem that the searcher is looking for based on the keywords they’re using. Finally, use a call-to-action phrase that urges the reader to act as this will increase your CTR.
How can you know that the split test is achieving desired results?
Monitor your PPC campaign every day to see how it’s doing because you want to see results as quickly as possible. However, it’s difficult to know which ad is performing better because both ads will be building up impressions and clicks at different times.
Having a tool that shows you which ad is performing better can be very beneficial. Such a tool can be found for free at Splittester.com. All you do is enter the CTR stats for your ads in the fields provided and hit the “calculate” button. SplitTester.com will show you which ad is more likely to be the winner over the long term course of your campaign. Splittester.com gives you pretty reliable results after each ad has racked up just a few clicks. You should be able to save several days of waiting for a convincing result.
Let’s say your winning ad is 20% or more ahead of the loser, and Splittester.com gives you an 80% or higher probability that it is the overall winner, you can be pretty sure that it will continue to produce better results. Make your winning ad your control ad and run another split test by writing a new ad to test against the control. This process is completed until you have what’s called a super ad.
The great thing about doing this is that you can get precise results and gradually achieve a better and better CTR for your ad campaign.
Now, if you’re keyword phrase is precisely targeted, and has a high commercial intention plus a high click through rate, and if your landing page rocks, you are in a very good position to start making a lot of money with PPC advertising. Of course, you need to think about how to improve the selling power of your landing page and I will iscuss that in my next article on pay per click advertising.
Getting more out of QA with Code Coverage
In my first ISN post I give an introduction to how you can make your QA process much more effective with a novel approach adapted from code coverage analysis. Based on my article in Games Programming Gems 8 , I will also be talking to Arti Gupta about the approach on ISN TV’s Visualize This! series next week. Code coverage is a metric commonly used to assess the quality of unit tests. However, the same concept can be reapplied to provide real-time feedback during conventional QA testing, making the process much more rigorous and providing valuable metadata about your code. I originally developed the approach during my time at Crytek, as a tool to help test a major refactor of our AI system. The change redesigned a fundamental aspect of the system, touching a fair fraction of the code and most of the AI features. It would be made in a branch over a period of quite a few weeks and QA resources would be available, but with games in active development and upcoming milestones, I felt I needed a new measure of confidence if I was ever to be able to merge it with our main branch. There are some great testing methodologies out there that I would heartily recommend, but applying them at this point in time and for this change was not practical (though, if you’d like to ask why I didn’t use approach X that worked for you, I’d love to hear from you!) What I needed was an approach that would make the most of main resource I did have – an experienced QA team – and without turning their workflow on its head. What can “Code Coverage for QA” do for me? Precisely focus your QA team on your code changes Make 100% certain that they succeeded in testing those changes Tell you more about how and where code is used in your games It’s easy for QA to use How does it work? Conventional code coverage uses instrumentation to systematically insert hooks throughout your code, so that you can track whether it has been run. This is usually used to investigate how good a set of unit tests are, by examining how many functions, or branches, or lines are exercised. That kind of information on your QA testing could be helpful, but it turns out that there are many practical advantages to dropping automatic instrumentation and instead using explicit markers in your code. Amongst those is performance, but it also makes the resulting data much smaller, easier to understand and easier to track as your code changes. Here’s a simple example. I use CCMARKER macros to form the explicit, named markers – for their implementation, check out the open-source mcover code. void Entity::Attack() { CCMARKER(Entity_Attack); if (HaveGrenades() && m_timeSinceLastGrenade > 10.0f) { CCMARKER(Entity_Attack_Grenade); IGrenade *pGrenade = NULL; switch(m_grenadeType) { case SMOKE_GRENADE: CCMARKER(Entity_Attack_Smoke); pGrenade = new SmokeGrenade(); break; case CONCUSSION_GRENADE: CCMARKER(Entity_Attack_Concussion); pGrenade = new ConcussionGrenade(); break; } FireGrenade(pGrenade); } else { CCMARKER(Entity_Attack_Normal); FireGuns(); } } You can place the markers anywhere that is useful to you – and just where they are useful to you. What do QA see? Code Coverage applied to Alien Arena Key to the whole approach is a display overlayed on the screen during gameplay, which gives real-time feedback on the code coverage markers they are hitting. It can include an indicator every time a new point is hit and a progress bar to show how many they still have to go. Crucially, when there are a small number left, the names of the markers can be displayed – giving hints or something solid to reference in finding that last 5%. QA find this easy enough to relate to – its essentially a mini-game. The screenshot is from an integration of code coverage with the open-source FPS Alien Arena – a fast, fun and free shooter based on the Quake II source code. What results do I get? In my implementation at Crytek I simply dumped a list of the markers hit to a file. I built up the number of markers as my refactor progressed and after each testing session I did some processing of the results with a script – merging the results from multiple testers and multiple runs – and then checked them into Perforce. I then had a ready reference as to which points had been hit – or not hit – and I was able to split this into results for each level. This meant I could tell that my latest changes had definitely been tested – which is the crucial point – but with that process came a whole load of other useful results. I was able to track with a simple diff which code had been run before and was not being run now, which could be a bug. I was able to see which features were used in which levels, which can be very useful if you haven’t worked with the features yourself. You can also make sure that code really is used before you start refactoring it! Where can I go with this? One of the key developments to this is to collect the results over the network to a central database. Putting this in place makes result collection automatic, feedback to the programmers is real-time, and powerful queries are possible with powerful methods of presentation, such as a web interface. In recent months I have been consulting on AI for Xaviant LLC in Atlanta, who have implemented this network collection mechanism and I’ll include some discussion of their implementation in a future post. Another advantage of this approach occurred to me while finishing a recent project with Microsoft. They made use of a centralised off-site testing team and while communication with the team was good, I could not simply walk over and discuss my features. Records of exactly when a particular feature or codepath had been tested, or real-time feedback that the feature was being tested right now and by who – would have been a great aid to communication. A few more possible expansions to think about: Using the same infrastructure with automatic functional tests Categorising and prioritizing markers Creating custom levels designed to test all the features in one run Actually there’s a long list where that comes from and I’ve seen some really great spinoffs that I’m looking forward to people demonstrating. Matthew Jack works as an AI consultant and freelancer developer at Moon Collider Ltd . For an in-depth treatment and technical details you can read the original article “Code Coverage: Informing the QA Process” in Games Programming Gems 8 or watch a discussion with Alex Champandard in a masterclass video available at AiGameDev.com . You can also check out the C++ source for an example implementation mcover .



Posted in
Tags: