Author: ilapitan
Newsletter – Week 37, 2019
News:
- Jakarta EE 8 release – the future is now!
https://jaxenter.com/jakarta-ee-8-release-interview-eclipse-161955.html - JavaFX 13 released – the new frontier for OpenJFX
https://jaxenter.com/javafx-13-released-new-frontier-openjfx-162088.html - Amazon Releases Container Monitoring for Amazon ECS, EKS, and Kubernetes via CloudWatch
https://www.infoq.com/news/2019/09/aws-container-insights-ga/ - France and Germany have said they will oppose Facebook’s digital currency
https://www.technologyreview.com/f/614321/facebook-libra-france-and-germany-say-they-will-oppose-facebooks-digital-currency/
Articles:
- Java Concurrency: Synchronization
https://dzone.com/articles/java-concurrency-synchronization - Jakarta EE 8: Past, Present, and Future
https://jaxenter.com/jakarta-ee-8-past-present-future-161990.html - Improving Code Readability
https://dzone.com/articles/improving-code-readability-1 - Q&A on the Book Continuous Delivery in Java
https://www.infoq.com/articles/qa-book-continuous-delivery-java/ - Best Practices for Event-Driven Microservice Architecture
https://dzone.com/articles/best-practices-for-event-driven-microservice-archi - Column Level Encryption in GCP
https://dzone.com/articles/column-level-encryption-and-gcp - Kids are surrounded by AI. They should know how it works.
https://www.technologyreview.com/s/614306/kids-are-surrounded-by-ai-they-should-know-how-it-works/
Videos:
- Quarkus and GraalVM: Booting Hibernate at Supersonic Speed, Subatomic Size
https://www.infoq.com/presentations/quarkus-graalvm-sao-paulo-2019/ - Are We Really Cloud-native?
https://www.infoq.com/presentations/cloud-native-intro/ - Building Resilient Serverless Systems
https://www.infoq.com/presentations/serverless-iascode-resilience/ - Three Approaches to Scaling Machine Learning with Uber Seattle Engineering
https://eng.uber.com/three-approaches-to-scaling-machine-learning-with-uber-seattle-engineering/ - François Chollet: Keras, Deep Learning, and the Progress of AI | Artificial Intelligence Podcast
https://www.youtube.com/watch?v=Bo8MY4JpiXE
Newsletter – Week 36, 2019
Articles:
- Java Concurrency: CopyOnWrite
https://dzone.com/articles/java-concurrency-copy-on-write - OutOfMemoryError related JVM arguments
https://jaxenter.com/jvm-outofmemoryerror-161257.html - How Lyft Creates Hyper-Accurate Maps from Open-Source Maps and Real-Time Data
https://eng.lyft.com/how-lyft-creates-hyper-accurate-maps-from-open-source-maps-and-real-time-data-8dcf9abdd46a - State Of AI And Machine Learning In 2019
https://www.forbes.com/sites/louiscolumbus/2019/09/08/state-of-ai-and-machine-learning-in-2019/#16bdb9821a8d
Videos:
- CockroachDB: Architecture of a Geo-distributed SQL Database
https://www.infoq.com/presentations/cockroachdb-distributed-sql/ - Seven Steps to Design, Build, and Scale an AI Product
https://www.infoq.com/presentations/ai-7-steps/ - Vijay Kumar: Flying Robots | Artificial Intelligence (AI) Podcast
https://www.youtube.com/watch?v=HYsLTNXMl1Q
Newsletter – Week 35, 2019
News:
- Google Releases a Managed Service for Microsoft Active Directory (AD) in Beta
https://www.infoq.com/news/2019/09/gcp-microsoft-ad-beta/
Articles:
- JEP 359: Records
https://jaxenter.com/jep-359-records-161403.html - JEP 360: Sealed Types
https://jaxenter.com/jep-360-sealed-types-161424.html - JEP draft: Throughput post-write barrier for G1
https://jaxenter.com/java-jep-draft-throughput-post-write-barrier-g1-161449.html - GraphQL Java Example for Beginners [Spring Boot]
https://dzone.com/articles/a-beginners-guide-to-graphql-with-spring-boot - Autowiring in Spring
https://dzone.com/articles/autowiring-in-spring - Who? Why? What? Fix? – System.gc()
https://jaxenter.com/fix-system-gc-tutorial-160950.html - 8 Benefits of Unit Testing
https://dzone.com/articles/top-8-benefits-of-unit-testing - Using GraphQL to Improve Data Hydration in our Customer Care Platform and Beyond
https://eng.uber.com/graphql-data-hydration-customer-care/ - How to Use Chaos Engineering to Break Things Productively
https://www.infoq.com/articles/chaos-engineering-security-networking/ - Continuous Delivery for Machine Learning
https://martinfowler.com/articles/cd4ml.html
Videos:
- Reactive Spring
https://www.infoq.com/presentations/reactive-spring-sao-paulo-2019/ - GOTO 2019 – Journeys To Cloud Native Architecture: Sun, Sea & Emergencies by Nicki Watt
https://www.youtube.com/watch?v=GybLDN4Zofs - The ethics of AI – dealing with difficult choices in a non-binary world
https://jaxenter.com/ethics-ai-dealing-difficult-choices-non-binary-world-161355.html - Yann LeCun: Deep Learning, Convolutional Neural Networks, and Self-Supervised Learning | AI Podcast
https://www.youtube.com/watch?v=SGSOCuByo24
Newsletter – Week 34, 2019
News:
- OpenJFX to follow Java and migrate to GitHub
https://jaxenter.com/openjfx-migrate-github-follow-java-161181.html - Git 2.23 Offers Significant Updates
https://dzone.com/articles/git-223-offers-significant-updates
Articles:
- Project Loom: Java With a Stronger Fiber
https://dzone.com/articles/a-new-java-with-a-stronger-fiber - JEP drafts – removing Concurrent Mark Sweep garbage collector & ZGC support for macOS
https://jaxenter.com/jep-drafts-zgc-concurrent-mark-sweep-garbage-collector-161141.html - GraalVM 19.2.0: Preview the Java Flight Recorder plugin
https://jaxenter.com/graalvm-19-2-0-161188.html - DBT: A new way to transform data and build pipelines at The Telegraph
https://medium.com/the-telegraph-engineering/dbt-a-new-way-to-handle-data-transformation-at-the-telegraph-868ce3964eb4
Videos:
- Strategic Domain-Driven Design
https://www.infoq.com/presentations/strategic-ddd/ - Jeremy Howard: fast.ai Deep Learning Courses and Research | Artificial Intelligence (AI) Podcast
https://www.youtube.com/watch?v=J6XcP4JOHmk
Newsletter – Week 33, 2019
News:
- Microsoft acquires leading AdoptOpenJDK contributor jClarity
https://jaxenter.com/adoptopenjdk-contributor-jclarity-acquired-microsoft-161112.html - The Inaugural JakartaOne Virtual Conference Goes Lives with the Release of Jakarta EE 8
https://www.infoq.com/news/2019/08/jakarta-one-conference-2019/ - Gradle 5.6 released – faster Groovy compilation, new plugin for Java test fixtures & more
https://jaxenter.com/gradle-5-6-release-161049.html
Article:
- java.lang.Record: Draft Specification
https://dzone.com/articles/javalangrecord-draft-specification - When to Use JSR 305 for Nullability in Java
https://dzone.com/articles/when-to-use-jsr-305-for-nullability-in-java - Java Cloning: Even Copy Constructors Are Not Enough
https://dzone.com/articles/java-cloning-even-copy-constructors-are-not-suffic - Jakarta EE & Eclipse MicroProfile – ongoing discussions
https://jaxenter.com/jakarta-ee-eclipse-microprofile-ongoing-discussions-161031.html - Upgrading Pinterest operational metrics
https://medium.com/pinterest-engineering/upgrading-pinterest-operational-metrics-8718d058079a - Heather VanCura, Director of the JCP, Speaks to InfoQ on the JCP 20th Anniversary
https://www.infoq.com/news/2019/08/jcp-20th-anniversary/ - How Kubernetes Works
https://dzone.com/articles/how-kubernetes-works - Empathy is a Technical Skill
https://www.infoq.com/articles/empathy-technical-skill/
Video:
- Serverless Java
https://www.infoq.com/presentations/serverless-java-sao-paulo-2019/ - Science at Uber: Applying Artificial Intelligence at Uber
https://eng.uber.com/applying-artificial-intelligence-at-uber/ - Getting Started in Deep Learning with TensorFlow 2.0
https://www.infoq.com/presentations/dl-tensorflow-2/ - From Research to Production With PyTorch
https://www.infoq.com/presentations/pytorch-torchscript-botorch/ - Keoki Jackson: Lockheed Martin | Artificial Intelligence (AI) Podcast
https://www.youtube.com/watch?v=anXep8kBOCg
Newsletter – Week 32, 2019
News:
- Amazon Opens a New Region in Bahrain – AWS Middle East
https://www.infoq.com/news/2019/08/aws-region-middle-east-bahrain/ - VS Code 1.37 updates with new product icons. Yea or nay?
https://jaxenter.com/vs-code-1-37-160903.html - So long, Spring Boot 1.x!
https://jaxenter.com/spring-boot-1-x-end-of-life-160781.html
Articles:
- JEP 358 – Improved NullPointerExceptions
https://jaxenter.com/java-jep-358-improved-nullpointerexceptions-160882.html - Java Web Start is dead, long live Java Web Start!
https://jaxenter.com/java-web-start-openwebstart-160913.html - Quarkus – what’s next for the lightweight Java framework?
https://jaxenter.com/quarkus-whats-next-for-the-lightweight-java-framework-160793.html - What Every Developer Should Learn Early On
https://stackoverflow.blog/2019/08/07/what-every-developer-should-learn-early-on/ - Introducing Pinqueue3.0, Pinterest’s next-gen content moderation platform
https://medium.com/@Pinterest_Engineering/introducing-pinqueue3-0-pinterests-next-gen-content-moderation-platform-fcfa972bf39c
Videos:
- GOTO 2019 – Practical API Design by Ronnie Mitra
https://www.youtube.com/watch?v=272ZZ53HS_4 - Leaving the Ivory Tower: Research in the Real World
https://www.infoq.com/presentations/hashicorp-research/ - Deep Learning for Recommender Systems
https://www.infoq.com/presentations/dl-models-tensorflow/ - Paola Arlotta: Brain Development from Stem Cell to Organoid | Artificial Intelligence (AI) Podcast
https://www.youtube.com/watch?v=lVHRs3uTHNI
Yin and Yang
In today’s article, I want to discuss a dualism present in programming languages.
What it could be?
I think in some matter we can notice this fact in very different aspects related to the programming languages. But, today I want to discuss how different programming languages process array indexes.
So there are programming languages with 0-based and 1-based indexes for arrays. The programming languages with 0-based indexes apply zero-based numbering approach when the initial element of a sequence is assigned the index 0.

