Noutați

2024 Infrastructure Tech Predictions

Ganesh Srinivasan, partner at Venrock, co-authored this article. 2023 was a rollercoaster like none other; from the death of the modern data stack sprawl to the birth of generative AI, we are only at the beginning of a new era in the ‘art of the possible.’ We guarantee 2024 won’t be a disappointment. With a new year approaching, it’s the perfect time for us to examine what we anticipate being the biggest developments in the year ahead. Here is what we think is going to happen in 2024: 1. OpenAI’s Reign Challenged With the emerging learnings in core neural net architectures that led to the transformer and dominance by OpenAI, it is likely that their imminent release of GPT5 will be surpassed in specific performance benchmarks by a new entrant on the backs of more efficient architectures, improved multimodal capabilities, better contextual understanding of the world and enhanced transfer learning. These new models will be built on emerging research in spatial networks, graph structures and combinations of various neural networks that will lead to more efficient, versatile and powerful capabilities. 2. Apple: The New Leader in Generative AI One of the most important players in the generative AI space is only starting to show their cards. 2024 will be the year Apple launches its first set of generative AI capabilities, unlocking the true potential of an AI-on-the-edge, closed architecture with full access to your personal data – showing that Apple is actually the most important company in the generative AI race. 3. Building for Client-First The last decade has reflected a shift away from fat clients to server-side rendering and compute. But the world is changing back to the client. Mobile-first experiences will be required to work in offline mode. Real-time experiences require ultra-low latency transactions. Running LLMs will increasingly be required to run on the device to increase performance and reduce costs. 4. Death of Data Infrastructure Sprawl The rapid growth of the data infrastructure needs of enterprises has led to an increasing sprawl of point solutions, from data catalogs, data governance, reverse extract, transform, load, and airflow alternatives to vector databases and yet another lakehouse. The pendulum will swing back to unified platforms and fewer silos to bring down the total cost of ownership and operating overhead going into 2024. 5. Approaching the AI Winter Generative AI in 2023 could be best characterized as the ‘art of the possible,’ with 2024 being the true test to see if prototypes convert into production use cases. With the peak of the hype cycle likely here, 2024 will experience the stage of disillusionment where enterprises discover where generative AI can create margin-positive impact and where the costs outweigh the benefits. 6. The Misinformation Threat While image and video diffusion models have unlocked a new era for digital creation and artistic expression, there’s no doubt that its dark side has not yet taken its toll. With a presidential election in the wings, diffusion models as a machine for political disinformation will emerge to become the next major disinformation weapon of choice. 7. AI’s Real-World Breakthrough Coming out of the ‘field of dreams’ era for AI, 2024 will represent a breakthrough for commercial use cases in AI, particularly in the physical world. Using AI for physical world modalities will unlock our ability to […]

Read More

How To Use std::invoke In C++ 17?

There is a new library feature in the C++17 standard, it is std::invoke which is a useful feature to uniformly invoke callable entities. In this post, we explain what std::invoke is and how we can use it in examples. First, let’s remind ourselves about what is a callable object and what is a functor in modern C++. What is callable object and what is functor in modern C++? A callable object (some call it a functor) is an object that can be used as a function or function pointer by using the operator(). This term is not the same as a function term in programming. We can pass many arguments with them; thus, we don’t need to define many global variables, we can use these kinds of variables in the scope that we use. Here you can find more details about it. What is std::invoke in C++ 17? The std::invoke call is a library feature in C++ 17 that allows invoking a method at run time and improved in C++20 and C++23 with invoke_r. It is defined in the  header and useful to write libraries with the same behavior as the standard’s magic INVOKE rule. You can use std::invoke to call a function or method, a lambda expression, or a member function, or can be used to access a data member, or you can use to invoke a function object. In C++17 it is defined as below,   template std::invoke_result_t     invoke( F&& f, Args&&… args ) noexcept();   In C++20 it is defined as below,   template constexpr std::invoke_result_t     invoke( F&& f, Args&&… args ) noexcept();   And since C++23, there is invoke_r and it is defined as below,   template constexpr R invoke_r( F&& f, Args&&… args ) noexcept();   How can we use std::invoke with a parametric function in C++17? Here is a simple std::invoke example with a parametric function. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18   #include   int myf(int x, int y) { return x*x+y*y; }   int main() { int z = std::invoke(myf, 1, 2);   std::cout

