2D, 3D, game, games, online game, game development, game engine, programming, OpenGL, Open AI, math, graphics, design, graphic, graphics, game development, game engine, programming, web development, web art, web graphic, arts, tutorial, tutorials,
marți, 21 aprilie 2026
News : Odin Programming Language
Odin is a general-purpose programming language with distinct typing built for high performance, modern systems and data-oriented programming.
Odin is the C alternative for the Joy of Programming.
Odin has been designed to be a pragmatic and evolutionary language, and as such, most people have come to appreciate the results of that, especially stability of language features.
The compiler currently supports compiling on:
- Windows x86-64/AMD64 (MSVC)
- Linux x86-64/AMD64 and ARM64
- MacOS x86-64/AMD64 and ARM64
- FreeBSD x86-64/AMD64 and ARM64
- NetBSD x86-64/AMD64 and ARM64
- OpenBSD x86-64/AMD64
- Haiku x86-64/AMD64 (experimental)
You can read more about this programming language on the official website.
Let's see one simple source code with odin:
package main
import "core:fmt"
main :: proc() {
program := "+ + * 😃 - /"
accumulator := 0
for token in program {
switch token {
case '+': accumulator += 1
case '-': accumulator -= 1
case '*': accumulator *= 2
case '/': accumulator /= 2
case '😃': accumulator *= accumulator
case: // Ignore everything else
}
}
fmt.printf("The program \"%s\" calculates the value %d\n",
program, accumulator)
}News : OpenGL - GPU hydraulic erosion using compute shaders and GitHub repo.
An implementation of Hans Theobald Beyer's algorithm for simulated hydraulic erosion.
See the github repo.
luni, 20 aprilie 2026
Tools : two script in powershell for audit authentication ...
I used copilot to create these powershell scripts to check this windows 10 operating system, because not work well.I think is a hacking with admnistrator access over ehernet.
Purpose : Collect Kerberos and NTLM authentication events from the Windows Security Log and export them into a JSON file for SIEM ingestion.
What it does:
Reads key authentication events (4768, 4769, 4771, 4624, 4625, 4776).
Extracts useful fields (user, IP, ticket type, failure reason, timestamp).
Converts everything into structured JSON.
Saves the JSON file so Splunk, Sentinel, ELK, Wazuh, or Graylog can ingest it.
Does not perform analysis — it only collects and exports raw data.
# ============================
# AUDIT AUTENTIFICARI KERBEROS + NTLM
# Compatibil: AD, SIEM, WEF
# ============================
$OutputFile = "C:\Logs\Kerberos_Audit_$(Get-Date -Format yyyyMMdd_HHmmss).json"
# Evenimente relevante
$EventIDs = @(4768, 4769, 4771, 4624, 4625, 4776)
# Preluare evenimente din Security Log
$Events = Get-WinEvent -FilterHashtable @{
LogName = "Security"
Id = $EventIDs
} -ErrorAction SilentlyContinue
# Parsare evenimente
$Parsed = foreach ($ev in $Events) {
$xml = [xml]$ev.ToXml()
$data = $xml.Event.EventData.Data
[PSCustomObject]@{
TimeCreated = $ev.TimeCreated
EventID = $ev.Id
Machine = $ev.MachineName
User = $data[1].'#text'
IP = $data[18].'#text'
TicketType = switch ($ev.Id) {
4768 { "TGT Request" }
4769 { "Service Ticket (TGS)" }
4771 { "Kerberos Failure" }
4776 { "NTLM Authentication" }
4624 { "Logon Success" }
4625 { "Logon Failure" }
default { "Unknown" }
}
Status = $data[2].'#text'
ServiceName = $data[3].'#text'
FailureReason = $data[5].'#text'
RawMessage = $ev.Message
}
}
# Export JSON pentru SIEM
$Parsed | ConvertTo-Json -Depth 5 | Out-File $OutputFile -Encoding UTF8
Write-Host "Audit complet. Log salvat în: $OutputFile"The advanced script : alerts + dashboards + TXT report for detect suspicious authentication behavior and generate human-readable alerts.
It analyzes the events and identifies:
Brute-force attacks
Too many failures from the same user or IP in a short time window.
NTLM fallback
Detects when authentication falls back from Kerberos to NTLM (Event 4776).
Useful for spotting misconfigurations or downgrade attacks.
Kerberos failures
Detects repeated 4771 errors (bad passwords, clock skew, SPN issues).
# ============================
# AUDIT AUTENTIFICARI KERBEROS + NTLM
# DETECTIE: BRUTEFORCE, NTLM FALLBACK, KERBEROS FAILURES
# ============================
$LogFolder = "C:\Logs"
if (!(Test-Path $LogFolder)) {
New-Item -ItemType Directory -Path $LogFolder | Out-Null
}
$Timestamp = Get-Date -Format yyyyMMdd_HHmmss
$JsonFile = "$LogFolder\Kerberos_Audit_$Timestamp.json"
$ReportFile = "$LogFolder\Kerberos_Alerts_$Timestamp.txt"
# Interval analiză (ex: ultimele 2 ore)
$HoursBack = 2
$StartTime = (Get-Date).AddHours(-$HoursBack)
# Praguri detecție
$BruteForceThreshold = 5 # minim X eșecuri
$BruteForceWindowMin = 10 # în Y minute
$EventIDs = @(4768, 4769, 4771, 4624, 4625, 4776)
$Events = Get-WinEvent -FilterHashtable @{
LogName = "Security"
Id = $EventIDs
StartTime = $StartTime
} -ErrorAction SilentlyContinue
$Parsed = foreach ($ev in $Events) {
$xml = [xml]$ev.ToXml()
$data = $xml.Event.EventData.Data
[PSCustomObject]@{
TimeCreated = $ev.TimeCreated
EventID = $ev.Id
Machine = $ev.MachineName
User = $data[1].'#text'
IP = $data[18].'#text'
TicketType = switch ($ev.Id) {
4768 { "TGT Request" }
4769 { "Service Ticket (TGS)" }
4771 { "Kerberos Failure" }
4776 { "NTLM Authentication" }
4624 { "Logon Success" }
4625 { "Logon Failure" }
default { "Unknown" }
}
Status = $data[2].'#text'
ServiceName = $data[3].'#text'
FailureReason = $data[5].'#text'
RawMessage = $ev.Message
}
}
# Export JSON brut pentru SIEM
$Parsed | ConvertTo-Json -Depth 5 | Out-File $JsonFile -Encoding UTF8
# ============================
# DETECTIE: NTLM FALLBACK
# ============================
$NtlmEvents = $Parsed | Where-Object { $_.EventID -eq 4776 }
$NtlmCount = $NtlmEvents.Count
# ============================
# DETECTIE: KERBEROS FAILURES
# ============================
$KerbFailEvents = $Parsed | Where-Object { $_.EventID -eq 4771 }
$KerbFailCount = $KerbFailEvents.Count
# ============================
# DETECTIE: BRUTE FORCE (USER / IP)
# ============================
$FailureEvents = $Parsed | Where-Object { $_.EventID -in 4625, 4771, 4776 }
$BruteForceAlerts = @()
# Grupare pe User
$FailureEvents | Group-Object User | ForEach-Object {
$user = $_.Name
if ([string]::IsNullOrWhiteSpace($user)) { return }
$events = $_.Group | Sort-Object TimeCreated
for ($i = 0; $i -lt $events.Count; $i++) {
$startTime = $events[$i].TimeCreated
$windowEnd = $startTime.AddMinutes($BruteForceWindowMin)
$windowEvents = $events | Where-Object { $_.TimeCreated -ge $startTime -and $_.TimeCreated -le $windowEnd }
if ($windowEvents.Count -ge $BruteForceThreshold) {
$BruteForceAlerts += [PSCustomObject]@{
Type = "BruteForce_User"
User = $user
Count = $windowEvents.Count
FirstEvent = $startTime
LastEvent = $windowEvents[-1].TimeCreated
}
break
}
}
}
# Grupare pe IP
$FailureEvents | Group-Object IP | ForEach-Object {
$ip = $_.Name
if ([string]::IsNullOrWhiteSpace($ip)) { return }
$events = $_.Group | Sort-Object TimeCreated
for ($i = 0; $i -lt $events.Count; $i++) {
$startTime = $events[$i].TimeCreated
$windowEnd = $startTime.AddMinutes($BruteForceWindowMin)
$windowEvents = $events | Where-Object { $_.TimeCreated -ge $startTime -and $_.TimeCreated -le $windowEnd }
if ($windowEvents.Count -ge $BruteForceThreshold) {
$BruteForceAlerts += [PSCustomObject]@{
Type = "BruteForce_IP"
IP = $ip
Count = $windowEvents.Count
FirstEvent = $startTime
LastEvent = $windowEvents[-1].TimeCreated
}
break
}
}
}
# ============================
# GENERARE RAPORT TXT
# ============================
$ReportLines = @()
$ReportLines += "=== KERBEROS / NTLM AUDIT REPORT ==="
$ReportLines += "Interval analizat: ultimele $HoursBack ore"
$ReportLines += "Generat la: $(Get-Date)"
$ReportLines += ""
$ReportLines += "Total evenimente analizate: $($Parsed.Count)"
$ReportLines += "NTLM Authentication (4776): $NtlmCount"
$ReportLines += "Kerberos Failures (4771): $KerbFailCount"
$ReportLines += ""
$ReportLines += "=== NTLM FALLBACK DETECTIE ==="
if ($NtlmCount -gt 0) {
$ReportLines += "ATENTIE: Exista $NtlmCount evenimente NTLM (posibil fallback de la Kerberos)."
} else {
$ReportLines += "Nu au fost detectate evenimente NTLM (4776) in interval."
}
$ReportLines += ""
$ReportLines += "=== KERBEROS FAILURES DETECTIE ==="
if ($KerbFailCount -gt 0) {
$ReportLines += "ATENTIE: Exista $KerbFailCount esecuri Kerberos (4771)."
} else {
$ReportLines += "Nu au fost detectate esecuri Kerberos (4771) in interval."
}
$ReportLines += ""
$ReportLines += "=== BRUTE FORCE DETECTIE ==="
if ($BruteForceAlerts.Count -gt 0) {
foreach ($alert in $BruteForceAlerts) {
if ($alert.Type -eq "BruteForce_User") {
$ReportLines += "Brute force pe USER: $($alert.User) | Count: $($alert.Count) | Interval: $($alert.FirstEvent) - $($alert.LastEvent)"
} elseif ($alert.Type -eq "BruteForce_IP") {
$ReportLines += "Brute force pe IP: $($alert.IP) | Count: $($alert.Count) | Interval: $($alert.FirstEvent) - $($alert.LastEvent)"
}
}
} else {
$ReportLines += "Nu au fost detectate pattern-uri brute force (user/IP) peste pragul $BruteForceThreshold in $BruteForceWindowMin minute."
}
$ReportLines += ""
$ReportLines += "=== SUGESTII DASHBOARD (Splunk / Sentinel / Kibana) ==="
$ReportLines += "Splunk - Kerberos Failures:"
$ReportLines += " index=kerberos EventID=4771 | stats count by User, IP, FailureReason"
$ReportLines += ""
$ReportLines += "Splunk - NTLM Fallback:"
$ReportLines += " index=kerberos EventID=4776 | stats count by User, IP, Machine"
$ReportLines += ""
$ReportLines += "Splunk - Brute Force (User):"
$ReportLines += " index=kerberos EventID=4625 OR EventID=4771 OR EventID=4776"
$ReportLines += " | bin _time span=10m"
$ReportLines += " | stats count by User, _time"
$ReportLines += " | where count >= $BruteForceThreshold"
$ReportLines += ""
$ReportLines += "Kibana / Elastic:"
$ReportLines += " Filtre pe campurile: EventID, User, IP, FailureReason, Machine"
$ReportLines += ""
$ReportLines += "Sentinel:"
$ReportLines += " SecurityEvent"
$ReportLines += " | where EventID in (4768, 4769, 4771, 4624, 4625, 4776)"
$ReportLines += " | summarize count() by Account, IPAddress, EventID, bin(TimeGenerated, 10m)"
$ReportLines += ""
$ReportLines | Out-File $ReportFile -Encoding UTF8
# ============================
# AFISARE IN CONSOLA
# ============================
Write-Host "=== REZUMAT AUDIT ==="
Write-Host "JSON log: $JsonFile"
Write-Host "Raport TXT: $ReportFile"
Write-Host "Evenimente: $($Parsed.Count)"
Write-Host "NTLM (4776): $NtlmCount"
Write-Host "KerbFail: $KerbFailCount"
Write-Host ""
if ($BruteForceAlerts.Count -gt 0) {
Write-Host "Brute force detectat:"
$BruteForceAlerts | Format-Table -AutoSize
} else {
Write-Host "Nu au fost detectate pattern-uri brute force peste prag."
}
if ($NtlmCount -gt 0) {
Write-Host ""
Write-Host "ATENTIE: Exista evenimente NTLM (4776) - posibil fallback de la Kerberos."
}
if ($KerbFailCount -gt 0) {
Write-Host ""
Write-Host "ATENTIE: Exista esecuri Kerberos (4771) - verifica SPN, parole, clock skew."
}
Posted by
Cătălin George Feștilă
Labels:
2026,
artificial intelligence,
open source,
powershell,
security,
source code,
tools,
tutorial,
tutorials
Tools : SHADERed - C++ features.
If you like shaders and C++ then you can use the SHADERed to export as C++ projects. See the official website.

