yllix banner

Showing posts with label Software Engineering Daily. Show all posts
Showing posts with label Software Engineering Daily. Show all posts

Netflix Early Days with Greg Burrell

Netflix started with a DVD-by-mail product. The software infrastructure and operations practices needed for the DVD business were very different from those needed by a streaming video company.

Since the early days of Netflix, CEO Reed Hastings knew that the company would evolve to becoming a streaming video platform. But he did not know when the technology would be advanced enough to support video streaming, and he did not know how users would consume it.

Greg Burrell has worked at Netflix for 14 years. Greg was one of the first engineers to start working on video streaming, which Netflix first attempted to implement with a set top box that downloaded movies and played them on your television. After evolving this strategy, Netflix arrived at the current model of video streaming through apps on browsers and mobile devices.

As the company pivoted from DVD-by-mail to video streaming, Netflix encountered multiple challenges across engineering, operations, and communications across the company. At the time, there was no “DevOps” movement. There were not established continuous delivery practices. The available cloud technologies were immature and low level.

Greg joins the show to describe the evolutionary arc of Netflix’s engineering process. Greg also presents a model for software development that he describes as “Full Cycle Development”. At Netflix, engineering teams of full cycle developers work without dedicated operations or testing teams. It is a sophisticated approach to engineering management.

I spoke to Greg at the Fullstack Tech Radar Day, a software conference in Tel-Aviv put on by Tikal, an engineering community based out of Israel and San Francisco. This was a great conference, and we’ll be airing some additional content from it in the coming weeks.

 

ANNOUNCEMENTS

We are hiring two interns for software engineering and business development! If you are interested in either position, send an email with your resume to jeff@softwareengineeringdaily.com with “Internship” in the subject line.

The post Netflix Early Days with Greg Burrell appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2I32Tw0

Augmented Reality Gaming with Tony Godar

Augmented reality applications can be used on smartphones and dedicated AR headsets. On smartphones, ARCore (Google) and ARKit (Apple) allow developers to build for the camera on a user’s smartphone. AR headsets such as Microsoft HoloLens and Magic Leap allow for a futuristic augmented reality headset experience.

The most prominent use of augmented reality today is gaming, with a notable example being Niantic’s Pokemon Go. Tony Godar is a software engineer who works on augmented and virtual reality applications. He joins the show to talk about his day job working on virtual reality experiences, and an AR game he built called ARhythm.

Tony was the winner of the FindCollabs Hackathon and we also discussed his experience working on the project through FindCollabs.

RECENT UPDATES:

The FindCollabs Open has started. It is our second FindCollabs hackathon, and we are giving away $2500 in prizes. The prizes will be awarded in categories such as machine learning, business plan, music, visual art, and JavaScript. If one of those areas sounds interesting to you, check out findcollabs.com/open!

The FindCollabs Podcast is out!

We are booking sponsorships for Q3, find more details at https://softwareengineeringdaily.com/sponsor/

The post Augmented Reality Gaming with Tony Godar appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2Mdczcw

CamelCamelCamel: Amazon Price Tracker with Daniel Green

CamelCamelCamel is a tool for tracking prices on items on Amazon.com. The company was launched eleven years ago and is built off of the Amazon Product Advertising API. Daniel Green is one of the founders of CamelCamelCamel, and he joins the show to describe his experience building the product.

Amazon and CamelCamelCamel (C3) have a complex relationship. C3 makes its money from referral listings. When a user tracks the price of an Amazon item using C3, that user will probably eventually click on the referral listing on C3. If the user purchases the item on Amazon, C3 gets a percentage of the purchase from Amazon.

C3 has millions of product listings where they are tracking the price of items on Amazon. They have created a directory with a large subset of Amazon’s items by leveraging an API that was originally meant for advertising. Whether or not this is a proper use of the API, C3 arguably leads to more purchasing volume on Amazon–which is ostensibly why Amazon lets the company continue to operate.

In today’s show, Daniel gives a history of CamelCamelCamel, including his own background as an engineer working in finance and how he wound up working on C3 for the past decade. We also talk through how C3 is architected.

RECENT UPDATES:

The FindCollabs Open has started. It is our second FindCollabs hackathon, and we are giving away $2500 in prizes. The prizes will be awarded in categories such as machine learning, business plan, music, visual art, and JavaScript. If one of those areas sounds interesting to you, check out findcollabs.com/open!

The FindCollabs Podcast is out!

We are booking sponsorships for Q3, find more details at https://softwareengineeringdaily.com/sponsor/

The post CamelCamelCamel: Amazon Price Tracker with Daniel Green appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2HNrEMC

Gaming with Eli Brown

Gaming is becoming mainstream.

