Posts

A Deeper Dive into Natural Language Processing with number8 Senior Architect Alexis Alulema

Alexis Alulema – The first time someone hears about Natural Language Processing (NLP), they often don’t consider it to be overly complicated. After some additional consideration, though, they’ll realize how much the AI community has worked on the topic. The technology is even appearing in headlines like this one, as featured on sciencealert.com: Google’s AI has Learned to Become ‘Highly Aggressive’ in Stressful Situations.

As the above article suggests, this technology could become dangerous in the wrong hands or if managed incorrectly. However, I believe that if we get a better understanding of the nuts-and-bolts of NLP, we will conclude that there is nothing ‘magic’ under the hood. Rather, there is a growing, rigorous body of scientific work on creating better algorithms to process data and generate impressive solutions.

Neural Networks have started to become ubiquitous ever since Deep Learning experienced considerable growth with big data, cloud computing, and the appearance of Deep Learning frameworks like TensorFlow or PyTorch. These advancements are visible in areas like Computer Vision (CV), where predictions are incredibly precise and reach 95-98% accuracy. This precision is at the core of impressive advancements in face detection, artificial face generation, self-driving cars, and many other implementations.

Natural Language Processing

In comparison, NLP currently reaches accuracy rates of around 80%. At first glance, it may appear that NLP is not as good as CV. However, I don’t believe this is a fair evaluation, as language is ambiguous and context-bound. For example, a native speaker of a language can often use and understand regional slang and idiomatic expressions comfortably. In comparison, a non-native speaker may have trouble understanding these expressions and might express similar ideas in a different way. These and other factors create a massive task for prediction algorithms, which must attempt to understand idiomatic expressions and much more due to the complexity of language. The best-rated algorithms like GPT-2 require more than 150 GB of data to train the algorithm; for context, 150 GB of training data means days of training neural networks algorithms on super-computers.

I implore you to dive deeper into this topic by reviewing my recently published paper, Deep Learning Methods in Natural Language Processing. In the paper, I attempt to classify the most relevant NLP Deep Learning methods to understand how to use them and identify which situations are best suited for specific NLP methods.

Who would benefit from this content

This paper is a state-of-the-art document that will serve as a starting point for researchers or developers who want to become familiar with the broad spectrum of NLP techniques and how to optimally apply them in different scenarios.

 

Alexis Alulema
Senior Software Architect and Machine Learning Engineer

LinkedIn: https://www.linkedin.com/in/alulema/
Twitter: @alulema
Personal Website: https://alexisalulema.com/

Tips For Transitioning To An Agile Approach To Software Development

The agile software development lifecycle is often considered one of the best approaches by industry experts. Studies show that this approach ensures software development teams are 37% faster in delivering products and 16% more productive, which can benefit your company significantly.

Many software development teams follow the traditional waterfall approach, which is fairly straightforward while also being very rigid. With this approach, the design tends to happen all at once up front, with the final product being unveiled at completion.

Such an approach isn’t very suitable for modern markets, especially if you need to develop a complex, large-scale application. Follow along for some tips to help teams that are intimidated by the prospect of transitioning to an agile approach.

6 Tips To Help Your Software Team Become More Agile

1. Make Sure Everyone is Onboard

Agile relies on collaboration between different teams. it will only be successful after a comprehensive implementation involving all departments from executive and management levels to ground teams. That’s why it is important to make sure everyone is on board and agrees to adopt the agile approach. Program sponsors must get management commitment in particular to ensure success. Make sure both business and IT sides of your company agree to get involved before working on the transition.

2. Train Staff

The Waterfall and V-Shaped software development approaches don’t require much formal training, but agile is different. It is a little more complex and flexible, which means training can help developers adopt it completely. A few training sessions will ensure your team is familiar with the system and knows how to use it well. It will also ensure your staff doesn’t feel confused or overwhelmed by agile’s more complex workflow. Making the transition easier for a development team ensures your end-product isn’t affected by the change.

3. Maintain Communication

