#MessagePack
Explore tagged Tumblr posts
Text
Progress on my little game project.
It looks extremely simple (because it is, really) but this is a client-server engine built on the Monogame rendering/input framework and the C# Socket class. I've never really worked on netcode before outside of one semester at Uni so this has been an interesting challenge.
With a regular single-player local game, you can update everything on the fly as frequently as your renderer refreshes (120 times a second for my render layer). You don't need to have a specific authoritative (accurate and real) world state, because definitionally, the world state that exists is authoritative.
With my build, even local singleplayer is using a server via localhost, so prediction and interpolation are required to make inputs feel snappy and movement feel smooth. The server runs at 50ms intervals, so twenty times a second, which means if I just use the world state at any given point, movement is going to be choppy and inputs are going to be delayed. I need to interpolate (smooth out) movements across the 50ms intervals, and I need to run my movement and physics logic on the client to hide the 50-100ms latency between inputs and action on the screen.
Valve has some great documentation on their model which I have been using heavily, and I am currently trying to implement Gabriel Gambetta's writeup on client prediction so my character stops jumping around wildly on my remote test server.
The other big challenge at the moment is getting my serialisation and marshaling logic to work consistently. I am using MessagePack for serde, which is a lot easier than trying to write my own serde and handle Endianness and network byte order and whatnot, but I am struggling a bit with debugging bytestreams on the remote server. I may need to learn to use Wireshark and equivalent to work out what the hell is going on under the hood.
It has been a lot of fun, even if some of the bugs have been extremely frustrating. I am hoping to build this out into a general purpose engine for future game projects, but even if I stall out I have learned a ton about netcode for games.
#gamedev#monogame#netcode is a circle of hell#at least my character is no longer rendering as a giant capital B
47 notes
·
View notes
Text
MessagePack: It's like JSON, but fast and small.
https://msgpack.org/
0 notes
Text
High-volume, low-latency Java applications
Concurrency and Multithreading
Thread Pooling: Use thread pools (Executors in Java) to manage threads efficiently, avoiding the overhead of creating and destroying threads for each task.
Non-blocking I/O (NIO): Leverage Java NIO for handling large numbers of connections or requests without blocking threads.
Asynchronous Programming: Use CompletableFuture, or other async frameworks (like Project Reactor or Akka) to avoid blocking and enhance throughput.
ForkJoinPool: For divide-and-conquer parallelism, utilize the ForkJoinPool to break tasks into smaller sub-tasks.
2. Efficient Data Structures and Algorithms
Low-latency Collections: Use specialized collections like ConcurrentHashMap for thread-safe, highly scalable access to data. Consider using high-performance libraries like Agrona or JCTools for non-blocking data structures.
Minimize Locking: Avoid blocking locks and shared states whenever possible. Instead, use lock-free and wait-free algorithms (atomic operations via java.util.concurrent.atomic) to avoid contention.
Immutable Objects: Use immutability to reduce synchronization needs and ensure safe access across multiple threads without locks.
Garbage Collection Optimization
Garbage Collection (GC) Tuning: Configure garbage collectors to minimize GC pauses. Some low-latency collectors in the JVM include:
ZGC (Z Garbage Collector): Offers very low pause times even with large heap sizes.
Shenandoah GC: Reduces garbage collection pauses by performing more work concurrently.
G1 GC (Garbage First): Can be tuned to meet specific pause-time goals.
Object Pooling: Reuse objects to reduce the frequency of memory allocation and GC pressure.
Avoid Excessive Object Creation: Prefer primitive types and arrays over objects, especially in hot paths.
4. Network I/O Optimization
Zero-Copy I/O: Utilize memory-mapped files or Java NIO’s DirectByteBuffer for efficient data transfer without the overhead of copying data between buffers.
Use Asynchronous Networking: Java NIO combined with AsynchronousSocketChannel can handle large numbers of I/O operations concurrently without blocking.
Minimize Serialization Overhead: Use efficient serialization formats like Protocol Buffers, FlatBuffers, or MessagePack instead of Java's built-in serialization, which can be slow and memory-intensive.
5. Low-Latency Messaging Systems
Use of Messaging Systems: Low-latency messaging frameworks such as Disruptor (by LMAX) can help bypass traditional locking mechanisms by using a ring buffer architecture, reducing latency in message passing.
Off-Heap Memory: Libraries like Chronicle Queue and Chronicle Map allow storing data off-heap, reducing the load on the garbage collector and improving performance in messaging applications.
6. Database Optimization
NoSQL Databases: For high throughput, consider NoSQL solutions like Cassandra, MongoDB, or Redis for their ability to scale horizontally and handle large datasets.
In-Memory Data Stores: Use in-memory databases (like Redis or Memcached) to avoid disk I/O latency.
Sharding and Partitioning: Distribute data across multiple databases or nodes to ensure scalability and reduce the load on any single system.
7. Minimizing Latency in Critical Paths
Microservices Architecture: Use microservices to break down complex applications into smaller, more manageable components, reducing latency by allowing independent scaling.
Event-Driven Architecture: Use event-driven designs with systems like Kafka or RabbitMQ to decouple components and reduce synchronous calls that can introduce latency.
8. JVM and OS Tuning
CPU Affinity and Pinning: Bind critical threads to specific CPUs to ensure that the most important tasks are not preempted or interrupted by the OS scheduler.
Tuning JVM Parameters: Optimize JVM flags like heap size (-Xms, -Xmx), garbage collector options, and direct memory settings (-XX:MaxDirectMemorySize) based on the workload.
Reduce Context Switching: Avoid excessive thread switching by using fewer, dedicated threads for critical tasks and batch processing.
9. Profiling and Performance Monitoring
Profiling Tools: Use profilers such as VisualVM, YourKit, or Java Flight Recorder (JFR) to identify bottlenecks in code, GC performance, or I/O operations.
Metrics and Monitoring: Implement real-time monitoring (using tools like Prometheus, Grafana, or ELK Stack) to track latency, throughput, and resource utilization. Continuously fine-tune the system based on observed behavior.
10. Batching and Caching
Batch Processing: Process data in batches where possible to reduce the overhead of handling multiple individual requests.
Caching: Use local caches like Caffeine or distributed caches like Redis to store frequently accessed data, reducing the need for repeated data fetching or computation.
sudo lsof -i :<port_number>
High-volume, low-latency Java applicationsThread Pooling: Use thread pools (Executors in Java) to manage threads efficiently,
Asynchronous Programming: Use CompletableFuture, or other async frameworks (
Non-blocking I/O (NIO): Leverage Java NIO for handling large numbers of connections
Efficient Data Structures and Algorithms
Low-latency Collections: Use specialized collections like ConcurrentHashMap for thread-safe,
Minimize Locking: Avoid blocking locks and shared states whenever possible. Instead, use lock-free and wait-free algorithms
Immutable Objects: Use immutability to reduce synchronization needs
3. Garbage Collection Optimization
Configure garbage collectors to minimize GC pauses. Some low-latency collectors in the JVM include:
ZGC (Z Garbage Collector): Offers very low pause times even with large heap sizes.
Object Pooling: Reuse objects to reduce the frequency of memory allocation and GC pressure.
Database Optimization
Sharding and Partitioning:
In-Memory Data Stores: Use in-memory databases
//
Batch Processing: Process data in batches where possible to reduce the overhead of handling multiple individual requests.
Caching: Use local caches like Caffeine or distributed caches like Redis to store frequently accessed data.
Profiling Tools: Use profilers such as VisualVM, YourKit, or Java Flight Recorder (JFR)
Microservices Architecture: Use microservices to break down complex applications into smaller.
///
Class Loading
Preload Classes: You can load key classes in advance to avoid delays caused by lazy class loading during the first few requests.
Heap Sizing: Ensure the heap size (-Xms and -Xmx) is set correctly to avoid resizing the heap during runtime,
Database Connection Pool: Pre-initialize a database connection pool (e.g., HikariCP, Apache DBCP) so that connections are readily available
SQL Query Caching: If your database or ORM (like Hibernate) uses query caches, run key queries to ensure that the cache is warmed up and execution plans are cached in the database.
Class Data Sharing (CDS): Java provides a Class Data Sharing (CDS) feature that allows the JVM to share class metadata between JVM instances to speed up class loading.
//
Preloading with Frameworks (Spring Boot Example)
In frameworks like Spring Boot, you can use @PostConstruct to execute code after the application has been initialized, which is a great place to add preloading logic.
Using Map for Faster Lookups
If you want to be able to quickly look up students by their ID, for example, you can use a Map structure (HashMap or ConcurrentHashMap) that allows O(1) lookup.
Example of an In-Memory Data Map Using HashMap
to create a thread-safe and concurrent version of a HashMap, you can use the ConcurrentHashMap class in Java.
ConcurrentHashMap is a great choice when you need a thread-safe map that supports high concurrency with minimal contention.
Inserting a null Key or Value
If you attempt to insert a null key or value in a ConcurrentHashMap, a NullPointerException will be thrown.
///
ConcurrentHashMap<Student, Student>: In this example, ConcurrentHashMap is used with Student objects as both keys and values. To use Student as a key, the hashCode() and equals() methods are overridden to ensure correct key lookups.
Thread Safety: ConcurrentHashMap allows multiple threads to access the map concurrently, without needing explicit synchronization, ensuring thread-safe read and write operations.
///
Race conditions occur when multiple threads concurrently modify a shared variable without proper synchronization.
To prevent race conditions, use synchronized blocks or atomic variables like AtomicInteger for thread-safe operations.
Using synchronized Block Without static
In this solution, we create an instance variable I, and use a synchronized block to ensure thread safety. Each thread will still share the same IncrementWithSync object, so the synchronization applies to the object instance.
How the Garbage Collector Works?
Java uses reachability to determine when an object is no longer needed. If an object is no longer referenced (reachable) from any live thread, it becomes eligible for garbage collection.
Root Sources of Object References (GC Roots):
Local variables on the stack.
Active threads.
Static fields.
JNI (Java Native Interface) references.
When objects are used as keys in hash-based collections (e.g., HashMap, HashSet), the hashCode() method is used to determine the object's bucket, and equals() is used to check whether the two objects are logically equivalent.
///
0 notes
Text
Got this mostly worked out, in order to implement the spec I'm going to try something new, defining it via toml that gets parsed into a messagepack object for a cross language human readable implementation. Still should be done with it tomorrow
I've been modifying the site editor and SAP at the same time, I should have visual results the beginning of next week.
21 notes
·
View notes
Text
C#: MessagePack Serialization
Introduction
In this tutorial we will learn how to serialize an object to the MessagePack format, in C#. We will be using msgpack-cli package, which can be easily installed from the Visual Studio NuGet package manager, as can be seen in figure 1.
Figure 1 – Installing the MsgPack.Cli package from the NuGet package manager.
This tutorial was tested with .NET Core v3.1 and with MsgPack.Cl…
View On WordPress
0 notes
Text
Updates for December 2021
This Month:
WolfDagger now supports layouts
Hguild/Catalyst: Quite a few speedups to speed up bigger builds (e.g. Wolf itself)
Catalyst now has cleaner support for alternate linkers. Tried using mold, though it has a few issues so its still not enabled by default.
WolfUI: Menus now dont render a garbage frame before rendering the proper menu when first shown.
WolfStage: RectangleRenderComponent now supports a seperate stroke if you want one.
Added support for MessagePack.
Released Wolf 2.3.
0 notes
Text
Redis Client Gui Mac Free
Download FastoRedis - cross-platform client for Redis, supported main Redis database features like: modules, cluster, sentinel, ssh tunneling. This is trial version, after subscription you can get unlimited version, credentials same like on website, for use please sign up. FastoRedis (fork of FastoNoSQL) - is a cross-platform open source Redis management tool (i.e. It put the same engine that powers Redis's redis-cli shell. Everything you can write in redis-cli shell - you can write in Fastoredis! Our program works on the most amount of Linux systems, also on Windows, Mac OS X, FreeBSD and Android platforms. Redis is an open source database with a primary focus on storing data using unique keys and it turns out to be an excellent and versatile choice if you want a highly scalable data store shared. RedisPickup offers you a beautiful, lightweight, fast, easy to use GUI Redis management application, written in SwiftUI / SwiftNIO, can run on both of intel and Apple Silicon Macs(MacOS = 11.0). The key features are: Keys CRUD. Supporting basic Redis data types: STRING,SET,ZSET,HASH,LIST,STREAM. JSON formatter and highlighting. To be able to download SAPGUI, you will first have to request a SAP Service Marketplace user from the ' Request your User ID page'.If you have a user, you can go directly to the SAP Service Marketplace. SAPGUI is a free and Java based that helps you connect to.
Redis Desktop Client For Mac
Apowersoft screen recorder for windows xp. 1. Medis is a beautiful, easy-to-use Redis GUI management application for Redis >= 2.8. Medis starts with all the basic features you need: * Keys viewing/editing * SSH Tunnel for connecting with remote servers * Terminal for executing custom commands * Config viewing/editing It also supports many advanced features: * JSON/MessagePack format viewing/editing and built-in highlighting/validator * Working with millions of keys and key members without blocking the Redis server * Pattern manager for easy selecting a subgroup of keys.
Features and Description
Key Features
Latest Version: 1.0.3
Licence: $4.99
What does Medis - GUI for Redis do? Medis is a beautiful, easy-to-use Redis GUI management application for Redis >= 2.8.Medis starts with all the basic features you need:* Keys viewing/editing* SSH Tunnel for connecting with remote servers* Terminal for executing custom commands* Config viewing/editingIt also supports many advanced features:* JSON/MessagePack format viewing/editing and built-in highlighting/validator* Working with millions of keys and key members without blocking the Redis server* Pattern manager for easy selecting a subgroup of keys.
Download for MacOS - server 1 --> $4.99
Download Latest Version
Download and Install Medis - GUI for Redis Pci ven_8086&dev_1503 driver windows 10.
Download for PC - server 1 -->
Redis Windows Gui Client
Redis Gui For Windows
MAC: Download for MacOS - server 1 --> $4.99 Thank you for visiting our site. Have a nice day!
More apps by Zihua Li
0 notes
Text
Serialization formats
We know some basic formats, techniques of serialization like YAML, JSON, MessagePack and the famous one Object Marshaling. We can choose any formats based on the needs. I came across this article, quite old one, but very informative and it has listed good examples, especially the modularizing with mixins example.
https://www.sitepoint.com/choosing-right-serialization-format/
Object Marshalling -
https://blog.appsignal.com/2019/03/26/object-marshalling-in-ruby.html
Good read !
0 notes
Text
The Concise Binary Object Representation (CBOR) is a data format whose design goals include the possibility of extremely small code size, fairly small message size, and extensibility without the need for version negotiation. Motivated by IoT needs and inspired by MessagePack.
Based on the JSON data model (arrays, maps, ..), schemaless (just like JSON). Contrary to JSON it is extensible, with custom "tags" and there are already extensions for time, dates, typed arrays and more.
JOSE and JWT have their CBOR variants (J -> C). You can define schemas for CBOR using RFC 8610: Concise Data Definition Language.
0 notes
Text
Combating For BigCommerce: The Samurai Approach

youtube
As an eCommerce company owner, the challenge that is biggest you face is making sure that your products or services are competitive in an extremely global marketplace. It is possible to only repeat this if a sound is had by you online marketing strategy set up. SEO could be the mainstay of website marketing right now. The majority of people who buy stuff online rely on search engines like Google, Yahoo and Bing for answers. Should you want to make a sale, you need your eCommerce store to rank on these search engines. Hiring an expert eCommerce SEO service provider is vital with this. SEO may possibly not be the simplest move to make that you can’t understand either by yourself, but it isn’t something. Before looking at third-party Ecommerce Seo Services, it is always simpler to make sure you know very well what you're getting into. Have a look at the basics of SEO, how search engines works, SEO best practices, everything you can get. SEO is about addressing the needs of a consumer. As long them what they need, you will do well as you offer. Try and understand the mindset of your customers and exactly how their online buying behavior has to be catered to. Because they build this understanding, you give yourself a better chance of getting the maximum from your SEO team. Budget and email address details are your two biggest considerations. You might hire a full-time SEO expert as a member of staff, but that might be too costly. Hiring a digital marketing company to offer you with eCommerce SEO services, on the other hand, provides you with results without becoming a burden in your pocket. The trick would be to finding one with a proven track record of providing results. Also, that it is achievable. 1 for your keyword on Google might be the dream of every entrepreneur, but you are competing against thousands for one spot although it’s good to have a target in mind, make sure. An improved target to aim for could be more traffic and conversions. Once you understand what you need, it will be easier for you to find a person who can satisfy your desires. You'll find so many marketing agencies out there eCommerce that is offering services. Most of them shall speak about quick results. But when they are doing, this would be a red flag for you. The fact about SEO is that there was a great way to do things and a way that is bad. The bad way consist of shortcuts or black hat techniques, which will enable you to get in big trouble into the run that is long. Search engines may penalize your internet site and once that happens, you may never recover. It’s vital with its expertise and experience that it knows what it is doing that you go for an agency that can convince you. Your SEO service provider should take the time for you to help keep you informed about each aspect of their online strategy. In place of hoping to meet up targets that are unrealistic their aim should be to give you an acceptable ROI. When dealing with reliable eCommerce SEO services, 1 Digital Agency is up there using the best. The intricacies are understood by us of internet marketing. We understand what buyers that are online hunting for. Our SEO strategies are made to give your business the boost it needs while keep every step was informed by you associated with way.
BigCommerce
Such accelerated processors may further include instruction set(s) for acceleration using coprocessors and/or other logic to facilitate such acceleration. Computer system 500 could also include a main or memory that is primary, such as for instance random access memory (RAM). Main memory 508 may include a number of quantities of cache. Main memory 508 may have stored therein control logic (i.e., computer programs) and/or data. Computer system 500 might also include more than one storage that is secondary or secondary memory 510. Secondary memory 510 may include, as an example, a main storage drive 512 and/or a removable storage device or drive 514. Main storage drive 512 may be a disk that is hard or solid-state drive, for instance. Removable storage drive 514 may be a disk that is floppy, a magnetic tape drive, a concise disk drive, an optical storage device, tape backup device, and/or any other storage device/drive. Removable storage unit 518 can sometimes include a computer usable or storage that is readable having stored thereon software applications (control logic) and/or data. Removable storage unit 518 can be a disk that is floppy magnetic tape, compact disk, DVD, optical storage disk, and/any other computer data storage device. Secondary memory 510 may include other means, devices, components, instrumentalities or other approaches for allowing computer programs and/or other instructions and/or data to be accessed by computer system 500. Such means, devices, components, instrumentalities or other approaches can sometimes include, for instance, a removable storage unit 522 and an interface 520. Samples of the storage that is removable 522 together with interface 520 may include a course cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as for example an EPROM or PROM) and associated socket, a memory stick and USB port, a memory card and associated memory card slot, and/or every other removable storage unit and associated interface. Computer system 500 may also be any of an individual assistant that is digitalPDA), desktop workstation, laptop or portable computers, netbook, tablet, cell phone, smart watch or other wearable, appliance, part of the Internet of Things (IoT), and/or embedded system, to name a few non-limiting examples, or any combination thereof.
Leading POS systems like Shopkeep
New Relic
P/E Ratio n/a
2 Information and reviews
Unlimited staff accounts
PCI DSS certified platform that is e-commerce encrypted checkout
Computer system 500 can be a client or server, accessing or hosting any applications and/or data through any delivery paradigm, including not restricted to remote or distributed cloud computing solutions, local or software that is on-premisese.g., "on-premise" cloud-based solutions); "as a service" models (e.g., content as a service (CaaS), digital content as a service (DCaaS), software as a service (SaaS), managed software as a service (MSaaS), platform as a service (PaaS), desktop as a site (DaaS), framework as a site (FaaS), backend as a site (BaaS), mobile backend as a site (MBaaS), infrastructure as a service (IaaS), database as a site (DBaaS), etc.); and/or a hybrid model including any mix of the foregoing examples or other services or delivery paradigms. Any applicable data structures, file formats, and schemas may be produced by standards including but not restricted to JavaScript Object Notation (JSON), Extensible Markup Language (XML), Yet Another Markup Language (YAML), Extensible Hypertext Markup Language (XHTML), Wireless Markup Language (WML), MessagePack, XML User Interface Language (XUL), or any other functionally similar representations alone or in combination. Alternatively, proprietary data structures, formats or schemas can be used, either exclusively or in combination with known or standards that are open. Any pertinent data, files, and/or databases may be stored, retrieved, accessed, and/or transmitted in human-readable formats such as for instance numeric, textual, graphic, or multimedia formats, further including various types of markup language, among other possible formats. Alternatively or in combination with the aforementioned formats, the information, files, and/or databases could be stored, retrieved, accessed, and/or transmitted in binary, encoded, compressed, and/or encrypted formats, or just about any machine-readable formats. Interfacing or interconnection among various systems and layers may employ any number of mechanisms, such as for instance any number of protocols, programmatic frameworks, floorplans, or application programming interfaces (API), including but not limited to Document Object Model (DOM), Discovery Service (DS), NSUserDefaults, Web Services Description Language (WSDL), Message Exchange Pattern (MEP), Web Distributed Data Exchange (WDDX), Web Hypertext Application Technology Working Group (WHATWG) HTML5 Web Messaging, Representational State Transfer (REST or web that is RESTful), Extensible User Interface Protocol (XUP), Simple Object Access Protocol (SOAP), XML Schema Definition (XSD), XML Remote Procedure Call (XML-RPC), or every other mechanisms, open or proprietary, that will achieve similar functionality and results. Such interfacing or interconnection might also take advantage of uniform resource identifiers (URI), which might further include uniform resource locators (URL) or uniform resource names (URN). Other designs of uniform and/or unique identifiers, locators, or names works extremely well, either exclusively or in conjunction with forms such as those set forth above. Some of the above protocols or APIs may interface with or be implemented in just about any programming language, procedural, functional, or object-oriented, and might be compiled or interpreted.
BigCommerce Is Bound To Make An Impact In Your Business
Objective-C, Java, Swift, Go, Ruby, Perl, Python, JavaScript, WebAssembly, or almost any other language, with any other libraries or schemas, in every types of framework, runtime environment, virtual machine, interpreter, stack, engine, or similar mechanism, including not limited by Node.js, VS, Knockout, jQuery, Dojo, Dijit, OpenUI5, AngularJS, Express.js, Backbone.js, Ember.js, DHTMLX, Vue, React, Electron, and so on, among many other non-limiting examples. Chaincode or contract that is smart may be encoded or programmed using at the very least some of the above programming languages and/or frameworks, e.g., Node.js with JavaScript, other general-purpose programming languages such as for example Go, and/or domain-specific languages such as for example Solidity, to name a couple of non-limiting examples. Any additional libraries, shim code, middleware, APIs, or other logic might be introduced in order to make smart instruments reliably executable (or self-executable) on any given target platform(s) for development, testing, staging, and/or deployment to production, based on some embodiments. In a few embodiments, a tangible, non-transitory apparatus or article of manufacture comprising a tangible, non-transitory computer useable or readable medium having control logic (software) stored thereon may also be referred to herein as some type of computer program product or program storage device. This consists of, but is not limited to, computer system 500, main memory 508, secondary memory 510, and removable storage units 518 and 522, along with tangible articles of manufacture embodying any combination of the foregoing. Such control logic, when executed by a number of data processing devices (such as for instance computer system 500), might cause such data processing devices to operate as described herein. On the basis of the teachings contained in this disclosure, it'll be apparent to persons skilled into the art( that is relevant) steps to make and make use of embodiments with this disclosure using data processing devices, computer systems and/or computer architectures besides that shown in FIG. 5. In particular, embodiments may operate with software, hardware, and/or operating system implementations other than those described herein. It is to be appreciated that the Detailed Description section, and not just about any section, will be used to interpret the claims. Other sections may set forth a number of yet not all exemplary embodiments as contemplated by the inventor(s), and therefore, are not meant to limit this disclosure or the appended claims in any way. While this disclosure describes exemplary embodiments for exemplary fields and applications, it should be understood that the disclosure just isn't limited thereto. Other embodiments and modifications thereto are possible, and therefore are within the spirit and scope with this disclosure. For example, and without limiting the generality of the paragraph, embodiments are not restricted to the software, hardware, firmware, and/or entities illustrated in the figures and/or described herein. Further, embodiments (whether or not explicitly described herein) have significant utility to fields and applications beyond the examples described herein. Embodiments have already been described herein aided by the aid of functional building blocks illustrating the utilization of specified functions and relationships thereof. The boundaries among these functional building blocks have been arbitrarily defined herein for the capability of the description. Alternate boundaries may long be defined as as the specified functions and relationships (or equivalents thereof) are appropriately performed. Also, alternative embodiments may perform functional blocks, steps, operations, methods, etc. using orderings distinctive from those described herein. References herein to "one embodiment," "an embodiment," "an example embodiment," "some embodiments," or similar phrases, indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily are the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily talking about the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it will be inside the knowledge of persons skilled within the relevant art(s) to add such feature, structure, or characteristic into other embodiments whether or not explicitly mentioned or described herein. Additionally, some embodiments could be described utilising the expression "coupled"connected and"" along with their derivatives. These terms are not necessarily intended as synonyms for each other. As an example, some embodiments might be described using the terms "connected" and/or "coupled" to indicate that two or more elements have been in direct physical or contact that is electrical each other. The word "coupled," however, may also mean that two or more elements are not in direct connection with each other, and yet still interact or co-operate with every other.
For more information on BigCommerce take a look at our own website.
0 notes
Text
ESP32: serializing DS18B20 temperature measurement to MessagePack format
ESP32: serializing DS18B20 temperature measurement to MessagePack format
In this tutorial we will check how to obtain a temperature measurement from the DS18B20 sensor and serialize it using the MessagePack format. The tests were performed using a DFRobot’s ESP32 module integrated in a ESP32 development board and a waterproof version of the sensor.
(more…)
View On WordPress
0 notes
Link
0 notes
Text
Projects I frequently take on, in roughly increasing order of complexity:
Utilities for relatively simple tasks that I do frequently. Things I've made for myself in the past: a very simple time tracking tool, a tool to manage files for one-off notes, a tool to dump specific columns from a CSV file, etc.
Implementing a serializer/deserializer for some data format or other. I've done manual implementations of UTF-8, JSON, CBOR, MessagePack... this is pretty niche and the end product will probably not be super useful (existing implementations of all of these things are pretty much universally better than what one person can do in their off time) but it's at the very least instructive.
Implementing a small programming language or domain-specific language, because that's the kinda person I am. A lot of the utilities I make for myself end up involving these (e.g. the CSV column selector has its own little predicate language for filtering rows). Also recommend the textbooks Compilers: Principles, Techniques and Tools by Alfred Aho et al. (colloquially called the Dragon Book) and Types and Programming Languages by Benjamin Pierce if you wanna get into this topic at all; I find them very fun to program along to. (For the latter one you'll probably wanna know Haskell or OCaml or some other functional language).
A game of some kind. There's plenty of frameworks, libraries, tutorials, etc for basically every programming language under the sun.
Some kinda fun graphics project. I made an interactive Julia set renderer using Vulkan a few years ago, that was super fun. About a year before that I made an offline raytracer that simulated a physical camera lens to get realistic depth-of-field effects, and that one was for a class but it was also super fun. Currently learning about/working on a physically-based real-time renderer.
Anyway, that's me. Most of those are down in low-ish-level not-super-flashy command-line-focused land, cause that's where I tend to enjoy things.
i do actually adore the number of bona fide professional coders in my tumblr orbit - i am going to continue to mine all of you for advice until you get tired of me
51 notes
·
View notes
Text
MessagePack: like JSON, but fast and small
https://msgpack.org/ Comments
0 notes