The programming languages with 1-based indexes are based on the one-based numbering approach when the initial element of a sequence is assigned index 1.

A first group includes programming languages so-called general-purpose programming languages. There are some of them in the table below:
| Array Index Type | Programming Language |
|---|---|
| 0-based | C |
| 0-based | C++ |
| 0-based |
C# |
| 0-based |
Java |
| 0-based | Python |
| 0-based | JavaScript |
| 0-based | PHP |
| 0-based | Ruby |
At the same time, programming languages with 1-based indexes have mostly mathematical nature and used for mathematical and scientific calculations. Some of the examples right below in the table:
| Array Index Type | Programming Language |
|---|---|
| 1-based | Fortran |
| 1-based | MATLAB |
| 1-based | R |
| 1-based | Julia |
Despite on hot discussions regarding which approach is correct I would say it was historically confirmed that both of them work well.
The 0-based indexes are good because of their native support of pointer arithmetic and their half-open intervals nature. The 1-based indexes have real-life indexing approach (we use the same approach every day), have good support for the processing of vectors and matrices (linear algebra) in the form of arrays.
So, there is no right answer, which approach is better, as always – context does matter.
Note: I know that there is another small set of programming languages (Ada, Pascal) which supports N-based array types when their minimal indexes are fully defined by the programmer. Such behavior is an exceptional case and I decided to omit it in this article.
Newsletter – Week 31, 2019
News:
- Brian Goetz Speaks to InfoQ about Proposed Hyphenated Keywords in Java
https://www.infoq.com/news/2019/07/hyphenated-keywords-for-java/
Articles:
- Design Patterns for Microservices
https://dzone.com/articles/design-patterns-for-microservices-1 - Debunking the Five Most Popular Software Development Myths
https://dzone.com/articles/debunking-the-5-most-popular-software-development - Disasterpiece Theater: Slack’s process for approachable Chaos Engineering
https://slack.engineering/disasterpiece-theater-slacks-process-for-approachable-chaos-engineering-3434422afb54
Videos:
- Becoming a Fully Buzzword Compliant Developer
https://www.infoq.com/presentations/developer-survival-guide/ - Work Together Anywhere: What Great Remote Teams Look Like
https://www.infoq.com/presentations/work-remotely-team/ - Kevin Scott: Microsoft CTO | Artificial Intelligence (AI) Podcast
https://www.youtube.com/watch?v=QDN6xvhAw94 - George Hotz: Comma.ai, OpenPilot, and Autonomous Vehicles | Artificial Intelligence (AI) Podcast
https://www.youtube.com/watch?v=iwcYp-XT7UI
Newsletter – Week 30, 2019
News:
- Apache NetBeans 11.1 Released as Top Level Project
https://www.infoq.com/news/2019/07/netbeans-11-apache/ - IntelliJ IDEA 2019.2 brings Java 13 Preview features, services tool window & much more
https://jaxenter.com/intellij-idea-2019-2-brings-java-13-preview-features-160400.html - Docker Enterprise 3.0 Brings Docker Kubernetes Services, New Lifecycle Automation Tools, and More
https://www.infoq.com/news/2019/07/docker-enterprise-3/ - Google Acquires Elastifile to Expand Its Cloud File Storage Offering
https://www.infoq.com/news/2019/07/google-elastifile-acquisition/
Articles:
- OpenJDK Project Valhalla Releases LW2 Prototype
https://www.infoq.com/news/2019/07/valhalla-openjdk-lw2-released/ - Java Concurrency: AtomicInteger
https://dzone.com/articles/java-concurrency-atomicinteger - Running Single-file Programs without Compiling in Java 11
https://www.infoq.com/articles/single-file-execution-java11/ - Jakarta EE & MicroProfile – two names, one family?
https://jaxenter.com/interview-jakarta-ee-microprofile-160454.html - Microservice Architecture and Design Patterns for Microservices
https://dzone.com/articles/microservice-architecture-and-design-patterns-for - Top 10 AWS Architect Interview Questions 2019
https://dzone.com/articles/top-10-aws-architect-interview-questions-2019 - Fairness, Privacy, and Transparency by Design in AI/ML Systems
https://engineering.linkedin.com/blog/2019/fairness-privacy-transparency-by-design - How AI and satellite data are helping farmers waste less water
https://news.microsoft.com/europe/features/how-ai-and-satellite-data-are-helping-farmers-waste-less-water/
Videos:
- Driving Technology Transformation at @WeWork
https://www.infoq.com/presentations/wework-platform-technology/ - Gustav Soderstrom: Spotify | Artificial Intelligence (AI) Podcast
https://www.youtube.com/watch?v=v-9Mpe7NhkM