Coding tools news 2022

Here is a post where I post information on new and interesting coding tools on the comments.

960 Comments

  1. Tomi Engdahl says:

    Open sourcing Pingora: our Rust framework for building programmable network services
    https://blog.cloudflare.com/pingora-open-source

    Reply
  2. Tomi Engdahl says:

    28-vuotias ohjelmointikieli päivittyy – “uudet java-versiot ovat paljon aikaisempia parempia”
    Jyrki Oraskari29.2.202406:05OHJELMOINTI
    Java-kieleen on tarjolla nimettömiä muuttujia, merkkijonomalleja, säikeiden hallintaa, vakaampi natiiviohjelmien tuki ja tapoja koostaa striimejä.
    https://www.tivi.fi/uutiset/28-vuotias-ohjelmointikieli-paivittyy-uudet-java-versiot-ovat-paljon-aikaisempia-parempia/33aee0ef-d5f0-4922-a085-6ca7ba6d092a

    Reply
  3. Tomi Engdahl says:

    YAT
    Yet Another Terminal :: Serial Communication :: Engineer/Test/Debug
    https://sourceforge.net/projects/y-a-terminal/

    Engineering, testing and debugging of serial communication. Supports RS-232/422/423/485 as well as TCP/IP Client/Server/AutoSocket, UDP/IP Client/Server/PairSocket and USB Ser/HID. Optimized for simple command sets of e.g. embedded systems.

    Reply
  4. Tomi Engdahl says:

    Pyan takes one or more Python source files, performs a (rather superficial) static analysis, and constructs a directed graph of the objects in the combined source, and how they define or use each other. The graph can be output for rendering by GraphViz or yEd.
    https://github.com/davidfraser/pyan

    Reply
  5. Tomi Engdahl says:

    Image Processing in Python: Algorithms, Tools, and Methods You Should Know
    https://neptune.ai/blog/image-processing-python

    Reply
  6. Tomi Engdahl says:

    Source Code Analysis Tools
    Contributor(s): Dave Wichers, itamarlavender, will-obrien, Eitan Worcel, Prabhu Subramanian, kingthorin, coadaflorin, hblankenship, GovorovViva64, pfhorman, GouveaHeitor, Clint Gibler, DSotnikov, Ajin Abraham, Noam Rathaus, Mike Jang

    Source code analysis tools, also known as Static Application Security Testing (SAST) Tools, can help analyze source code or compiled versions of code to help find security flaws.

    SAST tools can be added into your IDE. Such tools can help you detect issues during software development. SAST tool feedback can save time and effort, especially when compared to finding vulnerabilities later in the development cycle.

    https://owasp.org/www-community/Source_Code_Analysis_Tools

    Reply
  7. Tomi Engdahl says:

    Visualize Your Python Code, Debugging for beginners !!!
    https://dev.to/coderatul/debug-and-visualize-your-python-code-with-pythontutorcom-29ba

    Debugging Made Easier

    PythonTutor.com simplifies the process of debugging by allowing you to step through your code and observe its state at each step. You can set breakpoints and view the values of variables and expressions at any point during the execution. This feature is especially useful for identifying logical errors or unexpected behaviors in your code. By visually inspecting the program’s state, you gain insights into why certain bugs occur, facilitating the debugging process.

    Reply
  8. Tomi Engdahl says:

    How to Visualize your codebase
    https://markgacoka.medium.com/how-to-visualize-your-codebase-7c4c4d948141

    How can code visualization help developers?

    As a developer, it is essential to understand code at a glance. Such a quick understanding can be difficult when working with large codebases or particularly complex code. Code visualization can help by providing a way to see the structure and the relationships between different parts of the code.

    Several code visualization tools are available, each with strengths and weaknesses. Some tools focus on visualizing code structure, while others focus on showing the relationships between different parts of the code. Still, others allow you to interact with the code, making it easier to understand how it works.

    No matter which tool you use, code visualization can be a valuable addition to your toolkit.

    https://github.com/scottrogowski/code2flow
    Code2flow generates call graphs for dynamic programming language. Code2flow supports Python, JavaScript, Ruby, and PHP.

    Code2flow approximates the structure of projects in dynamic languages. It is not possible to generate a perfect callgraph for a dynamic language.

    Detailed algorithm:

    Generate an AST of the source code
    Recursively separate groups and nodes. Groups are files, modules, or classes. More precisely, groups are namespaces where functions live. Nodes are the functions themselves.
    For all nodes, identify function calls in those nodes.
    For all nodes, identify in-scope variables. Attempt to connect those variables to specific nodes and groups. This is where there is some ambiguity in the algorithm because it is impossible to know the types of variables in dynamic languages. So, instead, heuristics must be used.
    For all calls in all nodes, attempt to find a match from the in-scope variables. This will be an edge.
    If a definitive match from in-scope variables cannot be found, attempt to find a single match from all other groups and nodes.
    Trim orphaned nodes and groups.
    Output results.

    Reply
  9. Tomi Engdahl says:

    Python Call Graph
    Welcome! Python Call Graph is a Python module that creates call graph visualizations for Python applications.
    https://pycallgraph.readthedocs.io/en/master/

    Features

    Support for Python 2.7+ and Python 3.3+.
    Static visualizations of the call graph using various tools such as Graphviz and Gephi.
    Execute pycallgraph from the command line or import it in your code.
    Customisable colors. You can programatically set the colors based on number of calls, time taken, memory usage, etc.
    Modules can be visually grouped together.
    Easily extendable to create your own output formats.

    You can either use the command-line interface for a quick visualization of your Python script, or the pycallgraph module for more fine-grained settings.

    The command-line method of running pycallgraph is:

    $ pycallgraph graphviz — ./mypythonscript.py

    Generating and using a Callgraph, in Python
    https://cerfacs.fr/coop/pycallgraph

    https://pypi.org/project/pycallgraph2/

    https://github.com/osteele/callgraph
    Callgraph is a Python package that defines a decorator, and Jupyter magic, to draw dynamic call graphs of Python function calls.
    It’s intended for classroom use, but may also be useful for self-guided exploration.

    Callgraph uses the Python graphviz package. Python graphviz uses the Graphviz package.

    https://stackoverflow.com/questions/13963321/build-a-call-graph-in-python-including-modules-and-functions
    https://github.com/zw-normal/pycallgraph

    Reply
  10. Tomi Engdahl says:

    Call Map is a tool for navigating call graphs in Python, with plans to support other languages.
    https://github.com/nccgroup/call_map

    Call Map is distributed as a python package for Python 3.5

    https://softwarerecs.stackexchange.com/questions/52345/visualize-call-graphs-for-python
    https://arxiv.org/pdf/2103.00587.pdf

    Reply
  11. Tomi Engdahl says:

    https://pypi.org/project/pycflow2dot/
    Draw call graphs for C source code using dot and cflow. Typeset PDF with a page per source file and clickable cross-file function references.

    Reply
  12. Tomi Engdahl says:

    What is Cython? Python at the speed of C
    A superset of Python that compiles to C, Cython combines the ease of Python with the speed of native code. Here’s a quick guide to making the most of Cython in your Python programs.
    https://www.infoworld.com/article/3250299/what-is-cython-python-at-the-speed-of-c.html

    https://cython.org/

    Cython is an optimising static compiler for both the Python programming language and the extended Cython programming language (based on Pyrex). It makes writing C extensions for Python as easy as Python itself.

    Cython gives you the combined power of Python and C to let you

    write Python code that calls back and forth from and to C or C++ code natively at any point.
    easily tune readable Python code into plain C performance by adding static type declarations, also in Python syntax.
    use combined source code level debugging to find bugs in your Python, Cython and C code.
    interact efficiently with large data sets, e.g. using multi-dimensional NumPy arrays.
    quickly build your applications within the large, mature and widely used CPython ecosystem.
    integrate natively with existing code and data from legacy, low-level or high-performance libraries and applications.

    The Cython language is a superset of the Python language that additionally supports calling C functions and declaring C types on variables and class attributes. This allows the compiler to generate very efficient C code from Cython code. The C code is generated once and then compiles with all major C/C++ compilers in CPython 2.6, 2.7 (2.4+ with Cython 0.20.x) as well as 3.5 and all later versions.

    Reply
  13. Tomi Engdahl says:

    https://stackoverflow.com/questions/4650243/convert-python-program-to-c-c-code

    invest” isn’t the right word here.

    Build a working implementation in Python. You’ll finish this long before you’d finish a C version.

    Measure performance with the Python profiler. Fix any problems you find. Change data structures and algorithms as necessary to really do this properly. You’ll finish this long before you finish the first version in C.

    If it’s still too slow, manually translate the well-designed and carefully constructed Python into C.

    Because of the way hindsight works, doing the second version from existing Python (with existing unit tests, and with existing profiling data) will still be faster than trying to do the C code from scratch.

    Reply
  14. Tomi Engdahl says:

    Convert Python program to C/C++ code?
    https://www.youtube.com/watch?v=yapHztH8nFISign in3:02 / 4:29Convert Python program to C/C++ code? Z0

    Python vs C++ Speed Comparison
    https://www.youtube.com/watch?v=VioxsWYzoJk

    Reply
  15. Tomi Engdahl says:

    Making Simple Windows Driver in C
    https://www.youtube.com/watch?v=GTrekHE8A00

    In this video I will demonstrate how you can write a simple “Hello, World” driver for Microsoft Windows 10 using the C Programming Language.

    The code is just for fun and not suitable for production.

    Reply
  16. Tomi Engdahl says:

    https://hackaday.com/2024/03/21/video-poker-takes-your-money-in-10-lines-of-basic/

    It wasn’t easy, but [D. Scott Williamson] succeeded in implementing Jacks or Better Video Poker in 10 lines of BASIC, complete with flashing light and sound! Each round, one places a bet then plays a hand of 5-card draw, hoping to end up with Jacks or better.

    Jacks or Better VIDEO POKER in 10 Lines of Atari BASIC
    https://workshop88.com/oldblog/index.php/2024/03/18/jacks-or-better-video-poker-in-10-lines-of-atari-basic/

    Reply
  17. Tomi Engdahl says:

    Microsoft Introduces AutoDev: A Fully Automated Artificial Intelligence-Driven Software Development Framework
    https://www.marktechpost.com/2024/03/19/microsoft-introduces-autodev-a-fully-automated-artificial-intelligence-driven-software-development-framework/

    The software development sector stands at the dawn of a transformation powered by artificial intelligence (AI), where AI agents perform development tasks. This transformation is not just about incremental enhancements but a radical reimagining of how software engineering tasks are approached, executed, and delivered. Central to this shift is introducing AI-driven frameworks that transcend traditional code assistance tools, marking a leap toward more autonomous, efficient, and secure software development methodologies.

    The integration of AI in software development has been confined largely to providing code suggestions and aiding in file manipulation. This approach, while beneficial, barely scratches the surface of what is technologically feasible. AI-powered tools operate within a constrained scope, missing out on Integrated Development Environments (IDEs)’ vast capabilities, such as comprehensive code building, testing, and version control operations. This limitation underscores a critical gap in the software development toolkit, where the potential for AI to contribute more profoundly to the development lifecycle remains largely untapped.

    Reply
  18. Tomi Engdahl says:

    C++ creator rebuts White House warning
    Biden administration seems oblivious of the strengths of contemporary C++ and the efforts to provide strong safety guarantees, Bjarne Stroustrup said.
    https://www.infoworld.com/article/3714401/c-plus-plus-creator-rebuts-white-house-warning.html

    Reply
  19. Tomi Engdahl says:

    No installation required: how WebAssembly is changing scientific computing
    Enabling code execution in the web browser, the multilanguage tool is powerful but complicated.
    https://www.nature.com/articles/d41586-024-00725-1

    Reply
  20. Tomi Engdahl says:

    With YAMLScript, YAML Becomes a Proper Programming Language
    Ingy döt Net is brewing up a scripting language that brings to YAML all the programming capabilities many assumed it already had.
    https://thenewstack.io/with-yamlscript-yaml-becomes-a-proper-programming-language/

    Reply
  21. Tomi Engdahl says:

    The NSA list of memory-safe programming languages has been updated
    https://readwrite.com/the-nsa-list-of-memory-safe-programming-languages-has-been-updated/

    The US government says it would be better for them if you ceased using C or C++ when programming tools. In a recent report, the White House Office of the National Cyber Director (ONCD) has urged developers to utilize “memory-safe programming languages,” a classification that does not include widely used languages. The recommendation is a step toward “securing the building blocks of cyberspace” and is a component of US President Biden’s cybersecurity plan.

    Memory-safety is the defense against flaws and vulnerabilities related to memory access. Examples of this include dangling pointers and buffer overflows. Java’s runtime fault detection checks make it a memory-safe language. Nonetheless, unconstrained pointer arithmetic with direct memory addresses and without bounds checking is supported by both C and C++

    Reply
  22. Tomi Engdahl says:

    Hy is a Lisp dialect that’s embedded in Python.
    https://hylang.org/

    Reply
  23. Tomi Engdahl says:

    Modern software development be like: I wrote 10 lines of code to call an API that calls another API, which calls yet another API that finally turns on a lightbulb. Pray that Cloudflare or AWS will not be down during this operation; otherwise, there will be no light for you. ¯\_(ツ)_/¯

    Reply
  24. Tomi Engdahl says:

    Rust-koodaaminen on kaksi kertaa C++-kehitystä tehokkaampaa
    https://etn.fi/index.php/13-news/16042-rust-koodaaminen-on-kaksi-kertaa-c-kehitystae-tehokkaampaa

    opa Valkoinen talo on Yhdysvalloissa ilmoittanut, että ohjelmistonkehityksessä pitäisi päästä eroon ”muistivaarallisista” C- ja C++-kielistä. Mitä sitten tilalle? Ainakin Googlen vastaus on selvä: Rust on turvallisempi ja myös tehokkaampi kieli koodaustiimien käsissä.

    Googlen suunnittelujohtaja Lars Bergstrom kertoi viime viikolla Rust Nation UK -tapahtumassa Lontoossa, mitä kokemuksia hakukonejätillä on projektien siirtämisestä Go- ja C++-koodista Rustiin. Tulokset ovat kiistattomia.

    Rust on suorituskykyinen ja tehokkaasti muistia käyttävä kieli. Se on myös hyvin luotettava: muistin käyttöön liittyviä tietoturvaongelmia on hyvin vähän, usein ei ollenkaan. Hyvä dokumentointi ja kääntäjä tekevät siitä myös tehokkaan työkalun.

    Tuottavuus on lisäksi monipiippuinen asia. Sitä on mitattu esimerkiksi tuotetuilla koodiriveillä, mikä ei Bergstromin mukaan ole kovin hyvä mittari. Tärkeämpiä ovat koodin laatua, koodin tarkastelun nopeus ja build-aika eli kuinka kauan kestään koodin saamiseen toimivaksi.

    Reply
  25. Tomi Engdahl says:

    Query Your C Code
    https://hackaday.com/2024/04/08/query-your-c-code/

    If you’ve ever worked on a large project — your own or a group effort — you know it can be difficult to find exactly where you want to be in the source code. Sure, you can use ctags and most other editors have some way of searching for things. But ClangQL from [AmrDeveloper] lets you treat your code base like a database.

    Honestly, we’ve often thought about writing something that parses C code and stuffs it into a SQL database. This tool leverages the CLang parser and lets you write queries like:

    SELECT * FROM functions

    https://github.com/AmrDeveloper/ClangQL

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *

*

*