quarta-feira, 30 de janeiro de 2019

SW Construction: The bots that help improving Facebook's Code - IEEE Spectrum

Meet the Bots That Review and Write Snippets of Facebook's Code - IEEE Spectrum



Quoting:

"A null pointer exception is like having the address to a house that was never built. It means a programmer has referred to an object that doesn’t actually exist because it was never described in the code. Null pointers are extremely common and relatively easy to fix—easy enough to be boring, in fact.

Unfortunately, the tedious work of finding and fixing errors like these still takes up much of a developer’s time and mental energy. A 2016 evaluation of 1,000 Android apps [PDF] found that null pointers caused more crashes than any other kind of error, including illegal arguments, array index out of bounds exceptions, and bad tokens.
To make its developers’ jobs more rewarding, Facebook is now using two automated tools called Sapienz and SapFix to find and repair low-level bugs in its mobile apps. Sapienz runs the apps through many tests to figure out which actions will cause it to crash. Then, SapFix recommends a fix to developers, who review it and decide whether to accept the fix, come up with their own, or ignore the problem. "
(...)
"Facebook’s developers make more than 100,000 commits every week, and the Facebook app for Android contains millions of lines of code. Sapienz runs hundreds of emulators around the clock to review code before and after it’s shipped, conducting tens of thousands of tests every day. "



terça-feira, 29 de janeiro de 2019

segunda-feira, 28 de janeiro de 2019

BOOK: Continuous Delivery Handbook: Non Programmer’s Guide to DevOps, Microservices and Kubernetes (Stephen Fleming)

Amazon.com: Continuous Delivery Handbook : Non Programmer’s Guide to DevOps, Microservices and Kubernetes eBook: Stephen Fleming: Kindle Store

Quoting;

"(...) after going through this guide you would be able to appreciate Continuous Delivery through DevOps, Microservices and other related concepts like Kanban, Scrum, Agile, SOA, Monolith Architecture, DevOps, Docker, Kubernetes etc.

-      This guide will clarify your conceptual queries with case studies, examples and diagrams.
-      You would also get to know about the leaders in DevOps and Microservices adoption and impact it had on the overall agility and hyper-growth of the adopters. This book covers the complete lifecycle for your understanding like Integrating, Testing, Deploying DevOps and Microservices architecture and the Security concerns while deploying it.
-      I am confident that after going through the book you would be able to navigate the discussion with any stakeholder and take your agenda ahead as per your role. Additionally, if you are new to the industry, and looking for an application development job, this book will help you to prepare with all the relevant information and understanding of the topic.
-      So, as Charles Darwin Said “It is not the strongest of the species that survive, or the most intelligent, but the one most responsive to change.” Be adaptive to the changes in the software Development Industry and ride ahead with Continuous Delivery."

sábado, 26 de janeiro de 2019

GLS: A Glossary of Computer System Software Development Terminology (8/95) from... FDA

Inspection Guides > Glossary of Computer System Software Development Terminology (8/95)

...And a list of sources (standards and books) for those terms FFR, quoting:

"The terms are defined, as much as possible, using available standards. The source of such definitions appears immediately following the term or phrase in parenthesis, e.g. (NIST). The source documents are listed below.
The New IEEE Standard Dictionary of Electrical and Electronics Terms, IEEE Std. 100-1992.
IEEE Standards CollectionSoftware Engineering1994 Edition, published by the Institute of Electrical and Electronic Engineers Inc.
National Bureau of Standards [NBS] Special Publication 500-75 Validation, Verification, and Testing of Computer Software, 1981.
Federal Information Processing Standards [FIPS] Publication 101, Guideline For Lifecycle Validation, Verification, and Testing of Computer Software, 1983.
Federal Information Processing Standards [FIPS] Publication 105, Guideline for Software Documentation Management, 1984.
American National Standard for Information Systems, Dictionary for Information Systems, American National Standards Institute, 1991.
FDA Technical Report, Software Development Activities, July 1987.
FDA Guide to Inspection of Computerized Systems in Drug Processing, 1983.
FDA Guideline on General Principles of Process Validation, May 1987.
Reviewer Guidance for Computer Controlled Medical Devices Undergoing 510(k) Review, Office of Device Evaluation, CDRH, FDA, August 1991.
HHS Publication FDA 90-4236, Preproduction Quality Assurance Planning.
MIL-STD-882C, Military Standard System Safety Program Requirements, 19JAN1993.
International Electrotechnical Commission, International Standard 1025Fault Tree Analysis.
International Electrotechnical Commission, International Standard 812, Analysis Techniques for System Reliability - Procedure for Failure Mode and Effects Analysis [FMEA].
FDA recommendations, Application of the Medical Device GMP to Computerized Devices and Manufacturing Processes, May 1992.
Pressman, R., Software Engineering, A Practitioner's ApproachThird Edition, McGraw-Hill, Inc., 1992.
Myers, G., The Art of Software Testing, Wiley Interscience, 1979.
Beizer, B., Software Testing TechniquesSecond Edition, Van Nostrand Reinhold, 1990.
Additional general references used in developing some definitions are:
Bohl, M., Information ProcessingFourth Edition, Science Research Associates, Inc., 1984.
Freedman, A., The Computer GlossarySixth Edition, American Management Association, 1993.
McGraw-Hill Electronics Dictionary, Fifth Edition, 1994, McGraw-Hill Inc.
McGraw-Hill Dictionary of Scientific & Technical TermsFifth Edition, 1994, McGraw-Hill Inc..
Webster's New Universal Unabridged DictionaryDeluxe Second Edition, 1979."