Popular multiplayer games such as Fortnite and Minecraft present players with a massive virtual world to explore, build, and compete within. Turn-based games such as Hearthstone and Magic are breeding a new generation of board game and card game aficionados. Social media networks like Twitch and YouTube have turned gaming into a voyeuristic sport that is outcompeting many physical sports games for attention.

Guilded is a platform for managing gaming teams. On Guilded, there are teams for games like League of Legends, Fortnite, and World of Warcraft. These teams use Guilded to manage calendars, Discord bots, forum software, documents, statistics, and recruiting.

This might sound confusing–why does a gaming team need document management, calendars, and analytics? Are we talking about a video game team or a software company? To understand Guilded, you need to understand the rapidly changing modern gaming ecosystem.

Eli Brown is a founder of Guilded.gg. He joins the show to talk about the world of gaming, its intersection with social media, and the fascinating engineering problems involved in building a platform for gaming teams.

RECENT UPDATES:

The FindCollabs Open has started. It is our second FindCollabs hackathon, and we are giving away $2500 in prizes. The prizes will be awarded in categories such as machine learning, business plan, music, visual art, and JavaScript. If one of those areas sounds interesting to you, check out findcollabs.com/open!

The FindCollabs Podcast is out!

We are booking sponsorships for Q3, find more details at https://softwareengineeringdaily.com/sponsor/

The post Gaming with Eli Brown appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2QjUFUc

Monolithic Repositories with Ciera Jaspan

Google’s codebase is managed in a single monolithic repository. An engineer at Google can explore almost any area of the codebase within the entire company. In order to enable this, Google has built tooling to support the monolithic repo, including a virtual file system and a set of build tools.

A monolithic repository is not to be confused with a monolithic deployment. Google’s infrastructure consists of thousands of small services interacting over a network, and scaling individually. But all of the code for each of these different independent modules is in the same version control system.

Ciera Jaspan is a staff software engineer at Google working on developer infrastructure. She worked on an internal research project within Google to find out how engineers felt about the monolithic repository system and how it compared to a large number of small repositories.

Ciera joins the show to discuss repository management, internal tooling, and Google’s approach to researching developer productivity within the company.

RECENT UPDATES:

The FindCollabs Open has started. It is our second FindCollabs hackathon, and we are giving away $2500 in prizes. The prizes will be awarded in categories such as machine learning, business plan, music, visual art, and JavaScript. If one of those areas sounds interesting to you, check out findcollabs.com/open!

The FindCollabs Podcast is out!

We are booking sponsorships for Q3, find more details at https://softwareengineeringdaily.com/sponsor/

The post Monolithic Repositories with Ciera Jaspan appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2M3qguD

Scaling Intuit with Alex Balazs

Alex Balazs is the Intuit Chief Architect and has been working at the company for almost twenty years.

Intuit’s products include QuickBooks, TurboTax, and Mint. These applications are used to file taxes, manage business invoices, conduct personal accounting, and other critical aspects of a user’s financial life. Because the applications are managing money for users, there is not much room for error.

When Intuit was started, the company made desktop software. In his time at Intuit, Alex played a key role in rearchitecting the monolithic desktop applications to be resilient, reliable web applications. Intuit originally managed this software on their own servers. Since then, Intuit has migrated to the cloud using AWS.

Alex joins the show to discuss his experience scaling Intuit, his strategy for cloud migration, and his evaluation criteria for questions of build versus buy.

RECENT UPDATES:

The FindCollabs Open has started. It is our second FindCollabs hackathon, and we are giving away $2500 in prizes. The prizes will be awarded in categories such as machine learning, business plan, music, visual art, and JavaScript. If one of those areas sounds interesting to you, check out findcollabs.com/open!

The FindCollabs Podcast is out!

We are booking sponsorships for Q3, find more details at https://softwareengineeringdaily.com/sponsor/

The post Scaling Intuit with Alex Balazs appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2LX84Tu

EmergingMarkets: Kenya with Nelly Cheboi

Africa is rapidly adopting the same software and hardware technologies that have transformed the western world over the last few decades. But access to computers and technology education is still uneven. Where there is access to computers, smartphone adoption often comes before access to laptops or desktop computers.

Nelly Cheboi is the founder of TechLit Africa, an organization that works to connect schools and families in Africa with computers and software. Nelly studied computer science, and worked as a software engineer before leaving her career to focus full-time on building a scalable model to take refurbished computers and give them to Africans who can make good use of them.

TechLit Africa is also building a software stack to equip schools in Africa without an Internet connection with an internal subnet including Wikipedia and other educational resources, so that people in the school can get an Internet-like experience despite a lack of access to the full Internet.

 

RECENT UPDATES:

The FindCollabs Open has started. It is our second FindCollabs hackathon, and we are giving away $2500 in prizes. The prizes will be awarded in categories such as machine learning, business plan, music, visual art, and JavaScript. If one of those areas sounds interesting to you, check out findcollabs.com/open!

The FindCollabs Podcast is out!

We are booking sponsorships for Q3, find more details at https://softwareengineeringdaily.com/sponsor/

The post EmergingMarkets: Kenya with Nelly Cheboi appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2WdQmPw

Facebook Strategy with Mike Vernal

Facebook’s strategy is shaped by long term goals, short term requirements, and the available resources of the company.

Long term goals are necessary for thinking through big decisions such as acquisitions, hardware product investments, and open source software ecosystems. To implement long term goals, Facebook needs to communicate the vision of the company and foster an internal culture that supports that vision.

Short term requirements can affect how the company is thinking on a more immediate time horizon.

When Facebook realized the importance of mobile computing, the mentality in the company quickly shifted from looking at mobile as a tax on engineering resources to a long-term source of business value. When Google started to work on Google+, Facebook engineers focused their resources on the potential competitive threat.

Facebook’s strategy is implemented by the engineers, product managers, and other employees of the company. Facebook is unique in its ability to allow those employees to self-assemble into work that is meaningful to the individuals as well as to the company.

As the long term goals and short term requirements of Facebook change over time, company resources are shifted to focus the company on the correct set of priorities. Some of those priorities might be speculative investments in new technologies. Other priorities might include doubling down on areas of the company that are showing promise.

Mike Vernal worked as a VP of product and engineering at Facebook for 8 years. He left the company in 2016 and joined Sequoia Capital, where he now works as a partner. In his time at Facebook, he helped architect and implement strategies relating to product direction and engineering.

Mike joins the show for a discussion about his time at Facebook and the strategic lessons that he learned from his time at the company.

 

RECENT UPDATES:

The FindCollabs Open has started. It is our second FindCollabs hackathon, and we are giving away $2500 in prizes. The prizes will be awarded in categories such as machine learning, business plan, music, visual art, and JavaScript. If one of those areas sounds interesting to you, check out findcollabs.com/open!

The FindCollabs Podcast is out!

We are booking sponsorships for Q3, find more details at https://softwareengineeringdaily.com/sponsor/

The post Facebook Strategy with Mike Vernal appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2Js5fHN

Facebook React with Dan Abramov

React is a set of open source tools for building user interfaces. React was open sourced by Facebook, and includes libraries for creating interfaces on the web (ReactJS) and on mobile devices (React Native).

React was released during a time when there was not a dominant frontend JavaScript library. Backbone, Angular, and other JavaScript frameworks were all popular, but there was not any consolidation across the frontend web development community. Before React came out, frontend developers were fractured into different communities for the different JavaScript frameworks.

After Facebook open sourced React, web developers began to gravitate towards the framework for its one-way data flow and its unconventional style of putting JavaScript and HTML together in a format called JSX. As React has grown in popularity, the React ecosystem has developed network effects. In many cases, the easiest way to build a web application frontend is to compose together open source React components.

After seeing the initial traction, Facebook invested heavily into React, creating entire teams within the company whose goal was to improve React. Dan Abramov works on the React team at Facebook and joins the show to talk about how the React project is managed and his vision for the project.

 

RECENT UPDATES:

The FindCollabs Open has started. It is our second FindCollabs hackathon, and we are giving away $2500 in prizes. The prizes will be awarded in categories such as machine learning, business plan, music, visual art, and JavaScript. If one of those areas sounds interesting to you, check out findcollabs.com/open!

The FindCollabs Podcast is out!

We are booking sponsorships for Q3, find more details at https://softwareengineeringdaily.com/sponsor/

The post Facebook React with Dan Abramov appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2WLLbmY

Introduction to Automated Machine Learning (AutoML)

Machine learning is undoubtedly one of the biggest strides in technology. Its methods are employed in fields ranging from biomedical industry to agriculture, from personalized assistants to self-driving vehicles. Ranked as the 2nd most important hard skill to have according to LinkedIn, machine learning and AI require careful study and understanding of different algorithms, model types, their advantages and disadvantages, and use cases.

In what is called a machine learning pipeline, there are several steps:

  1. Data preprocessing: scaling, missing value imputation
  2. Feature engineering: feature selection, feature encoding
  3. Model selection
  4. Hyperparameter optimization

Source: https://towardsdatascience.com/understanding-feature-engineering-part-1-continuous-numeric-data-da4e47099a7b

