Daniel Amber
Daniel Amber
  • 82
  • 259 978
Firebase storage with ClojureScript (+ Re-Frame)
Unlock the potential of Firebase in your ClojureScript re-frame app! Dive into this tutorial and learn how to effortlessly store data in Firebase from your ClojureScript application. Follow along as we guide you through the process of integrating Firebase, setting up data storage, and seamlessly interacting with Firebase from your re-frame app. Elevate your app's capabilities and streamline data management with this comprehensive guide!
Starting Project: github.com/danownsthisspace/re-frame-firebase-auth
Final Project: github.com/danownsthisspace/re-frame-with-firebase
Get started with a re-frame project using this re-frame Template: calva.io/re-frame-template/
Debug and monitor your re-frame applications with re-frisk: github.com/flexsurfer/re-frisk
Set up and manage your Firebase project via the Firebase Console: console.firebase.google.com/u/0/
Utilize Promesa for promise-based asynchronous operations: github.com/funcool/promesa
Implement Google Sign-In with Firebase using the Google Sign-In - Firebase Documentation: firebase.google.com/docs/auth/web/google-signin
Learn about Firebase's method for managing authentication state changes: firebase.google.com/docs/auth/web/manage-users
Understand and configure authentication state persistence in Firebase: firebase.google.com/docs/auth/web/auth-state-persistence
Explore Sakura for classless CSS styling in your web projects: oxal.org/projects/sakura/
Переглядів: 860

Відео

