Blog

PhD and industry job search

A natural outcome of the Ph.D. process is to pursue a career in academia, such as a teaching faculty position or a research faculty position. However, there is an increasing number of full-time opportunities in the industry, whether in a product-development startup/establishment, a consulting firm, or even the Government. Considering we spend most of our time/energy in the Ph.D. process preparing for an academic position, it requires an extra push to pursue job opportunities in the industry. This blog post will cover industry job search aspects, particularly for roles in a product-development company. I have shared my thoughts on working in the industry in another post.

Networking

Networking with peers working in the industry is the primary way to find jobs, especially for folks with advanced degrees such as a Ph.D. Unfortunately, many folks limit their networking skills to have just enough conversation with someone to unashamedly add their name to the online job application’s referral box. To find your “dream” job, you need to go way beyond that. You need to understand your contact’s role, nature of work, company’s business, and technical depth/breadth involved in their role. Also, seek feedback on your profile and ways to address the gaps for roles in their team. If you find the opportunities in their team relevant, you need to demonstrate how you can contribute to their team, so they are excited and motivated to refer you to their recruiter/hiring manager. With an advanced qualification like a Ph.D., remember that you are not just trying to “fit-in,” rather you are “creating” a role for yourself.

For your job search, I recommend starting with your graduates from your research lab and university/department. Very likely, they are working in roles in companies close to your area of interest. Understand how their role is connected with their research area, what they enjoy about their role and the future opportunities they are excited about.

Another great place to meet folks is the technical conferences/research meetings where you present your research. You will run into many folks working in your research areas and connect with them via your advisor and other research collaborators. Be prepared to step outside your comfort zone and connect with folks working in competitive research labs, even if they use different tools/techniques/approaches.

Another place is social media platforms such as LinkedIn, which has made it super easy to look up your contact’s profile, such as education, current/past work profile, etc. It helps cast a wide net in your job search, spanning across metropolitan areas and even countries. If you use it well, it can be highly effective in finding your next role. Just make sure you don’t use it as a substitute for having an in-person contact. Before you start contacting folks, I recommend having an up-to-date profile with a photo, headline, and relevant details.

Every contact is unique and comes with unique circumstances to initiate the conversation. My approach is to start with an email conversation (or LinkedIn direct message). As the conversation is building up, and depending on their interest, try to have a phone conversation to communicate more freely. In my years working in the US industry/academia, I find folks to be quite open to having such conversations. In this day and age of covid-19 pandemic, the conferences and networking events have also moved virtual, leaving email/phone/video chats as the only way to connect with folks. For the first conversation, keep the email short and to-the-point.

Online job applications

As you mature in your job hunt, you will start seeing job opportunities in companies where you don’t have any contacts. Don’t worry; the online job application is your friend. The job application interface can vary from a recruiter’s email address to sophisticated online application platforms. Irrespective of the interface, two key elements to an online job application are the resume and cover letter.

Resume – Think of it as an advertisement pamphlet that grabs the recruiter’s attention, so they review your application in detail. This means that you should highlight only the relevant skills, experience, and education for the position you are applying for. Any extra details can also go on your personal webpage, and a detailed C.V. Do pepper enough keywords in the resume so that the online recruitment tools catch it, but don’t overdo it. Have a nice career goal or mission statement, so the recruiter knows what you are looking for. Add links to the GitHub/LinkedIn/Personal webpage and so on.

Cover letter – Think of it as a 30 sec. elevator pitch to your recruiter. Have a crisp 2-3 paragraph letter highlighting your profile’s key elements relevant for the position. Present a personal take on the opportunity, and avoid repeating details from the resume.

When talking to a recruiter, let them know that you applied online, so they can pull the application from their system and take the necessary steps. Be patient; recruiters are busy people, and recruitment is a tiring process for everyone involved. But feel free to follow up every few weeks if you don’t hear back.

LinkedIn

I shared some thoughts earlier. One effective way to reach out to companies is to reach out to a recruiter/HR working there. Such folks are usually open to receiving requests over LinkedIn and are quite responsive. You can chat with them about your job application and other details. Try to stay formal and to-the-point. You can also come across folks working in technical roles in the companies of your interest. However, folks are usually unresponsive (unless they are actively looking for jobs themselves!), so don’t be disappointed.

LinkedIn is also useful for finding companies in your discipline. Use the search tool, and filter by geography, etc. You will be surprised by the number of companies working in your discipline. You can also check if you have any contacts (1st or 2nd level) working there and reach out to them for opportunities. I also see companies increasingly advertise positions directly on LinkedIn, which makes it convenient to apply directly.

Timeline

So when should I start looking for a job? Ideally, 6 months to a year before your expected graduation date. It takes a while to figure out the job market, apply for positions and interview for them, and finally get the offer letter. By the time you get the offer, you will also have a better idea about your graduation timeline and start working with your advisor/university towards the graduation formalities, such as thesis submission, scheduling the defense exam, and wrapping up the on-going research commitments. In some cases, having a job offer letter enables you to have a graduation conversation with your advisor. In my case, I had a couple of years of job experience before graduating, so I started looking for jobs only after graduation, which works fine too (assuming you can handle any student/work visa issues).