Read More

The Future of DevOps: Predictions and Insights From Industry Experts

DevOps is a crucial part of the ever-evolving field of technology, shaping the future of software development and operational efficiency. Here are the trends, transformations and breakthroughs that will redefine the DevOps landscape in 2024. 2024: The Year for DevOps In 2024, DevOps is poised for a transformative journey. Automation is predicted to surge to unprecedented levels, reshaping development workflows and expediting deployment cycles. Continuous integration and continuous delivery (CI/CD) pipelines are expected to attain new heights of efficiency, facilitating rapid and reliable software releases. DevOps, synonymous with agility, is foreseen as a key driver of innovation and efficiency in software development.Expert Insight: Ramendeep Bhurjee, VP, Cigniti Technologies. BizDevOps Redefines Software 2024 will witness BizDevOps redefining how businesses approach software development and operations. The integration of business stakeholders into the development process is expected to reach new levels of maturity. Continuous feedback loops between business, development and operations teams will become standard practice. Automation will undergo further refinement, enabling swift adaptation to changing market dynamics.Expert Insight: Raghu Krovvidy, chief delivery officer, Cigniti Technologies. DevOps and Agile Convergence A convergence between DevOps and Agile practices is anticipated to enhance software development. Breaking down silos and improving collaboration for faster, high-quality development is the goal. Tools supporting continuous integration and delivery are deemed crucial in this integrated approach, streamlining the path from development to deployment.Expert Insight: Paul Lechner, VP of product management, Appfire. Faster Development Life Cycles Continue The relentless march towards faster development life cycles to meet escalating demand is expected to persist in 2024. As organizations push new applications into production more swiftly, a focus on real-time security practices within the CI/CD pipeline is crucial during source code development.Expert Insight: Dan Hopkins, VP of engineering, StackHawk. Agile Development Shapes the Future In the realm of development, agile practices will continue shaping the future of innovation by incorporating advanced technologies and methodologies. The adoption of Scaled Agile Frameworks like SAFe is predicted to be a significant facet of agile development in 2024.Expert Insight: Nitin Garg, VP of practice delivery, AgreeYa Solutions. Fostering a Human-Centric Agile Mindset Companies are expected to realize that agile transformation must be holistic, involving shorter cycles and business-side changes beyond just software. A shift towards reinvigorating the human-centric aspects of agile development is seen as essential for success.Expert Insights: Tina Behers, VP of enterprise agility, Aligned Agility; Jon Kern, Agile Consultant, Adaptavist. Moving From Tracking Developer Productivity to Engineering Efficiency Leaders are anticipated to shift their focus from tracking individual developer productivity to engineering efficiency. The measurement will transition from individual metrics to team-centered metrics around engineering efficiency.Expert Insight: Ori Keren, co-founder and CEO, LinearB. Collaboration – The Future of DevOps In the era of multi-cloud architectures and diverse vendor reliance, the future of DevOps is expected to hinge on strengthened collaboration. DevOps professionals are set to forge robust partnerships with traditionally siloed teams, emphasizing automation to seamlessly engage at critical junctures.Expert Insight: Erez Tadmor, Cybersecurity Evangelist, Tufin. Recognition of the 99% Developers Businesses are predicted to recognize the significance of the “99% Developers” who work outside the limelight but contribute significantly to software development. Understanding the needs of this majority is seen as crucial for sustained business success.Expert Insight: Jean Yang, Head of Product, Observability, Postman. Debugging Remains a Challenge Debugging is expected to remain a […]

