background preloader

Development

Facebook Twitter

Speed Hashing. Hashes are a bit like fingerprints for data. A given hash uniquely represents a file, or any arbitrary collection of data. At least in theory. This is a 128-bit MD5 hash you're looking at above, so it can represent at most 2128 unique items, or 340 trillion trillion trillion. In reality the usable space is substantially less; you can start seeing significant collisions once you've filled half the square root of the space, but the square root of an impossibly large number is still impossibly large. Back in 2005, I wondered about the difference between a checksum and a hash. Secure hashes are designed to be tamper-proof A properly designed secure hash function changes its output radically with tiny single bit changes to the input data, even if those changes are malicious and intended to cheat the hash.

If you could mimic another person's fingerprint or DNA at will, you could do some seriously evil stuff. Secure hashes are designed to be slow But hashes aren't designed for speed. RzRcw.jpg (800×600)

Text extraction

Ipad development. Software Engineering. Trouble In Clever Domain Land: Bit.ly And Others Risk Losing Theirs Swift.ly. Bit.ly, HootSuite (with its Ow.ly service), Ad.ly and perhaps even Smel.ly could well be at risk of having their domain names sudden.ly taken away by the Libyan government. Ben Metcalfe blogs that his domain name vb.ly was recently seized by NIC.ly (the domain registry and controlling body for the Libyan domain space) because the content of his website, at least in their opinion, was in violation of Libyan Islamic/Sharia Law. The story gets worse. If you’re interested, you’d be well advised to read Metcalfe’s and Violet Blue’s blog posts in full.

Here’s the gist (from Metcalfe’s end conclusion): It’s of course the third and fifth points that could spell trouble for URL shorteners and other services with short brand and domain names ending in .ly (like the ones cited in the beginning of the article). (Via Hacker News) Some lesser-known truths about programming | Dot Mac. My experience as a programmer has taught me a few things about writing software. Here are some things that people might find surprising about writing code: Averaging over the lifetime of the project, a programmer spends about 10-20% of his time writing code, and most programmers write about 10-12 lines of code per day that goes into the final product, regardless of their skill level.

Good programmers spend much of the other 90% thinking, researching, and experimenting to find the best design. Bad programmers spend much of that 90% debugging code by randomly making changes and seeing if they work.A good programmer is ten times more productive than an average programmer.

SEO

Scalability. Java. PHP. Flex. HTML. HTML5. Social Services APIs. Flash & iPhone. iPhone & iPad. Flash & HTML5. NOOP.NL: Top 200 Blogs for Developers (Q2 2009) CWE - 2010 CWE/SANS Top 25 Most Dangerous Programming Errors. Summary Discussion Salt might not be good for your diet, but it can be good for your password security. Instead of storing passwords in plain text, a common practice is to apply a one-way hash, which effectively randomizes the output and can make it more difficult if (or when?) Attackers gain access to your password database. Prevention and Mitigations Related CWEs Related Attack Patterns CAPEC-IDs: [view all]16, 20, 49, 55, 97 Monster Mitigations These mitigations will be effective in eliminating or reducing the severity of the Top 25. A Monster Mitigation Matrix is also available to show how these mitigations apply to weaknesses in the Top 25.

See the Monster Mitigation Matrix that maps these mitigations to Top 25 weaknesses. Appendix A: Selection Criteria and Supporting Fields Entries on the 2011 Top 25 were selected using three primary criteria: weakness prevalence, importance, and likelihood of exploit. Prevalence Acceptable ratings were: Importance Ratings for Importance were: Additional Fields. YouTube - How To Design A Good API and Why it Matters. How To Create An API? (10 Tutorials) Behind almost every successful web application, there is an easy-to-use & feature-rich API as they simply help the main application to spread into others & reached by more users. Also, an API-enabled application can be easily developed further using the API itself. In order to create an API for your web application, here are 10 tutorials to get you started.

