sexta-feira, 14 de dezembro de 2018

BOOK: Beautiful Code (Leading Programmers Explain How They Think)

Using a similar idea used for Clean Code, this book talks about... Beautiful Code. (PS. When will the Fluffy Code book come out?)

Beautiful code » nvie.com


Quoting (nvie.com):

""The book's concept is simple: each of the 33 chapters is written by a well-respected professional programmer who answers the question: "What is the most beautiful code you've ever seen?" after which they discuss elaborately why they think it's beautiful."


Quoting Amazon.com (this is the link to buy it):

"How do the experts solve difficult problems in software development? In this unique and insightful book, leading computer scientists offer case studies that reveal how they found unusual, carefully designed solutions to high-profile projects. You will be able to look over the shoulder of major coding and design experts to see problems through their eyes. This is not simply another design patterns book, or another software engineering treatise on the right and wrong way to do things. The authors think aloud as they work through their project's architecture, the tradeoffs made in its construction, and when it was important to break rules. Beautiful Code is an opportunity for master coders to tell their story. All author royalties will be donated to Amnesty International."

quarta-feira, 12 de dezembro de 2018

VCS: What is Gitflow? (Introducing GitFlow article)

What is Gitflow? Here's an article (the article) explaining this way of working with Git: Introducing GitFlow
The original blog post can be found at https://nvie.com/ ( https://nvie.com/posts/a-successful-git-branching-model/ ).

Quoting:

"What Is GitFlow?

GitFlow is a branching model for Git, created by Vincent Driessen. It has attracted a lot of attention because it is very well suited to collaboration and scaling the development team. Key benefits include: 

Parallel Development

One of the great things about GitFlow is that it makes parallel development very easy, by isolating new development from finished work. New development (such as features and non-emergency bug fixes) is done in feature branches, and is only merged back into main body of code when the developer(s) is happy that the code is ready for release.
Although interruptions are a BadThing(tm), if you are asked to switch from one task to another, all you need to do is commit your changes and then create a new feature branch for your new task. When that task is done, just checkout your original feature branch and you can continue where you left off.

Collaboration

Feature branches also make it easier for two or more developers to collaborate on the same feature, because each feature branch is a sandbox where the only changes are the changes necessary to get the new feature working. That makes it very easy to see and follow what each collaborator is doing.

Release Staging Area

As new development is completed, it gets merged back into the develop branch, which is a staging area for all completed features that haven’t yet been released. So when the next release is branched off of develop, it will automatically contain all of the new stuff that has been finished.

Support For Emergency Fixes

GitFlow supports hotfix branches - branches made from a tagged release. You can use these to make an emergency change, safe in the knowledge that the hotfix will only contain your emergency fix. There’s no risk that you’ll accidentally merge in new development at the same time."

terça-feira, 11 de dezembro de 2018

Management: Amazon and the no-powerpoints meetings

Memo-driven meetings vs. PowerPoint-driven meetings:
https://www.businessinsider.com/bezos-admits-amazon-has-the-weirdest-meeting-culture-2018-4

Quoting:
"During an onstage interview Friday, Amazon CEO Jeff Bezos explained the strange meetings that Amazon holds.

Each meeting requires a well-crafted, six-page memo that the whole room sits and reads at the start.

Bezos banned PowerPoint years ago, and explained why the memo-driven meeting is far superior."

Management: JIRA as an anti-pattern?

Of course. Can you describe [i.e. extract the technical baseline of] a product (information system, etc.) from it? From epics and (overlapping and/or contradictory) user stories? Hardly:
https://techcrunch.com/2018/12/09/jira-is-an-antipattern/

Quoting:
"I’m not saying JIRA has no place. It’s very good when you’re at the point where breaking things down into small pieces and finishing them sequentially does make sense. And, unsurprisingly given its history, it’s exceedingly good at issue tracking.

Let me reiterate: To write elegant software, you must keep both the macro and the micro vision in your mind simultaneously while working. JIRA is good at managing micro pieces. But you need something else for the macro. (And no, a clickable prototype isn’t enough; those are important, but they too require descriptive context.)

Allow me to propose something shocking and revolutionary: prose. Yes, that’s right; words in a row; thoughtfully written paragraphs. I’m not talking about huge requirements documents. I’m talking about maybe a 10-page overview describing the vision for the entire project in detail, and a six-page architectural document explaining the software infrastructure — where the city’s water, sewage, power, subways and airports are located, and how they work, to extend the metaphor. When Amazon can, famously, require six-page memos in order to call meetings, this really doesn’t seem like too much to ask.

Simply ceasing to treat JIRA as the primary map and model of project completion undercuts a great deal of its implicit antipatternness. Use it for tracking iterative development and bug fixes, by all means. It’s very good at that. But it is a tool deeply ill-suited to be the map of a project’s overall vision or infrastructure, and it is never the source of truth — the source of truth is always the running code. "


segunda-feira, 29 de outubro de 2018

BOOK: Devops with Kubernetes: Non-Programmer's Handbook (Stephen Fleming)

Amazon.com: Devops with Kubernetes: Non-Programmer's Handbook eBook: Stephen Fleming: Kindle Store

Quoting:

"As the industry is moving towards maximum digitization there is a consensus that DevOps practices help you deliver software faster, more reliable, and with fewer errors. Also, all the SMEs agree on the premise that,”Transformation is a destination, not something you buy.”. That means any tool like Kubernetes cannot guarantee transformation unless it is coupled with transformation engrained in DevOps culture.