Read More

Learn C++ Optimization With A Genetic Algorithms Example

Solving C++ optimization problems are one of the areas of all quantitative disciplines from social science, economics to engineering fields such as computer science. Genetic Algorithm (GA) is a kind of machine learning process that is used to generate high-quality solutions to optimization and search problems by relying on biologically inspired operators such as mutation, crossover, and selection. In this post, we explain how you can achieve optimization using artificial intelligence techniques. The Genetic Algorithm that we use here below was first mentioned by Željko Kovačević (Embarcadero MVP). Željko has amazing VCL Examples and blog posts about C++ Builder. He gave me this example below as a console app about GA and allowed me to release it free, but credits of this code may require contact with him. Then I improve and simplify (I can’t ofc) it for the C++ Builder and C++ Builder CE. Here, the field and codes below may be harder for beginners but I am sure this post may help how you can develop your scientific applications with C++ Builder CE. What is a Genetic Algorithm? In computer science and research, a Genetic Algorithm (GA) is an algorithm that is used to solve optimization problems by evolving towards better solutions, just as sentient beings do in nature. Genetic Algorithm (GA) is a metaheuristic inspired by the process of natural selection that belongs to the larger class of evolutionary algorithms. Genetic algorithms are commonly used to generate high-quality solutions to optimization and search problems by relying on biologically inspired operators such as mutation, crossover, and selection. In a Genetic Algorithm, first, we create an initial population, then we iterate in a loop by calculating the fitness value, selection, crossover, and mutation steps as below, Genetic Algorithm Schema Genetic Algorithms are one of the older AI/ML methods developed to solve some problems such as solving sudoku puzzles. Genetic Algorithms and Fuzzy Logic were very popular in the 1990s. A typical genetic algorithm requires: A genetic representation of the solution domain, a fitness function to evaluate the solution domain. How to develop a genetic algorithm with C++ Builder? In our optimization example in C++, we develop an optimization algorithm such as Genetic Algorithm about our chosen field. Now let’s explain quickly what we mean by that. First, we have a global Input value that represents a value (number) for which Genetic Algorithm (GA) is trying to find its binary representation.   unsigned int inputValue = 1234567890;   We have individuals to evaluate with genetic algorithms, so we can create this class below. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22   class Individual { public: std::vector gene = std::vector(32); // number of bits unsigned int fitness{ std::numeric_limits::max() };   void evaluate() { unsigned int number = toNumber(); if (number

Read More

How To Create A Real Mac App Step By Step Guide

Hello developers. Our previous sessions in our Winter Webinars series which showed you how to create a real Android app step by step“, how to create a real iOS app (even if you do not have a mac), and how to create a real windows app were extremely popular. During the sessions I showed how to use RAD Studio 12 to create multi-platform apps to target Android, iOS and Windows devices. Building on that is the following session which shows how to create a real Mac app, using RAD Studio 12 and Delphi. The session focuses a little on the real benefits of Firemonkey FXM frameworks rather than just creating a Mac app. The main reason is it’s really easy to create a Mac app with RAD Studio, but also because the Winter Webinar series is iterative – building on the things we learned in prior webinars and adding to that knowledge. Over the next few weeks, we’ll start to actually add proper functionality and link things up to the cloud, the web, each other, and even a robot arm. Stick around; we’re going to see that RAD Studio can do pretty much anything you can dream of – and do it without needing to be a super hardcore software developer too. If you want to register, go to: https://lp.embarcadero.com/webinar-registration In this article you can catch the full replay including the questions and answers. If you watch on YouTube please hit the “like” and “subscribe” buttons to make sure you get notifications of all the videos in the Winter Webinar series. Hitting “like” and “subscribe” on YouTube will not add you to any mailing lists from Embarcadero – the only effect is for YouTube to send you a notification the next time we upload a new webinar or start a live broadcast. Where can I see the replay of the “How To Create A Real Mac App Step By Step Guide” webinar? Here’s the full replay of the video. All the video replays are also uploaded to our YouTube channel. You can also find them in the “Learn” section of the RAD Studio IDE Welcome page. The plan is, as time goes on, for me to fill that “Learn” tab with a whole series of videos which take you through every aspect of creating cross-platform and desktop apps with RAD Studio on Windows, macOS, Linux, iOS, and Android. You can view the replay of the webinar, including questions and answers here: Where can I get the slides for the “How To Create A Real Mac App” step by step guide? Here are all the slides for “How To Create A Real Mac App Step By Step Guide”. Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder. Design. Code. Compile. Deploy. Start Free Trial   Upgrade Today    Free Delphi Community Edition   Free C++Builder Community Edition

Read More

Useful C++ 17 Features That You Should Learn

Hello Developers, in my opinion, the C++17 standard is one of the biggest milestones in the history of C++ development. It is amazing with a lot of new features, and in this weekly round post, we have another three important features that you should learn. We explain the new optional class template, we teach you how to use alias templates for traits and we explain what std::any is and how you can use it. Our educational LearnCPlusPlus.org site has a broad selection of new and unique posts with examples suitable for everyone from beginners to professionals alike. It is growing well thanks to you, and we have many new readers, thanks to your support! The site features a treasure-trove of posts that are great for learning the features of modern C++ compilers with very simple explanations and examples. RAD Studio’s C++ Builder, Delphi, and their free community editions C++ Builder CE, and Delphi CE are powerful tools for modern application development. Table of Contents Where I can I learn C++ and test these examples with a free C++ compiler? How to use modern C++ with C++ Builder? How to learn modern C++ for free using C++ Builder? Do you want to know some news about C++ Builder 12? Where I can I learn C++ and test these examples with a free C++ compiler? If you don’t know anything about C++ or the C++ Builder IDE, don’t worry, we have a lot of great, easy to understand examples on the LearnCPlusPlus.org website and they’re all completely free. Just visit this site and copy and paste any examples there into a new Console, VCL, or FMX project, depending on the type of post. We keep adding more C and C++ posts with sample code. In today’s round-up of recent posts on LearnCPlusPlus.org, we have new articles with very simple examples that can be used with: The free version of C++ Builder 11 CE Community Edition or a professional version of C++ Builder or free BCC32C C++ Compiler and BCC32X C++ Compiler or the free Dev-C++ Read the FAQ notes on the CE license and then simply fill out the form to download C++ Builder 11 CE. How to use modern C++ with C++ Builder? The C++17 standard came with a lot of great features and std::optional was one of the main features of today’s modern C++. std::optional is a class template that is defined in the header and represents either a T value or no value. In the first post, we explain, what is optional in modern C++ and how we can use it efficiently. One of the great features of C++ is templates, they are parameterized by alias templates in C++11. Then, In C++14 and C++17, they improved C++11’s feature with several template aliases whose use simplifies the traits. This feature is called “Alias Templates For Traits” and in this post, we explain that it is an alias template and how we can use alias templates with traits. Another interesting feature of C++17 was the new type std::any. std::any is a type-safe container to store a single value of any variable type. In the next post, we explain std::any in modern C++. How to learn modern C++ for free using C++ Builder? LearnCPlusPlus.org has been producing full of educational articles about C and modern C++ that can be used with C++ Builder, C++ Builder CE, Dev-C++, BCC Compiler and some other […]

Read More

Swimm Adds Generative AI Chat Tool for Documentation

Swimm today announced it has added a chat tool that enables developers to use natural language to surface insights into code. Company CEO Oren Toledano said the /ask Swimm tool makes it simpler to launch queries that enable developers to better understand how code was constructed. The /ask Swimm tool aggregates documentation along with other related data to surface factors that are not evident in the code itself, such as documentation of business decisions, product design considerations and decisions concerning why specific architectural choices were made. It automatically captures and updates code-related knowledge to provide a continuous feedback loop as code, documentation, files and repositories are created and updated to provide deeper insights into code that goes beyond what might have been actually documented. The overall goal is to provide a mechanism that enables developers to understand how and why code was constructed within the context of an integrated development environment (IDE), said Toledano. Swimm has previously made available a platform that uses generative AI platform to create a static analysis of documentation. That capability should make it simpler for organizations to track documentation at a time when generative AI platforms such as ChatGPT are exponentially increasing the amount of code being written. In theory, those platforms should be able to also create documentation for that code, but there will still be a need for tools to track and analyze it. In the longer term, Swimm plans to continue to extend its usage of generative AI to provide deeper levels of insights across entire applications and software ecosystems to address that challenge, noted Toledano. In the short term, however, it’s clear that AI is making developers more productive than ever. In fact, the volume of code being generated might soon overwhelm existing DevOps pipelines and workflows. Most DevOps teams will need to revamp those workflows as the pace at which more applications than ever are being developed and deployed faster than ever. It’s still early days as far as generative AI adoption is concerned, but it’s clear many developers are already using it to write code. How much of that code makes it into a production environment is difficult to determine, but a lot of that code is going to be of varying quality. A general-purpose AI platform such as ChatGPT was trained using code collected from all across the web. The code generated by these platforms is only as good as the examples used to train it, all of which were created by human developers who may have made mistakes, such as including code that has known vulnerabilities. Regardless of whether code was generated by a machine or a human, the probability that documentation will need to be analyzed as part of a code review process is always high. The challenge and the opportunity is to determine the best way to apply AI to a longstanding challenge that is now being exacerbated by the existence of AI tools that, with each passing day, are only becoming more accessible to developers.

Read More

What Are The Elementary String Conversions That Come With C++ 17?

In addition to many beneficial features of C++ 17, there are elementary string conversions introduced in that specification. The std::to_chars() and std::from_chars() are defined in header to do conversions between numeric values to strings or strings to numeric values without considering locale-specific conversions. In this post, we explain the std::to_chars() and std::from_chars() that come with C++17. What Are The Elementary String Conversions That Come With C++ 17 ? What is std::to_chars()? The std::to_chars() is defined in header and is used to convert numeric values into a character string within the given valid range. The std::to_chars() is designed to copy the numeric value into a string buffer, with a given specific format, with the only overhead of making sure that the buffer is big enough. You don’t need to consider locale-specific conversions. Here is the syntax of std::to_chars in C++ 17.   std::to_chars_result  to_chars( char* first, char* last, value, int base = 10 );   Here is a simple example.   std::string str= “abcdefgh”; const int ival = 10001000; const auto con = std::to_chars( str.data(), str.data() + str.size(), ival);   In floating point number conversions, std::chars_format types can be used (i.e. std::chars_format::fixed, std::chars_format::scientific, std::chars_format::general,…) What is std::from_chars()? The std::from_chars() is defined in the header and used to convert the string data in a given range to a value (string to int, string to float operations) if no string characters match the pattern or if the obtained value is not representable in a given type of value, then the value has remains unchanged. The std::from_chars() is a lightweight parser that does not need to create dynamic allocation, and you don’t need to consider locale-specific conversions. Here is the syntax of std::from_chars in C++ 17.   std::from_chars_result from_chars( const char* first, const char* last, &value, int base = 10 );   Here is a simple example.   std::string str= “10001000”; int vali; auto [ptr, ec] = std::from_chars(str.data(), str.data() + str.size(), vali);   Is there a full example to elementary string conversions that comes with C++ 17? Here is a full example about std::to_chars() and std::from_chars() in C++ 17. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38   #include #include #include   int main() { std::string str= “abcdefgh”;   // INT TO CHAR const int ival = 10001000; const auto con = std::to_chars( str.data(), str.data() + str.size(), ival);   std::cout

Read More

From Reaction to Robots: Riding the AI Wave in 2024

As we navigate another year of consistent zero-day breaches, legislative pivots, the explosion of AI tooling and threat actors growing bolder and more desperate, it’s safe to say that getting comfortable with change is a requirement for thriving in the technology industry. We occupy a notoriously unpredictable space, but that’s half the fun. Compared to many other verticals, technology—especially cybersecurity—is relatively youthful, and the future should be something we can all look forward to blossoming in sophistication alongside the technology we swear to protect. So, what can we expect in the industry in 2024? We put our heads together, looked into our crystal ball, and these were the results: Government Regulations Around AI Will Turn the Industry Upside Down It was the talk of the conference circuit in 2023, with several high-profile presentations at Black Hat, DEF CON, Infosecurity Europe and many more warning of the explosive changes we can expect from AI implementation across every industry, especially cybersecurity. As tends to happen with low barriers to entry for such transformative technology, adoption has outpaced any official regulation or mandates at the government level. With significant movements in general cybersecurity guidelines and benchmarks around the world, including CISA’s Secure-by-Design and -Default principles in the U.S. and similar initiatives from the UK and Australian governments, it is essentially a foregone conclusion that regulations around AI use will be announced sooner rather than later. While much of the debate surrounding the mainstream use of AI tooling and LLMs has centered around copyright issues with training data, another perspective delves into how AI is best used in cybersecurity practices. When it comes to coding, perhaps its most human quality is its similar hardship in displaying contextual security awareness, and this factor is deeply concerning as more developers are adopting AI coding assistants in the construction of software. This has not gone unnoticed, and in a time of increased scrutiny for software vendors adopting security best practices, government-level intervention certainly would not surprise. … And Demand for AI/ML Coding Tools Will Create a Need for More Developers, not Less! Much has been written about the AI takeover, and for the better part of a year, we have been subject to a plethora of clickbait headlines that spell doom and destruction for just about every white-collar profession out there, and developers were not spared. After months of speculation and experimentation with LLMs in a coding context, we remain entirely unconvinced that development jobs are at collective risk. There is no doubt that AI/ML coding tools represent a new era of powerful assistive technology for developers, but they are trained on human-created input and data, and that has rendered the results far from perfect. Perhaps if every developer on the planet was a top-tier, security-minded engineer, we might see genuine cause for concern. However, just as the average adult driver vastly overshoots their ability (notice how everyone says they’re a great driver, and it’s always other people who lack skill? That’s a classic example of the Dunning-Kruger effect!), so too does the development community, especially when it comes to security best practices. According to one Stanford study into developer use of AI tooling, it is likely that unskilled developers using this technology will become dangerous. The study claimed that participants who had access to AI assistants […]

Read More

What Is The Class Template Variant (std::variant) in C++ 17?

In C++ Builder 12, and modern C++ the std::variant is one of the powerful features that comes with C++17. The std::variant is a discriminated union that we can work with multiple data types. It represents a type-safe union and holds one of its types in definition. What is the class template std::variant in C++ 17? The std::variant is a class template defined in  header that represents a disjoint union (or discriminated union). A value of variant contains one of an A, a B, or a C at any one time. It can be used as a multi-type variable, for example, a variable can be a float, an int, or a string. Here is the template definition since C++17:   template class variant;   Here is a simple example that shows how we can use it.   std::variant myvar; myvar = 100; // int   To get value of a variant we can use std::get (std::variant), here is how we can use it:   std::variant myvar2; myvar2 = std::get(myvar);   std::variant has many useful methods and properties that can be used in modern C++, such as index, valueless_by_exception, emplace, swap, get_if, visit, variant_size, variant_size_v, variant_npos, monostate, std::hash, and operators ( =, ==, !=, , =, ) Is there a full example about the class template variant in C++ 17? Here is an example. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23   #include #include #include   int main() { std::variant myvar;   //myvar = true; // bool myvar = 100; // int     if ( std::holds_alternative(myvar) ) std::cout

Read More