Communication is an important aspect of Agile because different teams working on different phases of the product must remain on the same page. Communication is especially vital when you’re transitioning from other systems like Waterfall or V-Shaped to agile.. Teams should work from the same location and report their progress on a consistent schedule to team leaders. This will help you notice any issues with adaption and clogs in the machine early on.

4. Collaboration is Important

Agile places a lot of emphasis on collaboration during software development. Teams that were traditionally isolated from one another must communicate regularly to ensure they move through all phases smoothly. That can only be possible if you encourage a collaborative atmosphere. Agile requires team members to contribute their thoughts, opinions, and ideas to the project. It encourages people from different teams to identify mistakes and share them, which helps improve the quality of the end-product.

5. Create a Plan and Road-Map

Experts recommend creating a plan and road-map for agile adoption. This ensures the process isn’t as intimidating for your team. Developers transitioning from Waterfall or other methodologies are accustomed to a rigid, straightforward project structure. Agile is more flexible so creating a plan or road-map can help. This plan will change during the project if needed, but it will still provide some direction.

6. Ensure the Transition is Gradual

Shifting to the agile model abruptly will do more harm than good. A gradual transition gives your team and stakeholders some room to adjust and adapt their work habits accordingly. This also ensures team members don’t develop bad habits that may hamper the quality of their work later. 

It is a good idea to bring in an experienced agile coach to guide your team and establish a foundation for the system. This ensures you have a good plan in place and the transition is as smooth as it can be.

At Number8, our philosophy is to empower our clients to produce better software, faster. We are experts in augmenting scrum teams with senior consultants that can help increase team velocity immediately. I f you’re interested in learning more about Number8 and what we do, give us a call at (502) 890-7665, or check out our information page.

An Overview Of Software Development Lifecycles

A software development lifecycle is a term that describes all of the tasks and activities involved in developing an application or program. A lifecycle includes everything from initial planning and consultation to final launch as well as ongoing maintenance.

There are different approaches to software development and every approach has some advantages. Many development teams choose lifecycle systems based on their benefits and their particular requirements. Here’s a brief overview of some of the different software development life cycles used today.

4 Popular Software Development Life Cycles

1. Waterfall

This is one of the most commonly used and popular software development cycles because it is so simple. It works like a waterfall, consisting of a linear sequential flow with one phase of development following the other. Developers only start to work on the next phase after the first phase is complete.

This approach to software development offers several advantages. It is easy to explain to other team members so there’s little room for miscommunication. The structured approach ensures the project remains on track more easily. All stages and activities of the project are clearly defined so all of a team’s members are on the same page. Verification at the end of every phase reduces the chances of error.

Unfortunately, this approach has several disadvantages as well. It is rigid and inflexible so developers are more likely to assume that all requirements are locked in. There’s little room for adjusting the scope or requirements of a project. The waterfall approach is much less unsuitable for large or complex development projects.

2. V-Shaped

The v-shaped model is similar to the waterfall model, with an added advantage of an early unit test phase. The model follows the Waterfall process until software plan implementation, after which it moves upward from unit testing to maintenance. Like the waterfall model, this approach is fairly straightforward and easy to understand.

The biggest advantage of the v-shaped model is that it has specific deliverables at every phase. Developers create test plans early during the lifecycle, which reduces the room for error and improves flexibility.  The v-shaped model is ideal for small, straightforward development projects with clearly defined goals and expectations.

However, this model is still very inflexible and it is difficult to adjust its scope once a project has launched. It is not possible to generate early prototypes using this model and there is not a clear structure for correcting errors.

3. Spiral

The spiral model or SDM is a great solution for large-scale and complicated projects. This model combines design and prototyping systems, making it more flexible. It still uses the main elements of a waterfall approach as the foundation, assigning different sections for planning, risk assessment, prototyping, and simulations, but offers more options to move backward or forward in the project.

The SDM system has several advantages like more realistic estimates, early developer input, and better risk management.

However, this approach to software development has some disadvantages as well. It can be very expensive and time-consuming. Developers need specialized training to utilize this approach effectively and the system has limited re-usability across different kinds of projects.

4. Agile

