Pages

Tuesday, November 5, 2013

Developing an iOS App : Stanford Course and Notes

Here is an excellent resource to start learning iOS development.
Its a Stanford University Course that reaches iOS development.

Here it is on iTunesU:

https://itunes.apple.com/us/course/developing-ios-7-apps-for/id733644550

Also,

a viewController's variables or properties can be accessed in two ways:

self.<propertyName>
or
_<propertyName>

I will compile similar notes on Objective C and post them in a later blog post.

Monday, November 4, 2013

Developing an iOS App : Introduction

I have started learning how to develop iOS applications and I will be documenting my efforts on my blog. This will be updated as time goes with tips that I personally found to be useful.

There are two things that will provide challenges when starting iOS development.

  1. Objective C
  2. Interface Designer
However, XCode makes things very easy in terms of finding the right information regarding a particular class and so on.

Here are some valuable resources that provide a good starting point for the whole process.

Learning about Objective C
This guide talks about Objective C and how to develop in Objective C.


Starting iOS apps
This document talks about developing a simple Todo List app, which details the use of the Interface Designer and other concepts to develop an app.

https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOS/RoadMapiOS.pdf

I will continue to add more notes and thoughts to this series as I progress in my learning.

Monday, October 21, 2013

Great Analysis of the Android Ecosystem

Here is a great analysis of the Android ecosystem as it is maintained by Google. Android is slowly but surely becoming a walled garden, although, the walls are farther away and hence less visible than in IOS.

http://arstechnica.com/gadgets/2013/10/googles-iron-grip-on-android-controlling-open-source-by-any-means-necessary/

Saturday, June 8, 2013

Bioshock Infinite : Impressions Part 2

This is a continuation of my previous post on Bioshock Infinite which can be found here.

The levels are amazing with the world really fleshed out.

The combat is however turning out to be too chaotic with all the Vigors being thrown about by the other enemies. This especially true during larger battles on the hardest difficulty.
"Combat is too chaotic especially on the harder difficulties with enemies using multiple Vigors"
Lockpicks
I am more and more frustrated with the scarcity of lockpicks. Now, I am aware of the existence of an exploit that will allow me to get infinite amount of lockpicks. I don't want to use that as I want to experience the game as it was meant to be.

The lack of lockpicks is frustrating on two levels:

  1. I come across doors and chests which are locked and I know that I don't have enough lockpicks to open the door
  2. If these doors and chests were hidden and I did not know about their existence, I would have blissfully gone on my merry way looking for other loot rather than comb over the entire level looking for lockpicks.
Why doesn't Elizabeth ever throw some lockpicks my way?


Volumetric Visualization of MRI Data


Description

This is basically a simple Volume Rendering application that is meant to demonstrate the Volume Rendering abilities of Vtk as well to showcase the various Volume Rendering methods that are available out there.
Implementation Details

I implemented the project using Vtk and C++ using Visual Studio 2005. One of the reasons why I switched to C++ from using C# (my previous Vtk Project) was the performance and finer control it offered over C# in controlling the amount that was gobbled up by the application.

The following methods were used to render the datasets:

Raycasting
This was the most accurate and slowest (interaction-wise) method of rendering a volume. Essentially, what it does is calculate the color and opacity of a pixel on the screen based on the colors and opacity values of the voxels that lie behind it in the ray.

Of course, raycasting will take longer if the dataset is larger in dimension. The particular method that I found most effective in Raycasting was calculating pixel values using a composite function that computes a pixel's color and opacity as an aggregate of the pixels behind it. Another available method is MIP filtering, where the Maximum Intensity Scalar value is displayed on the screen and everything behind it is obscured. This method is less clear and opacity does not play such a significant role in the eventual image.




IsoSurfaceing
An isosurface is created using contour values that identify various parts of the scanned object, such as bone and flesh in the visualization of the knee dataset. The contour values are identified by pure trial and error. I also used a histogram view of the data to see if that would provide some clues to where the values were contained in the data.




Splatting
Splatting is a method where a huge volume of data is divided up into splats which can then be visualized as Isosurfaces or raycasted volumes. Splats are a way of simplifying large datasets.



Downloads

Download the setup file which will install VolumeViewer.zip (will be updated soon).
You will need to copy the datasets into the installed folder for the application to run.
Note that you will need the .Net runtime and Vtk for this to work. You can download the .Net runtime here.

Use RawtoVtk to convert the Knee.raw and Pig.raw file to vtk format.

eg: RawtoVtk Pig.raw Pig.vtk 512 512 134

You can get the raw format files by converting the pvm files from the following location to raw using the following tool.
Knee.Pvm
Pig.pvm

EMF Viewer

EMF Viewer

Project to visualize Electromagnetic Flux Density around a Microwave Oven

Introduction

The project involved us collecting Electromagnetic Flux Density Data around a Microwave in both ON and OFF states. This data was then used to visualize the fields around a Microwave.

The idea was to get an idea of the strength of field radiation around a microwave.

I used VTK to visualize the data that was collected for the visualization.

Screenshots





Solar System Simulation

I am moving some of my projects from my google sites to this blog. This is one of those projects.

Solar System Simulation

View the solar system in all its glory! This project was a simulation of the solar system with an accelerated time scale. However, the time scales are in proportion to each other. You will be stunned at the speed with which Jupiter and a few of the outer planets rotate about their axis.





The textures applied to the planets and the Earth's moon are authentic and are based on real images of the planets.