If you are in the early stages of your grad-school, I highly recommend pursuing a summer internship at some point before graduation. Unless you have prior work experience, it adds a significant weightage to your application. It is also a great conversation starter since folks working in the industry can relate to your experience in another company much better than the nitty-gritty of your academic research. The experience will also give you a much better picture of what to look for during your full-time job search and increases your confidence in your job search.

PhD and working in the industry

Working in the industry provides an excellent opportunity to apply your hard-earned research and technical skills in practice towards developing products/services of value. You get to work in a relatively polished and systematic work environment where the nature of work changes as the competitive business landscape changes. You get to work with top talent in your field in a diverse work culture spanning geographical areas (and even continents) towards a common goal of delivering a high-value product/service to your customers/clients. Due to the length and breadth of technologies involved, there is reasonable freedom to choose a role you enjoy and are good at. As you develop more skills in your work, you earn more autonomy.

Any role in the industry would involve a combination of the following.

  1. Product development
    Depending on your industry and role, it will involve one or multiple of the following: running experiments, data analysis, software/hardware development, testing, validation, process engineering. This would take the bulk of your time and essentially justifies your addition to your company’s headcount.
  2. Background research / skill development
    Understand the state-of-the-art, hot topics, pressing problems, limitations of the state-of-the-art, verifying, and validating your methodology and approach with the literature. Develop new technical skills for your current/new role as needed.
  3. Developing intellectual property
    Develop methods/algorithms/techniques to solve a pressing technical problem. Occasionally file patent applications on some of those.
  4. Publications and conferences
    Writing white papers, research papers, and participate in industry/research conferences in your field.
  5. Contribute to the standards bodies (such as IEEE, ISO, ITU, etc.)
    Influence the technical direction of your discipline and represent your company.

In the early years of your career, you are expected to spend a significant % of time on (1) and (2) and get your feet into the ground. As you mature and move up the corporate ladder, it will be spending more time doing (3) to (5), however, nothing stops you from doing it in the early years as well.

The bulk of the technical headcount in any company works on the product-development side of it. Some companies have a separate research division (aka research labs) with max. 5-10 % of the total headcount. However, those divisions are an increasingly smaller share of the company’s headcount (think IBM Research) [1] or have nearly vanished (think AT&T Bell Labs). Moreover, many new-age technology companies (like Google, Facebook) have almost done away with that structure [2].

Often, Ph.D. students are under the impression that they only belong to the company’s research side. However, that is increasingly less common, especially in the computer technology industry [2]. Between a role in the product-development side and the research side, the main difference is the % of time spent in the above five activities. Also, over the course of your career, you could be moving between product-development and research roles. Rather than obsessing over whether to work in the industry or a research lab, it’s better to focus on the specific skills you need to master to succeed in your career.

To succeed in the industry, we need to find the right fit for our skills and abilities. In our Ph.D. process, we spend a significant amount of time/energy developing certain skills relevant to a specific domain. As we start looking for jobs in the industry, we might realize that the domain and/or the skills are not as relevant for the market. So how do we go about finding the right fit? One exercise I find useful is to identify the knowledge domain and technical skills for a job opening. By domain, I mean the knowledge area of your research. By skills, I mean the specific tools/techniques/methods that you have mastered in your research area so far. Let’s consider an example. Suppose your research is in applying machine-learning techniques identifying tumors in medical images. Then your domain is medical imaging, and your skills are machine-learning (ML) techniques.

As you are looking at the job openings, identify the specific domain, and skillset it requires. Same way, identify the domain and skillset of your research experience. Ideally, going from one position to another (Ph.D. -> PostDoc or Ph.D. -> industry or PostDoc -> PostDoc), try to change either the domain or the skill. This helps in having a solid grounding in one while picking up the other. How about applying ML techniques to identify objects for self-driving cars or learn new statistical techniques (say deep learning) in the medical image domain.

References
[1] https://cacm.acm.org/magazines/2015/1/181626-the-rise-and-fall-of-industrial-research-labs/fulltext
[2] http://academicsfreedom.blogspot.com/2012/08/advice-for-phd-students-seeking.html

Democratizing the Indian Education System (NEP2020)

The Ministry of Human Resource Development (HRD) in the Government of India has recently released the 2020 version of National Education Policy (NEP) [1]. As many experts have pointed out [2,3], this is one of the best reforms in the education sector and is expected to be a game-changer. I read the full 66-page report and I highly recommend reading it. This reform puts the power back in the hands of the students (and their parents), who can decide the courses/majors that they choose to pursue and pause/restart the education as per their personal/family needs. Rather than getting lost in the Labyrinth of our education system, students can rather focus on the “learning” and develop a solid foundation for the future they aspire.