ClojureScript Google Authentication using Firebase (with Re-Frame)
Переглядів 981Рік тому
Learn to implement Firebase authentication in your ClojureScript re-frame project! GitHub Link: github.com/danownsthisspace/re-frame-firebase-auth Get started with a re-frame project using this re-frame Template: calva.io/re-frame-template/ Debug and monitor your re-frame applications with re-frisk: github.com/flexsurfer/re-frisk Set up and manage your Firebase project via the Firebase Console:...
Create a Desktop App Using only PHP! - NativePHP + Laravel + Livewire
Переглядів 1,8 тис.Рік тому
How about this? I use NativePHP and Laravel to build a desktop app that can execute and monitor scripts on your desktop. NativePHP is a cool framework that lets you create cross-platform desktop apps with a web-based interface. Livewire is great if you dont want to work with JavaScript. By the end of this video, you will have a badass desktop app that can execute and monitor scripts. You will a...
Day in the life of Software Developer / Tech Lead in South Africa (working at Cars.co.za)
Переглядів 6 тис.Рік тому
This is a realistic video of what pretty much every work day for me is like. I normally eat the same meals in the week and keep the same hours. 00:00 Morning routine 02:15 Going to the office 03:00 Working 04:00 Gym 05:00 More working 05:30 Evening routine
Build and deploy a full stack Clojure and ClojureScript Web Application
Переглядів 9 тис.2 роки тому
Build and deploy a Clojure app by: Dockerizing the CSS, ClojureScript and JAR build Using GitHub actions to SSH into a server pull the repo then build and run the created image. GitHub Repo: github.com/danownsthisspace/shorturl-deploy Starting Repo: github.com/danownsthisspace/shorturl-app Previous videos: Video 1 (Build the back-end): ua-cam.com/video/0mrguRPgCzI/v-deo.html Video 2 (Build the ...
How Clojure (and ClojureScript) REPL connections work - feat the creator of Calva!
Переглядів 4,3 тис.2 роки тому
Hi everyone! Please excuse the the audio glitches in this episode. The Audio does get better after the intro! We discuss a lot in this video but the main points we discuss are How Calva starts and connects to a REPL. What a REPL is,. What an nREPL is. What shadow-cljs does. What dep.edn does and how you can use them together. Download Calva: calva.io/ Support Calva: calva.io/merch/ Blog: blog.a...
Full Stack Clojure App - clojure/script + deps.edn + shadow-cljs + Helix + Tailwind
Переглядів 12 тис.2 роки тому
Adding a front-end to a deps.edn API using ClojureScript with Shadow-Cljs, Helix and Tailwind. Links to Repos: Start project: github.com/danownsthisspace/shorturl End project: github.com/danownsthisspace/shorturl-app Calva: calva.io/ Shadow-cljs: github.com/thheller/shadow-cljs#quick-start Helix: github.com/lilactown/helix Tailwind: tailwindcss.com/docs/installation Planet Scale: app.planetscal...
Create a URL shortner with Clojure and MySQL
Переглядів 5 тис.2 роки тому
Create a url shortner in Clojure. In this project we create a server which allows you to use a slug to redirect to a longer url. pretty cool. github link: github.com/danownsthisspace/shorturl 00:00 Intro 00:01:36 Connect to a MySQL database 00:16:42 Create a server 00:20:55 Create a redirect endpoint handler 00:25:42 Create post endpoint to add a redirect 00:27:44 Creating a four character slug...
Write Node using Clojure and deploy to NPM! (With the creator of Babashka)
Переглядів 4,8 тис.2 роки тому
Hey guys! In this video Michiel Borkent and I create a command line utility to manage birthdays using ClojureScript and Nbb. - What is Nbb? Nbb is a tool Michiel (borkdude) created that allows you to write Node applications using Clojurescript. - What are we building? A utility works from the command line and allows you to input a name, day and a month and store the data on MongoDB It can also ...
Create a password manager with Clojure using Babashka, sqlite, honeysql and stash
Переглядів 7 тис.2 роки тому
Hey guys I have previously made a video on how to make a command-line application using Clojure. unfortunately, it was a bit slow because it had to wait for the JVM to boot up. There is a way around that though and that's by using a really awesome Clojure scripting runtime called Basbashka. In this video, we create a password manager to create, store and retrieve passwords. // Links to all libr...
Clojure maps! Everything you need to know!
Переглядів 3,9 тис.2 роки тому
Hey, guys in this video I cover ways to create, update and delete data from maps, I also show how you can sort them and use them with functions :) I didn't really state it clearly, but virtually any value can be used as a key in a map Article on this topic :) daniel-amber.com/blog/posts/clojure-maps/ 00:00 intro 00:11 project setup 00:55 creating maps 2:03 fetching data from maps 03:16 add data...
Clojure Syntax - The odd bits
Переглядів 6 тис.2 роки тому
Hey guys! So coming from another language into Clojure you may feel overwhelmed with some of the "strange" syntax. But there's nothing to worry about, in fact, once you know what everything does, Clojure is incredibly easy to read :D I try to show what Clojure's conventions/Macros/Functions that are a little bit different do. Let me know if you want any more videos like this *made a booboo 😵 in...
Sieve of Eratosthenes - With the creator of Calva!
Переглядів 1,4 тис.2 роки тому
Recently Peter Strömberg, the creator of Calva (calva.io/) got together and had a look at implementing a Sieve of Eratosthenes solution together in Clojure...Peter has actually been doing this for two years and has created one of the fastest Clojure implementations of it! Links 🔗: Peters UA-cam channel: ua-cam.com/users/CalvaTV The Sieve: en.wikipedia.org/wiki/Sieve_of_Eratosthenes Clojure Goes...
Clojure Namespaces Tutorial
Переглядів 2,8 тис.2 роки тому
Clojure Namespaces Tutorial
Advent of Code - Day 1 - Your Clojure Solutions!
Переглядів 8372 роки тому
Advent of Code - Day 1 - Your Clojure Solutions!
Advent of Code - Day 1 - JavaScript Vs Clojure Solution
Переглядів 1,7 тис.3 роки тому
Advent of Code - Day 1 - JavaScript Vs Clojure Solution
Clojure Tutorial - Thread Safety with Atoms!
Переглядів 1,7 тис.3 роки тому
Clojure Tutorial - Thread Safety with Atoms!
Clojure tutorial - Create a rate limiting function!
Переглядів 1,6 тис.3 роки тому
Clojure tutorial - Create a rate limiting function!
Clojure tutorial - use an atom to make a run once function wrapper!
Переглядів 2,4 тис.3 роки тому
Clojure tutorial - use an atom to make a run once function wrapper!
XTDB history API - Clojure Tutorial
Переглядів 2,8 тис.3 роки тому
XTDB history API - Clojure Tutorial
Defmacro Clojure Tutorial - Code that writes code
Переглядів 3,5 тис.3 роки тому
Defmacro Clojure Tutorial - Code that writes code
Learn Reduce, Group-by, and Juxt by creating a Look Up Map (Clojure Tutorial)
Переглядів 2,6 тис.3 роки тому
Learn Reduce, Group-by, and Juxt by creating a Look Up Map (Clojure Tutorial)
Clojure Queues with RabbitMQ
Переглядів 2,2 тис.3 роки тому
Clojure Queues with RabbitMQ
Clojure core.async tutorial (part 1)
Переглядів 3,6 тис.3 роки тому
Clojure core.async tutorial (part 1)
Wire up ClojureScript SPA to Clojure backend
Переглядів 3,4 тис.3 роки тому
Wire up ClojureScript SPA to Clojure backend
first-non-repeating-character (Clojure solution)
Переглядів 6813 роки тому
first-non-repeating-character (Clojure solution)
firstNonRepeatingCharacter solution (converting Java code to Clojure)
Переглядів 1,3 тис.3 роки тому
firstNonRepeatingCharacter solution (converting Java code to Clojure)
Clojure Command Line Application Tutorial
Переглядів 3,3 тис.3 роки тому
Clojure Command Line Application Tutorial
Clojure multi-threading using future
Переглядів 1,8 тис.3 роки тому
Clojure multi-threading using future
ClojureScript re-frame routing tutorial
Переглядів 3,7 тис.3 роки тому
ClojureScript re-frame routing tutorial