A machine learning engineer, or a data scientist, when building the machine learning pipeline for a specific task has to carefully design each of these steps. These steps are usually co-dependent. To give an example, consider a problem where the use of SVMs are desirable in building the model. Then, since SVMs cannot work natively with categorical features, these have to be transformed in some way, for example by one hot encoding, to numerical features. In this case, the model selection affects how certain features are encoded.

Designing and optimizing these steps require a deep knowledge on a wide range of algorithms, their strengths and weaknesses, hyperparameters of algorithms, and the encoding of data for these algorithms to work well. In a technological landscape where AI is being integrated into many fields, there exists a deficit of data scientists with enough expertise to analyze diverse sets of data and build machine learning models.

In an effort to make machine learning more accessible, to reduce the human expertise required, and to improve model performance, automated machine learning emerged as an exciting new area of active research.

Figure from Microsoft Azure Machine Learning AutoML

Automated machine learning, or AutoML, is an umbrella term for a particular approach to machine learning that aims to automate any part of the process of building a machine learning model from raw data.

AutoML caught the spotlight after Google announced its AutoML suite, Google Cloud AutoML, and Microsoft announced AutoML in Azure Machine Learning. Google’s start with AutoML came in the form of AutoML Vision for image recognition. As the first tech giant to offer AutoML to developers around the world, Google is continuing to expand on AutoML, with new tools around Cloud AutoML announced at Google Next ‘19.

Current AutoML tools like Auto-WEKA and auto-sklearn focus on automating the steps of model selection and hyperparameter optimization. This subset of automation problem is coined as CASH, Combined Algorithm Selection and Hyperparameter Optimization problem. The aim of CASH is to find the joint algorithm and hyperparameter settings that minimizes loss of the training dataset, given a set of algorithms and hyperparameters of these algorithms.

CASH problem from Efficient and Robust Automated Machine Learning by Feurer et. al.

An important point to consider in AutoML applications is the budget: the developer has to specify the limits of the resources being used in the AutoML optimization process. This budget usually consists one or the combinations of CPU/GPU usage, running time, and memory usage.

Hyperparameter Optimization

In numerous machine learning models and algorithms, there exist two sets of parameters that are sometimes confused: model parameters and hyperparameters. Model parameters can also be known as weights in linear regression and deep learning. These model parameters are learned by the model from the data during training.

Hyperparameters, on the other hand, are different. Their values are set by the developer before the training stage starts. They are not learned from the data during training, like model parameters, and so hyperparameters are usually constant during the training phase.

To give some concrete examples for hyperparameters:

  1. Learning rate (η)
  2. Hidden layers and hidden units in deep learning models
  3. Number of neighbors k in kNN

Hyperparameter selection is crucial to the performance of a machine learning model. For example, in a neural network model, if the learning rate is set too high, the gradient descent might overshoot the local minima; if the learning rate is set too low, the training might take a long time, since the steps taken during gradient descent are too small.

Source: https://www.jeremyjordan.me/nn-learning-rate/

Hyperparameter optimization is the process of searching for the best hyperparameter combinations for a model to achieve desired performance and accuracy. In an AutoML perspective, hyperparameter optimization is the most basic, fundamental task to be completed.

The problem is not easy, however. For any given machine learning model, there can be numerous hyperparameters. Each of these parameters can have different domains: real-valued, binary, categorical, or integer-valued. In the case of real- and integer-valued hyperparameters, the feasible domains are unknown: the layers of a deep learning model, an integer-valued hyperparameter, can virtually take values between 1 and hundreds.

The configuration space becomes exceedingly complex as the number of hyperparameters increase. Every hyperparameter to be considered needs to have a combination with every other hyperparameter configuration for an exhaustive search. Another problem that arises when more hyperparameters are considered is selecting which hyperparameters to optimize for. Not all HPs have the same effect on the performance of a model, and we don’t want to waste time optimizing hyperparameters that will give us only a marginal performance increase.

Thankfully, the optimization problem has been studied, and feasible solutions exist.

The first solution is quite straightforward: grid search. In grid search, the developer declares a set of values to be considered for each hyperparameter to be optimized. Then the model is trained with different combinations involving each hyperparameters, with a Cartesian product, and the hyperparameter configuration from the best performing model is selected.

However, grid search suffers from the curse of dimensionality, as each additional hyperparameter exponentially increases the number of times the loss function must be evaluated. Another problem is the initialization: if the developer has not specified the optimal values in the set of each hyperparameter, the optimum can never be reached.

An improvement is random search. As the name suggest, random search takes random configurations of hyperparameters and records the results until a specified budget is exhausted. Random search solves the curse of dimensionality, since we do not need to increase the number of search points whenever a new dimension is added. Random search performs better when some hyperparameters are more important in the performance of the model, resulting in a low effective dimensionality. In theory, given enough budget, random search can find the optimal configuration.