-You may be a consultant, Advisor, Project Manager or a novice into IT industry; after going through this guide you would be able to appreciate DevOps, Microservices and other related concepts like Kanban, Scrum, Agile, SOA, Monolith Architecture, DevOps, Docker, Kubernetes etc.
-You would also get to know about the leaders in DevOps and Kubernetes 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 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.
** I am also providing additional booklet containing all the relevant news, trends, and resources for DevOps and Microservices Architecture

"Grab your copy today along with Technology Booklet""

BOOK: DevOps & Microservices Handbook: Non-Programmer's Guide to DevOps and Microservices (Stephen Fleming)

DevOps & Microservices Handbook: Non-Programmer's Guide to DevOps and Microservices, Stephen Fleming, eBook - Amazon.com

Quoting:

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


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.

** I am also providing additional booklet containing all the relevant news, trends, and resources for DevOps and Microservices Architecture.

"Grab your copy today along with DevOps and Microservices Booklet"


"One of the best Kubernetes books for beginners""

BOOK: Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Jez Humble, David Farley) AKA "The Bible"

AKA the bible for CD:
Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler)): Jez Humble, David Farley: 9780321601919: Amazon.com: Books

Also make sure to read the PPT by Mr. Jez ("Adopting CD"):
https://pt.slideshare.net/InstitutLeanFrance/adopting-continuous-delivery-by-jez-humble


Quoting:
"Getting software released to users is often a painful, risky, and time-consuming process.
This groundbreaking new book sets out the principles and technical practices that enable
rapid, incremental delivery of high quality, valuable new functionality to users. Through
automation of the build, deployment, and testing process, and improved collaboration between
developers, testers, and operations, delivery teams can get changes released in a matter of hours—
sometimes even minutes–no matter what the size of a project or the complexity of its code base.

Jez Humble and David Farley begin by presenting the foundations of a rapid, reliable, low-risk
delivery process. Next, they introduce the “deployment pipeline,” an automated process for
managing all changes, from check-in to release. Finally, they discuss the “ecosystem” needed to
support continuous delivery, from infrastructure, data and configuration management to governance.

The authors introduce state-of-the-art techniques, including automated infrastructure management
and data migration, and the use of virtualization. For each, they review key issues, identify best
practices, and demonstrate how to mitigate risks. Coverage includes

• Automating all facets of building, integrating, testing, and deploying software
• Implementing deployment pipelines at team and organizational levels
• Improving collaboration between developers, testers, and operations
• Developing features incrementally on large and distributed teams
• Implementing an effective configuration management strategy
• Automating acceptance testing, from analysis to implementation
• Testing capacity and other non-functional requirements
• Implementing continuous deployment and zero-downtime releases
• Managing infrastructure, data, components and dependencies
• Navigating risk management, compliance, and auditing

Whether you’re a developer, systems administrator, tester, or manager, this book will help your
organization move from idea to release faster than ever—so you can deliver value to your business
rapidly and reliably."


quarta-feira, 17 de outubro de 2018

SCRIPTING: One more (cross.platform) tool for scripting? (C# and .NET Core scripting "dotnet-script" global tool)

C# and .NET Core scripting with the "dotnet-script" global tool - Scott Hanselman


Other alternatives .Net based include (quoting):

"In the past you may have used ScriptCS for C# scripting.
There's a number of cool C#/F# scripting options.
This is certainly not a new thing:
In this case, I was very impressed with the easy of dotnet-script as a global tool and it's simplicity.
Go check out https://github.com/filipw/dotnet-script and try it out today!"

Also don't forget the scripting languages like Python and Perl.
But don't get me wrong with this last statement: Python is much more than a scripting tool nowadays, like javascript is not a thing for interactive web pages. 

terça-feira, 9 de outubro de 2018

Enter the Cheat Sheets...

Cheat sheets are summarized sheets of information for quick reference. They are handy to have (printed) when you are new to a subject.
Enter the "cheat sheets":
https://introcs.cs.princeton.edu/java/11cheatsheet/

And don't you do like I did to the CMMI auditors last time they were around. I kindly asked them:
- Can you teach me how to say correctly cheat, sheet and...?
Yes, you guessed it.
In the end I stood the same ignorant. It all sounds equal to me. I pronounce it all the same. Wrongly. :)

sábado, 6 de outubro de 2018

BOOK: Artificial Unintelligence

A book FFR:

http://www.informationr.net/ir/reviews/revs631.html
Quoting:
"Broussard, Meredith. Artificial unintelligence. How computers misunderstand the world.

Cambridge, MA: MIT Press, 2018. [8], 237 p. ISBN 978-0-262-03800-3. £19.95/$24.95."

REPORT: The State of Developer Ecosystem (JetBrains)

6,000 developers were surveyed to identify the State of Developer Ecosystem in 2018:


https://www.jetbrains.com/research/devecosystem-2018/

Quoting:
"The State of Developer Ecosystem in 2018

In the beginning of 2018 we surveyed 6,000 developers to identify the State of Developer Ecosystem.


Here's what we learned."

segunda-feira, 1 de outubro de 2018

SW Design: FB open sources LogDevice

https://www.infoq.com/news/2018/09/logdevice-distributed-logstorage

About how FB uses it and the design features it was made to support (quoting):
"Facebook open sourced their internal distributed log storage project called LogDevice. It offers high write availability using replication, durable log storage and recovery from failure.

Most of Facebook's applications that perform logging require high write availability, durable storage of logs, and workloads that vary in terms of performance and latency requirements. Another important requirement was to be able to survive hardware failures. An older Facebook project called Scribe was more focused on aggregating logs to central storage, and there were cases where data loss could occur. Scribe now uses LogDevice as a log storage backend.


