Hey there! I'm Shanif - a young professional with a background in technology, analytics, startups, and even options trading. I've been developing software since 1997, working in startups since '08, and have dabbled (profitably) in options since '09.
I have a BS in Computer Science and Systems & Information Engineering, and recently earned my MBA, specializing in Quantitative Finance and Entrepreneurship & Innovation. These days, I'm working on helping Twitter integrate a mobile advertising platform that I helped build at TapCommerce, a startup I worked on after business school.
People, Places, Things - My Best Shots
New Solution For WordPress “White Screen of Death”
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 →
Getting Tidy To Work On 64-Bit Linux Systems
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:
- Added the line
"extern void tidyBufInit(void*)"to the ‘load’ method in the file tidy-1.1.2/lib/tidy/tidylib.rb
- Added the following method to the same file (Tidylib):
#tidyBufInit, using default allocator
- Added the following line to the initialize method in the tidybuf.rb file:
- Added the following field to the TidyBuffer struct:
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 →
Getting XAMPP, Passenger, And Rails To Play Nicely On A Mac
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:
- 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).
- Update the Virtual Host so that Rails runs with the correct username.
- Update the Virtual Host so that Rails has the correct DocumentRoot.
- 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 →
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
Founded an investment club focused on generating consistent, periodic income by using the aid of custom-developed analytic methodologies and computer programs to trade options
• Generated an average annualized return of 40%
• Coordinated the research and analysis efforts for myself and two partners
• Developed and automated several quantitative analysis algorithms that assist in the investment process by providing rankings of publicly traded companies based on financial fundamentals, listings of stocks with the highest options premiums, and predictions of stock movement based on trending and momentum criteria. Created the algorithms using the fundamental principles of weighted trade studies and later automated them using Ruby on Rails
• Created a website that enables the publication of investment articles and provides access to the aforementioned automated algorithms, a portfolio management tool, and educational resources
• Performed market research on publicly traded companies, focusing on industry standing, historical performance, competitive advantage, and future prospects
• Managed legal, financial, accounting, logistics, long-term strategy, and investment objectives
Software developer and member of founding teamoGolf
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
AssociateBooz Allen Hamilton
Provided information and communications management solutions to public and private organizations as an IT consultant at a large, multi-national consulting organization.
• Managed timelines, resources, and a staff of up to 10 software developers and testers in the technical implementation of a project management application that allowed over 4,500 users on 500 projects to easily collaborate on key deliverables, organize project schedules, review budgets, and create financial projections. Coordinated the efforts of staff from multiple departments across the firm to implement a new development process that reduced the number of hours needed to create and test new software by more than 50%, eliminated the need for overtime work, and ensured the timely delivery of new functionality. Received a performance award for ensuring product quality, meeting deadlines, and effectively managing personnel
• Led and managed the technical implementation, logistics, timelines, and activities of myself and two other developers in the delivery of a web-based traffic simulation engine that provided a testbed for industry-specific application developers to test their proprietary algorithms. Received a performance award for “leading the team and ensuring critical deadlines were achieved without sacrificing quality.”
• Assisted in domain administration for a server farm consisting of SharePoint front-end web servers, Microsoft SQL Servers, domain controllers, and a SAN
• Lead developer for a Ruby on Rails and Flex-based application designed to automate the deployment of SOA-based military service offerings. Implemented a RESTful methodology for saving and delivering data to a Flex front end
• Participated in university recruiting and interview efforts for the firm. Provided recommendations that led to the hiring of approximately one-quarter of the total staff on sub-team, as well as the hiring of approximately 30 junior staff straight from college
• Progressively increased managerial responsibilities over the course of two promotions in three years
Software DeveloperWamily, 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 developers to create an Internet business centered on a website that would allow its users to easily manage and interact with their real-life groups in an online setting
• Developed widgets for communication and collaboration, permission models and security implementations, and user interfaces for site features
• Assisted in recruiting 500 alpha users and raising $20,000 in angel investments
• Participated in board meetings to determine long-term strategies
Intern Research AssistantBooz Allen Hamilton
Provided research and development support as a technology intern to a large, multi-national consulting firm.
• Provided a fully functional, database-backed web application for use by overseas military personnel in a shortened timeframe of 3 weeks as part of a 3-person development team
• Created a collaboration site that provided Navy leadership with near-real time critical information to streamline the decision making process in the Navy Gulf Coast Region in the aftermath of Hurricane Katrina
• Designed and created several web part solutions using APIs from Active Directory, Microsoft MapPoint, Microsoft PowerPoint, and Microsoft SharePoint
• Created a Macromedia flash proof-of-concept dashboard for a status reporting application integrated with SharePoint
Researcher and Lead DeveloperUniversity 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.
• Coordinated the efforts of a five-member team focused on developing an approach to optimize the use of resources on wireless sensor networks
• Designed, implemented, and maintained a simulation engine capable of simulating enemy solider movement and sensor network functionality in customized, loadable, user-defined scenarios. The application was written in C#, supported XML-based loadable scenario files, and utilized various optimization algorithms (such as Dijkstra’s algorithm and A*). The simulation engine provided users with an intuitive graphical user interface for simulation control as well as the ability to view and report on simulation progress
• Performed statistical and quantitative analysis on results to determine optimal resource allocation policy for the tested scenarios
• Lead author and presenter of a paper at the IEEE Systems and Information Engineering Design Symposium describing results
Researcher and DeveloperPersonal and Academic Projects
Developed a variety of software for a myriad of purposes on several different platforms and programming languages.
• Developed and tested a C# desktop weight management application using Access as the database backend, and later migrated it to the Internet using PHP and MySQL
• Lead developer on a team that created, documented, and tested robot control and communication software for the Evolution ER1 robot. The software allowed users to remotely control the robot by way of a specially created communications protocol
• Developed a prototype for an interactive Macromedia Flash map that retrieves external data and allows users to easily view them in a geographically organized format
• Created a discrete event queuing model simulation of a dining facility located on campus using Rockwell Arena, based on data gathered and interpreted by the project group
• Created a prototype Peer-to-Peer application based on the Gnutella search and communication protocol in Microsoft Visual Studio .NET using C# and TCP/IP socket programming
Branch ManagerCollege 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.
• Operated a local house painting business, which generated over $15,000 worth of gross revenue in contracts with 25+ clients
• Responsible for sales, payroll, recruitment, operations, customer relations, and marketing
VolunteerAmerican 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 president (2001-2002), vice president (2000-2001), and member of a local youth community service organization as part of the National Capital Chapter of the American Red Cross
• Managed and coordinated the execution of various community service projects and their logistics, including fund-raising, logistics, marketing, and management of personnel
• Served as one of five United States youth representatives to the international Youth Exchange in 2000
• Received various formal volunteer recognitions
• Gained skills in leading multi-person projects, effective communication, and time management
Master of Business AdministrationNYU 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: Associate Vice President of Technology for the Stern Hedge Fund Association and Associate Vice President of Communications for the Entrepreneurs Exchange Club
• Member of the Technology and New Media Group and the Association for Investment Management 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
Bachelor of ScienceUniversity 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 sensor networks. Main author of a paper published at the IEEE Systems and Information Engineering Design Symposium
• Graduated with distinction
• Achieved Dean's List in 3 different semesters
- Name: Shanif Dhanani
- Address: New York, NY, USA
- E-mail: firstname.lastname@example.org
- Phone: 703.477.1438