Grid search and random search, from Random Search for Hyper-Parameter Optimization by Bergstra and Bengio

However, grid search has its downsides as well. Reaching the optimum is not guaranteed, and the replicability depends on a random seed. Is there a better and more rigorous method?

The answer, and the most widely-used solution to hyperparameter optimization problem is Bayesian optimization. Bayesian optimization is a sequential model-based approach to find the optimal configuration for any given argmax or argmin function. It consists of two main parts: a probabilistic surrogate model and an acquisition/loss function. The surrogate model has a prior distribution that we think is close to the unknown objective function, while the acquisition function allows us to decide which point to evaluate next.

Bayesian optimization starts by taking a point in the multi-dimensional space of hyperparameter configurations, gets the corresponding objective function value, and then selects a new point that minimizes the acquisition function. This point is used to augment our data set, and becomes a historical observation to be used in future point selections.

Bayesian optimization algorithm, from Taking the Human Out of the Loop: A Review of Bayesian Optimization by Shahriari et. al.

Bayesian optimization is designed to trade off exploration and exploitation. The acquisition functions’ values are lower where uncertainty in the surrogate model is large, to encourage exploration. The acquisition function also gives lower values where model prediction is also low, utilizing the historical knowledge we have of the true objective function behavior, to encourage exploitation.

The performance of Bayesian optimization rests on selecting an appropriate surrogate model and acquisition function. The traditional surrogate model utilizes Gaussian processes, but further improvements are suggested, such as random forests as in SMAC framework, or Tree-structured Parzen Estimator (TPE) approaches.

Bayesian optimization through 3 iterations for an argmax task, from Taking the Human Out of the Loop: A Review of Bayesian Optimization by Shahriari et. al.

While Bayesian optimization is harder to wrap your head around and visualize compared to grid and random searches, it’s the most common hyperparameter optimization method used in the current AutoML libraries.

Case Study: auto-sklearn

 

From Efficient and Robust Automated Machine Learning by Feurer et. al.

auto-sklearn is a popular automated machine learning toolkit, built on the widely used scikit-learn library for machine learning. auto-sklearn as a project, inspired by Auto-WEKA, expands upon the methods used by AutoML frameworks.

The core of the model is straightforward: taking into consideration 15 classification algorithms, 14 feature preprocessing methods, and 4 data preprocessing methods from scikit-learn, and taking suitable combinations, a parameter space of 110 hyperparameters are created. Since there is a conditionality between some preprocessing methods and classifiers, the number of hyperparameters is not 14 * 15 * 4 = 840, but is rather constrained at 110. This core ML framework is then optimized using Bayesian optimization to find the best possible combinations of preprocessors, classifier, and hyperparameters.

The innovative part of auto-sklearn comes in two methods: using meta-learning to warmstart Bayesian optimization for increased performance, and using ensemble methods with the resulting top classifiers to increase robustness and reduce overfitting.

Meta-learning is a field of machine learning that focuses on learning to learn. It’s based on the approach of systematically observing how ML approaches perform on a wide range of learning tasks, and using this knowledge in the form of meta-data on approaches to learn new tasks much faster.

In auto-sklearn, meta-learning is used to collect meta-features and performance metrics on datasets to identify the characteristics of the dataset that can suggest efficient algorithm and hyperparameter instantiation. Any newly encountered dataset goes through a stage of computation for its meta-features, and the result is compared with stored dataset meta-features to select k ML framework instantiations to be considered in the Bayesian optimization stage.

The other improvement, automated ensemble construction, takes advantage of the fact that there might be more than one model that performs well on the given dataset. If there are models that are close to the best performing model, instead of discarding them, they can be used to construct an ensemble.

auto-sklearn is extremely simple to use, as one would expect from an AutoML library. The only thing necessary is a dataset, and the An example using auto-sklearn for a regression task:

X, y = sklearn.datasets.load_boston(return_X_y=True)
feature_types = (['numerical'] * 3) + ['categorical'] + (['numerical'] * 9)
X_train, X_test, y_train, y_test = \
    sklearn.model_selection.train_test_split(X, y, random_state=1)

automl = autosklearn.regression.AutoSklearnRegressor(
    time_left_for_this_task=120,
    per_run_time_limit=30,
    tmp_folder='/tmp/autosklearn_regression_example_tmp',
    output_folder='/tmp/autosklearn_regression_example_out',
)
automl.fit(X_train, y_train, dataset_name='boston',
           feat_type=feature_types)

print(automl.show_models())
predictions = automl.predict(X_test)
print("R2 score:", sklearn.metrics.r2_score(y_test, predictions))

