Anant Corporation Blog

Our research, knowledge, thoughts, and recommendations about building and leading businesses on the Internet.

Category Archives: Technology


Summer with Anant

This summer I was fortunate enough to be able to join Anant. Coming from primarily a research background, I had little experience of how companies run. This was a great experience for me in learning about the development cycle, how companies streamline workflow, and much, much more about day-to-day operations. And of course, meeting the team at Anant was incredible and I met some fantastic people who taught me a lot, from getting ready to go to college to general life advice.

 

While here, I specifically worked on the Mindy project. Mindy aims to aggregate different types of listings, such as jobs, skills, or companies, and categorize them to automatically generate connections. This summer, we focused on stage 1, which involves scraping job listings from as many sites as possible and then extracting information. This extracted information, such as social media tags and the type of the listing can be used for the pairing portion when combined with algorithms that do similar tasks for other types of data.

 

While I had done data science and machine learning before, I had never created a front-end display or a pipeline for the whole process like I had to do for Mindy. As a result, I got to explore some very cool technologies like elasticsearch and React to create a complete product. I also was able to go much more into depth in natural language processing, as I wrote about in a previous blog post.

 

At the end, I was able to help create a system that can automatically scrape information from multiple websites, process it, extract additional information from descriptions, and categorize it. This was all placed into a slick front-end, allowing for easy searching of jobs. And then came docker. Perhaps one of the more daunting and involved things I’ve done, learning to dockerize and deploy was quite a challenge. However, at the end, we were able to do it all successfully, giving easy pushing to servers and letting anyone, anywhere, use our platform in a handful of minutes.

 

Beyond Mindy, I learned a lot about how a business operates. Seeing how agile works, with sprints and trello integration, was a really new process to me and I was amazed at how effectively it was able to aid communication. It was also very interesting to work in a professional environment and the Anant weekly co-works were very cool.

 

This last summer was an experience I will never forget. From freezing with a broken AC to eating lunch by the canal to getting eaten alive from mosquitos, I wouldn’t miss a single moment of it. Anant taught me how to run a business, and how to run it well.

A Summer of Learning and Collaborating

As a returning Summer Apprentice, I do not see my last two summers as two separate experiences. Instead, I see them as one journey, split into two parts – one of which could not be as valuable without the other. Last summer, I was introduced to the very foundations of a business to answer the basic questions “what is a company?” or “what makes a company successful?” From a learning standpoint, working at a startup was the best way to answer these questions. In a single meeting, I could have a sales / marketing employee sit next to me, a business analyst two chairs away, and the CEO right across my face. Learning the ins-and-outs of a company couldn’t have been more informative and effective than working side-by-side with such a variety of roles within the company.

 

This summer, I took what I learned about project management, business analysis, and the Agile framework and applied those areas of expertise to both internal and external projects at Anant. As Project Manager of Mindy, an internal machine learning-based project, I took on a role I had never experienced before. How did I start? Well, I went back to last summer and used my knowledge of communication and business tools to serve as an efficient and effective leader.

 

I started off my standardizing the way our team – a team of student apprentices just like me – would function. The Agile Framework served to be the best way to fulfill the needs of the Mindy project. It provided us a way to release small chunks of the project on a weekly basis while always having opportunities to learn from previous weeks.

 

However, being a project manager requires more than merely dictating a path for the team members to follow. I have to act on what I say. This is Image result for boss vs leaderwhere the line between a “boss” and a “leader” is drawn. A boss orders. A leader acts on his/her orders with the team. For example, because Mindy is a data engineering process enhanced by machine learning, manual labor is required to “teach” the categorizing of data. The program must “learn” how to categorize the various jobs, but this requires hand annotations completed by a human. To learn more about how Mindy requires machine learning click here. In this situation, a boss would have ordered the team to annotate the data. Instead, I sat in front of the computer and went through all 273 data and labeled each one appropriately. After all, I was the most familiar with the category meanings. I knew that my manual labor would get the job done fast and effectively.

 

Another large portion of my summer at Anant was spent on an external client project with US Food Imports (USFI). My main job as the Internet Architecture Apprentice was to maximize the efficiency of the API Grabbers, which collects all data from a designated API. These scripts were written in NodeJS – a language I had never used before. Before the summer, I was well-versed in Java and Python. While the syntax of NodeJS was similar, its functionality was nothing like what I had dealt with before. Initially, I had to get used to the asynchronous nature of the language, which meant dealing with simultaneously running code within the same program. Working around callbacks and continuously reading / writing to files were my most significant challenges. However, I had always believed that once a programming language is learned, it isn’t too difficult to learn others. After all, the basic knowledge of variables, functions, and data storage stay fairly consistent across programming languages.

 

Nevertheless, even working with a brand new piece of technology for USFI compelled me to go back to my previous summer as a Business Operations Apprentice and utilize those skills once again. Throughout my experience working for USFI, I kept a customer focus – one of Anant’s core values – to ensure my work is benefitting the client. Whether it was finding the most effective Node modules or refactoring the code, every decision I made was for the benefit of the client so they were satisfied with the work I did.

 

The past two summers have been my most insightful and enriching experiences yet. Not only has it helped me to narrow down what I want to do later on in college and beyond, but it has taught me how to be a better worker. The three main lifelong lessons I have learned from my summer apprenticeships at Anant are interpersonal and communication skills, the power of google, and the importance of always prioritizing the customer.