In regards to the “universal access to education” aspect of this policy, I have a suggestion to make. We should make the video lectures and related educational content at all levels of education completely free and open to all. Think of an EdX or Khan Academy of sorts, where the video lectures for each subject at each grade level are available for streaming/download to anyone with a simple computer device (like a smartphone) and internet access. To start with, the video lectures could simply be a class recording from an institute like Kendriya Vidyalaya and perhaps enhanced in the future with animation, etc. The recording can be in any Indic language and published under an appropriate creative-commons license, whereby the state board or even a linguistic group can translate/transliterate the videos in their local language/dialect and republish the videos citing the original source. Thanks to the IT revolution over the last few decades, we have all the pieces of the solution ready and we just need to piece it together. Such a system would truly democratize our education system, setting high standards for the teaching and curriculum, and enable new education models, including home-schooling and self-learning. Let me share a few examples.

Think about an auto-rickshaw driver making a living in an urban city like Mumbai, away from his hometown in North India, who had to leave his high-school education halfway to start making a living for the family. He is motivated enough to finish his high-school, but enrolling in a full-time school is too cumbersome. Fortunately, he can watch the lectures on his smartphone while waiting for rides in the auto stand, practice the material with a local tutor and appear for exams every few months in a local school/exam center to clear the milestones and thus earn his diploma, enabling access to college education, and thus helping him move up the employment ladder. Thus high-quality video content enables such self-learners to learn at their own pace at their own time.

Let’s consider a scenario of a group of families in a Bengaluru, deeply associated with the spiritual organization (like AoL) or a Matha (monastery in the Indic system), which is a tremendous part of their kids learning. However, their kids are enrolled in state/centerboard affiliated schools as well, leading to duplication of efforts and activities. Such families would love to home-school their kids so that their learning is centered around their religious/spiritual schools, while still keeping pace with the regular state/centerboard education to have a pathway open for a college education. This group of families creates a home-schooling system, where parents take turns teaching different subjects. They complement the learning with field-trips and such activities. The freely available high-quality education content can tremendously aid their education.

Given the flexibility and openness of the NEP, such possibilities are endless. Logistics wise, it will be great if the government encourages or rather make it mandatory to the internet operators to carry traffic to such content for free, perhaps in exchange for tax rebates, etc. I am sure the telecom industry will come up with novel business models and innovation to make this happen.

References
[1] National Education Policy 2020, Ministry of Human Resource Development (HRD), Government of India – Link
[2] Dr. Aishwarya S, (Twitter thread), Link
[3] Dr. Pankaj Jalote, “The New Education Policy (NEP) has Great Suggestions for Higher Education”, Link

Postdoc and Productivity

Last updated – July 19, 2020.

Disclaimer: I have never worked as a PostDoc myself. I am currently mentoring a close friend who is pursuing a PostDoc position in Israel after graduating with a Ph.D. from India, which motivated me to write this blog. Also, I worked closely with several Postdocs during my grad. school, which has shaped my experience and thoughts.

Pursing a Postdoc position is an excellent opportunity to pickup new technical skills, venture in a new technical domain, expand your network, and work in a different environment. However, just like the PhD program, it is reasonably unstructured, and your experience can vary significantly by the lab, advisor, and timings in general. Unlike the PhD program, the end goal is not as clear. This calls for a fresh thinking in your strategies to set meaningful goals and manage your productivity towards it. I summarize my thoughts here.

Goal Setting

A PostDoc position is a intermediate opportunity towards a more stable position in the near future. One needs to gain competence in many areas (research, teaching/mentoring, networking) in a relatively short span of time. However, everyone comes with a different level of competence and exposure in each area. One needs to set their own goals and prepare for the next position. In addition to the traditional techniques like SWOT analysis, here are some of my tips to help set your goals and expectations.

a) Write/edit your research/teaching statement regularly
One of the outcome of your postdoc experience is a crisp and solid research and teaching statements. Such documents provides a holistic picture about your past and present experience, and your next goal in career. Rather than writing the statement at the end of your position or when you are applying for a new role, it will be great to write it regularly. This will help you identify gaps and potential areas of improvement. It will be great to share this document with your advisor and colleagues regularly to seek their feedback. This will help them coach you better.

b) Recommendation letter
By now, you would have realized you will be drafting most of your recommendation letters yourself! Why not use this as a goal setting tool? In addition to your statements and publications/projects, solid recommendation letters can have an enormous impact on the hiring decisions.

c) Job Market
Try to peek into the job market every quarter or so, to see what skills are being talked about, the domains that are picking up steam and so on. Use this information to steer your projects in a direction that will help you pick up those skills/domain, while still meeting your existing projects/funding requirements and your advisor’s expectations. I plan to share more thoughts here in a future blog.

Productivity

a) Work like a professional
In a PostDoc position, people around you (lab colleagues, Advisor, funding agencies, collaborators etc.) expect you to work like a professional. This should reflect in your communication, your lifestyle, your maturity and so on. Practice working limited hours. Value your time in terms of $/hour and judge if a task is worth your time, otherwise delegate to a junior who would benefit from that learning. Set the expectations with your colleagues and practice delivering on time. This is the minimal expectation from a Postdoc graduate, whether you land up working in academia or industry after this.

b) Schedule regular meetings with stakeholders
Stakeholders includes your advisor, colleagues (junior or peer), funding agencies. Schedule meetings with an appropriate frequency (like weekly with advisor and colleagues, biweekly or monthly with funding agencies and so on). Share updates, challenges encountered, and keep in-sync.