Facebook uses LogDevice internally in its datacenters for stream processing pipelines, distribution of database index updates, machine learning pipelines, replication pipelines, and durable task queues where it ingests over 1TB/sec of data. Although Facebook has built a lot of open source tools to manage LogDevice clusters, they are yet to open source any of those except a basic toolset at this point. The LDShell tool allows cluster management from the command line, and the complementary LDQuery command can be used to view cluster statistics."

(...) "[Other] log storage systems [include] Apache BookKeeper and Apache Kafka

domingo, 30 de setembro de 2018

JAVA: Java 11 feature list

https://www.infoq.com/news/2018/09/java11-released

New things (and deprecated things), quoting from above:
"The feature list for the new version has only evolved modestly since InfoQ reported on this earlier in the year, and the major new features in Java 11 are:

Nest-based access controls (aka "Nestmates"): revisits the implementation of inner classes and eliminates the need for compilers to insert bridge methods.

Dynamic class-file constants (aka "condy"): reduces the cost and disruption of creating new forms of materializable class-file constants and opens the door to new performance and platform approaches.

ZGC (Experimental): a brand-new garbage collector designed for sub-10ms pause times (even on large heaps) with an aim of no more than a 15% performance penalty.

Flight Recorder: low overhead data collection framework for troubleshooting Java applications and the HotSpot JVM, previously a commercial feature, now open-sourced.

New standard HTTP library: A new module java.net.http that standardizes the incubating API and allows flow-based HTTP/1.1 and HTTP/2 support

TLS 1.3: Implement the recently standardized new version of Transport Layer Security

Local-Variable Syntax for Lambda Parameters: Updating the lambda syntax to use the var type-inferencing introduced in Java 10.

The new release also removes some older features to try to streamline the core Java product:

Java EE and CORBA Modules: Require applications to explicitly depend upon EE and CORBA modules if they require them.

Web Start: This feature has been removed with no clear replacement.

Applets: These have been heavily deprecated for some time and are finally removed.

JavaFX: The FX libraries have moved to the OpenJFX project and are removed from the core.

In particular, the EE modules contain the support for JAXB and SOAP - both components that are still in relatively widespread use in many enterprises. Development teams that upgrade to the new version should check carefully whether they will need to modify their build scripts to take these changes into account."


JAVA: Using Java 11 In Production - Things To Know


Java 11 is out. What's new? You pay. Well, this is not all that's new, but you do get to pay if you the Oracle JDK in production: 

Quoting:

"The new six-monthly release cadence and Oracle’s changes in licensing and support model mean that any organization that deploys a Java application should take this opportunity to look at:

Where they get their JDK from (e.g. Azul, IBM, Oracle, Red Hat, or other OpenJDK build)

Which versions of Java they use in production

Whether or not they expect to get updates (e.g. patches and security fixes) for these versions of Java

Which versions they want to use in the future

How frequently they want to update their version of Java (i.e. to the next major version)

What sort of support (i.e. triage and bug reports) they expect for their version

Changes to the Oracle JDK

In the past, many of us simply downloaded Oracle’s JDK and used this in development, in testing, and in production.  From Java 11, Oracle has changed the license of their JDK, so instead of having a single JDK build which can be used either commercially (i.e. with paid support) or for free (which many of us were doing), they now have two different JDK builds:

Oracle’s JDK (commercial) – you can use this in development and testing for free, but if you use it in production you have to pay for it

Oracle’s OpenJDK (open source) – you can use this for free in any environment, like any open source library

Note that since Java 11, Oracle’s commercial JDK and Oracle’s OpenJDK builds are functionally the same, so we should be able to run our applications on either without having to make any changes or losing any features."

And the components of the JDK are:


PS: Kudos to N. Raimundo for pointing this out.



sexta-feira, 21 de setembro de 2018

SPACE: TESS architecture and SW image processing made

Due to bandwidth limitations, heavy processing of the high res images taken is made at space and only relevant results are sent back. Here is an interesting description of the new NASA's TESS mission (now that the Kepler mission is being phased out due to lack of fuel) that has the goal of finding new exoplanets:
https://arstechnica.com/science/2018/09/get-ready-for-a-flood-of-new-exoplanets-tess-has-already-spotted-two/

Quoting:
"TESS images a single area for roughly a month before moving on to the next. Over the course of a year, this will allow it to capture most of the sky in a single hemisphere; it will switch to the other hemisphere for its second year of observations. Should the hardware still be operational at the two-year mark, it will have imaged most of the sky, and a similar cycle will likely start again.

This cadence creates some trade offs. If a planet's orbit is such that it doesn't pass in front of its star during the month TESS happens to be pointing that way, we'll miss it (unless it's part of the small overlap between separate areas). This will bias us toward finding planets with short orbital periods, where a transit is guaranteed to happen whenever TESS gets around to pointing at it. Short enough orbits mean we can observe multiple transits during that month, confirming the planet's existence without the need for follow-on observations."


sexta-feira, 7 de setembro de 2018

REUSE: Cryptographic library from Google

Quoting:
"Tink is a multi-language, cross-platform cryptographic library developed by a group of cryptographers and security engineers at Google to help developers implement cryptography correctly without being cryptographic experts. Under development for the last two years, version 1.2 adds support for Cloud, Android, and iOS platforms, and C++ and Objective-C."
More at:
https://www.infoq.com/news/2018/09/google-tink-cryto-ios-android

Current implementation details:
"Tink currently provides four cryptographic operations, implemented by specific primitives:

authenticated encryption with associated data (primitive: AEAD)


message authentication codes (primitive: MAC),


