Category: Development

  • I built CLIENTBRIDGE.app to find out if the AI hype is real

    The Answer To The $120+/ Month Small Business Subscription Problem

    AI is changing SaaS for SMBs – Empowering Ownership of Software vs Subscription Models

    Let me paint you a picture: You’re running a 1-2 person service business. By the time you’ve patched together scheduling (Calendly – $12/mo), CRM (HubSpot – $20/mo), invoicing (QuickBooks – $30/mo), client communication (another tool), file sharing (another tool), and a website with forms (another tool), you’re hemorrhaging $120+ monthly. Worse, your data lives in six different silos, and you’re the poor soul manually copying information between them.

    This was my reality working alongside my dad in small business contracting. We tried Housecall Pro. We tried the “all-in-one” solutions. They all fell short because they weren’t built by people who actually lived the problem. They did not provide an end to end customer lifecycle solution.

    So I built CLIENTBRIDGE, starting about 6 months ago.

    Why Now? Why Me? Why Not Before?

    (more…)
  • AI Is Transforming Programming: Platforming Doesn’t Take Years Anymore

    Platforming is the act of building a digital foundation that supports business operations — from user authentication to billing, scheduling, internal tools, customer portals, and beyond. What used to require massive teams and long timelines can now be spun up by small, focused crews with the right stack and mindset.

    With powerful frameworks to develop web APIs, thousands of external APIs like Stripe, cheap infrastructure from nearly any cloud provider, and open source efforts that have templatized and componentized everything — plus AI guiding your path — it’s now possible to platform an entire Fortune 500-style organization in weeks, even days. All it takes is the right people in the right, ripe environment to execute fast.

    (more…)
  • AI is Transforming Programming: Enabling Everyone to Have ‘Superpowers’

    GitHub Copilot, VS Code, and WSL2 can provide any Windows user with the ability to be a developer, Novice and Pro

    Pictured: VS Code Insiders, GitHub Copilot, and WSL2 Ubuntu

    Building a web app can feel daunting, especially when you’re not a professional software engineer. But today, thanks to advancements in AI and modern tools, even someone like me—an OK sysadmin or mechanic or handyperson on my best days!—can take on ambitious projects with confidence…

    (more…)
  • Explore My Gaggiuino Project Photos: DIY Espresso Machine Mod

    I’m excited to share my latest open-source project, Gaggiuino—a fun DIY mod for the Gaggia Classic espresso machine. I’m currently putting together the internal electronics, using Arduino to control temperature, pressure, and shot timing. The goal is to give coffee lovers more control over their brew while keeping the process hands-on. It’s all about blending old-school espresso making with modern tech, and I can’t wait to see where it goes!

    Update August 2024: I’ve been running the machine successfully for about six months now and it is fantastic! It has become a very powerful entry-pro espresso machine worth much more $$$ than the original sticker price.

    My completed machine with the 3d printed LCD display from Ali Express:

    (more…)
  • Dealing with PATH, Bash Profiles, Git config in Windows

    This post serves as a convenience for me and possibly others (probably not because nobody develops on windows) on how to manage working within Git Bash and Command Line in general within Windows 10. It can be a real pain in the neck to develop on Windows. (Updated for 11 in 2023!)

    (more…)
  • Linux Shell history Output, Ch. 01 of Ruby on Rails Tutorial


    The following is output after running history command in a C9 Console (c9.io) where I am attempting my first Ruby on Rails application (Tutorial: railstutorial.org) using the Cloud 9 web IDE. Impressive amount of functionality after limited configuration. Going from zero to running application in ~50 commands is a rare feat today with how complicated the web stack world can be. Even have two environments running: prod and dev by using Heroku to deploy prod.

    Project Console History Output (console 1)
    Get Ruby Version
    1 ruby -v
    Setup Git/Bitbucket
    2 git config --global user.name "your name"
    3 git config --global user.email email@gmail.com

    Quick aside: Server Daemon Console history output (console 2)
    Install rails
    1 gem install rails -v 5.1.2
    Make rails app on c9
    2 rails _5.1.2_ new hello_app
    Goto app dir
    4 cd hello_app/
    Quickly read README
    6 cat README.md
    Quickly read Rakefile
    8 cat Rakefile
    9 ls

    Troubleshoot bundle (dependency mgmt)
    10 bundle install
    11 bundle update listen

    Update bundle of Gems after modifying Gemfile due to version differences
    12 bundle update
    13 bundle install

    Spin up local rails server without params
    14 rails server
    Spin up rails server with params
    15 rails server -b $IP -p $PORT
    Create a new Git repo
    7 git init
    Add files to Git repo using gitignore
    8 git add -A
    Check status of working tree in Git
    9 git status
    Make a commit to repo with added files
    10 git commit -m "Init repo"
    Take a look at SSH for BitBucket setup
    11 cat ~/.ssh/id_rsa.pub
    Returning to Project Console (console 1) History Output
    Add SSH key for use with BitBucket
    16 git remote add origin ssh://git@bitbucket.org/username/project
    Push to origin current repo, failed because of bad syntax
    17 git push -u origin all
    Check status of repo
    18 git status
    Check log of repo
    19 git log
    Create a master branch to troubleshoot failed push
    20 git checkout -b master
    Realized my username was wrong for use with BitBucket
    21 git config --global user.name "username"
    Pushed again, correct syntax this time
    25 git push -u origin --all
    Checkout to newly created modify branch for Readme work
    26 git checkout -b modify-README
    See branches for heck of it
    27 git branch
    Commit changes to repo
    29 git commit -a -m "Update readme"
    Go back to Master branch
    30 git checkout master
    Merge branches
    31 git merge modify-README
    Remove modify branch
    32 git branch -d modify-README
    Push changes
    33 git push
    Check status again
    34 git status
    Modify Gemfile to include :development and :production
    35 bundle install
    38 bundle install --without production
    39 git commit -a -m "Update Gemfile for Heroku"

    Check Heroku version for deployment to production
    40 heroku version
    Setup Heroku
    41 heroku login
    42 heroku keys:add

    Create Heroku Virtual App Instance
    44 heroku create
    45 git push heroku master
    46 git commit -a -m "Update Gemfile for Heroku"

    Check on Heroku Virtual App Instance
    49 heroku help
    50 heroku status
    51 heroku sessions
    52 heroku webhooks

    See progress of issued commands in the Console Window
    53 history

    This concludes Chapter 1 output. I will post subsequent chapters as I complete them. My goal is to revisit the process I go through to reinforce learning and identify where I made mistakes for future avoidance and for more understanding.

  • Java AOP

    AspectJ Notes: Aspect Oriented Programming allows you to achieve an extra level of separation of concerns ontop of OOP methodology.

    Key terms:
    – Pointcut defines wherein the code a joinpoint (injection is what they should’ve called it) will occur.
    – Advice defines what happens at the specific joinpoint.
    – Weaving is the process of injecting the advice into the joinpoints.

    Example code:

    public aspect LicenseFee {

    // playing with this to see if I can get this to work
    // eclipse constantly checks to see if you actually are implementing the method before weaving occurs
    // almost like it actively weaves before runtime, no wonder my computer is so slow running this thing
    // so that means that when I go to run tests, some errors may occur but it should be okay/runnable despite the fact

    pointcut test(): target(Main) &&
    (call(void testSaveAccount()));

    after(): test(){
    System.out.println("TestSaveAccount called");
    }

    pointcut test2(): target(Main) &&
    (call(void testOpenAccount()));

    before(): test2(){
    System.out.println("Derp");
    }

    }

    Eclipse Semantics for Advice

  • DigitalOcean Ubuntu 14.04 User SSH Setup

    ssh root@ip
    adduser username
    gpasswd -a username sudo
    ssh-keygen
    cat keyfilename.pub
    Copy Public Key to Clipboard
    su username
    mkdir .ssh
    sudo chmod 700 .ssh
    nano /.ssh/authorized_keys/
    Paste Public Key from Clipboard
    chmod 600 /.ssh/authorized_keys/
    exit
    Return to Root User
    nano /etc/ssh/sshd_config/
    PermitRootLogin no
    service ssh restart
    exit
    ssh username@ip

     

  • Virtualization of Development Environments Useful Links

    Recently I reformatted my computer after being fed up with a “dirty” Windows install. What I found was that because I was trying out so many different development environments, I was having trouble maintaining a clean foundation for future work. It occurred to me that a possible solution for this would be to virtualize operating systems with Ubuntu/Linux, which of course would be license “free”. By using VirtualBox, I could run a couple VM’s with installed IDEs like IntelliJ or NetBeans, WAMP stack, or Visual Studio on a Windows License so that my localhost would be independent and freed up from walking all over each other. I remember last year working on something called Vagrant. Vagrant takes this idea a step much further by creating ready made boxes, hosted here, for use by anybody. So if you want to quickly jump into a development environment, you can!