The agile approach has become very popular because it offers maximum flexibility and is suitable for all kinds of projects. This approach requires collaboration and movement between different teams as well as phases during the development process. Developers can go back to earlier phases after learning from their mistakes to optimize an application.

This approach has several advantages like decreased development time, time to take input from the team, customers, and stakeholders, and no guesswork. You get high-quality software that fits a customer’s requirements perfectly at the end of the process.

However, agile requires special training and skill which can involve an investment of time and money.

Choosing the right development lifecycle is essential to keep a project on track and ensuring the result lives up to the original specs. A successful software development lifecycle can produce software with the highest quality and lowest cost in the shortest time.

At number8, our measure of success is delivering working software faster. That’s why when it comes to meeting a project’s full potential, we believe in embracing the agile development model. As an information technology company with many years of experience, we can help any team adopt the practices, processes, and tools needed to deliver with more agility. Interested in learning more? Let’s connect. Send us an email or give us a call and we can get the conversation started.

8 Traits Software Developers Tend To Share

People often wonder what makes a great software engineer. Although there are several opinions on this matter, the most typical qualities that software developers share are the ability to produce maintainable working software, staying on top of the latest technologies, and, most importantly, being a team player.

Here are a few traits software developers tend to share.

8 Traits Software Developers Tend To Share

1. An Analytical Mindset

A software developer must have high system-level thinking skills. At the same time, another essential quality is excellent problem-solving skills. There should be a perfect balance between the ability to think about the big picture while paying attention to smaller details.

2. Inquisitiveness and Curiosity

There may come times when a software developer creates codes that don’t work. In such cases, they mustn’t be afraid to ask questions about why it happened. The best way to move forward is by continuing to dig. Another quality that’s crucial for developers is the ability to ask superiors, clients, and peers questions. This ensures that they fully understand the expectations and requirements for their work.

3. Empathy

It’s crucial to remember that software is all about people. Good developers always make efforts to understand their users. Being able to relate to and empathize with the team and clients is another trait that good software developers share.

4. Flexibility

Regardless of the kind of programming language a developer specializes in, code is always unpredictable. Skilled developers have the ability to switch the scope of a project quickly and return a previous point if required. Adapting and being able to respond to time-sensitive problems as soon as they arise is crucial.

5. Enthusiastic To Learn

When it comes to technology, there’s always something new to learn. Expert software developers always keep abreast of advances in their industry and are eager to expand their knowledge.

6. Pragmatism

Software developers can come across unique problems with their projects. They understand that the best solution and the correct solution aren’t always the same. Sometimes, standard practices work well. Other times, they have to think outside the box. Skilled developers value their own practices and problem-solving abilities more than just relying on a set of rules.

7. Team Player

Besides working on projects alongside other developers, designers, and engineers, software developers have to work as part of a team within a company as well. They can be assigned to work with sales teams, support teams, or even marketing teams. Being a team player is a quality successful software developers pick up early in their careers.

8. Technical Mindset

A developer’s main tool to carry out day-to-day work is a computer. A computer can do what it’s told to do but cannot think for itself. So, software developers need to know the “logic” of computers. Software developers are very adept at working with computers and other devices. They also have the capacity to quickly learn about new technology and apply it in their work.

Another indispensable quality that expert developers have is the ability to communicate technical ideas to non-technical people. Being able to evolve and adapt and look at things positively are key traits for this.

These are just a few of the traits that developers tend to share. Overall, being adaptable and willing to learn are some of the most important abilities. These qualities help them grow as professionals.

As an information technology company with many years of experience, we’ve helped hundreds of clients leverage technology to become more efficient and increase profits. Interested in learning more? Let’s connect. Send us an email or give us a call and we can get the conversation started.

Software Development QA Testing

Quality Assurance (QA) is an essential aspect of the software development process. Experienced professionals carefully comb through every feature, addition, and component of a software program or application to determine if it lives up to their standards. In this highly competitive world, companies can’t afford to put out lackluster products. QA Testing is especially crucial in the software development industry because customers directly interact with and rely on software products. They’ll immediately notice if something isn’t working as it should. Here are some of the best practices for QA testing during software development:

  1. Always Keep User Experience in Mind