digital signatures (primitives: PublicKeySign and PublicKeyVerify)


hybrid encryption (primitives: HybridEncrypt and HybridDecrypt).


Each operation has an associated set of minimal properties and a guarantee. A primitive can have multiple implementations and the user chooses the actual implementation to use by instantiating a key of a corresponding type. (...)


In addition to cryptographic operations, Tink provides support for key management, including key versioning, key rotation, and support for remote key management systems (KMS). Currently, the following KMSes are supported:


Google Cloud KMS


Amazon KMS


Android Keystore


Apple iOS KeyChain (planned)


Tink currently supports Java, C++, and Objective-C. Support for C#, Go, and JavaScript/Node is planned for version 1.3, tentatively scheduled for December 2018."


quarta-feira, 5 de setembro de 2018

Traceability: Drilling errors?

Well not software, this is hardware but last week there was a 2mm leak in the ISS (one of the greatest engineering achievements of mankind, with lots of software in it as you might imagine). This stresses the importance of traceability (to resources):
https://arstechnica.com/science/2018/09/russian-space-chief-vows-to-find-full-name-of-technician-who-caused-iss-leak/

There's a person who drilled the capsule wrongly and did not report it. Fixed with... Glue.
Quoting:
"“We are able to narrow down the cause to a technological mistake of a technician. We can see the mark where the drill bit slid along the surface of the hull,” Dmitry Rogozin, head of the Russian space agency Roscosmos, told RIA Novosti. (A translation of the Russian articles in this story was provided to Ars by Robinson Mitchell). “We want to find out the full name of who is at fault—and we will.”"

terça-feira, 4 de setembro de 2018

API: Help on spotting Child Abuse (in photos)

An API using AI to help content managers spotting (automatically) child abuse; by Google:
https://www.engadget.com/2018/09/03/google-ai-tool-detects-child-sex-abuse-images/

Quoting:
"Google offers AI toolkit to report child sex abuse images

It can catch horrific content while reducing the need for human oversight.

Unlike the conventional approach, which simply compares image hashes against known offending images, the AI method can also flag previously undiscovered material. That, in turn, could help authorities catch active offenders and prevent further abuse.

The tool is free to both corporate partners and non-governmental organizations through Google's Content Safety programming kit. While there's no certainty that it'll have a dramatically reduce the volume of horrible images online, it could help outlets detect and report child sex abuse even if they have only limited resources."

quinta-feira, 23 de agosto de 2018

BOOK: Thinking in Java (Bruce Eckel)

Back to basics:
https://www.amazon.com/Thinking-Java-4th-Bruce-Eckel/dp/0131872486

BOOK: The Agile Safety Case

https://www.researchgate.net/publication/320518036_The_Agile_Safety_Case

https://www.springer.com/us/book/9783319702643

Quoting:
"The safety case (SC) is one of the railway industry’s most important deliverables for creating confidence in their systems. This is the first book on how to write an SC, based on the standard EN 50129:2003. Experience has shown that preparing and understanding an SC is difficult and time consuming, and as such the book provides insights that enhance the training for writing an SC. The book discusses both "regular" safety cases and agile safety cases, which avoid too much documentation, improve communication between the stakeholders, allow quicker approval of the system, and which are important in the light of rapidly changing technology. In addition, it discusses the necessity of frequently updating software due to market requirements, changes in requirements and increased cyber-security threats. After a general introduction to SCs and agile thinking in chapter 1, chapter 2 describes the majority of the roles that are relevant when developing railway-signaling systems. Next, chapter 3 provides information related to the assessment of signaling systems, to certifications based on IEC 61508 and to the authorization of signaling systems. Chapter 4 then explains how an agile safety plan satisfying the requirements given in EN 50126-1:1999 can be developed, while chapter 5 provides a brief introduction to safety case patterns and notations. Lastly, chapter 6 combines all this and describes how an (agile) SC can be developed and what it should include. To ensure that infrastructure managers, suppliers, consultants and others can take full advantage of the agile mind-set, the book includes concrete examples and presents relevant agile practices. Although the scope of the book is limited to signaling systems, the basic foundations for (agile) SCs are clearly described so that they can also be applied in other cases.

(PDF) The Agile Safety Case. Available from: https://www.researchgate.net/publication/320518036_The_Agile_Safety_Case [accessed Aug 24 2018]."

BOOK: Agile and safety-critical?

https://www.amazon.com/Agile-Methods-Safety-Critical-Systems-Examples/dp/1717543146
Quoting:
"Product description

This book, packed with real-world insights and direct experiences, is for managers who want the benefits of Agile but also must address regulatory compliance, integration of software with other disciplines, and product safety. In it, we combine our understanding of Agile development, hardware/software integration, and regulatory requirements. We know that Agile is simple but not easy; leadership is crucial to make this change spread. We aim to show how you can navigate the transition."

Documentation: Safety-critical

An article on safety-critical, with a contribution of Nuno Silva (who works for CRITICAL):

https://increment.com/documentation/the-complex-world-of-life-saving-safety-critical-software/

Quoting:
"Most of the programs you use every day, from word processors to smartphone apps, need oversight to ensure their usability and security, no matter how much planning and testing went into their production. For the narrow slice of systems and software that lives depend on, dubbed “safety-critical,” the requisite oversight comes alongside strict government, industry, and trade organization-mandated standards that prove the software is safe to use in high-stakes applications.