Also schedule regular meetings with your mentors, discussing your career progress, lessons learnt, etc. Regular meetings will keep you keep your eyes on a big picture. Do the same with your mentees.

c) Health and well-being
I bet you weren’t expecting this as a productivity tip. This is key to the long-term career success, and in many cases, the learning starts only once you are “over” with the college lifestyle. Very likely, you have moved to a different location or even a new country for your postdoc position, resulting in significant changes in your lifestyle. Spend time to cope up with it, whether its furnishing your new home, picking up a new hobby, socializing with your new friends and so on. Check if the weather of your new location can affect your health, like possible Vitamin D deficiency in cold places.

Finishing 1 year at Intel Corp.

I just finished my first year as a Software Performance Engineer at Intel Corp. at Hillsboro OR. My main project has been the performance analysis of MSFT SQL Big data cluster, on which we published a whitepaper recently. This product is a big step up in their popular MSFT SQL Server product line and I have been excited and grateful for the opportunity to contribute.

In this post, I thought of sharing my experience as a Software Perf. Engineer

1) Hardware/Software optimization is challenging and time-consuming

There are just way too many knobs to control, in both the software and hardware layer. Based on the guidance from our partners, we quickly settled on the problem statement and the software configuration. Regarding hardware, we started with the best we have and kept improving the components that we observed as our perf. bottlenecks. It is important to keep the customer in mind, what their challenges and pain-points would be, their potential technical debt (coming from the previous product) and so on.

2) Hardware/Software optimization is highly rewarding

I realized this after finishing our whitepaper. A customer reading it will get a headstart on the best-known methods/configuration (BKM/BKC) to setup the software stack and the recommended hardware stack for optimal performance. What took us multiple man-months can be achieved by them in a few days/weeks.

3) Automation frees up the mind for analysis and insights

The more time/energy we spent in manual work, the lesser the time/energy we have to analyze the results and collect valuable insights. In addition to expt. run and data collection, I automated significant chunk of the data analysis as well, to the extent of the spitting out the results in the “exact” spreadsheet format that I need, significant freeing up my mind (and making it ergo. friendly)

4) BKM documents make things systematic

I developed a practice of writing the BKM documents as we go along and keeping it on Git (along with the config. files). That way it was easy to trace the steps back if something goes wrong. Also, it became super-easy to train new team members, and get everyone on the “same page”. Also, given we iterate through it every day, the end result is a super polished document and we feel comfortable sharing it easily with the stakeholders. Along with Automation, this significantly reduced the unforced errors in our experiments.

5) Developing a solid relation with software partners takes years of partnership and trust – The quality of analysis and results clearly show it.

Some of the challenges I experienced as a software performance engineer

  1. Prioritizing learning concepts while having results to show regularly – It takes a while to understand a new software stack or benchmark. But to keep a cadence with our partners/stakeholders, we need to show results regularly, even if they are not perfect or have known unknowns. Coming from an academic background, I am more used to sharing results only when I have everything “figured” out. It took a few months to get used to such ‘work-in-progress’ presentations. Also presenting ‘current results’ (in a spreadsheet) vs. polished presentations (in a slideshow).
  2. Prioritizing projects and tasks
    Understanding the priority of our organization vs. our partners/stakeholders. Also balancing between deliverables vs. learning.
  3. Mastering a wide range of skills in a relatively short time
    Our role involves a wide range of skills – setting up (computer) systems in our lab, configuring hardware/software, integrating new hardware (say accelerators), choosing and running workloads, data collection and analysis, and sharing the results. This was somewhat broader than a typical software engineering/research role I have been in. It took a while to get used to it, but I love it!

Applying for Ph.D. programs in the US

I recently graduated with a Ph.D. in Computer Engineering at Duke University, NC. Before that, I earned an M.S. degree in Electrical Engineering from the University of Southern California (USC), CA in 2010. Based on my experience while applying and during the program, I would like to share my thoughts here. I am sure there are plenty of books and other resources for this information, and I hope the information in this post compliments that information.

Application process

Most universities have application deadlines around December for admissions for Fall semester (starting Aug/Sep). Some universities also have application deadlines around September, for programs beginning Spring semester (Jan.). Check with the university/department for exact dates and other details. Keep in mind that a majority of students would join in the Fall. But that shouldn’t hesitate applying for Spring term, if it is working out well. The application package usually consists of

  1. Research Statement
  2. 3-4 recommendation letters
  3. CV and related details
  4. Application fee ($$$)

Research Statement

I referred to this book while preparing my statement. It provided some solid examples of what the committee is looking for, what part of your profile to highlight and so on. Approach this task with an open mind. Get initial drafts done and then share it with your current Advisors, friends etc. for feedback. Avoid plagiarizing parts from others essays. Depending on your research depth in the field you are applying for, you can get more technical or keep it a bit high-level. If you are having trouble getting your words down, consider practicing techniques from this book. Be prepared to customize the research statement for the program/lab you are applying for (more hints below).

Recommendation Letters

