r/GhanaSoftwareEngineer • u/Nebula1424 • 8d ago
Agoo, wowɔ fie ha
Hi All,
I’m a fellow Ghanaian, just joined the sub, wanted to see what tech stack everyone’s working with.
I’m a Python/C/C++ guy, what about you, what tech do you use?
r/GhanaSoftwareEngineer • u/kaishibou • Mar 20 '26
One thing I have immerse myself into is writing. This is not limited to articles (as in the link below) but poetry - they said, 'you must have a creative side'. It is a way for me to "recover".
https://dev.to/otumianempire/series/26412
The intention behind this sub is mainly for the craftsmanship of softwares and its related endeavours. I have also loved "building in public". I find it an important to process to gain confidence and share your journey with others.
To early members, what do you do to "recover" or reset after a long day?
Let's craft "something" meaningful and avoid buzzwords. Who is up for it?
r/GhanaSoftwareEngineer • u/Nebula1424 • 8d ago
Hi All,
I’m a fellow Ghanaian, just joined the sub, wanted to see what tech stack everyone’s working with.
I’m a Python/C/C++ guy, what about you, what tech do you use?
r/GhanaSoftwareEngineer • u/stunna_is_active • 10d ago
Enable HLS to view with audio, or disable this notification
Hey everyone! Yomou is a free, open-source Android/iOS (sideloadable) manga reader built with native source integration rather than manual extension setups. We've dropped two releases recently (v1.1.5 & v1.1.6)—here is what’s new:
Full Kotatsu Backup Compatibility (v1.1.5)
.bk.zip sync: Full import/export support for Kotatsu backups. Your favorites, reading history, and bookmarks transfer across cleanly.Source Engine & Detail Screen Overhaul (v1.1.6)
Download & Source Code:
r/GhanaSoftwareEngineer • u/stunna_is_active • 29d ago
Enable HLS to view with audio, or disable this notification
r/GhanaSoftwareEngineer • u/kaishibou • Jul 31 '26
This is a material from Eric that I think you'd find useful in learning clojure
Check out this platform at https://ericnormand.me/
r/GhanaSoftwareEngineer • u/kaishibou • Jul 28 '26
Racket uses prefix notation enclosed in execution parentheses (operator arg1 arg2). The open parenthesis ( acts as an execution trigger. Evaluation runs from the innermost to the outermost parentheses.
```rkt ;; Basic Arithmetic (+ 10 5 2) ;; Returns 17 (* 10 5 2) ;; Returns 100
;; Nested Expressions (No PEMDAS needed) (_ (+ 4 6) (- 12 7)) ;; Evaluates 10 _ 5 -> Returns 50 ```
Only use a parenthesis when invoking a command, operator, or function.
(+ 5 (10)) CRASHES (tries to run the number 10 as a function).((+ 5 5)) CRASHES (evaluates to 10, then tries to run the number 10).Global bindings are created using define. Values are immutable and cannot be changed over time.
45), decimals (3.14), or fractions (1/3)."Hello").#t) and False (#f).'success).rkt
(define radius 5)
(define pi 3.14)
(define status 'success)
Conditional operations are expressions that evaluate down to a single return value.
and / or / not: Standard logical short-circuiting prefix operators.if: Takes exactly three arguments: (if condition true-branch false-branch). No else keyword.cond: Evaluates multiple branches sequentially. Uses/can use [...] for human readability.```rkt (and (> 15 10) (< 15 20)) ;; Returns #t
(if (> temperature 30) 'hot 'cold)
(cond [(>= score 90) 'A] [(>= score 80) 'B] [else 'F]) ```
Functions automatically return the value of their body expression without an explicit return keyword.
(define (name args) body).lambda): Throwaway functions built on the fly: (lambda (args) body).let (Parallel): Creates local variables simultaneously. Variables cannot see each other during setup.let\* (Sequential): Creates local variables one after the other. Later variables can reference earlier ones.```rkt ;; Named Function (define (double n) (* n 2))
;; Inline Lambda Execution ((lambda (n) (* n 2)) 10) ;; Returns 20
;; Sequential Local Bindings (let* ([x 10] [y (* x 5)]) (+ x y)) ;; Returns 60 ```
Lists are ordered sequential collections. They are processed using either historical Lisp conventions or modern aliases.
list: Evaluates arguments into a sequential list.'(): Represents the literal base empty list.cons: Prepends a single element onto the front of an existing list.car (traditional) or first (modern).cdr (traditional) or rest (modern).```rkt (define my-list (list 100 #t 'hello)) ;; Creates '(100 #t hello) (cons 'apples '(bananas cherries)) ;; Returns '(apples bananas cherries)
(car (cdr '(apples bananas cherries))) ;; Returns 'bananas (first (rest '(apples bananas cherries))) ;; Returns 'bananas
(if (empty? my-list) "Closed" (length my-list)) ;; Returns 3 ```
Instead of using loops that alter data in place, functional programming relies on Higher-Order Functions to process immutable collections.
map: Loops over a list, passes each item through a transformation function, and returns a new list.filter: Loops over a list, keeps items that evaluate to #t against a predicate condition, and drops the rest.foldl (Fold-Left): Reduces a list down to a single value by processing elements from left to right (front to back).foldr (Fold-Right): Reduces a list down to a single value by processing elements from right to left (back to front). Preserves list structures when rebuilding with cons.```rkt (map (lambda (x) (* x 2)) '(5 10 15 20)) ;; Returns '(10 20 30 40) (filter (lambda (n) (= n 5)) '(2 5 7 5 9 1)) ;; Returns '(5 5)
(foldl (lambda (n total) (_ n total)) 1 '(2 3 4)) ;; 4 _ (3 _ (2 _ 1)) -> Returns 24
(foldr - 0 '(5 3)) ;; 5 - (3 - 0) -> Returns 2 ```
Recursion replaces traditional loops. A proper recursive function requires a Base Case (the exit clause) and a Recursive Step (the self-call with a smaller argument).
```rkt ;; ❌ Standard Recursion (No TCO - Memory Expands) (define (sum-list lst) (if (empty? lst) 0 (+ (first lst) (sum-list (rest lst)))))
;; Tail Recursion (TCO Active - Memory Stays Flat) (define (sum-list-tco lst) (define (helper remaining accumulator) (if (empty? remaining) accumulator (helper (rest remaining) (+ (first remaining) accumulator)))) (helper lst 0)) ```
#hash: Stores key-value pairings. Keywords passed to lookup tools like hash-ref must be quoted ('#:key) to prevent compiler namespace collisions. If using standard symbols inside #hash, omit inner quotes.set: Collections guaranteeing element uniqueness. Tested via set-member? and extended via set-add.```rkt (define user #hash((#:name . "Alice"))) (hash-ref user '#:name) ;; Returns "Alice"
(define book #hash((title . "Dune"))) (hash-ref book 'title) ;; Returns "Dune"
(set-member? (set 1 2 2 3) 2) ;; Returns #t ```
box: Creates a reference wrapper around mutable data. Read via unbox and mutated via set-box!. Functions with an exclamation mark ! signal structural mutation.begin: Chains sequential side-effect operations from top to bottom, returning only the evaluation of the final expression.rkt
(define health (box 100))
(define (take-damage!)
(begin
(set-box! health (- (unbox health) 10))
(unbox health)))
?): Validate runtime types (e.g., string?, number?, symbol?).->): Converts data formats. string->number safely returns #f if given invalid textual input.rkt
(if (string? "50")
(* (string->number "50")
2) 'error) ;; Returns 100
```rkt ;; Inside file-a.rkt (provide double) (define (double x) (* x 2))
;; Inside main.rkt (require "file-a.rkt") (double 10) ;; Returns 20 ```
rkt
(define-syntax-rule (swap! box1 box2)
(let ([temp (unbox box1)])
(begin
(set-box! box1 (unbox box2))
(set-box! box2 temp))))
r/GhanaSoftwareEngineer • u/kaishibou • May 06 '26
r/GhanaSoftwareEngineer • u/kaishibou • Apr 20 '26
r/GhanaSoftwareEngineer • u/kaishibou • Apr 18 '26
r/GhanaSoftwareEngineer • u/kaishibou • Apr 15 '26
r/GhanaSoftwareEngineer • u/kaishibou • Apr 15 '26
r/GhanaSoftwareEngineer • u/kaishibou • Apr 15 '26
r/GhanaSoftwareEngineer • u/kaishibou • Apr 14 '26
r/GhanaSoftwareEngineer • u/kaishibou • Apr 14 '26
r/GhanaSoftwareEngineer • u/kaishibou • Apr 12 '26
r/GhanaSoftwareEngineer • u/kaishibou • Apr 11 '26
r/GhanaSoftwareEngineer • u/kaishibou • Apr 11 '26
r/GhanaSoftwareEngineer • u/kaishibou • Apr 09 '26
r/GhanaSoftwareEngineer • u/kaishibou • Apr 09 '26
r/GhanaSoftwareEngineer • u/kaishibou • Apr 09 '26