When a company develops a product, the end goal is always to delight the user. You don’t want to create something clunky, slow, inefficient, or challenging to navigate. QA testing teams often miss the bigger picture while examining minute details. If the overall user experience is poor, these small details won’t matter.

  1. Know Who Your Audiences Are 

Different audiences have different expectations. Developing a software program for millennials can be very different from developing a platform for an older audience. QA teams must keep the target audience in mind while assessing products to ensure it provides a good experience.

  1. Optimize QA Testing by Focusing on the Most Important Sections

Oftentimes it isn’t feasible to comb through every aspect of a software program’s code during quality testing. Teams must optimize the process by prioritizing sections that are most important or relevant. Focus on testing components that directly impact users, since their experience is vital for a program’s functions.

  1. Arrange Bug Fixes Based on Usage

Every software product has bugs that must be fixed to improve user experience, and QA teams need to focus on flaws in the most relevant sections of a program. For example, bugs in the order placement or complaint registration components of an app should be addressed immediately.

  1. Maintain Communication with Developers

QA teams and developers must work together during the testing process. Open communication between these two departments can optimize both testing and the development processes. Testers get a clearer idea about the developer’s intentions, while developers understand how to improve the quality of their products actively.

  1. Run QA Tests in Real and Relevant Environments

Your program should work on platforms that users commonly use. Most people don’t have supercomputers or the latest operating systems. A large portion of your audience will want to run programs on slightly dated systems. Make sure every aspect of the product is working well on various platforms and real-life conditions.

  1. Have a Dedicated Security Assessment Team

Typically it’s important to have a dedicated team that focuses solely on security operations. Modern users have a healthy distrust for software applications and won’t trust any program without a reliable security system in place.

  1. Maintain a Dedicated Performance Assessment Team

A performance assessment team will navigate a program or application from a user’s perspective. The process helps them identify issues in the performance of the end product and provide detailed reports on it.

  1. Test Third-Party Systems

Applications and software programs often use third-party components like social media plug-ins, shopping carts, etc. Users will only have a smooth experience if all third-party systems work efficiently with your program. Always check them carefully for compatibility issues or related problems.

  1. Always Take Customer Feedback into Account

No system is infallible, and QA teams are no exception to this rule. Fortunately, you have a large group of thousands of users willing to provide feedback on an application’s performance. Always take their inputs into account during the QA testing process.

A well-planned and well-executed QA routine will ensure the product that reaches your audience is as reliable and efficient as possible. Companies should also review their QA routines regularly to ensure they remain useful, especially if you notice that too many issues are slipping through the cracks.

At Number8, we believe in developing software that is user-friendly, reliable and completely functional. As a result, we are always recruiting talented QA professionals for quality assurance jobs on our team. To learn more about how we can help you complete and successfully launch your software project, contact us at 502-890-7665. 

7 Things About Microsoft You Might Not Know

Microsoft is a tech giant and one of the most influential companies in the market. While competitors like Apple or Google may seem more popular, Microsoft continues to have a strong presence. It is the third-largest tech company in the world, just a couple of steps below Apple and a step over Google’s parent company Alphabet. While Microsoft has been around since 1975, there are still some things most people don’t know about the influential company. Follow along for more details.

  1. It was First Micro-Soft

Before the founders registered its brand name, they used Micro-Soft (a combination of microcomputer and software) in their company communications. Fortunately, they decided to drop the hyphen during registration and settled on an admittedly cooler brand name.

While the name has remained unchanged, the logo has undergone several transformations. Microsoft’s first logo had a stylized ‘O’ called a ‘blibbet’, which was also the name of a burger served in the company’s cafeteria.

  1. Microsoft Made a Lot of People Rich

Microsoft founder Bill Gates was the youngest billionaire of his time and spent a lot of time sitting at the top of the richest people list. But Microsoft’s stellar success didn’t just make Gates rich.  Thousands of millionaires can trace their success back to this technological juggernaut.

People who bought this company’s stock in the 1980s and retained it until the 2000s made a remarkable profit as well. Its stock price has increased by approximately 71,283% over the past three decades.

  1. Microsoft Saved Apple from Bankruptcy

