- Hashing – Consistent hashing, Extendible hashing
- Sorting – Three-way quicksort, Interval tree
- Searching – Bloom filter
- Cache Oblivious Algorithms – SILT – A memory efficient high performance key-value store, Cache-Oblivious Streaming B-Trees
- B-Tree, Shadowing and Clones – O Rodeh
- Card Shuffling – Fisher–Yates_shuffle
PS4 has abysmal parental control feature. It has global settings and several other issues. This means that only real way to enforce parental control is to lock the game disk away from your children. However, with the next generation consoles focusing more on digital games, it becomes a real problem if you buy games digitally through PSN and then had no way to control them.
After some research, I realised that you can have an alternate way of control if you buy digital games using an additional PSN account. This second PSN account should only be used to buy those games whom you want to control access to. Since PS4 only allows games to be accessible to other users if you set the PS4 as primary PS4 for your account, you need to avoid doing this for your second PSN account. In summary:
- Have two separate account for buying digital games – one for regular games and one for other games (Adult only) that you want to control.
- Set your PS4 as primary PS4 only for the first account. Don’t do it for second account.
- Games for your first account will be accessible to all users on your PS4. Games from your second account will only be accessed when you login to that account. Set proper password for this second account.
adb is the tool that can transfer files (it does many other things) from android phones to your computer. Here is the summary of how it can work from Linux. I tested on Kubuntu 13.10 and my Nexus 4 running android 4.2.
- Make sure latest version of adb is installed: sudo apt-get install android-tools-adb
- See this link about how to provide USB permission for specific device. In short, create a file /etc/udev/rules.d/51-android.rules and add a line specific to your phone and your username. (By the way, make sure that if you have a folder $HOME/.android , then it is owned by this user.)
- Make sure “USB debugging” is enabled on your device.
- Connect your phone and check the connectivity using “adb devices” command.
- Copy files using “adb push” or “adb pull” command.
Some collected links for Advanced courses:
- Advanced Comp Sc courses
- 6.851: Advanced Data Structures (Spring 12)
- Jeff Erickon’s Algorithm course materials
Other random links:
- Parallel Programming – By Paul McKenney
- What every programmer should know about memory, [ pdf ]
- Modern Microprocessors – A 90 min guide
- How debuggers works
- 10 technical papers every programmer should read twice
- Deep C
- C FAQ
- Java Concurrency – Atomicity, Visibility and Ordering
- Needle in a haystack
- The status of P vs NP problem
- Functional programming for beginners
- On being a senior engineer
- Linux performance analysis and tools : Brenden Gregg
- C++ frequently questioned answers
- Interviews related – geeksforgeeks , careercup , Top 10 algorithms for coding interview, How to rock an algorithm interview,
After going through a few references on the web (here, here and here), I was finally able to connect my Nexus 4 to TV and play game using a PS3 DualShock 3 controller. To summarize, here is what you need to do :
- You need a Slimport to HDMI adapter. The currently available one is SP1002, from Analogix. I bought it from iBhejo.
- Need to have a DualShock3 controller, it comes with PS3. (or you can buy it). There are reports of other controller working also, but I didn’t check them personally.
- Need to root your phone. This has two steps – first, unlock the bootloader, second, install the actual rooting app by temporarily booting into a custom bootloader. Note that you will still retain your stock bootloader and will continue to get updates from Google (as per the details on the thread).
- Need to buy the sixaxis controller software from google play. This works only on rooted phones.
- Nexus 4 Gaming thread – http://forum.xda-developers.com/showthread.php?t=2056090
- Sixaxis controller touch profiles – http://forum.xda-developers.com/showthread.php?t=1426760
- Setting up sixaxis from Linux – http://www.blog.kaiserapps.com/2012/10/setting-up-sixaxis-controller-android.html
Recently, one of my friend and colleague, Imran, was having trouble installing COMODO anti-virus on OpenSUSE 12.2. The filesystem kernel driver compilation was failing for OpenSUSE 12.2 kernel. He asked me to take a look. Although I am not a big fan of running anti-virus on Linux, I decided to give it a try. It turned out to be a simple interface change. I ended up making a small patch. (This is on top of CAV_LINUX-1.1.268025-1.x86_64.rpm version).
For anyone who wants to try, here is how it can be used:
- comodo driver is installed at /opt/COMODO/driver.tar. Take a backup of the original file and extract the file in a temp location:
cp /opt/COMODO/driver.tar $HOME/comodo_driver
tar xvf driver.tar
- Here is how I apply the patch:
[niraj@nk-lap avflt]$ pwd
[niraj@nk-lap avflt]$ patch -p3 < /home/niraj/avflt_patch_f18.txt
patching file avflt_check.c
Hunk #1 succeeded at 273 (offset 4 lines).
- Tar it back and put it in original location:
[niraj@nk-lap comodo_driver]$ pwd
[niraj@nk-lap comodo_driver]$ mv driver.tar driver_orig.tar
[niraj@nk-lap comodo_driver]$ tar cvf driver.tar driver
- on root shell:
[root@nk-lap ~]# mv /opt/COMODO/driver.tar /opt/COMODO/driver_orig.tar
[root@nk-lap ~]# cp /home/niraj/comodo_driver/driver.tar /opt/COMODO/driver.tar
- Run the comodo configuration tool …
[root@nk-lap ~]# /opt/COMODO/post_setup.sh
I had been thinking about buying a new mobile phone for some time and had looked at many options. I finally decided to go for a Google Nexus 4, mostly because it has much better specs despite having a modest price. The caveat – it’s not available in India (officially).
Generally, the easier way of getting something from USA, is to have somebody bring it with them when coming to India. However, at this time, I couldn’t find any suitable person who could do this for me. So, I started looking at other options and came across several articles/blog of people who have done it – like http://trak.in/mobiles/buying-google-nexus-4-india-price-rs-22500/ and http://bijopaul.blogspot.in/2013/02/nexus-4-in-india.html. There is a lot of discussion going on Nexus 4 Indian thread. Most of these method consists of 3-4 steps like :
- Getting a forwarding US address from a third party (like ppobox)
- Connect to google play using a VPN so that they will think you are in US
- Order and provide the US address from step 1
- Third party will send it to your India address for some charges (including custom etc)
First Attempt : My first attempt was through ppobox. However, Google canceled my order after two days saying – “Order not able to be delivered to a PPO. Please update address in Google Wallet and place a new order. Thank you.”
Second Attempt : After doing some more research, I ordered again through iShopInternational. I selected ishop because their’s was the least complex process. Everything has to be paid in advance and they will handle custom/courier/whatever. Their quote was for ₹ 21,463 (all inclusive) for 8 GB model. I ordered on 13th March and got the phone delivered on 19th March. Pretty fast !!!
I will write more about my experience with Nexus 4 as I start using it …
I have been asked this question many times – “What are the best books/resources to learn about unix filesystems?”. Unfortunately, there is no clear answer. There is no good/authoritative one or two books that can teach you the basics of filesystem design and development. (Yes, I know there are couple of books, but none of them really fits the bill !!!). So, what should a new person starting in filesystem development should do?
Assuming the person has basic knowledge of comp sci (OS theory, algorithms etc), I would recommend to go through the filesystem related chapters on these 3 books:
- Operating systems: design and Implementation – Andrew S Tanenbaum
- Design and Implementation of FreeBSD Operating system -By M K McKusick
- Unix Internals – The new frontiers – Uresh Vahalia
Step 2: Once you got the basics covered, you can read these books to broaden your knowledge:
- NFS Illustrated – Brent Callaghan
- Windows NT File Systems Internals – Rajeev Nagar
- Practical file system design with Be File System
Step 3: Here, there is no limit. You can try to understand specific of individual filesystems, learn about new trends and research in the filesystems, various complex design issues of filesystems and so on . The list given below is only a starting point.
- KHB: A Filesystems reading list
- The Google File System
- Filesystems which have been ported to multiple kernels – MVFS (AIX, Solaris, Linux, Windows), IBM GPFS (AIX, Linux), ZFS (Solaris, FreeBSD)
- Copy-on-write filesystems – WAFL, ZFS and BTRFS
- File system consistency issues – Soft update vs Journaling then Log structured file system and finally NVRAM
- Filesystems and SSD : bcache, Hybrid Aggregates, more to come here …
- Compare various “Distributed” filesystems – GPFS , GFS2 (page 253), OCFS2, GlusterFS and Ceph etc…etc..
- Networked filesystem protocols : Read about NFS v4.1 and CIFS
- Log structured file system
- Soft updates, hard problems
- Filesystem in USErspace
- Windows vs Unix file system semantics
- BTRFS : Atime and btrfs,
- Building the next generation file system for Windows – ReFS
- ZFS – Jeff Boncwick’s blog, Adam Leventhal’s blog, ZFS – Last word in the filesystem ,
- NFS – Mike Eisler’s blog,
- More to come …