#technologist #softwaredeveloper

Hey there! I'm Shanif - a young professional with a background in technology and a passion for investing and trading. I've been developing software since 1997 and have been trading options profitably since 2008.

I have a BS in Computer Science and Systems & Information Engineering, and recently earned my MBA, focusing on Quantitative Finance and Entrepreneurship. These days, I focus on generating high returns with options trading and building up a successful mobile software business.

Though I love connecting with people in real life, I have a strong web presence. Feel free to get in touch.

Subscribe (enter your email):

People, Places, Things - My Best Shots
my pov
New Solution For WordPress “White Screen of Death”
January 13, 2011 Shanif Tech

I’m in the process of rebuilding Intigril’s website, and as I do so, I have to tightly integrate the Rails and WordPress pieces of it. One of the issues I was recently having was the WordPress “White Screen of Death.” This is a problem that most WordPress managers have probably seen at one point or another.

You try to go to your WordPress homepage and the only thing you see is a blank white screen. There’s nothing in the logs. There’s nothing in the source of the page. Just blank, white, death (thus the name). Doing a quick Google search shows that thousands of others have experienced this problem. Like any other technical issue, there are a variety of causes and solutions (bad plugins, extra spaces at the end of files, messed up wp-config.php files) – all of which I tried to solve my current issue, and all of which subsequently failed.

After going through a whole day’s worth of efforts, I read through a couple of forum posts on my web hosts’s support site and realized that they may have to make some entries into my Apache vhost file (since I am running WordPress as a subdirectory of a Rails app that is running on Passenger).

When I contacted them, they gave me a one line, extremely simple answer. As far as IT things go, these are generally the best solutions, and in my case, it fixed my issue. All I had to do was put PassengerEnabled off in the .htaccess file of my WordPress root directory.

As soon as I did that, both the homepage of my WordPress installation as well as my admin login page came up without a hitch. Hopefully this will help those of you out there that are experiencing the WSOD and are seeing no success with the other, more common solutions out there.

View comments →
No comments yet. Be the first to enter the discussion!
Leave a Comment
Getting Tidy To Work On 64-Bit Linux Systems
June 18, 2010 Shanif Tech
Image from Riebart (Flickr)

Image from Riebart (Flickr)

For one of the tools I’m making for Intigril’s new site, I need to do some scraping and parsing.  There’s a great Rails plug-in for this called scrAPI.  This plug-in uses a separate plug-in called Tidy.  Tidy is used to clean-up bad HTML so that it’s easier to parse.  A while ago, I wrote an application that utilized both of these plug-ins to do some extensive scraping and parsing.  Everything was working fine until my shared host decided to upgrade their system (isn’t it funny how upgrades usually tend to break everything).

Well, they ended up going to a 64-bit server, which caused a whole lot of issues for me.  It turns out that in order to use Tidy, you have to have the compiled binary for it loaded onto your system.  scrAPI comes with that binary when you install it, but that binary is compiled for 32-bit systems.  When you try to use it on 64-bit systems, you’ll get an error that says the file can’t be loaded.  It’ll read something like this:

Scraper::Reader::HTMLParseError: Scraper::Reader::HTMLParseError: Unable to load /var/lib/gems/1.8/gems/scrapi-1.2.0/lib/scraper/../tidy/libtidy.dylib

It took me a while to figure out what this really meant, but ultimately, it means you’ll need to get a different version of the file “libtidy.so” – one that’s compiled for 64-bit architectures.  This seemed easy enough – after all, all I had to do was find a file and toss it onto the server.

It’s never really that simple, though, is it?