Some recommenders are happy to write the full letter by themselves (and keep it confidential as well :0 ), while some expect a rough draft from you before they polish it. Either way, make sure that you share with them all the possible points they can write about you, like the cool class project you worked on, the research project where your contribution made the difference and so on. Please encourage your recommender to share their personal experience of working with you, whether you demonstrated leadership experience, mentored a junior student, volunteered for tasks and so on.

Timeline wise I would prioritize sending requests / rough drafts of letters to your recommenders over all other activities of the application process. Professors are busy during the semesters. Plan to have a buffer of a month or so before you start nudging them. Consider having a backup recommender as well, in case one of the recommenders forgets to turn in the letter on time or is particularly busy around the application deadline period.

Application fee

If you are applying from outside of the US, you might find the application fee quite steep. However, keep the long-term perspective in mind. Recovering the application fee will take a trivial amount of time once you get into the program, or later in your career. However, refrain from applying for programs where no faculty has shown interest in working with you, or you wouldn’t be as keen on studying there even if you get admission (some call it “safe schools”). Consider getting a credit card that reduces unnecessary foreign transaction fees

Finding the right match

Academic factors

  • Advisor’s working style – hands-on vs. hands off. And how it changes through the course of the program
  • Lab culture – do students collaborate with others or work independently on projects? Is there a group meeting or everyone meets advisor 1-on-1?
  • Lab organization – How many students are there? Is there a PostDoc in the group? What is the typical duration of Ph.D. students and PostDoc? Do PostDocs mentor Ph.D. students? How are mentorship responsibilities divided between Professor (also called Principal Investigator (PI)) and PostDocs? Do senior Ph.D. students mentor junior students?
  • Grants – Hows the funding scene in the lab overall. Are current students facing difficulty getting a continuous stream of funding? Did a student leave the group for lack of funding?

Non-academic, but reasonably important factors

  • Location: Big city vs. mid-size city vs. university town. Big cities provide broader access to the real-world and opportunities but come with additional cost and distraction. University towns offer limited amenities, but students in the university town tend to bond better as a group. Mid-size cities provide something in between the extremes. Cities in the US are not as walkable as those in Europe or Asia, so you might want to have a car in the later years of the program.
  • Weather and seasons: Severity of winters, rainy or dry. Depending on which part of the world you come from and how fast you can get used to the weather — also its impact on your physical and mental health and well-being.
  • Proximity to family and friends: Ph.D. programs are long and can take a toll on your mental health. It is worth-a-while to stay in touch with your family and friends, whether its occasional phone calls or impromptu weekend trips or planned trips for Thanksgiving or Christmas. Also the convenience of traveling back home.

Finding potential advisors

There are many universities around the US and many professors within each University that could potentially work with. So how do you go about finding a great advisor and an excellent research lab? I have several approaches in mind

  1. Ask your current advisors to see if they know advisors who might be looking for students or whose research interests seem to catch their attention. Professors network with others during conferences and working groups and are reasonably aware of the activity level and quality in other groups around the world. This approach is possibly the best approach to find the advisor since you get a first-hand recommendation of both the technical and interpersonal quality of your advisor to be. This approach is a feasible option if you are finishing your Master’s degree and your university advisors are still accessible. However, if you have graduated already, and/or looking for researchers in a different research area, you might be your own.
  2. Reach out to potential advisors yourself. Professors love to hear from folks who are excited about their research and are interested in working with them, so never hesitate in reaching out to them. There are several ways to find out folks who are working in areas of interest. I find technical magazines (such as IEEE Computer in my field) the best resource to start with. Articles here are published in research areas which are hot and exciting and written by folks who have breakthrough results to share with (read -they have or will soon have $$$). If you find an article interesting, think about ways to extend the research. Are there potential assumptions that need to be revisited? Has the research been done in one kind of system that can be done on another system? If you have ideas or comments worth sharing, reach out to the authors. Try to strike a conversation (more details in next section)
  3. Meet them in a conference, seminar or a similar setting. If you are presenting a paper (on your master’s thesis or otherwise) in a conference, actively network around with other participants. Ask what are they working on. Share with them what you are working on, and what opportunities you are looking for. Be upfront and courteous to ask them if they are aware of open positions and possibilities. Researchers are usually excited about such conversations and can offer you great leads.
  4. Attend conferences as a student member. Even if you don’t have a paper to present, conferences almost always allow students to participate in conferences, at a pretty discounted registration fee. You can also consider volunteering for the conference to get some discount. Again, researchers are always looking for new students and happy to share their network as needed. They would look for someone who is excited about their research area, is ready to learn and work hard, and good at communicating and working in a social setting.

Getting in touch with potential advisors via emails

In your email, describe your research interests, current research tasks, and potential future goals and how it relates to the Professors’ work. Keep your emails short and to-the-point. Extra details can go on your website or LinkedIn profile, and you can add a link in the email. Avoid attachments. Your first email should be 1-2 paragraphs max. with total 6-10 lines. So you should be able to summarize your research statement in a few lines, and connect with their work and create the bridge. It should sound like a win-win situation, but you don’t have to try too hard to do it.

Note that if a Professors doesn’t reply, it does not mean he/she didn’t read the email. So it is possible that you apply to their university, and he/she will recall your email after picking up your application. So never lose hope. However, If they explicitly reply that they are not hiring, then you should move on.