Today, software deemed safety-critical controls very complex hardware, from medical devices and cars to aircraft and nuclear reactors. Safety-critical software has unique requirements in each field, some of which are more regulated than others, but in general, regulatory agencies require extensive documentation to help ensure that the software is certifiably safe. This can equate to many times more documentation—including fastidious risk management documentation—than a comparably sized consumer software might need, given the extensive planning and testing that safety-critical software must undergo to meet certification standards. Through this documentation, teams must prove that their software is safe to use and has a very, very low chance of endangering human life."
(...)
"Safety-critical regulators have been slow to welcome emerging technologies and methodologies that are prevalent in the wider tech industry, like agile software development. Myklebust and his colleague Tor Stålhane wrote a book, The Agile Safety Case, that lays out how teams using agile development can meet compliance requirements and satisfy safety-critical standards assessors. Their plan limits the number of documents that need to be revised when updating software, which would speed up the process considerably. In the railway industry, where Myklebust primarily operates, it might take six months from writing the last line of code on a project to when it’s implemented on a track or signaling system; he reckons it should only take a week or so."

quarta-feira, 25 de julho de 2018

HISTORY: Brian Kernighan Remembers the Origins of 'grep' - The New Stack

Interesting new old insights from one of the creators of the C language:

Brian Kernighan Remembers the Origins of 'grep' - The New Stack



Quoting:

"This month saw the release of a fascinating oral history, in which 76-year-old Brian Kernighan remembers the origins of the Unix command grep.



Kernighan is already a legend in the world of Unix — recognized as the man who coined the term Unix back in 1970. His last initial also became the “k” in awk — and the “K” when people cite the iconic 1978 “K&R book” about C programming. The original Unix Programmer’s Manual calls Kernighan an “expositor par excellence,” and since 2000 he’s been a computer science professor at Princeton University — after 30 years at the historic Computing Science Research Center at Bell Laboratories.

K and R C - cover of The_C_Programming_Language_cover (via Wikipedia - fair use)

In new interviews with the YouTube channel Computerphile, Kernighan has been sharing some memories…

Brian Kernighan – via Princeton.edu

Two years ago Kernighan remembered when he’d joined Bell Labs as a graduate student in 1967 — studying electrical engineering because at the time there was no “computer science” majors. “It was a wonderful place because there was an enormous number of really good people doing really interesting things and nobody telling you what to do…”

“In one single, largish building there were probably 4,000 people, of who about 2,000 were probably PhDs in various forms of science, physics, chemistry, materials, and then on the, call it the softer end, mathematics and the relatively new field at that point of computer science.”"
(...)

"But there also wasn’t even enough memory to edit large files. Back then ed was the standard text editor — a small program written by Thompson for a world with only primitive monitors “There was no cursor addressing, so you couldn’t move around within a line. The ed text editor reflected that kind of thing.”

ed let you specify regular expressions, which appeared between slashes, along with some operations (specified outside those slashes) to perform on the lines which matched. The operations were often indicated with a single letter, like ‘p’ for print or ‘a’ for append. And there was also a ‘g’ flag which stood for global and would perform a command not just on one line, but on every line of a file (that matched the specified regular expression). For example, that print command, “p”.

And if you wrote out that command — with g for “global” and p for “print”, applying it to a regular expression between the slashes — it would look like this:

g/re/p

Kernighan supplies some crucial context — in the form of a story. Their colleague Lee McMahon had wanted to study the Federalist papers, which were written by several different authors (including Alexander Hamilton) but published under the same pseudonym, carefully analyzing the text for clues about their original authors by finding all the occurrences of specific words and phrases. Unfortunately, a plaintext version of the collection was one megabyte — “down in the noise by today’s standard,” but at the time: “wouldn’t fit. He couldn’t edit them all in ed.”

“He sent this to Ken Thompson, and then went home for dinner or something like that. And he came back the next day, and Ken had written him a program.

“And the program was called grep.”"


quarta-feira, 18 de julho de 2018

BOOK: Sprint: How To Solve Big Problems and Test New Ideas in Just Five Days (Jake Knapp, John Zeratsky, Braden Kowitz)

Sprint: How To Solve Big Problems and Test New Ideas in Just Five Days: Amazon.co.uk: Jake Knapp, John Zeratsky, Braden Kowitz: 9780593076118: Books


Quoting:
"'Sprint offers a transformative formula for testing ideas that works whether you're at a startup or a large organization. Within five days, you'll move from idea to prototype to decision, saving you and your team countless hours and countless dollars. A must-read for entrepreneurs of all stripes' Eric Ries, author of The Lean Startup.
From three partners at Google Ventures, a unique five-day process for solving tough business problems, proven at more than 100 companies.

Entrepreneurs and leaders face big questions every day: What’s the most important place to focus your effort, and how do you start? What will your idea look like in real life? How many meetings and discussions does it take before you can be sure you have the right solution?

Now there’s a surefire way to answer these important questions: the sprint. Designer Jake Knapp created the five-day process at Google, where sprints were used on everything from Google Search to Google X. He joined Braden Kowitz and John Zeratsky at Google Ventures, and together they have completed more than one hundred sprints with companies in mobile, e-commerce, healthcare, finance, and more.

A practical guide to answering critical business questions, Sprint is a book for teams of any size, from small startups to Fortune 100s, from teachers to nonprofits. It’s for anyone with a big opportunity, problem, or idea who needs to get answers today."



TOOLS: Airtable - Online collaboration tool for teams

Collaboration tools can avoid customer development. A new one around is:
https://try.airtable.com/mobile?utm_source=airtable_shared_view
Quoting:
"The all-in-one collaboration platform. Say goodbye to rigid, inflexible tools. With Airtable, ambitious teams get their best work done, their way." (so they say ;) ) 

terça-feira, 26 de junho de 2018

AI: Bots against humans?

