appsec.fyi

A somewhat curated list of links to various topics in application security.

Golang

LinkExcerpt
The Only Introduction to Golang You NeedGo, or also called Golang, is absolutely trendy, and rightly so. It is not as difficult to learn as C or C++, but still quite fast, and has a great community & many interesting and helpful packages and libraries.
Go WasmGo Wasm is a Go development environment with the essentials to write and run code entirely within the browser, using the power of WebAssembly (Wasm).
How to Write Bug-Free Goroutines in Go (Golang)Go is well-known and loved for its concurrency. The go runtime manages lightweight threads called goroutines. Goroutines are quick and simple to write. You just type go before the function you want to execute asynchronously, in another thread.
Golang is not Ready for Enterprise Systems yet and Here’s WhyEnterprise application is a long-lived, reliable system, having a lot of persisting data for many years. Nowadays the world of Golang is not providing possibilities to build systems in the way that enterprise systems are built.
Creating an Authentication API with Golang — Using Gin & NrokYou will need to have Go installed on your machine, which you can download for free over here. To get started, we create a new project. Create a new file called main.go and enter the following starter code:
Your Master Plan to Learn Golang Fast and Deep (2021 Edition)If you must (or like to) learn Go (Golang), this article will point you in the right direction. If you are still unsure, should you learn Go or another language, let me tell you a few facts and stats to help you make the right decision.
Closures Made Simple With GolangIn Golang, a closure is a function value that references variables outside its own function body. A closure can outlive the scope in which it was created and thus access variables within that scope, even though the scope is exited.
roxyOur mascot, Roxy Lalonde. See our GitHub Pages site for more documentation.
tdewolff/canvasCanvas is a common vector drawing target that can output SVG, PDF, EPS, raster images (PNG, JPG, GIF, ...), HTML Canvas through WASM, OpenGL, and Gio. It has a wide range of path manipulation functionality such as flattening, stroking and dashing implemented.
jakubDoka/mlokSkip to content Sign up Sign up Sign in Sign up Sign up {{ message }} Permalink main mlok/examples/basics/hasher/main.go /Jump to Go to file jakubDoka adding boid demo Latest commit 84de7b1 Mar 30, 2021 History 1 contributor You can’t perform that action at this time.
Retraction: My Go Executable Files Are Still Large (What's New in 2021)In 2019, we published an exploration of the size and makeup of the executable files produced by the Go compiler. CockroachDB engineers, the Go team, and the greater Go community were intrigued by the analysis, and the results of it pushed our projects further.
Encore - Go framework for building distributed systemsEncore is a Go backend framework for rapidly creating APIs and distributed systems. It uses static analysis and code generation to reduce the boilerplate you have to write, resulting in an extremely productive developer experience.
What's the "sync.Cond" | dtyler.ioGo’s sync.Cond is a synchronization primitive for multithreaded (goroutine, to be precise) programming. Compared to mutexes, sync.Cond has limited use cases, and its usage seems to be rather complicated. Also, I don’t see enough explanations or examples of it.
How to set up Vim for Go DevelopmentOne of the major reasons I love programming in Go is that I can do it in any IDE or editor I want, including my favourite Vim editor.
gopsgops gops is a command to list and diagnose Go processes currently running on your system.$ gops 983 980 uplink-soecks go1.9 /usr/local/bin/uplink-soecks 52697 52695 gops go1.10 /Users/jbd/bin/gops 4132 4130 foops * go1.9 /Users/jbd/bin/foops 51130 51128 gocode go1.9.
progressbarA very simple thread-safe progress bar which should work on every OS without problems. I needed a progressbar for croc and everything I tried had problems, so I made another one. In order to be OS agnostic I do not plan to support multi-line outputs. The progressbar implements an io.
Google’s Golang — The Perfect Solution to Super-fast BuildingFrom the large variety of programming languages, you can always find the right one that will be the most helpful for solving some specific task you come upon with. In this article, you will learn about the basics of the Go programming language, which is primarily developed at Google.
Different ways to send an email with GolangIn this blog, we’ll look at different methods to send an email with Go, First, we will explore inbuilt smtp package, then we will move to use a popular package Gomail and finally, we will send HTML emails using custom templates. smtp is an inbuilt package provided with Golang.
Why Go has become my favourite language for almost anythingA couple of years ago at work I was tasked to build the software of an IoT thing. The program had to run on a development board with an ARM Linux distribution and I had complete control on how to structure the project.
Automate Your Go Applications With Gradle & DockerThere’s a consistent demand for speed and efficiency when developing software solutions. Not only do your applications need to compile flawlessly, but today’s modern tech space has forced the “it works on my machine” phrase to become a vulgarity.
20 Go Packages You Can Use in Your Next ProjectGo is an amazing language that you can use to build almost any kind of program. Developed in 2007, it has the ease of an interpreted language while also being fast and efficient as a compiled language. It was also built thinking about concurrency and getting advantage of the multicore machines.
Rust vs. Go: Why They’re Better TogetherSteve Francia Over the past 25 years Steve Francia has built some of the most innovative and successful technologies and companies which have become the foundation of cloud computing, embraced by enterprises and developers all over the world.
How To Become a Golang Developer: A 6-Step Career GuideGolang (also called Go) is an in-demand programming language — especially for people working with Google products. Go is used by many big companies, like Uber, Medium, Dropbox, Salesforce, Netflix, IBM, and Twitter. Go is a great option for job seekers of all levels.
Go for Java Devs — Pointers, Error Handling, and ConcurrencyIn this series’ first article, I described myself as a long-time Java engineer who has recently decided to give Go a go. Although I’ll always love Java, I know that it’s important to keep learning languages.
GopherCon 2020: Jaana Dogan - Debugging Code Generation in GoHave you ever tried to understand how the Go toolchain takes your source code and generates a binary? Have you ever wondered how you can inspect machine code generated from Go source code? Or, have you ever optimized some Go code to later realize Go compiler is already doing the same optimization au
(Pre-Launch) Build a Twitter clone GraphQL API using GolangHello everyone :) My name is Emanuel I’m from Québec Canada. I’ve started working on a videos course with Golang where I show you how to build a twitter clone in graphql.
Just released go-reddit v1.0.0, a Go library for accessing the Reddit APIWorks well, thank you! Glad to hear! Thank you for trying it out.
Rust vs. Go: Why They’re Better TogetherSteve Francia Over the past 25 years Steve Francia has built some of the most innovative and successful technologies and companies which have become the foundation of cloud computing, embraced by enterprises and developers all over the world.
How To Crack the Top 25 Golang Interview QuestionsThe Go programming language, or Golang, is an open source programming language similar to C but optimized for quick compiling, seamless concurrency, and developer ease of use.
The Decorator Pattern In GoThe final product is oddly satisfying. The Decorator pattern is an incredibly useful and flexible technique to create forward-thinking code. It allows you to add functionality to an object dynamically at run time instead of compile time.
3 Concurrent Patterns Used in GolangWhen a program or an algorithm is concurrent, it means that it is designed to be decomposed into smaller parts that will be executed in independent processes in parallel. In other words, as Rob Pike said: Concurrency has a lot to do with the design of your program.
How To Build a Basic Blockchain in GoBlockchain technologies have been referenced by some as the most influential invention since the internet itself. While the public interprets blockchain synonymously with speculative cryptocurrencies, blockchain actually has an incredibly broad range of applications for the modern world.
Go for Java Devs — The BasicsAs someone who’s programmed in Java for almost as long as the language has existed, I’ll always consider myself a “Java guy”.
Coding Problem: Sorted Squared Array in GoLearn two solutions and write table-driven tests! I believe it’s a good practice for software engineers to practice coding interview problems on a routine basis.
Automate Your Go Applications With Gradle & DockerThere’s a consistent demand for speed and efficiency when developing software solutions. Not only do your applications need to compile flawlessly, but today’s modern tech space has forced the “it works on my machine” phrase to become a vulgarity.
Practical Go Lessons
Build a Web Crawler in GoOne of the basic tests I use to try out a new programming language is building a web crawler.
Creating a web crawler in Go with CollyWeb scraping is a technique that lets you inspect, parse, and extract data from websites that would have otherwise been difficult to access due to the lack of a dedicated API.
Develop a Large-scale Concurrent URLs Scraper in GoThis semester I participated in a course on network data mining, which includes a crawler-related project that had much room for technical play, and I think it is worth writing an article to share.
💻 PTerm | Pretty Terminal PrinterTo make PTerm available in your project, you can run the following command. Make sure to run this command inside your project, when you're using go modules 😉
Coding Problem: First Non-Repeating Character in GoThis article is part of my personal habit of writing coding problems in with my most relevant language to stay sharp on my programming and problem solving skills. The First Non-Repeating Character question is a well-known beginner computer science question.
How I create small Go apps quicklyI often want to create a small web application to test out an idea or demonstrate some thing, and I’ve developed a small toolbox that helps me do so in Go.
Building a BitTorrent client from the ground up in GoThis post is also available in Russian and Korean. BitTorrent is a protocol for downloading and distributing files across the Internet.
Go: Using a Closure in Place of a StructThis note isn’t suggesting a pattern to follow, it’s a thought exercise. Let’s look at using a closure where we’d idiomatically use a struct. For this thought exercise, we will implement a Fibonacci Number sequence generator two ways, once with a struct and once with a closure.
go-internalsClick here for the GitBook version. All kinds of contributions are very much welcome.
50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang DevsGo is a simple and fun language, but, like any other language, it has a few gotchas... Many of those gotchas are not entirely Go's fault. Some of these mistakes are natural traps if you are coming from another language. Others are due to faulty assumptions and missing details.
Bitcoin HD Wallet with Golang and gRPC (Part l)In this tutorial series, we are going to learn how to create an HD bitcoin wallet using Golang. The idea of the tutorial series is not only showing how to create the Wallet and getting balances but also how to implement a grpc server and a CLI tool and a web-app for consuming it.
Go: The Idea Behind Sync.PoolI encountered a problem in Go Garbage Collection inside a project of mine recently. A massive amount of object were allocated repeatedly and caused a huge workload of GC. Using sync.Pool I was able to decrease the allocations and GC workload. One of the highlights of Go 1.3 release was sync Pool.
How I build web frontends in GoGo is a great language for building all kinds of backend services like APIs or microservices and many people use it for that. But what about web frontends, specifically dynamically rendered web applications? Let’s have a look…
Collaborative form editor using WebSockets | Web Sockets in Golang and ReactWant real-time communication across clients and asynchronously handle every incoming event across client modules and broadcast it to multiple registered services without long polling for the data? Want to create a chatting application? Websockets might just be your best friend for this particular us
"go get" command · golang-101-hacks"go get" command "go get" command is the standard way of downloading and installing packages and related dependencies, and let's check the particulars of it through an example: (1) Create a playstack repository in github; (2) There is a LICENSE file and play directory in playstack folder; (3) The pl
5 Common mistakes in GoBug-risks are issues in code that can cause errors and breakages in production. A bug is a flaw in the code that produces undesired or incorrect results.
generativeartgenerativeart is a Go package to generate many kinds of generative art. The code is collecting some excellent generative art (implemented in R or Processing), and implement them in Go again. Currently, it supports the following type.
Go: What Does a Goroutine Switch Actually Involve?Goroutines are light; they just need a memory stack of 2Kb to run. They are also cheap to run; switching a goroutine to another one does not require many operations. Before jumping into the switch itself, let’s review how the switch works at a higher level.
Finding Evil Go PackagesBecause of the big SolarWinds hack and the recent blog post describing a new Dependency Confusion attack, there has been a lot of talk lately about supply chain attacks, the sneaky technique of compromising less secure elements in a supply chain to compromise more secure targets.
Golang JSON Gotchas That Drove Me Crazy But I Have Learned to Deal WithJSON is JSON, it's everywhere, and if you're working with Go you're most probably doing tons of JSON marshalling and unmarshalling.
Go Data Structures: InterfacesGo's interfaces—static, checked at compile time, dynamic when asked for—are, for me, the most exciting part of Go from a language design point of view. If I could export one feature of Go into other languages, it would be interfaces.
The Laws of ReflectionReflection in computing is the ability of a program to examine its own structure, particularly through types; it's a form of metaprogramming. It's also a great source of confusion. In this article we attempt to clarify things by explaining how reflection works in Go.
ConstantsGo is a statically typed language that does not permit operations that mix numeric types. You can't add a float64 to an int, or even an int32 to an int. Yet it is legal to write 1e6*time.Second or math.Exp(1) or even 1<<('\t'+2.0).
Strings, bytes, runes and characters in GoThe previous blog post explained how slices work in Go, using a number of examples to illustrate the mechanism behind their implementation. Building on that background, this post discusses strings in Go.
Go Slices: usage and internalsGo's slice type provides a convenient and efficient means of working with sequences of typed data. Slices are analogous to arrays in other languages, but have some unusual properties. This article will look at what slices are and how they are used.
emluque/golang-internals-resourcesThis is a curated collection of Articles and Videos about Golang internals. It is intended for advanced/intermediate programmers who are new to Golang and want to understand what happens under the hood. Feel free to add to it!
How to learn internals of the Go Programming Language? For noobRecently I've participated several Go job interviews. The first one asked me How is channel implemented?, then the second one asked How is goroutine implemented?. Well as you can guess, the next one asked How is a Go interface implemented?.
Golang app in a container with hot reload and dynamic local packageA good way to develop Go applications is to use a Docker container to run them. In addition, having hot reloading is a useful feature to save time and directly see code updates.
go seof: Simple Encrypted os.FileEncrypted drop-in replacement of golang' os.File, the file stored will have 768 bits of encryption (Triple AES256 -yes- very silly and very secure). The resulting type can be used anywhere an os.File could be used. i.e.
What’s new in Go 1.16Go 1.16, the 17th major version of the Go programming language, has just been released. It is a significant upgrade that brings lots of long-awaited features and refinements to the language.
Virtual Filesystem in Go - Creating the foundationHi all. I posted earlier this week about a virtual filesystem project I wanted to start on in Go. So, I wrote my first real technical writing on the actual implementation and was interested in feedback on my technical writing and my Go so far.
Golang's Interfaces explained with MocksWhen I was learning Golang, one of the concepts that took me the most time to grasp was Interfaces. Golang's Interfaces are a great way to make modular and testable code. But they can also be a bit confusing at first glance.
Go security cheatsheet: 8 security best practices for Go developersIn this installment of our cheatsheet series, we’re going to cover eight Go security best practices for Go developers.
Preventing SQL injections in Go (and other vulnerabilities)Go has taken the programming world by storm. When it recently passed its ten-year anniversary, estimates suggested as many as 2 million people use the language. As that number continues to grow, common mistakes have emerged that can lead to bugs and security vulnerabilities.
How Buffer Pool Works: An Implementation In GoI have been exploring how disk-oriented databases efficiently move data in and out of disk. One way, that I explored in Discovering and exploring mmap using Go and But how, exactly, databases use mmap?, is through memory-mapped files. Although mmap is a really neat solution, it has some troubles.
My Ultimate Makefile for Golang ProjectsBut like with all other programming languages, you have to deal with a lot of tooling. To have easy access to these tools, I put everything in a makefile so I can build, lint, and run everything from a single place.
Writing an RPC server in GoHey fellow coders, in the last article we learned how to Write Fx Modules and added a logging module into our project. Continuing on the same codebase, we will add support for serving RPC requests. RPC stands for Remote Procedure Call.
Go 2 generics in 5 minutesThe inclusion or not of generics in the Go language has been a long-standing discussion and cause of drama since the first appearance of the language in 2009. Rivers of ink have been poured in long discussions about if generics are good or bad, and if the language needs to support them or not.
Build a Todo App in Golang, MongoDB, and ReactThe main purpose of this tutorial to get hands-on experience in Golang. When I was learning Golang, I realized there are very few tutorials and articles out there which give you a complete end to end hands-on experience. This is the GitHub link for the complete code.
go101/go101Go 101 is a book focusing on Go syntax/semantics and all kinds of runtime related things. It tries to help gophers gain a deep and thorough understanding of Go. This book also collects many details of Go and in Go programming.
Go: How Does the Garbage Collector Mark the Memory?The Go garbage collector is responsible for collecting the memory that is not in use anymore. The implemented algorithm is a concurrent tri-color mark and sweep collector. In this article, we will see in detail the marking phase, along with the usage of the different colors.
How to setup Golang with VSCodeI have used Golang some years ago, but unfortunately I hadn't tried to do it in a long time and had forgotten all about it.... So I set it up from the beginning with a fresh mind.😊 The environment I used is as follows. macOS Catalina 10.15.5 Visual Studio Code 1.46.
Structure size optimization in Golang (alignment/padding). More effective memory layout (linters).Today I would like to tell you about the alignment of structures in Golang. The capacity of the machines is growing every year. And our computing power allows us to perform increasingly demanding tasks.
Develop A Production Ready REST API in GoWelcome Gophers! In this course, we’ll be covering absolutely everything you need in order to get up and running developing Production-ready REST APIs using Go. Throughout this course, we’ll be looking at how you can build a Comment system for your own sites or projects.
Go Pointers: Why I Use Interfaces (in Go)Emphasis on I and in Go. If you’ve been coding for a while, I probably don’t need to explain all the obvious benefits of interfaces, but I’m going to take just a moment or two to level set before I dive into the more idiosyncratic reasons I use interfaces in Go.
Go: FinalizersGo runtime provides a method runtime.SetFinalizer that allows developers to attach a function to a variable that will be called when the garbage collector sees this variable as garbage ready to be collected since it became unreachable.
Go, HTTP handlers, panic, and deadlocksMaybe the scenario I'm going to describe is just a silly bug no seasoned Go developer would ever make, but it is what it is. I'm not an expert in Go but I do write code in this language from time to time.
Build a Website Using Only the Go Std LibraryThere are quite a few web frameworks available within the Go ecosystem. Yet the advice that is often stated is that the std lib net/http is more than capable and that it’s best to start with that library until you grow out of it.
wuzzInteractive cli tool for HTTP inspection. Note: golang >= 1.10 required.
Golang Tutorial 3 - Golang pointers explained, once and for allThis video is about pointers explained in #golang, along with some basic memory allocation concepts, stack and heap allocations and also how they relate to pointers. It is beginner friendly so I start explaining with the basic syntax, but if you are already familiar with the basics, skip to 04:30.
Extending GObjects From Go and Making Them Available to CWhen I first started writing my GStreamer bindings for go, I had never done C library bindings before. I had written small programs in C for fun, but most of my professional work was either Go, Python, or just pure BASH.
Using SSE in Go web serverStart with adding the right module, that has this functionality already built-in on the server side of program. We will use julienschmidt’s repository again, this time it is module from github.com/julienschmidt/sse. So add the new module and import it.
Golang for Beginners: A Simple Guide to Understanding Basic GoWe are living in an era where technology continues to emerge at a breakneck speed. As 21st century developers, it is crucial for us to learn new coding languages to keep pace with this rapid change as it increases our versatility, widens our competencies and brightens our career prospects.
GoLang: Building a Web ServerWhen you read the term web server, what pops up in your mind? Having worked on Java before I moved on to GoLang, the very first thing that comes to me is Spring and it’s complex configurations. So, here I welcome you to the world of GoLang where things are as simple as it can be.
My raw notes on Go — Best practices, concurrency, memory and beyondOver the last few months I’ve been doing some deeper research over some topics about Go that I found interesting and wanted to have a deeper knowledge about.
Decorating Go ErrorsGo is powerful and popular — projects such as Kubernetes were implemented in Go. One interesting property of Go is that its multi-value returns capability provides a different error handling approach than other programming languages.
Learning Golang in 24 HoursMalcolm Gladwell popularized the notion that it took 10,000 hours to achieve mastery in any skill. However, it came from a body of research on how much time the top performers of several fields spent in “deliberate training” to achieve their level of skill.
Making your Go app configurableUsing a good settings strategy can make local development and deployment a lot easier. Recently, one of my team members wanted to run a service from a Go repository created by another team member. Instinctively, he downloaded the repository and try to fire it up in his favorite editor.
Achieving concurrency in GoIn computer programming, concurrency is ability of a computer to deal with multiple things at once. For general example, if you are surfing internet in a browser, there might be lot of things happening at once.
Handle an Incoming Call With GoIn this tutorial, we’re going to learn how to handle incoming phone calls using a JSON array of actions called Call Control Objects (NCCOs). This tutorial uses Go and the Voice API.
Go: Thoughts About CobraCobra is one of the most famous projects in the Golang ecosystem. It is simple, efficient, and gets great support from the Go community. Let’s discover it. It is quite easy to understand how internal commands work if you get used to Cobra, andvice versa.
Implement a Periodically Refreshing Cache in Your Golang AppA cache that periodically refreshes in the background is a common pattern that is used in several use cases, but how can we achieve this in Go? In this article, I will guide you through the concepts behind the implementation to help you understand how it works. No text, more code.
4 ways GO is just differentGO is a programming language created by Google back in the late 2000’s. It is statically typed, which means you have type safety like Typescript, it is compiled like its parent, C and it has every modern language’s bells and whistles like memory safety and garbage collection.
Go: How Does a Program Recover?Panics in Go are triggered when the program cannot handle an error properly, such as invalid memory access. It can also be triggered by the developer if the error is unexpected and there is no other way to deal with it.