You can see the full example here, and more examples here. Using auto-sklearn is as simple as calling the appropriate classifier or regressor with a specified budget and input/output folders. With a single call to the fit method of auto-regressor, auto-sklearn finds the best performing model for the dataset and task at hand.

Open-Source Libraries for AutoML

Auto-WEKA: Based on the open-source WEKA project, Auto-WEKA is the first open source AutoML tool to be developed, dating back to 2013. Auto-WEKA 2.0 was released subsequently in 2016, adding support for regression, parallelism, and optimization for new metrics. Auto-WEKA 2.0 is available in WEKA as a package, and is quite accessible to tinkerers and developers alike.

Auto-Keras: An open source library for automated neural network learning. Trying to tackle the neural architecture search (NAS) problem, Auto-Keras utilizes network morphism and Bayesian optimization.

TPOT (Tree-based Pipeline Optimization Tool): Taking a different approach from the aforementioned tools, TPOT is an AutoML tool that uses genetic programming for its optimization procedure. Implemented upon scikit-learn, TPOT is offered as a Python library.

Limitations and Conclusion

AutoML is still an active research area, and there’s progress to be made. Current approaches include solving tasks like classification and regression, and can configure neural networks. However, AutoML solutions have their limitations:

  1. Problems such as semi-supervised learning, unsupervised learning, and reinforcement learning are not yet tackled by the AutoML community.
  2. AutoML algorithms rely on the data being clean and relevant. Data cleaning and feature engineering are not yet supported by any of the AutoML approaches.
  3. AutoML jobs can take quite a long time, in the magnitude of days, to come up with a well-performing solution, even with a warmup step.

Machine learning and AI are becoming more accessible with each passing year. While high-level libraries like Keras hide the underlying complexity of deep learning models, AutoML approaches take one step further, and are able to provide feasible machine learning models just from a dataset as an input. This provides a smooth pathway into machine learning for non-experts. AutoML can provide production-ready models for small startups that cannot dedicate enough budget to hiring ML experts.

This does not mean that AutoML is only directed towards non-experts. Techniques used in AutoML libraries can provide powerful tools for automated optimization for developers, and the results of AutoML searches can provide valuable intuition towards model choices and hyperparameter configurations. AutoML also does not mean that there’ll be no need for machine learning experts – collecting data, ingesting data, cleaning and preprocessing, monitoring and evaluating are important parts of any ML pipeline, and require expertise.

At the end, towards the aim of making AI more available to the general public, developments in AutoML constitute a huge stride in the right direction. With the recent rise it’s seen as a research interest, AutoML can revolutionize the way ML is practiced.  

The post Introduction to Automated Machine Learning (AutoML) appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2WROTvv

Facebook Management with Jocelyn Goldfein

Facebook engineering is designed to self-assemble.

When an engineer joins Facebook, the engineer goes through boot camp, where they are exposed to multiple projects to find a good fit in terms of technical skills and personal preferences. Since there are so many different initiatives within the company at any given moment, a new hire can usually find something to work on through this exploration.

As an engineer builds credibility within Facebook, opportunities to move to other projects or to become a manager will present themselves, allowing the engineer to move within the company as they mature and their interests change. The sense of autonomy and freedom to explore is one feature of Facebook engineering that distinguishes the company.

Facebook is a flat, decentralized organization by nature. But there have been existential moments in Facebook’s history where an executive mandate was required. During these existential situations, Facebook centralizes and becomes a more top-down environment.

Facebook’s most crucial inflection point to date was its shift to focusing on mobile computing.

Even two years after the launch of the iPhone, it was not obvious that the world of consumer computing would change completely due to mobile devices. Facebook was becoming a dominant place where consumers navigated to on desktop, and Facebook engineering was focused on optimizing that desktop experience.

As the impact of the iPhone became noticeable, Facebook found itself with a desktop web product in the middle of a platform shift away from the desktop. During this same time, Facebook was beginning to succeed with its advertising platform and was evaluating an initial public offering.

Facebook leadership was able to recognize the importance of mobile computing in time to develop high quality mobile applications, but there were numerous challenges.

The Facebook desktop web app had been difficult enough to build due to the unprecedented data requirements and amount of interactivity. Mobile introduced the additional hurdles of limited bandwidth and distinct native operating systems in Android and iPhone.

Facebook’s early efforts to build a mobile application involved a cross-platform HTML5 solution. HTML5 had insufficient performance for Facebook’s needs, and the company needed to develop native apps in order to deliver the desired experience.

Facebook’s ability to pivot to mobile is comparable to the classic story of Intel pivoting from a memory company to a microprocessor company. To succeed at mobile application development, Facebook had to shift its focus dramatically, reallocating engineering resources and acqui-hiring small mobile companies in order to build up the domain expertise for mobile.