... in complex strategy game (Dota 2)? Seems so. The bots won 2 out of 3 on a one on one game (with a junior player). But even like that it is still... Surprising (at least to say):
http://www.theregister.co.uk/AMP/2018/06/25/openai_dota_2_5v5_bots/

segunda-feira, 25 de junho de 2018

AGILE: Ron Jeffries Says Developers Should Abandon "Agile"

Ron Jeffries Says Developers Should Abandon "Agile"


Quoting:

"Ron Jeffries, author, speaker, one of the creators of Extreme Programming (XP), and a signatory of the Agile Manifesto back in 2001, shared a post on his blog in which he advocates that developers should abandon "Agile". The post further elaborated that developers should stay away from the "Faux Agile" or "Dark Agile" forms, and instead get closer to the values and principles of the Manifesto.

The terms "Faux Agile" and "Dark Agile" are used by the author to give emphasis to the variety of the so-called "Agile" approaches that have contributed, according to him, to make the life of the developers worse rather than better, which is the antithesis of one of the initial ideas of the Agile Manifesto."

terça-feira, 12 de junho de 2018

BOOK: Liquid Software

A recent book FFR, link with a sample chapter:
https://liquidsoftware.com/when-vision-becomes-reality/
Citando:
"This book is the embodiment of our thoughts and ideas on how any organization developing software can and should achieve continuous updates. It’s the culmination of a long process of brainstorming, discussing, finessing and tweaking every last word and illustration printed on those 193 pages. If you ever wished the machines could work for us instead of the other way around, this book is for you. We hope you enjoy it.


Fred Simon
Yoav Landman
Baruch Sadogursky"

quarta-feira, 16 de maio de 2018

Kanban Method 5 lines summary

Kanban Method 5 lines summary with more than 5 lines (as usual):

Foundational Principles
  • Start with what you do now; no roles/responsibilities
  • Agree pursue evolutionary change
  • Initially, respect current roles, responsibilities and job titles
  • Encourage acts of leadership



Core practises
  • Visualize; Limit WIP, manage flow; make process policies explicit (create substasks, like definition of done in Scrum), implement feedback loop (e.g. kanban retro); improve collaboratively, evolve experimentally (kanban retro actions).


Also see about David J. Anderson (kanban for the SW industry)

sexta-feira, 13 de abril de 2018

SDK: Guardium SDK for neighborhood security?

https://securityintelligence.com/neighborhood-watch-uniting-the-data-security-community-through-software-development-kits/

Quoting:
"A Neighborhood Watch for the Data Security Community

Today, there are four use case categories of interest for which we are prompting business partners to build apps: risk discovery and classification, new data sources and platforms supported for data protection, big data aggregation and analytics, and industry-focused compliance solutions. These four use cases can be addressed in a variety of ways.

For example, apps can be built to present a combination of internal and external data in tables or visualizations. They can also integrate data from external products or services for better analytics and/or compliance. In addition, apps can be built to host security rules or highlight anomalous activities and send reports to an external source.

The final piece of the puzzle is the skills and expertise of the business partners and developers themselves. Without collaboration from those who are looking for new challenges and innovative ways to contribute to the data security community at large, we can’t move forward. Much like the Neighborhood Watch, the security world needs to band together as a community to ensure that data privacy and security principles are upheld.

So what are you waiting for? To get started, download the Guardium SDK."

More info:

https://exchange.xforce.ibmcloud.com/hub/extension/cd46ff5905e6709be66ab814da9eabb4?cm_mc_uid=78223798062015236497989&cm_mc_sid_50200000=44250091523649799017

Quoting:
"IBM X-Force Exchange is a threat intelligence sharing platform that you can use to research security threats, to aggregate intelligence, and to collaborate with peers.

Logged in users have integrated access to all the functionality of the site: searching, commenting, Collections and sharing. Guests can search and view reports only."


SW Development and Ethics?

After the Cambridge Analytica "issue", ethics becomes more and more of an issue to clarify in the minds of project team members (and managers):
https://www.itproportal.com/features/rewriting-the-code-for-ethics-in-software-development/

Quoting:
"Redefining and reporting on grey areas 

However, as with all questions around ethics, inevitably, grey areas remain. Take for instance a recent survey that asked developers if they would report on ethical issues with their code in which over a third of respondents replied with 'it depends on what it is'. Equally, 58% would hold the upper management or board level members ultimately responsible for code that is produced for unethical purposes. This quite clearly illustrates the current uncertainty - and maybe even fear of speaking up - when it comes to computer ethics in action; just 13% would publicly report an unethical coding practice.  

As an industry, we need to be mindful to consider the purpose of our works and make sure there are safe ways to air concerns that arise during the course of development. Some infrastructure for this exists already in many companies, but we could regulate this to allow ethical concerns to be raised without causing undue stress and worry. (...)"

sexta-feira, 6 de abril de 2018

BOOK: The Clean Coder: A Code of Conduct for Professional Programmers (Robert C. Martin)

Not to be confused with the "Clean Code" excellent book, this one is about how to deal with managers in order to have a "long life" in the software development business:

The Clean Coder: A Code of Conduct for Professional Programmers: Robert C. Martin: 4708364241379: Amazon.com: Books


Quoting:
"Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals.

In The Clean Coder: A Code of Conduct for Professional Programmers, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship. This book is packed with practical advice–about everything from estimating and coding to refactoring and testing. It covers much more than technique: It is about attitude. Martin shows how to approach software development with honor, self-respect, and pride; work well and work clean; communicate and estimate faithfully; face difficult decisions with clarity and honesty; and understand that deep knowledge comes with a responsibility to act.