Posted by
Cătălin George Feștilă
Labels:
2026,
2026 news,
development,
news,
shader,
shaders,
tool,
tools
News : New feature for email and phone masks ...
Our secure, easy-to-use email and phone masks help keep your identity private so you can sign up for new accounts anonymously, stop spam texts and junk calls, and get only the emails you want in your inbox.
See this feature on the official website.
News : new features on Visual Studio Code 1.116.
New features on Visual Studio Code:
Welcome to the 1.116 release of Visual Studio Code. This release continues to make working with chat and agents more powerful and efficient.
Here are some highlights of what's new:
Agent Debug Logs: view logs from previous agent sessions to understand and debug agent interactions.
Copilot CLI thinking effort: configure model thinking effort in Copilot CLI to balance response quality and latency.
Terminal agent tools: interact with any terminal session from your agent sessions.
GitHub Copilot built-in: start using AI without having to install the GitHub Copilot Chat extension.
Happy Coding!
vineri, 17 aprilie 2026
Google Apps Script : ... youtube script for dashboard.
Today, I tested Google Apps Script to get data from youtube dashboard, because I make some streams on youtube and another social platforms.
The source code is large, but I will show this part to understand the basics:
function getChannelStats() {
const response = YouTube.Channels.list(
"snippet,statistics",
{ mine: true }
);
const ch = response.items[0];
return {
title: ch.snippet.title,
subs: Number(ch.statistics.subscriberCount),
views: Number(ch.statistics.viewCount),
videos: Number(ch.statistics.videoCount)
};
} ...
Posted by
Cătălin George Feștilă
Labels:
2026,
demo,
google,
Google Apps Script,
open source,
source code,
tutorial,
tutorials
joi, 16 aprilie 2026
miercuri, 15 aprilie 2026
marți, 14 aprilie 2026
News : old and new games on gog website.
We make games last forever
A home for building and playing your curated game collection, GOG is a digital distribution platform that puts gamers first and respects their need to own games.
These old and new games can be found on the gog.com website.
News : New programming languages in 2026.
-
1. Mojo – a new language for AI and GPU
Mojo is considered one of the most promising new languages of 2026.
- Python‑like syntax
- Performance close to C
- Designed specifically for AI, GPUs, and accelerators
- Ideal for machine learning, inference, and parallel processing
-
2. Carbon – a modern successor to C++
Carbon is an experimental language created to offer a modern alternative to C++.
- Better memory safety
- Modern tooling
- Interoperability with C++
- Highly visible in discussions about emerging languages in 2026
-
3. Zig – a new language for systems & performance
Zig is not entirely new in 2026, but it becomes much more popular this year.
- An alternative to C
- Full control over memory
- No runtime, no garbage collector
- Used for systems, compilers, and developer tools
-
4. Elixir – a modern language for distributed systems
Elixir continues to grow in 2026 as a modern language for scalable applications.
- Runs on the Erlang VM
- Excellent for distributed systems with low latency
- Used in telecom, fintech, and IoT
-
5. Clojure (revival in 2026)
Although not new, Clojure returns to the list of recommended languages in 2026.
- Functional and concise
- Excellent concurrency
- Runs on the JVM
luni, 13 aprilie 2026
News : my Tic-Tac-Toe game on netlify.
Play my Tic-Tac-Toe game on the netlify page.