As a side effect of this transition to mobile, Facebook developed an understanding of how dramatically software engineering was changed by the introduction of smartphones and the high bandwidth requirements of social networking. The challenges of this new paradigm led to the development of open source tools such as GraphQL and React Native, which have allowed countless projects to build applications more easily.

Jocelyn Goldfein was an engineering director at Facebook for four years, from 2010 to 2014. She currently works as an investor at Zetta Venture Partners. In her time at Facebook, Jocelyn saw the shift to mobile firsthand. In today’s episode, she describes how Facebook management works, and gives her perspective on the distinguishing characteristics of the engineering organization as a whole.

RECENT UPDATES:

The FindCollabs Open has started. It is our second FindCollabs hackathon, and we are giving away $2500 in prizes. The prizes will be awarded in categories such as machine learning, business plan, music, visual art, and JavaScript. If one of those areas sounds interesting to you, check out findcollabs.com/open!

The FindCollabs Podcast is out!

We are booking sponsorships for Q3, find more details at https://softwareengineeringdaily.com/sponsor/

The post Facebook Management with Jocelyn Goldfein appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2YvgcMd

Facebook Developers with Nick Schrock

When Facebook was scaling in its early years, the company developed engineering practices that were unlike any other organization before it.

Early Facebook engineering developed unusual practices because the problem set was unusual. Facebook was a highly detailed, highly interactive, multi-user web application. Facebook was pushing the limits of PHP and JavaScript in a time when there were not simple frameworks to help with user interface development and data fetching.

In addition to unique engineering problems, the Facebook product itself was also unique. When a product has as much traction as Facebook did in the early days, how are you supposed to manage the direction of that product?

Should you double down on the core competency of the product, and make it as good as possible at simply connecting friends to each other? Or should you rapidly expand into adjacent systems like messaging, groups, and photos? How should you allocate developer resources when you have problems to be solved at every layer of the stack, from backend infrastructure to frontend performance?

At a typical company, you would put all these engineering problems and product opportunities into some kind of project management software and assign developers to work on them, and gradually make steady, measured progress. The downside of that approach is that it slows down the pace of product creation and experimentation, and turns software development into a top-down, bureaucratic process.

At Facebook, developers self-assembled into teams that did what needed to be done. The engineers who were the most productive and charismatic could quickly build a reputation for themselves and become technical leaders. These “influencer engineers” within Facebook had a proven track record, and would become magnets for other engineers who wanted to contribute to the projects with the most momentum.

Facebook is a case study in the ability for developers to self-organize into groups who are working on projects that are meaningful to the company and personally satisfying to the individual engineers. Many engineers in the software industry work under a less capable manager who has complete control over their creativity. This leads to employee churn, dissatisfaction, and burnout.

Facebook’s ability to move fast is predicated on its ability to match engineers with problems that are interesting to those particular individuals. Whether you want to work on newsfeed or developer productivity tools or machine learning research, there is a path within Facebook to finding a problem that is both important and fun.

Facebook’s unique set of engineering challenges required the company to develop a unique set of internal tools. Because Facebook had data and throughput requirements which were unprecedented, the available tools and best practices at the time did not satisfy Facebook’s requirements. Over the years, Facebook has developed its own databases, caching strategies, and JavaScript frameworks.

Nick Schrock worked at Facebook for eight years. He is best known as a co-creator of GraphQL, a tool for efficiently fetching data through a federated request language. GraphQL was the result of years of evolution of internal tooling within Facebook.

Nick has discussed the creation of GraphQL in other podcasts, and we will have a more dedicated episode around a retrospective of GraphQL in the near future. Today’s episode is about the process by which developers at Facebook self-organized, and Nick’s ideas around how to identify a need for an internal tool.

Since leaving Facebook, Nick has parlayed his experience in developer tools into Dagster, a programming model for data applications.

RECENT UPDATES:

The FindCollabs Open has started. It is our second FindCollabs hackathon, and we are giving away $2500 in prizes. The prizes will be awarded in categories such as machine learning, business plan, music, visual art, and JavaScript. If one of those areas sounds interesting to you, check out findcollabs.com/open!

The FindCollabs Podcast is out!

We are booking sponsorships for Q3, find more details at https://softwareengineeringdaily.com/sponsor/

The post Facebook Developers with Nick Schrock appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2vV8Ntl

Facebook Engineering with Pete Hunt

Facebook engineering is commonly described by two words: move fast.

Building products quickly has been a differentiating characteristic of the company since its inception. From the longtime engineers to the summer interns, Facebook instills a sense of immediacy and opportunity in all of its employees.