Also, 1 day of real time is equivalent to 1 second of simulation time.

Platform

Operating Systems: RHEL 4 and Windows XP Professional
Language: C++
Graphics Library: Opengl, GLUT
Compiler: GCC 3.2, Visual C++ 8.0 (Visual Studio 2005)
System Requirements
A Windows or Linux operating system running on Graphics hardware that can support simple OpenGL commands.
Download
The Windows version is here (will be updated soon).

Instructions to run the program:

Initial Display consists of all the points and the map.
'a' or 'A' ------------------------- zoom into the map
'z' or 'Z' ------------------------ zoom out of the map
Left Arrow --------------------------- move map left
Right Arrow ------------------------ move map Right
Up Arrow ---------------------------- move map Up
Down Arrow ----------------------- move map Down
't' or 'T' ---------------------- Toggle Textures on/off
'n' or 'N' ------------------ Toggle Planet Names on/off
'm' or 'm' ---------------------- Toggle Moons on/off
'ESC' ----------------------------- Exit the program

Things to Remember:

Saturn has Rings around it.
The names of the planets are visible above them.
All the moons and planets have been implemented.
The map rotates about the center of the display and not the center of the map itself.

Tuesday, June 4, 2013

Bioshock Infinite : First Impressions

I have started playing Bioshock Infinite and I will posting my thoughts on the game as I progress through it.

My first impression of the game was how similar it was to the original Bioshock game. The arrival of the protagonist to a new world via a lighthouse immediately reminded me of my arrival at Rapture in Bioshock.

The reveal of Columbia was impressive. The environment looks great and the concept of the city seems to be fully realized. I would have liked to have more people in the city though with the ability to go into more homes in an area.

The reveal of monument island was awesome!!

Another thing that I noticed was the lack of a map. This become important to me when I found a key and did not exactly remember where the locked chest was and how to even get there.

Bugs:

My first bug that I found in the game was the stuttering that I saw whenever I quickly turned around or moved the camera. This was rectified using the fix detailed here : Fix for stuttering


Backup Strategies: Using an external drive

There are many ways to backup your data nowadays.
Some of the popular ones are:
  • Use an external hard disk and make copies on to it periodically
  • Use a local network storage device or what is commonly known as a NAS box
  • Use an online storage service such as Dropbox, Skydrive or Crashplan
Today I will talk about the external hard disk method and its advantages and disadvantages

Advantages

Cheap
The cost of a typical external hard drive is very cheap. A good Seagate 1 TB hard drive is available for about 90 USD. 1 TB should provide enough space to store your music, photos, documents and anything else that you can throw in there.

Portable
The aforementioned Seagate drive is very compact and can easily be carried around in a small bag without any problems. This allows your data to be easily available to you. However, the cost of this portability is exposure to environmental factors, not to mention the possibility of physical damage to the device in case of an accident.


Space
The amount of space you get here is huge. At a cost of 90 USD for 1 TB, you are getting around 11 GB per dollar for the rest of the life of the device. This is a very efficient way to store your data at the least cost.

Disadvantages

Colocation Risk
One of the things we use an external hard disk is to protect our data from any one of the many random things that can happen and cause you to lose your data. An external hard disk is susceptible to some if not all of these risks.
Eg: A natural disaster such as fire will not only destroy your primary hard drive but might also destroy your secondary hard drive if you didn't carry it out with you.
A power surge might destroy both your primary and secondary drives if they happen to be plugged in.


In fact, the only situation in which the external hard drive protects you from data loss is in the case of hard drive failure of your primary disk or laptop/desktop.


Physical Access Constraint

The data on your secondary hard drive is only available to you when the hard drive is with you. If you lose the hard drive or leave it at home, the data is obviously not available.
You have to remember to carry around the disk with you always.

Disk Failure
Disk Failure is a very real and possible scenario in many cases of data loss. The secondary hard drive is not protected from this outcome as it is nothing but another hard drive in its own case. The circumstances that caused the hard drive failure of your primary drive might cause the secondary to fail. Noted, the disk might have a chance of failing less due to the fact that its usage will not be as great as your primary hard drive. The risk however exists.


No Redundancy

The data on the hard drive is normally stored on a Filesystem (usually a Windows Filesystem). There can corrupted entries in the data caused due to bad sectors in the hard drive or due to corruption of data on the disk. This is usually avoided by the use of redundancy mechanisms such as RAID, where the data is spread over multiple disks, so that a corruption in one disk is corrected by data from another disk.
Note, that not all RAID configurations provide this kind of redundancy.

When should you use this?
The cost effectiveness of the external hard disk provides a good backup mechanism when cost is a concern. However, using the external hard disk as a backup mechanism where the hard drive is stored in a different location is a good way to mitigate some of the risks mentioned previously. A hard drive that is in a different location will not be easily accessible to you, however, it will not be affected by any events that cause your primary hard drive to fail.

Using an external hard drive combined with another backup mechanism would be my recommended approach. I will go into more details about that in a future article.

Windows 8: Cleartype tuner

How to launch the Cleartype tuner in Windows 8
One of the many ways is to just search for it.

Win + F

brings up the search window.
Type Cleartype in the search box.
Select the Settings option as show below:


This should provide a link to the Cleartype tuner application we all know.

Windows 8 Hang Fix

Windows 8: Hang fix after Windows Phone SDK install

If you see that Windows 8 is hanging after installing Windows Phone 8 SDK, disable the USB 3.0 controller in the BIOS screen.

This should do the trick.