Readers will learn:
  • What it means to behave as a true software craftsman
  • How to deal with conflict, tight schedules, and unreasonable managers
  • How to get into the flow of coding, and get past writer’s block
  • How to handle unrelenting pressure and avoid burnout
  • How to combine enduring attitudes with new development paradigms
  • How to manage your time, and avoid blind alleys, marshes, bogs, and swamps
  • How to foster environments where programmers and teams can thrive
  • When to say “No”–and how to say it
  • When to say “Yes”–and what yes really means
Great software is something to marvel at: powerful, elegant, functional, a pleasure to work with as both a developer and as a user. Great software isn’t written by machines. It is written by professionals with an unshakable commitment to craftsmanship. The Clean Coder will help you become one of them–and earn the pride and fulfillment that they alone possess."

quinta-feira, 5 de abril de 2018

BOOK: Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series): Robert C. Martin: 9780134494166: Amazon.com: Books

Clean Architecture: A Craftsman's Guide to Software Structure and Design (Robert C. Martin Series): Robert C. Martin: 9780134494166: Amazon.com: Books

Quoting:

"Practical Software Architecture Solutions from the Legendary Robert C. Martin (“Uncle Bob”)

By applying universal rules of software architecture, you can dramatically improve developer productivity throughout the life of any software system. Now, building upon the success of his best-selling books Clean Code and The Clean Coder, legendary software craftsman Robert C. Martin (“Uncle Bob”) reveals those rules and helps you apply them.

Martin’s Clean Architecture doesn’t merely present options. Drawing on over a half-century of experience in software environments of every imaginable type, Martin tells you what choices to make and why they are critical to your success. As you’ve come to expect from Uncle Bob, this book is packed with direct, no-nonsense solutions for the real challenges you’ll face—the ones that will make or break your projects.

  • Learn what software architects need to achieve—and core disciplines and practices for achieving it
  • Master essential software design principles for addressing function, component separation, and data management
  • See how programming paradigms impose discipline by restricting what developers can do
  • Understand what’s critically important and what’s merely a “detail”
  • Implement optimal, high-level structures for web, database, thick-client, console, and embedded applications
  • Define appropriate boundaries and layers, and organize components and services
  • See why designs and architectures go wrong, and how to prevent (or fix) these failures
Clean Architecture is essential reading for every current or aspiring software architect, systems analyst, system designer, and software manager—and for every programmer who must execute someone else’s designs."

quarta-feira, 4 de abril de 2018

BOOK: Agile Software Development with Scrum (Series in Agile Software Development): Ken Schwaber, Mike Beedle: 9780130676344: Amazon.com: Books

The book that started it all, by Schwaber and Beedle (recently disappeared):

Agile Software Development with Scrum (Series in Agile Software Development): Ken Schwaber, Mike Beedle: 9780130676344: Amazon.com: Books

TOOL: Coco Code Coverage

Multiple-platform/compiler code coverage tool:
https://www.froglogic.com/coco/free-trial/

Quoting:
"Coco

Cross-platform and cross-compiler code coverage analysis for C, C++, C#, SystemC, Tcl and QML code.


Coco utilizes source code instrumentation to analyze the applications’ source code.

No changes to the source code are necessary.

Executing a test suite against an instrumented application produces data that can later be analyzed. This analysis can be used to understand how much of the source code has been hit by tests, which additional tests need to be written, how the code coverage changed over time and more."

terça-feira, 3 de abril de 2018

BOOK: Enterprise Scrum (Mike Beedle)

Quoting:
"The focus of Enterprise Scrum is on reinventing the company itself, or any part of it, with all of its business units, customer segments, business models, processes, products, and services.

Enterprise Scrum means Scrum applied to the Enterprise as a whole, so it means continuously reinventing, improving and adapting the company and everything it does.

In 2016, the book Enterprise Scrum: An Adaptive Method for Project Success was published."
Co-Author of Agile Manifesto and Creator of Enterprise Scrum Mike Beedle Passed Away

The blog:
http://www.enterprisescrum.com/

The BOOKEnterprise Scrum: Agile Management for the 21st Century

https://www.amazon.com/exec/obidos/ASIN/0321807847/

Quoting:
"This is today's definitive guide to making Scrum work at all levels of the enterprise, both in software development and in any other knowledge-intensive business process. Legendary agile pioneer Mike Beedle draws on his experience helping thousands of teams and individuals succeed with Scrum in projects of all types, from single-team assignments to those cutting across complex processes or the entire organization.

Beedle begins with a uniquely clear and practical explanation of Scrum: its roles, benefits, interactions, and how it reflects modern insights into complexity science. You'll master these crucial essentials with the help of clear organizational and process diagrams, as well as exceptionally relevant case studies in software development and beyond.

Building on this understanding, Beedle introduces proven enterprise-level Scrum processes for introducing, growing, and managing operations -- including Scrum's role in the Project Management Office (PMO) and in support of executive activities. He concludes with detailed case studies from multiple domains where Enterprise Scrum has delivered superior results.

Throughout, Beedle helps you understand the paradigm shift required to succeed with Scrum in any knowledge-intensive business process -- and how to gain Scrum's proven benefits of productivity, transparency, and performance."

DIGEST: SW Licensing options