Microsoft and Apple are some of the fiercest rivals in the industry. They have been competing against one another since their very inception. However, when Apple landed in financial trouble back in 1997, its rival stepped up to save it. Microsoft invested around $150 million to get Apple back on its feet. Not surprisingly, many people were not thrilled by this news, but if that support hadn’t come in, Apple may no longer exist.

  1. A Long List of Code Names

Tech companies are notoriously secretive when their products are under development; Microsoft is no exception to this rule. The company always assigns code names to its projects, which keeps competitors from knowing much about it. The code names are also placeholders because developers often come up with a product name after it is fully realized

Some of the more famous names include Chicago (Windows 95), Whistler (Windows XP), Yukon (SQL Server 2005), Longhorn (Windows Vista), and Milan (Surface). The list of codenames is extensive, probably containing dozens of code names.

  1. Microsoft is Serious About Art

The company has one of the most significant corporate art collections in the world, with more than 5,000 pieces from contemporary artists. Its collection includes works from relatively unknown artists as well as industry heavyweights like Takashi Murakami, Chuck Close, and Cindy Sherman. The art is scattered around Microsoft’s 150 campuses and includes paintings, sculptures, photographs, multimedia works, etc.

  1. Microsoft Entered the Smartphone Game First

Apple launched its first smartphone in 2007, but Microsoft had been in the industry since 2000. Unfortunately, they didn’t find much success and their software performance on smaller hand-held devices wasn’t stellar. Apple’s technologically sophisticated product revolutionized the industry.

  1. The Company Has Pet Rabbits

A few years ago, someone abandoned a few rabbits on the Microsoft campus grounds. This small group of rabbits bred at a rapid pace and grew in size; before long, the campus was swamped with these adorable but fast-breeding pests. To this day, they still have a thriving population.

These are just a few of the many unknown facts about Microsoft. There are several fascinating stories associated with this company that you can explore in your spare time.

5 Principles of UX Design Everyone In Tech Should Know

User Experience (UX) is the most crucial factor to consider while designing a new product. UX dictates how people interact with a product or service, how pleasant their overall experience is, and their journey while looking for solutions.

Modern customers are very sophisticated, picky, and willing to discard any product or service that doesn’t offer an optimal experience. That’s why everyone in tech must understand UX well and know how to prioritize it in the new products and services they introduce. Follow along for an overview of 5 principles of UX design everyone in tech should know.

5 Principles of UX Design You Should Know

1. Understand Your Audience

It’s nearly impossible to design a useful UX framework without understanding your audience. What do users find appealing, what are their priorities, and what do they value? Designers must understand their target audience(s) to develop products and services with good UX, and they can do this by establishing a strong audience profile based on small and Big Data. It will be the foundation of your project, providing clear guidelines on how to move forward.

2. Have a Clear Design Intent

Your product or service can quickly become lost in a veritable forest of digital distractions. Everything from innocent cat videos to angry social media posts can tear a prospect’s attention away. That’s why designers must focus on intent and create unique experiences to attract users. Make sure every element of an application or website is purposeful or contributes towards UX. For example, something as simple as a button going green when a user has completed a task can add to their experience. This simple action has a clear intention of giving users a sense of accomplishment and completion.

3. Clarity is Important

Unique elements make an impact, but clarity is also essential. Users want a simple, straightforward journey when looking for solutions. No one wants to waste time figuring out how a particular element of your app or website works. Make sure all functions are clear, straightforward, and simple for the best results.

4. Predictability is Essential

Browse through a few websites or applications carefully. You’ll notice several distinct similarities in their layout. For example, most sites have a clickable logo with a homepage link at the top left corner. Many also have drop-down menus with products or services situated under a header banner. Apps have a desk with links to home, search, profile, etc., at the bottom. These factors ensure your product always has predictable navigation, which improves the overall user experience.

5. Get to the Point – Quickly!

Online audiences have short attention spans and are always in a hurry. This means UX designers need to offer them the shortest possible route for getting people what they want. Most users won’t linger on your platform while they seek a specific result. You must work to eliminate all unnecessary steps and set them to a solution as quickly as possible.