If a Professor expresses intent, immediately add relevant points to your research statement. Keep polishing the statement as the conversation goes further along. Also take notes on points that you would like your current Adviser to talk about in the recommendation letter, so that can strengthen specific aspects of your statement.

University Rankings, reputation and related discussion

Never think that some program/lab is too high for you to reach, or it’s too low for your profile. If you have the right intention, everything works out. Given the amount of “data” we are surrounded by, it is easy to get obsessed with the rankings, ratings, and reputation of universities and departments. However, keep in mind that your success in the Ph.D. program largely depends on your motivation, your relationship with your advisor and other collaborators and to some extent luck and destiny in getting the right projects and timings. 5 or 10 years after graduation, you will remember the opportunities you received and the relationships you developed, not the rankings of the lab/university you worked in. Besides, it is hard to rank research opportunities. Universities/departments are usually ranked by the $$$ they attracted in research grants, which is hardly reflective of the student’s experience working there. Rather than getting obsessed with the rankings, have a broader perspective in mind.

Once you receive an admit from a university, they usually invite you for a campus visit, sometime around Feb / March. Even if you are outside of the US, I would highly recommend you to go there. The university would cover your stay and travel within the US. You can interact with your potential Ph.D. advisor(s), students, and other faculty and staff in the department. Also, meet the fellow students who plan to join the department as well. After interacting with folks there, you can take a better decision whether the place is a right fit for you.

Funding

Ph.D. programs in the engineering disciplines in the US are almost always fully funded. Full funding means tuition fees, health insurance, and stipend. The stipend amount varies across universities, but it is typically in the range of $2000 per month. In some state/public universities, you might need to pay a small tuition fee, around $1000 per semester. In summary, you will be spending only a small sum of money out of the pocket during your program.

In the US, usually, the advisor is responsible for the full funding of the student. Which indirectly means that you are his employee and he/she is your boss. Some departments cover the first one or two years of funding. However, you can always apply for fellowships from within the university or outside. Outside fellowships can come from government-sponsored research labs (such as NSF, NIH, Department of Energy) or private corporations such as IBM, Intel, Microsoft. Unfortunately, only US citizens can apply for government-sponsored research fellowships. University fellowships are usually open to all students, and all years of the program, however, they tend to be competitive. Your advisor and the department will help you prepare your application for the same. When you apply for a Ph.D. program, your application is usually considered for university-sponsored fellowships automatically, or your advisor can push your case when you are an incoming student.

When your admission letter says that your funding is covered, it means that the department will cover your funding in case your advisor falls short, conditional that you are in good standing and making progress on your program. Although your advisor promises that he/she is funding you, it does not mean he/she has 5-6 yrs worth of your expenditure sitting in an account. It means your advisor (+ department) has funding to get you started, and he/she is hopeful that they will be able to find funding for you in the future. Given the uncertainties in academic funding, it is a tough task for an advisor. As a Ph.D. student, you are expected to work with your advisor to help him apply for grants for your lab. Also keep an eye open for outside funding (e.g., industry internship), whenever it aligns well with your research interest and can take some burden off your advisor’s shoulders.

Contrast between European and US Ph.D. programs

Application

My limited knowledge about the Ph.D. programs in Europe is shaped from a summer internship in Zurich and my interaction with visitors from various EU countries in our lab, so pardon me in advance. Here’s how I look at it. A Ph.D. program in Europe is treated like a time-bound research project with reasonably well-defined goals and objectives. A Ph.D. program in the US is treated more like an experience of maturing as a researcher, which includes teaching experience, handling research projects with varying level of responsibilities from being an assistant to a senior in your lab to being the project leader, identifying thesis-worthy topics, seeking out collaborators to work with and so on. Thus, applying for a Ph.D. program in Europe is like finding a job position, whereas applying for one in the US is like finding a match (like a relationship). Given the number of variables and its uncertainties in an American Ph.D. program, the experience can significantly vary among students even within the same research lab. A friend of mine once told me, “Every Ph.D. thesis is unique.” Thus, it is worth spending the time and energy to research the advisor, the lab, and the university/department culture to find the right match

Work experience

I would refrain from generalizing my observations here. But given how often I have seen this pattern, I wouldn’t outright ignore it. I feel the students in European style Ph.D. programs are expected to master a skill (think of experimental work vs. data collection vs. data analysis vs.…) and get involved in all projects (and publications) in their lab that require that skill. So the first author on the paper is responsible for framing the problem and get pieces solved by colleagues who are masters at it. In a US-style Ph.D. program, the first author is expected to be good at most of the skills required on the paper, and involve colleagues and collaborators only as needed. The result is a difference in the breadth and depth of skills you acquire and polish over time. I see enough counterexamples as well, where Professors of European origin continue their style of work in the US and the other way round. The takeaway here is that if you are coming from one form of learning, be prepared to unlearn and adapt to the new style when you cross over the Atlantic. In case you experience difficulties, never hesitate to bring this up with your PI. They probably understand it better.


Towards performance modeling of FastFabric

First published: 28 Feb 2019; Last updated: 28 Feb 2019