An interesting sum-up of some licensing options (http://www.codeproject.com/info/Licenses.aspx) that might be of interest as a first approach to a decision on what license can we apply (or are we obliged to use) when reusing and/or building upon.

Quoting (licenses valid for Code Project): 
"

Microsoft Reciprocal License

A Microsoft open license and a free software license . Allows for distribution of derived code so long as the modified source files are included and retain the Ms-RL.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True

The Code Project Open License (CPOL)

The main points subject to the terms of the License are:
  • Source Code and Executable Files can be used in commercial applications;
  • Source Code and Executable Files can be redistributed; and
  • Source Code can be modified to create derivative works.
  • No claim of suitability, guarantee, or any warranty whatsoever is provided. The software is provided "as-is".
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True

The Common Development and Distribution License (CDDL)

Based on the Mozilla Public License (MPL) that makes it more applicable for use outside the Mozilla Foundation.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: True
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True

The Microsoft Public License (Ms-PL)

Used by Microsoft. Compiled derived code can be distributed, for both commercial and non-commercial use. If the source code is to be redistributed then a complete copy of this license must be included in the redistribution.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True

The Mozilla Public License 1.1 (MPL 1.1)

Used by Mozilla and Firefox, among others. The patent clauses are not acceptable to some.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: True
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True

The Common Public License Version 1.0 (CPL)

Derived from the IBM Public License and influenced by the Mozilla Public License, and used by some Microsoft projects on SourceForge.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: True
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True

The Eclipse Public License 1.0

A newer version of the Common Public License that is in some cases more acceptable to business.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: True
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True

The MIT License

A very old license with essentially no restrictions on the use of the code. It also provides very little in the way of protection for authors or users. It is the same as the BSD license without the 'no endorsement' clause.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True

The BSD License

A very old license with essentially no restrictions on the use of the code. It also provides very little in the way of protection for authors or users. It is the same as the MIT license except that it includes a clause preventing the use of the author's name for endorsement.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True

The Apache License, Version 2.0

Slightly more restrictive (but still very open) version of the BSD or MIT license that adds patent clauses. Read carefully.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: True
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True

The Creative Commons Attribution-ShareAlike 2.5 License

A license that requires a link be visible on works that use this license. "Share alike" is what it sounds like, you can share this work as long as that work has a license similar to this one.
It is recommended that this license not be used for software.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: False
Is a viral licence: True
Supported by CodeProject: False

The zlib/libpng License

A license with an emphasis on freedom of use and re-use, with a few restrictions.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True

A Public Domain dedication

Not a license, but a dedication to the public domain. All rights are given up and anyone can do anything they wish with the code. Please note this is not a license and provides no guarantees for the user and no indemnities for the author.
Provides copyright protection: False
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: True
Is a viral licence: False
Supported by CodeProject: True

The Creative Commons Attribution 3.0 Unported License

This license lets others distribute, remix, tweak, and build upon your work, even commercially, as long as they credit you for the original creation. It is recommendedthat this license not be used for software.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: False
Is a viral licence: True
Supported by CodeProject: False

The Creative Commons Attribution-Share Alike 3.0 Unported License

A license that requires a link be visible on works that use this license. "Share alike" is what it sounds like; you can share this work as long as that work has a license similar to this one. It is recommended that this license not be used for software.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: False
Is a viral licence: True
Supported by CodeProject: True

The Creative Commons Attribution-NoDerivatives 3.0 Unported

A license which specifies that if you remix, transform, or build upon the material, you may not distribute the modified material. It is recommended that this license not be used for software.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: False
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: False
Is a viral licence: True
Supported by CodeProject: True

The GNU Lesser General Public License (LGPLv3)

A derivative of the GPL that was intended to allow non-GPL code to work with, and call GPL code. The author of this license asks that you only use this license if you are licensing functionality already commonly available.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: True
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: True
Is a viral licence: True
Supported by CodeProject: True
Example usage in your code
(Replace 'Foobar' with the name of your product)
This file is part of Foobar.
 
Foobar is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
 
Foobar is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser Public License for more details.
 
You should have received a copy of the GNU Lesser Public License
along with Foobar.  If not, see <http://www.gnu.org/licenses/>.

The GNU General Public License (GPLv3)

A common but misunderstood license. This allows developers to freely use the software as long as they use the same (or an even less restrictive) license for parts of the program that they wrote themselves. Viral in nature. Read carefully and make sure you understand the implications of using this license. Unacceptable to many.
You can write commercial software using software licensed with the GPL, but you cannot write proprietary software (meaning software for which the code is not freely available). You can sell GPL code, even if it's already being given away, or you can sell services attached to the code such as support contracts.
Any software written using GPL'd code must itself be licensed using the GPL (or less restrictive license) meaning it cannot be proprietary. This means that developers writing commercial software may not be able to use GPL code if they do not wish to provide the code.
One important note (thanks to René Pfeiffer): The GPL doesn't require you to publish the source to the world. Only the recipient of the software needs to have the source. If you have a customer, write GPLed software for a specific purpose and only give the binary to this customer, then only this customer must have access to the source code, not everybody and not the public; just the recipient of the (binary) code. This is in full agreement to the GPL. The main advantage is to play with open cards and not create a "blackmail" situation.
At the Code Project we prefer that developers allow other developers to use their freely given code in whatever way they wish - commercial, proprietary, or free for anyone. Our preference is that our authors do not use a GPL-like license.
Provides copyright protection: True
Can be used in commercial applications: True
Bug fixes / extensions must be released to the public domain: True
Provides an explicit patent license: False
Can be used in proprietary (closed source) applications: False
Is a viral licence: True
Supported by CodeProject: True

Example usage in your code
(Replace 'Foobar' with the name of your product)
This file is part of Foobar.
 
Foobar is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
 
Foobar is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
 
You should have received a copy of the GNU General Public License
along with Foobar.  If not, see <http://www.gnu.org/licenses/>.

"