Create a product that delivers excellent value to customers. Make sure every aspect of it has some purpose or meaning for the best UX. User experience isn’t just limited to the digital world. It has an impact on a company’s overall reputation and operations. Brands that deliver a seamless user experience on all fronts tend to have a much better overall reputation.

As an information technology company with many years of experience, we’ve helped hundreds of clients leverage technology to become more efficient and increase profits. Interested in learning more? Let’s connect. Send us an email or give us a call and we can get the conversation started.

 

An Overview of AI – 2020 & Beyond

Artificial Intelligence (AI) is no longer a futuristic concept; it is a current reality. People use it every day to find information, automate processes, run complex calculations, and do much more. Because AI has such a significant influence on everyone’s life, it is a good idea to keep an eye on its progress. We’re expecting many exciting developments in the world of AI in the months and years ahead. Here’s a brief overview of AI and what can you expect from 2020 onward:

Where Can We Find AI Today?

AI is more prevalent than many people realize, so much so that even people with little to no interaction with smart technology use it. Some of the most common uses of artificial intelligence include:

  • Google Maps AI-powered predictions recommend the fastest routes for any desired destination while also offering other route alternatives and live traffic data.
  • Ride sharing apps actively calculate pricing for different routes based on factors like distance, demand, traffic, etc.
  • Commercial airlines have been very early adopters of AI. This technology has powered airline autopilot systems for decades now. Modern day pilots fly a plane for only seven minutes on average, on a flight of any duration. The rest is handled by sophisticated autopilot systems.
  • Google uses AI technology to categorize emails automatically. All messages are sorted into spam, primary, social, or promotional folders without any user input. Google’s AI is extremely precise; it filters 99.9% of all spam emails.
  • Many banks use AI and machine learning technology that let customers deposit checks through their mobile phone. AI recognizes handwriting, converts it to text, authenticates information before approving a deposit.
  • Smart assistants like Siri, Alexa, Google Assistant, Cortana, etc., are powered by AI and Machine Learning.
  • Online shopping platforms like Amazon use AI in search and to offer tailored product recommendations.

AI is also used in traffic control systems, communication, human resource management, credit management, and much more.

What Can We Expect from AI in the Future?

While people have long anticipated the development of AI, there have still been surprises along the way. Most assumed we’d have AI robots or machines, but this technology has taken a more indirect route. Based on current developments, experts believe we can expect the innovations mentioned below in the not so distant future:

1. Blockchain, IoT, and AI Coming Together

Blockchain, IoT, and AI are also disruptive technologies that have changed several industries. IoT can interact directly with hardware while collecting data for AI, and Artificial intelligence can analyze data before making decisions. Blockchain can ensure the system is secure, scalable, and protected from fraud.

2. Increased Penetration in Creative Industries

So far, AI hasn’t gone far into the creative industries. AI technology has only truly effected writing generic content for news media websites. However, that may change soon as AI starts delving into production, scriptwriting, story development, and even acting. CG technology has developed significantly in recent years. Movies use advanced graphics, de-aging technologies, and even AI for some imagery.

3. Workplace Automation

Many companies have already adopted automation for their regular tasks, but we will see increased penetration of technology in the future. According to Gartner, workplace automation will eliminate around 1.8 million jobs while creating about 2.3 million new jobs. As a result, this change may lead to people working on more engaging tasks for higher compensation.

4. Influence of Biased Data

AI and ML systems rely on data to provide solutions. If the historical data provided is biased, it can influence a system’s decisions. Unfortunately, using AI for hiring, credit scoring, or other such functions may negatively impact historically disadvantaged target demographics like women, POC, or people of different races.

We’ll see increased penetration of AI and ML in fields like digital marketing, customer service, personal shopping services, etc. This technology is still in its early development stages. Who knows how far it will go?

As an information technology company with many years of experience, we’ve helped hundreds of clients leverage technology to become more efficient and increase profits. Interested in learning more? Let’s connect. Send us an email or give us a call, so we can get the conversation started.