Posted by
Cătălin George Feștilă
Labels:
2026,
2026 news,
catafest,
news,
online game,
tic-tac-tog,
web apps,
web development
vineri, 10 aprilie 2026
FASM : mouse crosshair with lines on the window GDI.
For a year now, it keeps hacking me on Windows. And when I am in a bad mood, I turn to complex things. Today, I wanted to see if I could make a functional assembly code with Microsoft's Copilot artificial intelligence and my assembly knowledge with FASM. Here is what resulted.
The program is a Win32 GUI application written in FASM that draws a crosshair (vertical + horizontal line) following the mouse cursor inside a window classic GDI.
1. Window Setup
The app starts by registering a Win32 window class (WNDCLASSEX) and creating a standard
overlapped window. Nothing unusual here — just the classic Win32 boilerplate.
2. Message Loop
The program enters the main loop:
- GetMessage
- TranslateMessage
- DispatchMessage
This keeps the window responsive and forwards events to the window procedure.
3. Tracking the Mouse
Whenever the mouse moves inside the window, Windows sends a WM_MOUSEMOVE message.
The program extracts the X and Y coordinates from lParam:
- LOWORD(lParam) → X
- HIWORD(lParam) → Y
These values are stored and the window is invalidated so it can be repainted.
4. Drawing the Crosshair (GDI)
All drawing happens inside WM_PAINT using classic GDI:
- MoveToEx
- LineTo
- Ellipse
- TextOut
- FillRect
The steps are:
- Clear the client area
- Get the window’s current size (GetClientRect)
- Draw a vertical line at the mouse’s X position
- Draw a horizontal line at the mouse’s Y position
- Draw a small circle at the intersection
- Print the coordinates in the corner
Because the client size is read dynamically, the crosshair always stretches across the entire window —
no matter how it’s resized.