It turned out that my host already had a copy of this file on their server (in fact, they had several copies of this file, which I found by using the command “find / -name ‘libtidy.so’”.  Once I found the right file, I thought that all I’d have to do next would be to tell Tidy to use that file by setting the path in my production.rb config file, as such:

Tidy.path = "/path/to/libtidy.so"

When I did that, though, I got the following error the next time I tried to run my code:

/path/to/gems/tidy-1.1.2/lib/tidy/tidybuf.rb:40: [BUG] Segmentation fault

Things went from bad to worse.  It turns out that this was a known bug, and there was a patch for it.  You can see the details on this page.  I read all of the posts on that page and made the following changes, as suggested:

  1. Added the line "extern void tidyBufInit(void*)" to the ‘load’ method in the file tidy-1.1.2/lib/tidy/tidylib.rb
  2. Added the following method to the same file (Tidylib):

    #tidyBufInit, using default allocator
    def buf_init(buf)

  3. Added the following line to the initialize method in the tidybuf.rb file:


  4. Added the following field to the TidyBuffer struct:

    "TidyAllocator* allocator"

I saved those changes into the version of Tidy that I had frozen to my Rails app.  Once I made those changes and re-deployed my code, everything was working perfectly.

View comments →
Farooq on May 18, 2011

I trying doing this running on Ubuntu 11 (64 bit), but still getting the same error. I am not sure if I got this line correct - embarrased smile - is this supposed to be in double quotes: "TidyAllocator* allocator" on placed in the struct. I have tried copying the litidy.so etc , that did not work either. Any ideas / suggestions ?

Shanif on May 18, 2011

Oops, sorry, that line should not be in quotes. What it's doing is allocating a pointer to a TidyAllocator object, so it is a line of code. Try that and see if you have any luck.

Leave a Comment
Getting XAMPP, Passenger, And Rails To Play Nicely On A Mac
June 3, 2010 Shanif Tech
Image from Flickr

Image from Flickr

Even though I’ll be switching into the world of sales and trading (and hopefully entrepreneurship) fairly soon, I’m always going to be a techie at heart.  Ultimately, I think that will help my career.  I’ll always be interested in developing applications to solve problems.

Most recently, I needed to install and configure Phusion Passenger and Apache on my Mac so that I could get to work on Intigril’s website.  I wasn’t too worried about this, since everywhere I look, I read articles about how easy it is to install Phusion Passenger.  Oh ye of too much faith.

I just spent the past day struggling with my system.  Fortunately, I’ve been able to get everything up and running, but not without a lot of hassle.

The first thing I tried was installing MAMP on my Mac.  That went off without a hitch.  Then I tried to install Phusion Passenger.  The installation went okay, but when I tried to start the server, it wouldn’t do anything.  It turns out that Macs come pre-installed with Apache, and that when you install Passenger, it will get compiled against that version.

In order to solve this, the Passenger documentation site says that you have to export a certain environment variable.  The website also clearly states that you need to open a “root shell” before running any commands, because using the “sudo” command will eliminate any environment variables you previously set.  I didn’t read that part, so when I tried to install Passenger, it would never get installed to MAMP’s Apache, so when I made the necessary changes to my httpd.conf file, Apache would never start.

So I tried to compile Passenger against my native Apache installation instead.  However, the problem with that was that I would continually get 403 Forbidden errors.  I obviously tried “chmod”ding the heck out of all of my directories and files, but to no avail.

So the next thing I tried was installing XAMPP for the Mac and then compiling Passenger to that installation of Apache.  I made the same mistake as before, so it obviously didn’t work.  That’s when I took a closer look at the documentation and saw that I needed to switch into a root shell by using “sudo -s”.  Once I did this and exported the correct environment variable, I was able to install Passenger into my XAMPP installation.

Following that, I updated my hosts file so that “intigril.local” would point to my local installation, fired up my web browser, and instead of my shiny new site, I got “Passenger Error #2.”  It said something about not being able to “stat” the “config.ru” file in my Rails root directory.

I had no idea what this meant.  I don’t even know what config.ru is used for.  It turns out this was another permissions issue.  The resolution was to update Apache’s configuration file with the following:

  1. Make sure the “User” that Apache runs as is not listed as “nobody.”  I tried changing it to “www” but it still didn’t work, so instead I just used my own user account (hey, it’s just a dev box).
  2. Update the Virtual Host so that Rails runs with the correct username.
  3. Update the Virtual Host so that Rails has the correct DocumentRoot.
  4. Update the httpd.conf file so that it includes the module for virtual hosts.

This post helped a lot in getting through a lot of the configuration issues.

After I did all that, I finally got it working.  The next step will be to get WordPress up and running as a subdirectory of my Rails site.

Wish me luck.

View comments →
Richard on March 2, 2011

Thankyou for posting this! Just saved me a few hours and clumps of hair!

Shanif on March 2, 2011

Glad to help, Richard!

Leave a Comment
June 2012 - Present
Lead Engineer

I manage, implement, and utilize big data, business intelligence, automated analytics, and large scale technology at TapCommerce to help companies retain and acquire their best mobile customers, increasing their ROI on investment in mobile technologies.

TapCommerce is the leader in mobile retargeting. We're trusted by the most successful mobile brands to deliver customers, revenue, and return on investment across mobile platforms. TapCommerce is a venture-backed mobile technology company headquartered in New York City's Union Square. Learn more at tapcommerce.com

• Design, architect, implement, test, and monitor the company’s core real-time demand-side platform, handling 40,000 requests per second. Implemented concurrent, multi-threaded Java code, enterprise grade application servers, and big data systems on the AWS cloud infrastructure

• Designed and implemented the analytical and technical process that enabled the company to advertise to mobile web users, enabling the company to increase its product offering and client base by 2x

• Optimize campaign performance through the use of statistical methods and machine learning algorithms

• Set and manage the company’s roadmap for expansion into features centered on data analytics

• Key driver of the company’s technical interview process, designing coding challenges, questions, and cooperative work sessions designed to determine a candidate’s technical aptitude and cultural fit

• Manage financial costs and create projections for the company’s technical infrastructure

• Drove thousands of dollars of weekly revenue by developing e-commerce capabilities for the company’s flagship app. Used Java and Objective-C to create a mobile app for displaying and selling products, integrated with a payment gateway, and managed software and server infrastructure used by hundreds of thousands of users every month

01/2008 - Present
Options Trader

Founded an invest­ment club focused on gen­er­at­ing con­sis­tent, peri­odic income by using the aid of custom-developed ana­lytic method­olo­gies and com­puter pro­grams to trade options

• Generated an average annualized return of 40%

• Coor­di­nated the research and analy­sis efforts for myself and two partners

• Devel­oped and auto­mated sev­eral quan­ti­ta­tive analy­sis algo­rithms that assist in the invest­ment process by pro­vid­ing rank­ings of pub­licly traded com­pa­nies based on finan­cial fun­da­men­tals, list­ings of stocks with the high­est options pre­mi­ums, and pre­dic­tions of stock move­ment based on trend­ing and momen­tum cri­te­ria. Cre­ated the algo­rithms using the fun­da­men­tal prin­ci­ples of weighted trade stud­ies and later auto­mated them using Ruby on Rails

• Cre­ated a web­site that enables the pub­li­ca­tion of invest­ment arti­cles and pro­vides access to the afore­men­tioned auto­mated algo­rithms, a port­fo­lio man­age­ment tool, and edu­ca­tional resources

• Per­formed mar­ket research on pub­licly traded com­pa­nies, focus­ing on indus­try stand­ing, his­tor­i­cal per­for­mance, com­pet­i­tive advan­tage, and future prospects

• Man­aged legal, finan­cial, account­ing, logis­tics, long-term strat­egy, and invest­ment objectives

08/2010 - 07/2012
Software developer and member of founding team

Member of the management team on an early stage startup that developed technology to provide data analytics and game management software for golfers.

• Created a website allowing golfers to review a comprehensive set of analytics about their game

• Developed financial projections and investor presentations, presented the new business and software at conferences, pitched to potential investors, and demoed the product to customers

• Developed strategy and marketing plans for growing the business

• Recruited new talent to assist with software development, marketing, and operations

08/2006 - 03/2010
Booz Allen Hamilton

Provided information and communications management solutions to public and private organizations as an IT consultant at a large, multi-national consulting organization.

• Man­aged time­lines, resources, and a staff of up to 10 soft­ware devel­op­ers and testers in the tech­ni­cal imple­men­ta­tion of a project man­age­ment appli­ca­tion that allowed over 4,500 users on 500 projects to eas­ily col­lab­o­rate on key deliv­er­ables, orga­nize project sched­ules, review bud­gets, and cre­ate finan­cial pro­jec­tions. Coordinated the efforts of staff from mul­ti­ple depart­ments across the firm to imple­ment a new devel­op­ment process that reduced the num­ber of hours needed to cre­ate and test new soft­ware by more than 50%, elim­i­nated the need for over­time work, and ensured the timely deliv­ery of new func­tion­al­ity. Received a per­for­mance award for ensur­ing prod­uct qual­ity, meet­ing dead­lines, and effec­tively man­ag­ing personnel

• Led and man­aged the tech­ni­cal imple­men­ta­tion, logis­tics, time­lines, and activ­i­ties of myself and two other devel­op­ers in the deliv­ery of a web-based traf­fic sim­u­la­tion engine that pro­vided a test­bed for industry-specific appli­ca­tion devel­op­ers to test their pro­pri­etary algo­rithms. Received a per­for­mance award for “lead­ing the team and ensur­ing crit­i­cal dead­lines were achieved with­out sac­ri­fic­ing quality.”

• Assisted in domain admin­is­tra­tion for a server farm con­sist­ing of Share­Point front-end web servers, Microsoft SQL Servers, domain con­trollers, and a SAN

• Lead devel­oper for a Ruby on Rails and Flex-based appli­ca­tion designed to auto­mate the deploy­ment of SOA-based mil­i­tary ser­vice offer­ings. Imple­mented a REST­ful method­ol­ogy for sav­ing and deliv­er­ing data to a Flex front end

• Par­tic­i­pated in uni­ver­sity recruit­ing and inter­view efforts for the firm. Pro­vided rec­om­men­da­tions that led to the hir­ing of approx­i­mately one-quarter of the total staff on sub-team, as well as the hir­ing of approx­i­mately 30 junior staff straight from college

• Pro­gres­sively increased man­age­r­ial respon­si­bil­i­ties over the course of two pro­mo­tions in three years

06/2006 - 08/2007
Software Developer
Wamily, LLC

Member of the management team on an early stage startup that developed web-based group communication, management, and coordination software.

• Worked with a team of web devel­op­ers to cre­ate an Inter­net busi­ness cen­tered on a web­site that would allow its users to eas­ily man­age and inter­act with their real-life groups in an online setting

• Devel­oped wid­gets for com­mu­ni­ca­tion and col­lab­o­ra­tion, per­mis­sion mod­els and secu­rity imple­men­ta­tions, and user inter­faces for site features

• Cre­ated soft­ware using Ruby on Rails, CSS, HTML, JavaScript, Pro­to­type, script.aculo.us, and MySQL

• Assisted in recruit­ing 500 alpha users and raising $20,000 in angel investments

• Par­tic­i­pated in board meet­ings to determine long-term strategies

05/2005 - 08/2006
Intern Research Assistant
Booz Allen Hamilton

Provided research and development support as a technology intern to a large, multi-national consulting firm.

• Pro­vided a fully func­tional, database-backed web appli­ca­tion for use by over­seas mil­i­tary per­son­nel in a short­ened time­frame of 3 weeks as part of a 3-person devel­op­ment team

• Cre­ated a col­lab­o­ra­tion site that pro­vided Navy lead­er­ship with near-real time crit­i­cal infor­ma­tion to stream­line the deci­sion mak­ing process in the Navy Gulf Coast Region in the after­math of Hur­ri­cane Katrina

• Designed and cre­ated sev­eral web part solu­tions using APIs from Active Direc­tory, Microsoft Map­Point, Microsoft Pow­er­Point, and Microsoft SharePoint

• Cre­ated a Macro­me­dia flash proof-of-concept dash­board for a sta­tus report­ing appli­ca­tion inte­grated with SharePoint

08/2005 - 05/2006
Researcher and Lead Developer
University of Virginia

Developed software, created algorithms, and analyzed information management processes that would optimize the battery life on micro-sensor hardware devices as part of a university thesis project.

• Coor­di­nated the efforts of a five-member team focused on devel­op­ing an approach to opti­mize the use of resources on wire­less sen­sor networks

• Designed, imple­mented, and main­tained a sim­u­la­tion engine capa­ble of sim­u­lat­ing enemy solider move­ment and sen­sor net­work func­tion­al­ity in cus­tomized, load­able, user-defined sce­nar­ios. The appli­ca­tion was writ­ten in C#, sup­ported XML-based load­able sce­nario files, and uti­lized var­i­ous opti­miza­tion algo­rithms (such as Dijkstra’s algo­rithm and A*). The sim­u­la­tion engine pro­vided users with an intu­itive graph­i­cal user inter­face for sim­u­la­tion con­trol as well as the abil­ity to view and report on sim­u­la­tion progress

• Per­formed sta­tis­ti­cal and quan­ti­ta­tive analy­sis on results to deter­mine opti­mal resource allo­ca­tion pol­icy for the tested scenarios

• Lead author and pre­sen­ter of a paper at the IEEE Sys­tems and Infor­ma­tion Engi­neer­ing Design Sym­po­sium describ­ing results

01/2004 - 05/2005
Researcher and Developer
Personal and Academic Projects

Developed a variety of software for a myriad of purposes on several different platforms and programming languages.

• Devel­oped and tested a C# desk­top weight man­age­ment appli­ca­tion using Access as the data­base back­end, and later migrated it to the Inter­net using PHP and MySQL

• Lead devel­oper on a team that cre­ated, doc­u­mented, and tested robot con­trol and com­mu­ni­ca­tion soft­ware for the Evo­lu­tion ER1 robot. The soft­ware allowed users to remotely con­trol the robot by way of a spe­cially cre­ated com­mu­ni­ca­tions protocol

• Devel­oped a pro­to­type for an inter­ac­tive Macro­me­dia Flash map that retrieves exter­nal data and allows users to eas­ily view them in a geo­graph­i­cally orga­nized format

• Cre­ated a dis­crete event queu­ing model sim­u­la­tion of a din­ing facil­ity located on cam­pus using Rock­well Arena, based on data gath­ered and inter­preted by the project group

• Cre­ated a pro­to­type Peer-to-Peer appli­ca­tion based on the Gnutella search and com­mu­ni­ca­tion pro­to­col in Microsoft Visual Stu­dio .NET using C# and TCP/IP socket programming

02/2003 - 09/2003
Branch Manager
College Works Painting

Participated in an internship designed to hone and cultivate the entrepreneurial skills of college students by allowing them to run their own local branch of a large, nationwide business.

• Oper­ated a local house paint­ing busi­ness, which gen­er­ated over $15,000 worth of gross rev­enue in con­tracts with 25+ clients

• Respon­si­ble for sales, pay­roll, recruit­ment, oper­a­tions, cus­tomer rela­tions, and marketing

09/1999 - 07/2002
American Red Cross

Volunteered as a member of the executive management board of the youth community service organization of the Washington, D.C. chapter of the American Red Cross.

• Served as pres­i­dent (2001-2002), vice pres­i­dent (2000-2001), and mem­ber of a local youth com­mu­nity ser­vice orga­ni­za­tion as part of the National Cap­i­tal Chap­ter of the Amer­i­can Red Cross

• Man­aged and coor­di­nated the exe­cu­tion of var­i­ous com­mu­nity ser­vice projects and their logis­tics, includ­ing fund-raising, logis­tics, mar­ket­ing, and man­age­ment of personnel

• Served as one of five United States youth rep­re­sen­ta­tives to the inter­na­tional Youth Exchange in 2000

• Received var­i­ous for­mal vol­un­teer recognitions

• Gained skills in lead­ing multi-person projects, effec­tive com­mu­ni­ca­tion, and time management

08/2010 - 05/2012
Master of Business Administration
NYU Stern School of Business

Completed two years of a rigorous MBA program at a top business school, focusing on acquiring the skills required to improve my trading activities and start a new business.

• Graduated with specializations in Quantitative Finance and Entrepreneurship and Innovation

• First Year Activities: Asso­ciate Vice Pres­i­dent of Tech­nol­ogy for the Stern Hedge Fund Asso­ci­a­tion and Asso­ciate Vice Pres­i­dent of Com­mu­ni­ca­tions for the Entre­pre­neurs Exchange Club

• Mem­ber of the Tech­nol­ogy and New Media Group and the Asso­ci­a­tion for Invest­ment Man­age­ment and Research

• Completed one course on Doing Business in China at the Guanghua School of Management at Peking University

• Studied abroad at Bocconi University in Milan, Italy

08/2002 - 05/2006
Bachelor of Science
University of Virginia

Completed four years of study in the engineering school, focusing on acquiring software development, statistical analysis, modeling, simulation, and data analytic skills.

• Received a Bachelor of Science in Computer Science and double majored in Systems and Information Engineering

• Received a minor in Math

• Part of a team-oriented effort to improve resource usage in sen­sor net­works. Main author of a paper pub­lished at the IEEE Sys­tems and Infor­ma­tion Engi­neer­ing Design Symposium

• Graduated with distinction

• Achieved Dean's List in 3 different semesters

English (native), Spanish (basic), Urdu/Hindi (basic listening comprehension)
Monte Carlo sim­u­la­tion, dis­crete event sim­u­la­tion, sta­tis­ti­cal analy­sis, com­par­i­tive trade stud­ies, multivariate and single variable regressions, discrete and stochastic decision models
Microsoft Certified Systems Engineer (2000). Certified Scrum Master (2009)
Java, C#, Ruby on Rails, HTML, JavaScript, SQL, and XML
Top Secret (Expired)
Playing the electric and acoustic guitar • Web development • Fitness and weightlifting • International adventures
Web development
Database Management
Mobile development
Graphic Design
Technical Management
Network operations
Server operations
Foreign Languages
Data Analytics
Big Data
Contact info
  • Name: Shanif Dhanani
  • Address: New York, NY, USA
  • E-mail: shanif.dhanani@gmail.com
  • Phone: 703.477.1438


Email (required)