Recap: CIO/CTO Training: Scaling Cloud Applications Using Docker

Docker is a technology that has the potential to transform the business of delivering software applications across a variety of industries. Not only that, but it will also greatly change the way that businesses view their enterprise architecture as it relates to their business strategy. With a fully dockerized application deployment environment, companies will be able to iterate, deliver, test, and QA their software products at a speed like never before.

 

Without the use of Docker, software development can quickly become a quagmire of different software and hardware specifications that need to be followed to the T. Adhering to these specifications itself becomes a huge strain on your organization’s software developer’s time as they try to navigate all the different version of frameworks they’re using, what OS needs to be run for what, where the database is located – in a nutshell, as your software team grows, the complexity of the underlying technology stack they use will also grow and sooner or later they will face “The Matrix of Hell”:

Source

 

Ideally, with a proper Docker deployment, your software team will no longer run into the “but in runs on my machine” problem and thus able to free up valuable resources to work on more pressing development issues. During our latest workshop we covered some of the first steps to get you or your organization started with using Docker, you can find a recording of part of the session below:

 

 

If you have any questions or feedback please don’t hesitate to reach out to me at rahul@anant.us. If you’d like to learn more about how technology can help you and your business you sign up for one of a free Roadmap conversation here!

Teaching Computers to Understand Language

With the recent advent of GPUs and increased computational power, machine learning and neural networks have risen from the grave and are now one of the forefront technologies in tackling anything a human would normally do. One of the biggest areas of research for this approach has been in understanding the nuances of language. Computers have traditionally struggled to learn languages due to thousands of rules and even more exceptions to each rule. Simple logic approaches fail to take into account context and interpretation and are rarely able to accurately interpret sentences and paragraphs.

In the past decade, researchers have begun applying recurrent neural networks to understand text. Neural networks are combinations of artificial neurons modeled off of the human brain. These networks can change the strength of connections in between the neurons based on training data given to them. For example, if a neural network receives pictures of apples and oranges along with labels for each picture, over time it can tune these connections and learn to distinguish the two objects.

Recurrent neural networks, frequently abbreviated to RNNs, are an extension of this idea and take input from previous iterations. So if an RNN was run on a sentence, it would take the classification of the previous word and use that as additional information for the current word. This makes RNNs particularly effective at handling sequential and time correlated data. In this case, since sentences are sequential constructions and previous words impact the interpretation of the current word, RNNs can better pick up contextualization and the nuances of language.

Continue reading

Team Collaboration – Slack, Airtable, and Trello: What Makes Them Good

During our most recent webinar, Rahul Singh covered a few of our favorite tools for team collaboration: Slack, Airtable, and Trello. The first two tools are both relatively new to our company whereas the latter one has come to the forefront of our company’s processes after a bit of time in the dark.

Slack

Slack was initially a tool that we tested out in our company to improve our internal communication. At the time, we turned away from it because we were afraid that it would become a major time suck that would slowly but surely decrease the efficiency of our team. We stuck with Google Hangouts / Chat for a bit but decided to give Slack a more solid go about a year and a half ago. Our experience thus far has been nothing but positive. The standard tier of Slack is more than enough for a small business to operate on, and the maximum amount of integrations allowed in the free tier is optimal for a company of our size. We use Slack with a variety of integrations, some of which are:

 

  1. Sending automated weekly reports to our managers from Metabase, an awesome open-source BI tool, to seamlessly get critical data in the hands of leadership.
  2. Receiving instantaneous updates on commits and deployments across our different set of software development tools in our #_devops channel:
    1. GitHub
    2. CodebaseHQ
    3. DeployHQ
    4. AppVeyor
  3. Sending tasks to either of our project management tools through our #_chief channel:
    1. Trello
    2. active.collab

Trello

We have most often used Trello as our “Master Backlog” project management system, there are many tasks we are often unable to complete in the current time window but nonetheless would like to keep in the backlog for when there are future opportunities to address them. Recently, we have started relying more heavily on Trello to assist us with Agile Scrum Planning for some of our external projects (clients) and internal initiatives (Research & Development, Sales & Marketing…etc).

 

 

The clean interface, the ease with which a user can move cards around, the overall ability to get a bird’s eye view of the project at any time, and the ability to add burndown charts and estimates to cards via plugins such as Scrum for Trello and Burndown for Trello make this tool an indispensable part of our workflow.

 

 

Below you can find a screenshot of a template for Agile Scrum Planning in Trello. Additionally, here is the link to it.

 

 

Airtable

Airtable is what you would get if you mixed Google Spreadsheets, Microsoft Excel, Trello, and a lightweight online database. We’ve covered this particular software tool more extensively in a blog post you can find here. We’ve used airtable for a good amount of things ranging from job applicant tracking to sales territory planning. Below you can find a screenshot of the “Advertising Campaigns” Airtable template found here.

 

Additionally, some of our favorite features of all three of these tools are:

  • Their ability to work with other systems in our process
  • The fact that they are SaaS products
  • Their focus on team collaboration and activity tracking
  • The speed at which they operate
  • Good native mobile applications for iOS and Android

 

At the end of the day all of these tools can work in conjunction with one another and help your team get a boost, but nonetheless, it is important that your process is ironed out and clear for everyone to understand. No amount of stellar software tools will fix issues that stem from faulty processes…and well most issues stem from faulty processes.

 

If you’re interested in finding out more you can access the slides and a recording of the webinar below!