See the source code
; mouse_crosshair.asm
format PE GUI 4.0
entry start
include "win32a.inc"
WM_MOUSEMOVE = 0x0200
section '.data' data readable writeable
szClass db "MouseGraph",0
szTitle db "Mouse Crosshair Demo",0
mouseX dd 0
mouseY dd 0
fmt db "X=%d Y=%d",0
buffer db 64 dup(0)
rc RECT
ps PAINTSTRUCT
wc WNDCLASSEX
msg MSG
section '.code' code readable executable
start:
invoke GetModuleHandle,0
mov [wc.hInstance],eax
mov [wc.cbSize],sizeof.WNDCLASSEX
mov [wc.style],CS_HREDRAW or CS_VREDRAW
mov [wc.lpfnWndProc],WndProc
mov [wc.cbClsExtra],0
mov [wc.cbWndExtra],0
mov [wc.hIcon],0
mov [wc.hIconSm],0
mov [wc.lpszMenuName],0
mov [wc.lpszClassName],szClass
mov [wc.hbrBackground],COLOR_WINDOW+1
invoke LoadCursor,0,IDC_ARROW
mov [wc.hCursor],eax
invoke RegisterClassEx,wc
invoke CreateWindowEx,0,szClass,szTitle,\
WS_VISIBLE+WS_OVERLAPPEDWINDOW,\
200,200,800,600,0,0,[wc.hInstance],0
msg_loop:
invoke GetMessage,msg,0,0,0
test eax,eax
jz exit
invoke TranslateMessage,msg
invoke DispatchMessage,msg
jmp msg_loop
exit:
invoke ExitProcess,0
; ---------------------------------------------------------
proc WndProc hWnd,uMsg,wParam,lParam
cmp [uMsg],WM_MOUSEMOVE
je .mouse
cmp [uMsg],WM_PAINT
je .paint
cmp [uMsg],WM_DESTROY
je .destroy
.def:
invoke DefWindowProc,[hWnd],[uMsg],[wParam],[lParam]
ret
; ---------------- WM_MOUSEMOVE ----------------
.mouse:
mov eax,[lParam]
and eax,0FFFFh
mov [mouseX],eax
mov eax,[lParam]
shr eax,16
and eax,0FFFFh
mov [mouseY],eax
invoke InvalidateRect,[hWnd],0,TRUE
ret
; ---------------- WM_PAINT ----------------
.paint:
invoke BeginPaint,[hWnd],ps
mov esi,eax ; hdc
; clean client
invoke GetClientRect,[hWnd],rc
invoke FillRect,esi,rc,COLOR_WINDOW+1
; pen red
invoke CreatePen,PS_SOLID,1,0x0000FF
mov ebx,eax
invoke SelectObject,esi,ebx
; ---------------- linie verticala (cruce) ----------------
mov eax,[mouseX] ; X constant
mov edx,[rc.bottom] ; Y max (jos)
invoke MoveToEx,esi,eax,0,0
invoke LineTo,esi,eax,edx
; ---------------- line ----------------
mov eax,[mouseY] ; Y constant
mov edx,[rc.right] ; X max (dreapta)
invoke MoveToEx,esi,0,eax,0
invoke LineTo,esi,edx,eax
; punct în intersec?ie
mov eax,[mouseX]
mov edx,[mouseY]
invoke Ellipse,esi,eax-4,edx-4,eax+4,edx+4
; text coordonate
invoke wsprintf,buffer,fmt,[mouseX],[mouseY]
invoke lstrlen,buffer
invoke TextOut,esi,10,10,buffer,eax
invoke EndPaint,[hWnd],ps
ret
; ---------------- WM_DESTROY ----------------
.destroy:
invoke PostQuitMessage,0
ret
endp
section '.idata' import data readable
library kernel32,"KERNEL32.DLL",\
user32,"USER32.DLL",\
gdi32,"GDI32.DLL"
include "api/kernel32.inc"
include "api/user32.inc"
include "api/gdi32.inc"
Posted by
Cătălin George Feștilă
Labels:
2026,
artificial intelligence,
assembly,
design,
FASM,
graphic,
graphics,
open source,
source code,
tutorial,
tutorials
News : SASM - SimpleASM has support multiple languages.
... multi-languages for this good assembly editor named SASM - SimpleASM.
SASM (SimpleASM) - simple Open Source crossplatform IDE for NASM, MASM, GAS, FASM assembly languages. SASM has syntax highlighting and debugger. The program works out of the box and is great for beginners to learn assembly language. SASM is translated into Russian, English, Turkish (thanks Ali Goren), Chinese (thanks Ahmed Zetao Yang), German (thanks Sebastian Fischer), Italian (thanks Carlo Dapor), Polish (thanks Krzysztof Rossa), Hebrew (thanks Elian Kamal), Spanish (thanks Mariano Cordoba), Portuguese (thanks alglus), French (thanks Franc Serres), Brazilian Portuguese (thanks williampe99), Japanese (thanks ookatuk). Licensed under the GNU GPL v3.0. Based on the Qt.
See the official webpage.
Tools : test devv.ai for development with artificial intelligence.
Today I tested devv.ai and I asked it to make me an image generator with a prompt.
The issue was : Create an AI image generator app with gallery and user authentication.
After the application was created , I tested online on this webpage.
I asked on the prompt : A magnificent futuristic city based on Christianity, science and knowledge, robots, rehabilitation centers, food, everything is free and fair, without weapons or coercive institutions.
This is resized result:

Posted by
Cătălin George Feștilă
Labels:
2026,
ai tools,
artificial intelligence,
image tools,
tools,
web development
joi, 9 aprilie 2026
miercuri, 8 aprilie 2026
marți, 7 aprilie 2026
Tools : Xournal++ best free tool for handwritten notes.
Xournal++ (/ˌzɚnl̟ˌplʌsˈplʌs/) is an open-source and cross-platform note-taking software that is fast, flexible, and functional. A modern rewrite and a more feature-rich version of the wonderful Xournal program.
Support for pressure-sensitive stylus and drawing tablets (Wacom, Huion, XP-Pen, etc.).
Robust and customizable pen, highlighter and eraser tools, allowing you to write how you want to write.
Use layers to make complex notes that are still pleasant to work with.
Keep track of the notes by using page previews.
Add images and create various shapes, from circles to splines to axis.
Snap objects to rectangular grid or degrees of rotation.
Create anything from differential equations to electrical circuits or the structural formula of molecules using our built-in LaTeX editor.
Customize your toolbar to create a new layout, tailor-made for you.
Use a plugin or create your own via the Lua programming language.
Record audio while you write and insert the recording to any object in your note.
Listen to the recorded audio with the 'Play Object' tool.
Xournal++ for Mobile is now available in Beta!
In short, Xournal++ is a powerful, free tool for handwritten notes, PDF annotation, and technical or academic work — especially if you use a stylus.
You can use with yours any operating system: Linux, Apple, mobile and Windows.
This application can be download from the official website.
Posted by
Cătălin George Feștilă
Labels:
2026,
cross-platform,
free software,
linux,
Linux 32,
Linux 64,
mobile application,
tool,
tools,
windows 10
luni, 6 aprilie 2026
News : Google AdSense upcoming changes.
Starting on or after April 20, 2026, Google AdSense will experiment with an updated set of commonly used ad technology partners. If this experiment is deemed beneficial for publishers, the list will be updated on or after June 5, 2026. This update will reflect the partners that work most closely with publishers globally, determined by data collected from all programmatic demand sources, as well as meeting our privacy standards.
You'll be able to find the up-to-date version of the list published at Manage your ad technology partners (ATPs). You can view the controls, the list of current ad technology partners and, once the experiment starts, those who are part of the experiment in your account in Privacy & messaging, on the European regulations settings page, in the "Your ad partners" menu.
If you want to prevent automatic updates or do not want to participate in the experiment, select "Do not automatically include commonly used ad partners". This will create a custom list pre-filled with your current selections, which you can then modify as needed. If you're using a third-party CMP to collect GDPR consent, your list of ad tech partners is managed through your CMP provider.
See the official webpage.
News : Low price for Trae AI - best and cheap development tool.
See the trae AI tool for development with low prices, started from 3 euro .
Tools : PlayCanvas Developer Site is easy to use ...
You need to read the documantation to be more accurate from the official website.