The goal of Facebook is to make the world more open and transparent, with the intention of creating greater understanding and connection through Internet services. More than any other company in history, Facebook has enabled people to communicate with each other via simple user interfaces and real, authenticated human identity.

Facebook must move fast, because the vision for Facebook is without precedent. It may feel like the Facebook mission is already finished, because you can already use Facebook to connect with anyone across the world with an Internet connection.

But once you are connected to somebody on Facebook, there are only a small number of interactions you can take: sending a message, sharing a photo, broadcasting a video stream. There are so many more parts of our lives waiting to be digitized, and many of these require a real identity system to work properly.

More than any other company, Facebook is positioned to expand our system of real-world human trust onto the Internet. The depth and breadth of the engineering problems required to accomplish this demands that Facebook move fast. To move slower would cause all of us to pay the opportunity cost of having to wait longer to interconnect our global society.

Pete Hunt worked as an engineer at Facebook for three and a half years. At Facebook, he helped build React, a set of technologies that have significantly improved frontend application interface development. After the Instagram acquisition, Pete was the first engineer from Facebook to join the Instagram team to help bring the two companies together.

Pete left Facebook in 2014 to start Smyte, a company that made trust and safety tools for marketplaces and social networks. Smyte was acquired by Twitter, where Pete now works on engineering problems relating to trust, safety, health, and infrastructure.

Pete joins the show for the first of several episodes with Facebook engineers. In these episodes, we will explore the engineering practices of Facebook–from scaling Facebook’s PHP monolith to open sourcing React and GraphQL. Other topics will include management, onboarding, and product strategy.

Our goal is to present a holistic picture of how Facebook engineering works, so that other organizations can learn to adopt practices that will allow them to move faster. We hope you enjoy this series on Facebook engineering.

RECENT UPDATES:

The FindCollabs Open has started. It is our second FindCollabs hackathon, and we are giving away $2500 in prizes. The prizes will be awarded in categories such as machine learning, business plan, music, visual art, and JavaScript. If one of those areas sounds interesting to you, check out findcollabs.com/open!

The FindCollabs Podcast is out!

We are booking sponsorships for Q3, find more details at https://softwareengineeringdaily.com/sponsor/

The post Facebook Engineering with Pete Hunt appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2WLZQi9

Airtable with Howie Liu

Software engineering is harder than it should be. There are many people who have an app idea that they are not sure how to build. Some of these people are highly technical professionals like real estate agents, scientists, and accountants.

These professionals learn to use spreadsheets in their day-to-day work. Spreadsheets are also used widely by young people such as students. Spreadsheet users vary in terms of how familiar they are with the programmability of a spreadsheet, but there are certainly more people who have built complex spreadsheets than there are people who have built complex web apps.

Airtable is a tool for making application development easier and more accessible. The Airtable interface is similar to a spreadsheet and can be used for most spreadsheet applications. It can also serve as a rich backend database system to improve the productivity of software developers who are fully capable of building web applications.

There are high-level programmable components called Blocks and integrations with developer APIs like Twilio and Stripe.

Airtable has a permissions and collaboration system that allows interaction between engineers who might be using Airtable as a programmatic transactional database and operations members who might need to read or edit specific parts of the data on an ad hoc basis.

Howie Liu is the CEO of Airtable and he joins the show to talk about his vision for the product and the engineering problems he is working on to realize that vision. Airtable has not been trivial to build, and has required its own custom database backend and its own JavaScript rendering system.

Special thanks to Gareth Pronovost who is a full-time Airtable expert that I found on YouTube and who was generous enough to take some time to have a call with me and describe his experience using Airtable. The fact that there is a full profession around creating Airtable applications speaks to how unique this platform is.

RECENT UPDATES:

FindCollabs is a company I started recently

The FindCollabs Podcast is out!

FindCollabs is hiring a React developer

FindCollabs Hackathon #1 has ended! Congrats to ARhythm, Kitspace, and Rivaly for winning 1st, 2nd, and 3rd place ($4,000, $1000, and a set of SE Daily hoodies, respectively). The most valuable feedback award and the most helpful community member award both go to Vynce Montgomery, who will receive both the SE Daily Towel and the SE Daily Old School Bucket Hat

We are booking sponsorships for Q3, find more details at https://softwareengineeringdaily.com/sponsor/

Podsheets is our open source set of tools for managing podcasts and podcast businesses

New version of Software Daily, our app and ad-free subscription service

The post Airtable with Howie Liu appeared first on Software Engineering Daily.



from Software Engineering Daily http://bit.ly/2YiCKQn

Sensor Tower: Mobile game publishers continue to reach $1M at high rates

Sensor Tower reports that many mobile game publishers are hitting the $1M earnings milestone in 2021 -- though not as many as in 2016. Rea...