After decades of every vendor/project/application building their own implementation for these, we're finally going to have a commonly available implementation and standard from the OpenTelemetry project:
Well, as the title states we'll be addressing software development topics (mainly in English). Topics will be quick and short and most probably aligned with the training "problems", sorry, programs I am involved in. PS. Some links are "internal" (not publicly available): If you are not able to reach it, google will find you a publicly available information source for sure. Happy trails to you.
segunda-feira, 29 de junho de 2020
REUSE: Open Telemetry project
After decades of every vendor/project/application building their own implementation for these, we're finally going to have a commonly available implementation and standard from the OpenTelemetry project:
quarta-feira, 8 de maio de 2019
Logging: Flogger
https://www.infoq.com/news/2019/04/java-logging-framework-flogger
Quoting:
"new open-source Java logging framework called Flogger. Acknowledging that "[t]he field of open-source Java logging APIs is already extremely crowded", Google asserts that Flogger offers "many benefits over existing logging APIs". These improvements include reducing the cost of disabled log statements, increasing overall readability, and allowing extensibility.
Flogger, a portmanteau of fluent and logger, argues that one of its main benefits is "[l]ogging at disabled levels is effectively free." Whereas other logging frameworks may generate bytecode for disabled logging statements, Flogger aims to completely avoid it.
More specifically, logging frameworks typically utilize varargs to accommodate the unknown number of parameters in a logging method call rather than having hundreds or even thousands of different and unpredictable method signatures. This use of varargs results in additional bytecode, particularly to allocate an Object[] for storing the varargs. While additional bytecode doesn’t typically warrant concern, it becomes particularly important in applications with very fine-grained logging statements or logging statements that occur in loops."
segunda-feira, 14 de janeiro de 2019
REUSE: Route Calculations with TomTom Maps APIs
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
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.
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."
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."
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/
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."
terça-feira, 3 de abril de 2018
DIGEST: SW Licensing options
Quoting (licenses valid for Code Project):
"
Microsoft Reciprocal License
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)
- 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)
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)
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)
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)
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
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
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
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
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
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
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
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
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
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
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)
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
(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)
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
(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/>.
segunda-feira, 19 de março de 2018
REUSE: The Elements of Reusable Code (Chris Wash)
The Elements of Reusable Code
More from Chris Wash:
https://www.captechconsulting.com/search#q=Chris Wash
quinta-feira, 23 de novembro de 2017
TOOL: EA Image Library (Enterprise Architect, UML tool)
The Short Story
Useful at all times, this free image library will speed up the production of professional diagrams (that can be incorporated into presentations and/or technical documents), in the case you are using Sparx Systems Enterprise Architect (EA) to model yourinformation system:
Step 1: Download the free image libray
Step 2: Install the image library in EA
http://www.sparxsystems.com/enterprise_architect_user_guide/12.0/modeling_basics/importimagelibary.html
Step 3: use the images
To use the images (e.g. change an UML node to a server image):
· Press Ctrl+Shift+W, or
· Right-click the selected element and select Appearance | Select Alternate Image
The Long Story
Why use this with EA? Example: A UML Deployment Diagram can be changed to use the images in the library, instead of the standard UML images (Nodes, Artifacts). This will benefit validation with the customer, hence, it will benefit you, as a business analyst (right?).quarta-feira, 8 de novembro de 2017
AI: OpenAI (open source systems)
"Old" news about OpenAI firm by Elon Musk (2015) and MS Azure:
http://www.ibtimes.co.uk/microsoft-elon-musks-openai-join-hands-democratize-artificial-intelligence-1591770
Quoting:
"Elon Musk's $1bn non-profit artificial intelligence (AI) research firm OpenAI has signed an agreement with Microsoft to run most of its large-scale experiments on the tech giant's flagship cloud platform, Azure. Announcing the partnership on Tuesday (15 November), the companies said they are focused on the importance of "democratizing access to AI" and "making significant contributions to advance the field of AI" to tackle some of the world's most challenging issues. OpenAI said it will use Microsoft's Azure platform for its experiments and research in AI and deep learning."
The (open source) systems are listed here:
https://openai.com/systems
sábado, 28 de outubro de 2017
Autonomous Vehicles: Open sourced? (Apollo 1.0 self-driving car software)
Source:
https://www.cnet.com/roadshow/news/open-source-apollo-speeds-up-baidus-self-driving-software-development/
Quoting:
"In July, Chinese technology company Baidu made its Apollo 1.0 self-driving car software available as open source on Github, using the Apache/BSD license. By Day 4 of the release, it was the most downloaded C++ software on the site.
At an Apollo meetup hosted by Baidu at its Sunnyvale, California, offices, company president Ya-Qin Zhang announced Apollo 1.5, a major iteration of the software, just three months after the initial release."
quarta-feira, 25 de outubro de 2017
Reuse: Global Mapper SDK (4DMapper)
4DMapper is a geospatial cloud-based SDK (referred in a press release):
https://www.suasnews.com/2017/10/4dmapper-chooses-global-mapper-software-development-kit-sdk-online-analytics/
More details, quoted:
"Global Mapper Software Development Kit (SDK) as the engine behind its online data analytics services. The company’s innovative cloud-based approach to geospatial data creation and distribution reduces the need for their customers to maintain high-end processing hardware and software and it simplifies and streamlines access to the processed data. By making use of a collection of Global Mapper’s powerful 3D data manipulation tools, 4DMapper users can quickly and easily convert a point cloud into contours, generate an elevation grid, and much more."
(...)
"Among the tools available to 4DMapper customers are LiDAR ground point identification and reclassification; DEM creation from a point cloud; custom contour generation; and delineation of ridgelines. Each of these workflows involves the uploading of the relevant source data and results in the creation of a derivative file that can be quickly and easily shared with a customer or client on a web browser."
terça-feira, 10 de outubro de 2017
Ethics and software development?
Sure! 2 examples of lack of ethic and the damage (to the image) done: Uber and Wolkswagen:
http://www.computerweekly.com/feature/Ethical-software-development-Ask-Uber-and-Volkswagen
Quoting:
"The software reportedly presents an alternative site to customers, or people wishing to book a ride from outside these buildings, which is used to prevent officials from booking an Uber ride.
Other cities have been concerned abut the use of Greyball software
(...)
This is not the first time a company has been found to have written software explicitly to get around official tests and audits.
In May 2014, Volkswagen was found to have modified its engine management software to detect when its diesel cars were being run on an official emissions test, so that it could dial down the emissions. The carmaker effectively wrote software specifically to cheat, according to the New York Times, which wrote: “Volkswagen admitted that 11 million of its vehicles were equipped with software that was used to cheat on emissions tests.”"
(...)
"The coder wrote: “I think we need to establish a code of ethics for programmers. Doctors, social workers and even lawyers have a code of ethics, with tangible consequences for skimping on them. Why not programmers as well?
“I want to live in a world where a programmer who hasn’t agreed to follow our code of ethics has a hard time getting employed. It is simply not acceptable to write code that is harmful to users. What the hell is wrong with these people?”"
I say: oh yeah! ;)
domingo, 8 de outubro de 2017
Reuse: Add 3D printing features?
https://www.tctmagazine.com/tct-events/tct-show-uk/tech-soft-additive-manufacturing-hoops-software/
Quoting:
"HOOPS software development toolkits and Polygonica.
The company reveals that many of their partners looking to add 3D printing capability to existing products or develop new innovative ones are using the modules in lieu of developing the technology in-house."
TBC: licensing and pricing
quarta-feira, 4 de outubro de 2017
Open Source: Mass spectrometer analysis API
Open source, the good parts (like not having to implement Fourier transformations in plain Java) include open source mass spectrometry APIs:
https://www.nature.com/articles/nmeth.3959.epdf
Project in GitHub:
https://github.com/OpenMS/OpenMS
sábado, 16 de setembro de 2017
Licensing: Comparison of FOSS licenses
Licensing is an important part to analyse before reusing (integrating a product into your product/solution/information system). Remember that nobody will "bother" you (in principle) up until you have what everyone wants: success (measured in millions is USD).
https://en.m.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licenses
segunda-feira, 21 de agosto de 2017
OSS: Integrating Open Source in Commercial Software (Risks)
http://sdtimes.com/open-source-commercial-software-development-handle-care/
"licenses fit into two major categories: Permissive and Copyleft. With Permissive licenses, there are few terms and conditions. With Copyleft licenses, the terms and conditions tend to be more stringent and bind any derivative work to the same terms and conditions."
(...)
"Mitigate Your Legal Risk
You can mitigate your risks by following some key steps. Some best practices:
- Track all third party software included in your distribution and the license type, and keep it up to date. Consider each addition carefully, examining the risks and the benefits. Be sure to republish the license text of each work (and subwork), particularly if you are distributing object code only.
- For Apache works, be sure to republish a copy of the Apache license, together with a prominent notice on any modified files that you have changed the files.
- Consider the use of any GPL work in a closed source application very carefully. If your application can be considered and extension of the GPL work, you may be required to disclose your source. Seek counsel if your rights are in doubt.
- Is the project supported by a specific group of developers and is there a thriving community dedicated to delivering a quality application? Or, is the software built by a single developer as a part-time project?
- Are contributions well vetted and under CLA? Consider the effort and expense of replacing the software should you encounter any issues. Can it be swapped out easily, or is it intimately entangled with your application? Consider the value of the contribution when compared to self-developed or commercial alternatives. Could you benefit from vendor engagement and professional support?"
domingo, 16 de julho de 2017
Architecture: Cubesats explained
Modular architectures (highly reusable designs) allow for the creation of new market segments to explore. A good example are Cubesats:
https://www.space.com/29320-cubesats-spacecraft-tech-explained-infographic.html
Quoting:
"The CubeSat program began in 1999 as a collaboration between California Polytechnic State University and Stanford University. The goal was to design a standard for picosatellites, tiny Earth-orbiting boxes usually with a volume of about 61 cubic inches (1 liter) and a mass of about 2.9 lbs. (1.33 kilograms).
CubeSats are built in a variety of sizes, from 1U (one unit) up to three-plus units. Rails on the edges smooth the ride as the satellite is ejected from the P-POD deployer. Rectangular access doors are arrayed down the side of the satellite."