In our recent work [1], we presented a stochastic performance model for Hyperledger Fabric V1. Recently, a FastFabric architecture has been presented [2], where the authors suggest improvements in the internal architecture of each peer/transaction phase, resulting in an overall throughput improvement of more than 6x. In this blog post, I would like to share my thoughts on the possible changes required in our Fabric performance model to accommodate the recommendations proposed in the FastFabric. I have summarized my discussion by the transaction phase/nodes involved:

Client
For a system with a single client peer running at high throughput, the client peer needs to process multiple transactions in parallel (refer transition \text{T}_\text{Pr} in Fig. 2 in [1]), limited by max. hardware threads.

Endorsing
As recommended in [2], a single endorsing peer should endorse multiple transactions in parallel. We had a similar recommendation from our analysis, just that we recommended having multiple endorsing peers per org. where any peer could endorse the transaction on behalf of the Org (denoted by Org.member in the endorsement policy). We should not confuse this having an endorsement policy such as OR(Org1.member, Org2.member, …) where any of the peers from any org. could have endorsed the transaction.

Transactions \text{T}_\text{En0}, \text{T}_\text{En1} in our model capture this easily using marking-dependent firing rates (for e.g., see transitions \text{T}_\text{Pr} and \text{T}_\text{VSCC}). One limitation of our model is that we implicitly assumed endorsing and validating peers each have dedicated resources . Thus \text{CPU}_\text{max} in \text{T}_\text{VSCC} refers to max. hardware threads for VSCC validation, although one hardware thread was implicitly used by the endorser as well. Since [2] proposed having dedicated resources for endorsers, our current model would accurately capture the FastFabric architecture.

Ordering
a) Transmission from Client to the Ordering service (Transition \text{T}_\text{Tx} )
From our model and measurements, we found that it was the performance bottleneck. We measured it by considering the time between a client sending the transaction and the time the Kafka node writes it. From the observations in [2], it seems that significant delays were added due to 1) Orderer wasn’t processing txs. in parallel, 2) Communication overhead between Orderer and Kafka node.

From a modeling perspective, we might need to consider a marking-dependent firing rate for \text{T}_\text{Tx} (or perhaps an added immediate transition and place). With the improvements described in [2], the firing time characteristics for \text{T}_\text{Tx} would be much better than that from our setup.

b) Block transmission from ordering service to validating peers
It is interesting that the throughput maximizes at a particular block size (around 100 in their case). In our paper, we had only analyzed the latency, where it increases linearly with the block size (expected).

Committer (Validator)
It is interesting that the committer throughput maximizes at a particular block size (around 100 in their case). In our paper, we had only analyzed the latency, where it increases linearly with the block size (expected).

From our model perspective, the most important change is that the ledger write (both block storage and levelDB update) can be off-loaded to separate nodes. In our model, this time-consuming process is captured by transition \text{T}_\text{ledger}. It was the performance bottleneck of the committing peer in our setup, perhaps more so since our machines used HDDs rather than SSDs). For the proposed changes, we can remove this transition (+ \text{P}_\text{Ledger}) altogether and measure the throughput at \text{T}_\text{MVCC} instead.

The rest of the changes in the committer would speed up the firing time characteristics of the relevant transitions, given that the peer resources are pretty freed up.

Comments about their experimental setup

  1. All Fabric nodes were running natively rather than using docker containers, which might not be the case in the real-world [4].
  2. Server hardware – Pretty solid hardware, running 24 hardware threads, comparable to that in [3], which is recommended in my opinion. (Our setup with four hardware threads at each peer was somewhat lame).
  3. Workload – transaction complexity is similar to ours (two key-value reads/writes). All transactions are valid. No comments about the transaction arrival characteristics (tx. arrivals in our setup followed Poisson arrival process)
  4. Workload generator – No details (was it Caliper?)
  5. Endorsement – 5 peers are involved but no details of the endorsement policy. Given such good performance, I am assuming its OR(Org1.member, Org2.member, … Org5.member).
  6. Time duration of experiments – The expts. were run with 100k transactions and repeated 1000 times. Given that the transaction throughput was reaching 10k to 30k tps, each expt. probably lasted a few seconds. Not sure if this was enough to warm up the setup. Perhaps the authors could have run the expts. for a longer “fixed” duration and clipped the first and last few seconds as ramp-up and ramp-down.
  7. Orderer – Only one orderer is used. We had the same limitation (since Caliper supported only one orderer at that time (or even now?)). However, the proposed new parallelism in client transaction processing seems to help significantly.

References

  1. H. Sukhwani et al., “Performance Modeling of Hyperledger Fabric (Permissioned Blockchain Network)”. In IEEE International Symposium on Network Computing and Applications (NCA), 2018
  2. C. Gorenflo et al., FastFabric: Scaling Hyperledger Fabric to 20,000 Transactions per Second. https://arxiv.org/abs/1901.00910
  3. P. Thakkar et al., “Performance Benchmarking and Optimizing Hyperledger Fabric Blockchain Platform”. In IEEE MASCOTS, 2018.
  4. https://stackoverflow.com/questions/48070380/does-hyperledger-fabric-need-docker