But before that, you may want to checkout the video: How To Design A Good API and Why it Matters by Google. Create a REST API with PHP A very detailed yet easy-to-implement tutorial on creating a REST API with PHP. And, there is a follow-up article: "Making RESTful Requests in PHP" by the same author which can guide you as well. How to Add an API to your Web Service (PHP) A detailed tutorial which describes the concepts like REST, SOAP & creates an API step-by-step with PHP. Implement a Rest API with the Zend Framework This example utilizes controllers in an MVC style application. Creating a Simple REST API With VB, PHP and MySQL Rails. Google Closure: How not to write JavaScript. At the Edge of the Web conference in Perth last week I got to catch up with Dmitry Baranovskiy, the creator of the Raphaël and gRaphaël JavaScript libraries. Perhaps the most important thing these libraries do is make sophisticated vector graphics possible in Internet Explorer, where JavaScript performance is relatively poor.

Dmitry, therefore, has little patience for poorly-written JavaScript like the code he found in Google’s just-released Closure Library. Having delivered a talk on how to write your own JavaScript library (detailed notes) at the conference, Dmitry shared his thoughts on the new library over breakfast the next morning. “Just what the world needs—another sucky JavaScript library,” he said. When I asked him what made it ‘sucky’, he elaborated. For the rest of the day, to anyone who would listen, Dmitry cited example after example of the terrible code he had found when he went digging through Closure.

“I’ll make you a deal,” I told him. The Slow Loop return ! Return ! Summary of all the MIT Introduction to Algorithms lectures - goo. As you all may know, I watched and posted my lecture notes of the whole MIT Introduction to Algorithms course. In this post I want to summarize all the topics that were covered in the lectures and point out some of the most interesting things in them. Actually, before I wrote this article, I had started writing an article called "The coolest things that I learned from MIT's Introduction to Algorithms" but quickly did I realize that what I was doing was listing the topics in each article and not really pointing out the coolest things.

Therefore I decided to write a summary article first (I had promised to do so), and only then write an article on really the most exciting topics. Talking about the summary, I watched a total of 23 lectures and it resulted in 14 blog posts. I'll now go through each of the lectures. Lecture 1: Analysis of Algorithms If you're a student, or even if you're not, you must never miss the first lecture of any course, ever! Asymptotic notation. Lecture 4: Sorting. Google's MapReduce patent: what does it mean for Hadoop? The USPTO awarded search giant Google a software method patent that covers the principle of distributed MapReduce, a strategy for parallel processing that is used by the search giant.

If Google chooses to aggressively enforce the patent, it could have significant implications for some open source software projects that use the technique, including the Apache Foundation's popular Hadoop software framework. "Map" and "reduce" are functional programming primitives that have been used in software development for decades. A "map" operation allows you to apply a function to every item in a sequence, returning a sequence of equal size with the processed values. A "reduce" operation, also called "fold," accumulates the contents of a sequence into a single return value by performing a function that combines each item in the sequence with the return value of the previous iteration. Google's MapReduce framework is roughly based on those concepts. Listing image by Han Soete.

Extreme Agility at Facebook | blog@CACM | Communications of the. By E. Michael Maximilien November 11, 2009 Comments (4) The Facebook social utility is phenomenally successful. As of summer 2009, the site attracted around 300 million visitors per month. It is well noted that if Facebook was a nation it would be ranked in the top five most populous states; and the growth seems to be accelerating! In a nutshell Facebook has simply changed the way everyday individuals (worldwide) conduct their social lives. Robert Johnson (pictured on photo), director of engineering at Facebook was the last keynote at OOPSLA 2009.

Facebook’s architecture is based on typical hierarchical PHP Web application model with a layer of data caching and extracted services components. To support their extreme scale needs, the various service components use an homegrown, now Apache open source, RPC mechanism called Thrift. Perhaps the most interesting and revealing aspect of Robert’s talk was the discussion of Facebook’s somewhat unique development process. Ronald Woan. Is JavaScript Faster Than C? There's been a lot great work happening in the VM performance space over the last few years. The problems of performance are beginning to be well understood as even dynamic languages begin to challenge the incumbents. This article reviews a project which aims to bring more empirical testing to the language/runtime performance debate.

Rather than argue about the theorectical, we let the code speak for itself. You may be suprised by what it says. Stop! The author of this article is well aware of its provocative nature. My intention is to challenge readers to question their assumptions regarding language/runtime performance. The Problem Solving 137846 games of the 15-Hole Peg Soltaire by calculating every possible move using an Object Oriented style. The Code git clone Pre-requisites This was all developed and tested under OS X however there shouldn't be any platform dependencies. Run the tests! Cd src/main make test Results Analysis.