КОМЕНТАРІ

  • @ImprovedMe884
    @ImprovedMe884 2 дні тому

    Nice vlog. It's literally like Google in SA.

  • @brekmoment
    @brekmoment 10 днів тому

    absolute gigachad

  • @11STANE11
    @11STANE11 13 днів тому

    Why did you stop making videos?

  • @gessegoncalves6493
    @gessegoncalves6493 14 днів тому

    Is there a way to remove the close button from the window, forcing the system to always be open?

  • @PrinceGorman-yg9br
    @PrinceGorman-yg9br 18 днів тому

    How do you feel as a software developer? Is it a stressful job to do?

  • @felixl7372
    @felixl7372 Місяць тому

    No offense but from a Typescript user this looks like Stone Age 😂: 1. Typo here and there only find out when you actually run the things instead of being caught by type checker at authoring time; 2. cljs->js and js->cljs what’s the point? I thought Clojure gives you the “simple” code without boilerplate 😢; 3. Manually refreshing page without hot reloading in 2024?😅; 4. Wired property access syntax rolled by hand without auto completion from editor?❤

  • @tonadiroma
    @tonadiroma Місяць тому

    using "value" together with on-change pattern is work but still not smooth while typing.

  • @ikbhalshaik
    @ikbhalshaik Місяць тому

    thanks

  • @ElvinHoney707
    @ElvinHoney707 2 місяці тому

    EXCELLENT!!!

  • @theoneed2051
    @theoneed2051 2 місяці тому

    Playback speed was made for this.

  • @kosnowman
    @kosnowman 3 місяці тому

    this is nice and exciting,

  • @oitsukijudan
    @oitsukijudan 3 місяці тому

    Great video, only thing I would have liked to see is the conversion of an unsorted map to a sorted one with `(into (sorted-map) unsorted-example)`

  • @gwenaelchol
    @gwenaelchol 3 місяці тому

    Would be cool the same with facebook auth

  • @goohobot
    @goohobot 4 місяці тому

    Hi, I'm new to shadow-cljs and ClojureScript. Does shadow-cljs support hot reloading without resetting the state? For an example, you make a count button. You click the button to count to 10, then change/add some text elements in the component. Does that reset the count?

  • @YihanPanFloria
    @YihanPanFloria 4 місяці тому

    really helpful, from somebody who just started to learn clojure!

  • @diptoshaa008
    @diptoshaa008 4 місяці тому

    Bro,, i factched errors can you help me??

  • @NullPoint961
    @NullPoint961 4 місяці тому

    my old caches are not being deleted when CACHE_NAME is changed, and also, when switched to offline mode my webpage doesn't appear like the video did

  • @jonotooze2098
    @jonotooze2098 5 місяців тому

    Busy bee How's the platform doing?

  • @noiseless2
    @noiseless2 5 місяців тому

    Thank you had fun watching this ! 👏

  • @Bright-Great
    @Bright-Great 5 місяців тому

    Is it really advisable to use nativephp which is still on alpha

  • @TJ-hs1qm
    @TJ-hs1qm 5 місяців тому

    Managing a combination of things from different dimensions can be thought of as navigating a coordinate system. Dimensions, in this context, refer to user-name (x-axis) and contact-method (y-axis). Multi-methods allow us to combine items from each dimension, much like online car configurators or MacBook product variants based on memory specs. If the x-axis consists of "actionable things" (verbs), we can add another dimension depending on whether the action's has side effects (write) or not (read). This also corresponds to the Command-Query Responsibility Segregation (CQRS), where dimension 1 represents user-name, dimension 2, 3 query/command, respectively.

  • @kalideb-y3y
    @kalideb-y3y 6 місяців тому

    not working I have even followed all the syntax, when on offline mode it shows this error in console "The FetchEvent for "localhost:4000/directory/" resulted in a network error response: an object that was not a Response was passed to respondWith()."

  • @karlkrasnowsky3895
    @karlkrasnowsky3895 6 місяців тому

    Thanks, but given NativePHP is still in alpha, not really an option.

  • @ElvinHoney707
    @ElvinHoney707 6 місяців тому

    For the record, you are awesome!!!

  • @kill_switch_101
    @kill_switch_101 6 місяців тому

    finally found a great tutorial for this API!

  • @ronindevninja
    @ronindevninja 6 місяців тому

    coool coool i love it

  • @kitchenchem141
    @kitchenchem141 7 місяців тому

    I do mostly lower level os related dev and have been tasked with making a dashboard for my company. This video was sooo helpful! Thank you!

  • @Isaiah09405
    @Isaiah09405 7 місяців тому

    What's the name of the company Daniel ??

  • @ericzoona_6098
    @ericzoona_6098 8 місяців тому

    geat video, thank you so much

  • @agatasumowska2165
    @agatasumowska2165 8 місяців тому

    thank you for all the details! I watched to the very end!

  • @marevab.98
    @marevab.98 8 місяців тому

    Spend 1 hours to try installing it in my Mac, your video was so helpful, really straightforward, thank you!!

  • @PaulinaJassaKoch
    @PaulinaJassaKoch 8 місяців тому

    I went through 5 videos of destructuring in JavaScript before landing on this one, this is the best explanation, the way he talks through it. I searched his channel for an explanation on props in React, if anyone has goos suggestions on good tutorials on props?

  • @joaoh113
    @joaoh113 8 місяців тому

    Nice

  • @antoniosousa4178
    @antoniosousa4178 8 місяців тому

    You are amazing man

  • @ShivaSampath125
    @ShivaSampath125 9 місяців тому

    Hey hii...i had problem that my host (my nodejs) application changes are not reflecting in the container....so i did read some article...says to enable file sharing permission....can any one help me out

  • @ljlinen
    @ljlinen 9 місяців тому

    loved watching this. much appreciated.

  • @clarasampaio1175
    @clarasampaio1175 9 місяців тому

    Thank you so so much

  • @Aprarpa
    @Aprarpa 9 місяців тому

    A lot of loud typing, and not so well organized set of ideas. For example, you don’t really frame the tools used and their structure before going into the minutia of how each symbol or keyword is used within one of those tools. Prime examples: shadows, edn. I have a sense of how these tools are relevant to what you’re trying to do, but not much context on how those ecosystems are designed. Thus I had no idea why you went to their documentation when you did. Positives: you did a decent job of describing what the backend project represents at the beginning, however what your front-end conversion was meant to be in its end state was unclear. Perhaps I’m a little spoiled in coming from Haskell and Common Lisp where the assumption is that the core functions or modules will drive all the details so after those are known the rest of the details can be inferred and take similar form.

  • @arijanj
    @arijanj 9 місяців тому

    I never really used Java so I didn't get all the hype around the interop, but seeing every JavaScript library available within Clojure without the hell that is shadow-cljs (seriously, it's so complicated...) really reignited my passion, thanks!

  • @gerritflick4180
    @gerritflick4180 10 місяців тому

    The bug is fixed when you increment half-n by one because you have skipped all the evens and two is also even. He hardcoded the two in loot therefore the last one is skipped if you want to end exactly on a prime number. Possibly you must do something with the comparisons when you want to compare i with half-n. I have (if (<= i half-n)...) and it works.

  • @diggao77
    @diggao77 10 місяців тому

    YOU ARE A BOSS!

  • @stevenrodriguez2882
    @stevenrodriguez2882 10 місяців тому

    when you change the header to accept application/edn, is that the ring library at work, is that what you were saying?

  • @VigilanceTech
    @VigilanceTech 10 місяців тому

    a space saving modification would be to have the bitmap only represent numbers that end in 1, 3, 7, and 9 (so one byte could cover a range of 20) as all primes other than 2 and 5 end in one of those numbers (and of course all evens other than 2 are excluded). In order to clear these bits quickly perhaps a tiny bit of assembly could be leveraged. Not sure about doing it in Java but in many other languages that would be fairly trivial (and of course, in something like C it might just optimize high level code adequately without assembly). Why would one want to do this? Well, perhaps to build a huge table of primes to act as potential factor candidates when searching for extremely large primes (as the table only needs to go up to the square root of the prime one's searching for). A further optimization might be to start run length encoding the number of zeros between the ones of this table as the distance between primes gets huge pretty quickly.

    • @REMUSE777
      @REMUSE777 3 місяці тому

      I think a rudimentary sieve in Clojure is challenge enough. And there can be optimizations but they make the code look significantly less elegant -- it requires "java interop" which makes the calls look like very.long.java.names/method.

  • @joneskamikaze6228
    @joneskamikaze6228 10 місяців тому

    Thank you for sharing your experience, I am learning clojure and your videos help a lot!

  • @Szchmausser
    @Szchmausser 11 місяців тому

    Good video!! Thanks!!

  • @sumalisweety9049
    @sumalisweety9049 11 місяців тому

    I do not have linux os ,can i work in windows Please provide me details

  • @josesgt
    @josesgt 11 місяців тому

    ¡En este momento el ARC Simón Bolívar, un buque científico colombiano se encuentra en aguas antárticas!

  • @prem3957
    @prem3957 11 місяців тому

    Great Video Daniel! Do you edit them yourself?

  •  11 місяців тому

    Awesome job. Thanks both!

  • @onuremreyazgan3911
    @onuremreyazgan3911 Рік тому

    Awesome video! I found Metadata and Dynamic Vars section especially useful. And a comment, for the -main function, I was thinking that was, to match java function in the generated class. Surprised it's just a convention to make it unique. I find it an odd design decision honestly, complexity for a no good reward, not quite Clojure style