Tips for preparing for the GRE

I had written this in an email to my friend in India back in August 2013. Some of this might be irrelevant by now.

GRE consists of 3 sections: a) Verbal, b) Quantitative, c) Writing. Within Verbal, broadly Reading Comprehension (RCs) and Sentence Completion (SCs).

I referred to these 3 books
a) Princeton, b) Kaplan , c) Barron’s

Why multiple books? All these companies analyze and interpret the GRE in their own way. Getting multiple perspectives helps you practice closer with the real-exam.

a)
For Verbal-tactics, I found Princeton the best for both RCs and SCs. Their tactics are easy to remember and solid. Barron’s has a good list of tactics (15-20 points), which are good to keep in mind, but too lengthy to apply step-by-step for every problem.

For Verbal-practice, Princeton is better, but the other 2 are good too.

b)
For Quantitative, Barron’s has around 100-150 pages of practice material, which is very comprehensive. Rest of the books have decent introductory material, but less challenging and somewhat repetitive

For Quantitative-practice, Barron’s > Princeton / Kaplan

c) Writing.
This is where the fun begins 🙂

I found the e.g. in Barron’s n Princeton as a good starting point for practice. After understanding the technique of approaching both the types of essays, I started practicing (roughly a month n half, before final exam). But soon I started experiencing writing block. I couldn’t freely frame my ideas into sentences. Although I could brainstorm through the ideas quickly, I found it difficult to frame it into sentences at a good pace. Then I came across this book, and practiced its techniques for 1-2 weeks, before jumping back into my writing practice, and could notice a significant difference in my speed and quality. This book essentially introduces the techniques for using our right-brain (creative side) and focus on the ideas instead of worrying too much about the rules of sentence-formation (which we learn waaaaay too much during our education in India).

After the initial leg-work, I started practicing 1-2 essays per day. Initially I started un-timed to feel free with writing, and later started practicing with 40 min, then 35, then 30 mins.

I find the writing section important
1) Its the first section of the exam, so if you do it well, it sets you up in a good mood.
2) Its predictable. Some arguments are weird and hard-to-figure out in the exam, but usually the topics are decent.
3) Its useful ! Writing for me was a laborious task before GRE exam. Now I use writing as a very powerful tool to communicate, and even brainstorm my thoughts / ideas. Not to mention that graduation school requires ton of writing, and this section is there in GRE for a reason.
4) Both writing+verbal together indicates your overall verbal reasoning skills. A good writing score can easily cover-up an otherwise average verbal score.

Exam Preparation Strategies
:
1. Do something daily. Even if it means 1/2 hr – 1 hr in evening. Keeping tasks for weekend tends to make it more hectic and time-consuming (and less fun).
2. Practice more than understanding tactics / over-analysing test results. This exam is like learning how to drive a car. Getting into the drivers seat and using all the tools together while driving on a real road, and keep practicing to the point that all the tools are like your 2nd’ skin.
3 Start early, finish on time. Keep a window of 3-4 months, start and finish it off.
4. I did 15-20 days for each section, till 1.5 months, and then practiced all of them together for the next 1.5 months.

5. Verbal: Reading NY times daily for few months improved my critical-reading skills. NY Times articles are very well written (even the ones full of anti-Trump), covering the arguments on both sides, and giving a strong logical reasoning behind their arguments. GRE articles are far more verbose, but if you could dissect the arguments down and develop a clear map in the mind, then approaching questions is easier. Try to gather such good material, like the middle pages of Times-of-India (speaking tree etc.), and read them regularly. Online news articles tend to lack the material (and are crappy to say the least). Of course, since the exam is on computer, prefer online material than paper, later on in your preparation, but paper’s great to begin with.

For the test, focus on the tone of the argument (whether its critical or appreciative or neutral) and make sure that the answers to the questions follow that tone. This applies for both RC n SC. This is the most imp. tactic in the verbal section, pretty much the bottom-line.

For word-list, Princeton as a nice set of 5-7 lists. Note them down in your own sheets (1-2 lists per week) and keep glancing at them every morning.
Kaplan divides the words into categories, which is useful too.

6. Quantitative: Time management can be challenging if you try to solve everything down. Some questions tend to be verbose and vague too. So at times, switch gears and eliminate the options. Books focus a lot more on this technique (Amrikan style) than actually drilling down the math. So follow some of the techniques from the book.

7. Writing: While practicing, review your writing, and see if you could frame your argument in the right way. If you couldn’t, see if you were jumping across sentences and had a poor flow, or just missed the point completely or made the right point and provided wrong examples. Don’t focus too much on spellings n the accuracy of the English, it doesn’t matter as much.

Good luck with your preparations. For the books, buying 2nd hand works fine and saves some bucks. These books hardly change across editions.

Fun quotes about Statistics

Do not put your faith in what statistics say until you have carefully considered what they do not say.
    William W Watt

…no one believes an hypothesis except its originator but everyone believes an experiment except the experimenter.  
    W.I.B. Beveridge, The Art of Scientific Investigation (1950), p. 65

References
http://www.stat.columbia.edu/~liam/teaching/4107-fall05/notes4.pdf