Posted by
Cătălin George Feștilă
Labels:
2026,
3d engine,
development,
PlayCanvas,
tool,
web development,
WebGL,
WebGPU
News : The new Qt Quick 3D with XR and VR applications into new Qt 6.11.
This is an old news from two weeks ago about the Qt 6.11.
Even the Qt was released now the news comes about the Qt Quick 3D:
Qt Quick 3D provides a high-level API for creating 3D content and 3D user interfaces based on Qt Quick. Rather than using an external engine, which creates syncing issues and additional layers of abstraction, Qt Quick 3D provides extensions to the existing Qt Quick Scene Graph for spatial content and a renderer for that extended scene graph. When using the spatial scene graph, it's possible to mix Qt Quick 2D content with 3D content.
Qt Quick 3D also provides for XR and VR applications with Qt Quick 3D Xr.
See the new video from the official youtube channel - Qt Studio about the new released Qt 6.11.
sâmbătă, 4 aprilie 2026
News : volumetric videos for XR and beyond ...
Gaussian splatting-based volumetric videos for XR and beyond ...
See the official website.
News : Real-World 3D Geospatial Capability for Unity by Cesium.
Built on open standards and APIs, Cesium for Unity combines the 3D geospatial capability of Cesium and 3D Tiles with the Unity ecosystem.
News : Agent Development Kit for Go by google.
Agent Development Kit (ADK) is a flexible and modular framework that applies software development principles to AI agent creation. It is designed to simplify building, deploying, and orchestrating agent workflows, from simple tasks to complex systems. While optimized for Gemini, ADK is model-agnostic, deployment-agnostic, and compatible with other frameworks.
This Go version of ADK is ideal for developers building cloud-native agent applications, leveraging Go's strengths in concurrency and performance.
See the official webpage and the GitHub project.
News : Maintenance release: Godot 4.6.2.
While the majority of our team continues to focus on development snapshots for Godot 4.7, we still have a commitment to maintenance releases for the latest stable version. Specifically, our release support policy promises active support until the successor’s first patch release, so there’s still room for yet more maintenance releases in the future. As for now, we’d like to thank everyone who took the time to evaluate and ratify our release candidates for Godot 4.6.2.
See the official blog.
vineri, 3 aprilie 2026
Tools : Arnis : handle large-scale geographic into Minecraft worlds.
Arnis creates complex and accurate Minecraft Java Edition (1.17+) and Bedrock Edition worlds that reflect real-world geography, topography, and architecture.
This free and open source project is designed to handle large-scale geographic data from the real world and generate detailed Minecraft worlds. The algorithm processes geospatial data from OpenStreetMap as well as elevation data to create an accurate Minecraft representation of terrain and architecture. Generate your hometown, big cities, and natural landscapes with ease!
See the GitHub project.
News : Kahoot Review 2026: Features, Pricing & Better Alternatives by Atomi Systems.
If you’ve spent any time in a modern classroom, physical or virtual, you’ve almost certainly heard the iconic Kahoot countdown music. Since its launch over a decade ago, Kahoot has become synonymous with gamified quizzes. It’s colorful, it’s energetic, and students genuinely light up when they see it on screen.
But here’s the question I keep hearing from fellow instructional designers and educators in 2026: Is Kahoot still the right tool when your needs go beyond a quick classroom warm-up?
What Is Kahoot? A Quick Overview
Kahoot is a cloud-based, game-based learning platform primarily designed for live, synchronous quiz sessions. Teachers or trainers create quiz games (“Kahoots”), share a game PIN with participants, and players answer questions on their own devices in real time. Points are awarded for speed and accuracy, and a live leaderboard keeps the competitive energy high.
Founded: 2013, Norway
Primary Use Case: Live gamified quizzes and polls
Platform: Web-based (works on any browser, plus iOS/Android apps)
Target Users: K-12 teachers, corporate trainers, event facilitators
See prices on the official website.
joi, 2 aprilie 2026
Tools : online comics with artificial intelligence ...
You can create your comics book with artificial intelligence online website, see the official website.
I tested with 100 points free account, I found some mistakes but works great, see my comics Mission 76:



miercuri, 1 aprilie 2026
Abonați-vă la:
Comentarii (Atom)




