On January 14, 2010 McAfee Labs identified a zero-day vulnerability in Microsoft Internet Explorer that was used as an entry point for Operation Aurora to exploit Google and at least 20 other companies. Microsoft issued a security bulletin and patch immediately. Operation Aurora was a coordinated attack which included a piece of computer code that exploits the Microsoft Internet Explorer vulnerability to gain access to computer systems. This exploit is then extended to download and activate malware within the systems. The attack, which was initiated stealthily when targeted users accessed a malicious web page, ultimately connected those computer systems to a remote server. Now this connection was used to steal company intellectual property and additionally gain access to user accounts. Why did the users visit the malicious web page? Likely because they believed it to be reputable. This attack became particularly famous because of the level of sophistication and the obfuscation methods used. Continue reading “Operation Aurora”
Dynamic Programming
Most of the techies have come across this concept one time or the other. People know that it’s really good and very useful, but not a lot of them know how exactly it works and why it works in the first place! Let’s say you are presented with a big box of precious stones with different sizes and weights. You have a bag with you which can only hold a limited weight. So obviously you can’t take everything. In particular, you’re constrained to take only what your bag can hold. Let’s say it can only hold W pounds. You also know the market value for each of those stones. Given that you can only carry W pounds, what stones should you pick in order to maximize your profit? Continue reading “Dynamic Programming”
Constrained Optimization
Whenever we think of a real life problem, we always want to get the most optimal result. I said optimal and not the best possible because we don’t have unlimited resources. Given unlimited resources, we would always pick the best one and we don’t have to think about it at all. But unfortunately in real life, this is almost never the case. Let’s say you want to buy a car. Ideally you want the best possible car, but you don’t have unlimited money. So you would buy a car with maximum features while minimizing your cost. This is not so hard to do because you have a limited number of variables. Hence you would just do it manually. What would you do when you have to deal with a lot of variables? How would you do it? Continue reading “Constrained Optimization”
Principal Component Analysis
Principal Component Analysis (PCA) is one of most useful tools in the field of pattern recognition. Let’s say you are making a list of people and collecting information about their physical attributes. Some of the more common attributes include height, weight, chest, waist and biceps. If you store 5 attributes per person, it is equivalent to storing a 5-dimensional feature vector. If you generalize it for ‘n’ different attributes, you are constructing an n-dimensional feature vector. Now you may want to analyze this data and cluster people into different categories based on these attributes. PCA comes into picture when have a set of datapoints which are multidimensional feature vectors and the dimensionality is high. If you want to analyze the patterns in our earlier example, it’s quite simple because it’s just a 5-dimensional feature vector. In real-life systems, the dimensionality is really high (often in hundreds or thousands) and it becomes very complex and time-consuming to analyze such data. What should we do now? Continue reading “Principal Component Analysis”
Exploring The Lesser Known Features Of Python – Part II
As it is evident from the title, this is the second part in the Python exploration series. You can find the first part here. I have discussed a few lesser known but very useful features of Python. There were too many features, so I didn’t put everything in a single blog post. I will continue discussing more features in this post. I will keep adding more as and when I discover more things about Python. Continue reading “Exploring The Lesser Known Features Of Python – Part II”
Wavelet Analysis
Wavelets are actually a topic of pure mathematics. But over the last couple of decades, they have shown great promise and are now being adapted for a vast number of applications. They are used in image compression, molecular dynamics, seismology, physics, DNA analysis etc. One of the main advantages of wavelet analysis is the amount of information we can extract from a signal. Wavelet transforms are extensively used to analyze many different kinds of signals. So what exactly are these wavelets? Why is this method of analysis so powerful? Continue reading “Wavelet Analysis”
Exploring The Lesser Known Features Of Python – Part I
I have been fiddling with Python for some time now and I have to tell you, it just keeps getting better and better! Every time I interact with Python, I stumble across something new. There are so many things you can do with it. It is very well documented and most of the material is available out there. There are some of the lesser known features which are very useful, but you don’t see them often. There are quite a few and I have split it into two parts. You can find the second part here. I have listed the first few here: Continue reading “Exploring The Lesser Known Features Of Python – Part I”
Interpretation of Gaussian Distribution
When we deal with large amount of data, we can’t have specific rules for each and every instance. We have to come up with a model which defines the whole data. This model can then be used to analyze unknown inputs. More often than not, the data has some underlying pattern. When we think of a model, we extract specific characteristics from the data and come up with a formulation which best explains the behavior of the data. One of the most frequently occurring pattern is the Gaussian Distribution. It is used almost everywhere in science and technology. But what is it exactly? Why do we need it? Continue reading “Interpretation of Gaussian Distribution”
Essential Python Tools: virtualenv and pip
A wise man once said ‘Necessity is the mother of invention’. But I think the real mother of invention is laziness. If you are lazy enough, you will find an easier way to do a particular thing. In order to solve large problems elegantly, we need to use tools that solve smaller sub-problems very well. To the coder in you, yes, it’s a bit like dynamic programming! If you have fiddled with Python, you would have definitely come across many different libraries and packages. Sometimes, you wish that you had different machines for different libraries because the requirements differ from one thing to another. There should be an easier way to manage different environments and packages right? Continue reading “Essential Python Tools: virtualenv and pip”
Fourier Analysis
Most of the people in the tech field have already heard about Fourier analysis by now. Some of them love it, some of them hate it and the remaining few are just not sure what it is! Fourier analysis is one of the most fundamental tools in the field of engineering and technology. In fact, it is as fundamental as addition or multiplication. It is heavily used in signal processing, physics, speech analysis, image processing, cryptography and many more fields. Whenever people try to read and understand it, they are always hindered by all the mathematical equations. The actual explanation is drowned somewhere. Let’s see if we can fix that here. Continue reading “Fourier Analysis”