quinta-feira, 24 de janeiro de 2019

TOOL: Git Sparse Checkout

Git repos are cloned fully. And your disk space goes down the drain in this process (if you're working in a lot of complex projects). What if you need only a set of files from a repo? You can use a client (like the web-based bitbucket) to locate and download (one by one). Or enter Git Sparse Checkout:

Using Git Sparse Checkout

segunda-feira, 14 de janeiro de 2019

REUSE: Route Calculations with TomTom Maps APIs

Route Calculations with TomTom Maps APIs - CodeProject

Quoting:
"The TomTom route mapping engine is immensely powerful, and with the recent announcement that the TomTom APIs are available for developers to integrate into their applications, you can now harness the power of the routing engine and share it with your consumers.
In this article, I’m going to introduce you to the Routing API with a few examples. We’ll also discuss consumption models for gasoline and electric vehicles and use these models to plot the best route for your vehicle.
Finally, we’ll talk about the different route types which you can request from the API, and I’ll provide links to additional documentation and tools to help you learn more and take the next steps."

More of the kind: https://www.codeproject.com/Articles/1273831/Maximizing-Electric-Mobility-with-TomTom-Maps-AP-2


sexta-feira, 11 de janeiro de 2019

Maintainability: A promising new metric to track maintainability

A promising new metric to track maintainability - JAXenter

Quoting:
"[A] new metric to track maintainability.

A good metric to measure software maintainability is the holy grail of software metrics. What we would like to achieve with such a metric is that its values more or less conform with the developer’s own judgment of the maintainability of their software system. If that would succeed we could track that metric in our nightly builds and use it as the canary in the coal mine. If values deteriorate it is time for refactoring. We could also use it to compare the health of all the software systems within an organization. And it could help to make decisions about whether it is cheaper to rewrite a piece of software from scratch instead of trying to refactor it.

A good starting point for achieving our goals is to look at metrics for coupling and cyclic dependencies. High coupling will definitely affect maintainability in a negative way. The same is true for big cyclic group of packages/namespaces or classes. Growing cyclic coupling is a good indicator for structural erosion. (...)"
(...)
"Try it yourself
Now you might wonder what this metric would say about the software you are working on. You can use our free tool Sonargraph-Explorer to compute the metric for your system written in Java, C# or Python. 
 is currently only considered for Java and C#. For systems written in C or C++ you would need our commercial tool Sonargraph-Architect."


quarta-feira, 9 de janeiro de 2019

BOOK: Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne

A book on algorithms. Remember to explore this Princeton university site for more information will you?



This is the online version: Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne



Quoting:

"Textbook. 

 The textbook Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne Amazon · Pearson · InformIT ] surveys the most important algorithms and data structures in use today. We motivate each algorithm that we address by examining its impact on applications to science, engineering, and industry. The textbook is organized into six chapters:

  • Chapter 1: Fundamentals introduces a scientific and engineering basis for comparing algorithms and making predictions. It also includes our programming model.
  • Chapter 2: Sorting considers several classic sorting algorithms, including insertion sort, mergesort, and quicksort. It also features a binary heap implementation of a priority queue.
  • Chapter 3: Searching describes several classic symbol-table implementations, including binary search trees, red–black trees, and hash tables.
  • Chapter 4: Graphs surveys the most important graph-processing problems, including depth-first search, breadth-first search, minimum spanning trees, and shortest paths.
  • Chapter 5: Strings investigates specialized algorithms for string processing, including radix sorting, substring search, tries, regular expressions, and data compression.
  • Chapter 6: Context highlights connections to systems programming, scientific computing, commercial applications, operations research, and intractability.

Booksite. 

 Reading a book and surfing the web are two different activities: This booksite is intended for your use while online (for example, while programming and while browsing the web); the textbook is for your use when initially learning new material and when reinforcing your understanding of that material (for example, when reviewing for an exam). The booksite consists of the following elements:
  • Excerpts. A condensed version of the text narrative, for reference while online.
  • Java code. The algorithms and clients [ algs4 · github ] in this textbook.
  • Exercise solutions. Solutions to selected exercises.

For students:


For instructors:


"

sexta-feira, 4 de janeiro de 2019

BOOK: Optimizing Java

An interview with the authors can be found here:

https://www.infoq.com/articles/book-review-optimizing-java

Quoting:
"Key Takeaways

Performance tuning in Java is an experimental science.

There are no magic “go faster” command-line switches for the JVM.

There are no “tips and tricks” to make Java run faster.

The execution speed of Java code is highly dynamic and fundamentally depends on the underlying JVM.

The behavior of JIT-compiled code is significantly more important than the interpreter itself.

This book offers both theory and practice on how to performance tune in Java.

This is a comprehensive book that represents a tutorial for beginners and a reference for experienced Java performance tuning practitioners."

See also: JITwatch