News
Twitter unable to distinguish bots from human users
CNN | Verge | Verge | Guardian | Reuters
Twitter this week told the public that it can’t tell the difference between real users and bots, in so many words. There’s no other solution but to put the entire platform behind a login wall and begin rate limiting users. Every tech company in the world faces the same problem but somehow the bots we’re just too much for the blue birdie. If you or a loved one works at Twitter, please take a moment to review the Google ReCaptcha v3 docs. Please be advised however that reCaptcha is a paid service offered by GCP.
NY AI hiring law takes effect
NYC implemented a law requiring companies to disclose their use of AI in hiring decisions, mandating annual third-party audits to identify any bias in AI tools used for employment. It’s being touted as the first law of its kind, and that’s with the EU AI regulation around the corner. The explainability of ML models in order to meet regulation or compliance requirements will likely shape the development of the field. Who knows, we might just see entire Saas offerings dedicated to this as we do with HIPAA and PCI compliance.
Reddit API changes take effect, but impact goes beyond
Wired provides us with a solid take that the reddit backlash is an extension of a wider internet labor movement, as volunteers and moderators reevaluate their relationship to the platforms and the content they provide it. It might not necessarily be programming design related, but much of software development as a craft relies on freely available information, solutions, and explanations provided on platforms like Reddit or Stackoverflow. So it’s definitely a relevant story to follow.
Announcements
English as a DSL for Apache Spark
Databricks announced this week a way for dataframes to be generated from prompts. The article does a good job of outlining the shortcomings of comment-based prompting with popular AI-assistants such as Github Copilot and AWS Code Whisperer, like lacking context and producing code hallucinations. Databricks used this to inform their implementation: users provide a dataframe with a prompt which the SDK will then use AI to produce the intended transformations. Brilliant.
transformed_df = df.ai.transform('get 4 week moving average sales by dept')
DynamoDB local version 2.0
DynamoDB local has been updated to use the jakarta.* namespace. This update enables Java developers to utilize DynamoDB local with Spring Boot 3, Spring Framework 6, and Micronaut Framework 4, facilitating the development of modern, simplified, and lightweight cloud-native applications. DynamoDB Local is critical not only for development but also for unit and integration tests, and can be set up to work in your CI/CD pipelines.
3rd Party Event Ingestion for AWS Incident Detection & Response
AWS Incident Detection and Response now supports ingestion of events from third-party APM tools via Amazon EventBridge. This feature eliminates the need to replicate metrics on Amazon CloudWatch. It also allows developers to send events from multiple APM tools for the same application, providing greater flexibility. Finally AWS is coming full circle and focusing on bringing unity among all your different monitoring tools.
SageMaker Canvas now supports parquet files
SageMaker Canvas (a visual interface for generating ML predictions) now supports parquet files. This update allows business analysts to work with additional file formats for tabular, time-series forecast, and NLP datasets without any ML expertise or coding required. Users can import parquet files from their local disk or S3 bucket, with each file up to 5GB in size. Overall, good to see that Sagemaker Canvas is getting support for such an important format to ML and data applications.
Apigee X gets an update
Apigee X has released an updated version with several new features. Firstly, the Pay-as-you-go pricing model now allows users to start using Apigee at a reduced initial cost and adjust ongoing expenses based on usage. The release also includes three new environment types: Base, Intermediate, and Comprehensive, each offering different capabilities and costs. Additionally, there is a preview release of standard and extensible API proxies, which are compatible with the updated Pay-as-you-go pricing. The release introduces new policies, including HTTPModifier and ReadPropertySet, and supports templating for message URLs.
Interesting Reads
Beyond Browsers: The Longterm Future of JavaScript Standards
ECMAScript as a standard for javascript has primarily been driven by browser needs. Yet, increasingly, the language is being used in more and more contexts, like IoT and server-side. To address this, new features are being introduced to the language from server-side runtimes, such as async context, which proves useful in browsers as well. Efforts are also being made to standardize JavaScript runtimes, allowing users to customize runtime characteristics to suit their specific needs.
What is the Multiton Design Pattern?
The multiton pattern is a variation of the singleton pattern that allows a class to have multiple instances, each with a unique identifier. It is useful when you need a limited number of instances, but more than one, and the number of instances is known in advance. The pattern ensures there is only one instance for each identifier and allows easy access to specific instances. Think a BlogPost class with a .byId()
method.
CommonJS is not going anywhere
The recent release of Bun (a runtime for JavaScript) has emphasized its support for the CommonJS module system, which is often seen as a legacy technology. Despite the growing popularity of ES Modules (ESM), the team behind Bun believes that CommonJS is here to stay and can still be improved. CommonJS is known for its synchronous nature and is designed for server-side JavaScript, while ESM is asynchronous and mainly used in browsers. The team at Bun recognizes the value and pragmatism of CommonJS and considers it a first-class citizen in their runtime.
Corporate Software Development Assumes Software Can Be Append Only
The prevalence of bloated and error-ridden software is attributed to the corporate structure of software development. Public corporations prioritize adding more features to appease shareholders and investors, resulting in disjointed and fragmented software. Updates often break functionality, and users are left troubleshooting configuration files and caches. Websites bombard users with pop-ups and outdated browser warnings. The assumption that software is fungible leads to the belief that new features can be appended without modifying existing code. However, this approach results in spaghetti code and a lack of cohesion. Corporate structures attempt to mitigate this by dividing development into independent groups, but this further hampers the overall quality and coherence of the software.
Fearless Tinkering is Functional
Functional programming often faces criticism due to perceived lack of commercial validation, high barriers to entry, sparse libraries, poor documentation, unfamiliar academic culture, and a limited entry-level job market. However, proponents argue that the functional paradigm has excellent discoverability and experimentation due to fearless tinkering. By addressing fears and complexity in programming through functional languages, developers can rely on referential transparency, pure functions, immutability, declarative programming, higher-order functions, compositionality, managed effects, and other functional programming concepts.
Help Us Grow
If you’ve enjoyed this round up, please help us grow by sharing this post to your social networks. The button below already has links ready to go for facebook, linkedin, and more.
Thanks for reading and see you next week!