.      ..:--====:.                                                                                                            
                                                                    ..:::======++++****####**=-:.                                                                                                       
                                                               .::-===++++*+++**************##***++==::.                                                                                                
                                                             :-=++************##############*###*********=:.                                                                                            
                                                           .-++************###**####%%%%%%%%%%%%%%%%####***+-:                                                                                          
                                                         .-+*****#######*######%####******######%%%%%%%%%#****=::.                                                                                      
                                                       .-+**##***#%%%%%%****###%##*****#####%%%#%%######*#%###****=-:                                                                                   
                                                      .=****%%%##%%%%%%***#####%####%%%%%%%%%%%%%%%%%%%%%%##%%%**#***-:                                                                                 
                                                      :=+**#%%%%@%%%%%%##%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%##%%#####*=:.                                                                               
                                                      :--+*#%%%@@@@@@@@@%%%%%%%%@@@@%%##%%%%%%%%%%%%%%%%%%%@%%%%%#%%%##*:                                                                               
                                                      ::--+*%%%@@@@@@@@@%%%%%%%%%%%%%%%%%%%%%%%@@@%%%%%%%%%%%%%%%%%%%###=:                                                                              
                                                      .:::=%%%%@@@%%%%%%#######*#%%%%#%%%%%%%@%@@@@@@%%%%%%%%%%%%%%%%%##+:                                                                              
                                                      .:=+#%%%%%%%%#**+++++******####%#%%%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%#*                                                                               
                                                       :=*###%%%**+==--::::-==+++*##**###%%%%%%%%%%%%@@@@@@@@%%%@@%%%%%%#-                                                                              
                                                      .-+***#%#*=-::::...::::-====+******##%%%%%%%%%%@@@@@@@@@%%%%%%%%%%%*:.                                                                            
                                                      :=****#**-:::......:::::---===++++****####%%##%%%%@@@@@@@%%%%%%%%%%#=:                                                                            
                                                     .-=******=:..........:::::::---======+******######%%%@@@@@%%%%%%%%%%%+:                                                                            
                                                     .-*+**#*=::..........:::::::::------====+++********#%%%@@@@%%%%%%%%%%*-.                                                                           
                                                     .=**###*=::.........:::::::-::--::--=======+++++*****%%%%%%%@%%%@@%%%#=:                                                                           
                                                     .=#%%##+-:::.....::::::::--=::---========++++++++++****#%%%%%%@%@@%%%%=:                                                                           
                                                     .-*%%%#+::::.::::--=========-====++******#*******++++++**#%%@@@@@%%%%%*-.                                                                          
                                                     .:*%%%%+::::-===+**#####***+=++***##%%%%%%%%%%###***++++**%%@@@@@@%%%%#=.                                                                          
                                                      .=#%%%*:-=+*****#%%%%%%%#*=-==*###%%%%%%%%#####%%%%***++*#%@@@@%%%%%%#=.                                                                          
                                                      .=#%%%**#*+====+**###%%%%%%%%%%%###%%%%###*******%@@%%%%**%@@@@@@@%%%#-.                                                                          
                                                      .=%%%@%#*-=--====**####%@#==++*%###%%%%%%%%%%#*****@@%**#%%%@@@@@@%%%=:                                                                           
                                                      .=*%@%*#+====*#%%%%####*%#:::=*%#*###%%##%%%%%%%#**%%*++++#%%%%@@@@%*:.                                                                           
                                                      .=#%%%*#=-=+=+++*******+#=:::=+%#******##*####*****#***+*+*%@%%%@@%%+:                                                                            
                                                      .-*%%#**:::::-=+****+==-#::::=+*%************++++++#++++***%%@%%%%%%=:                                                                            
                                                       :=*##++=-::::::-==-:::*=:::-==+##**++++++========**++++++*#%%%#***#=:                                                                            
                                                      .-=-+=*=::---:::::::::=*::::===+*#***+++====-====+*+++++++*#%#*****+=:                                                                            
                                                      :-:-=-:*=::::-=--:::-**---=+*******%***+++======**++++++++*#####%%%#=:                                                                            
                                                     .-=***=::-*=:::-=====*=:==+*######***#%%%*****#*+++++++*****##*#**#%#=:                                                                            
                                                     .-=+**=::::----=-======*%%%#%#%%@%%######*******************##%#***%#=:                                                                            
                                                      :-=+-=-------=--==++++*##*+*%%#%%%%#***#####**************#*+###**#*=:                                                                            
                                                      .-===+=----======++=======+*######********###*************#****#***=:                                                                             
                                                       :=--==--========-===-====******##***********###******************=:                                                                              
                                                       .:-::=--=======----======+***+**#*************##***********++**+=:                                                                               
                                                        .-::::-=======-=======+*****######**######*****************++=-.                                                                                
                                                         .-:::--======+++***####%%%%%%%%%%%%%%%%##****************++=-.                                                                                 
                                                          .-::------=+*#%#*=========+***************************#*=:.                                                                                   
                                                           .-+=-===-=+**=::::--====+*****************************:.                                                                                     
                                                            .-=-=====+=-::-===+*****####************************=.                                                                                      
                                                             .=-=======---=+**#%%%%%%%####**********************-.                                                                                      
                                                              :========-====+**********************************+:                                                                                       
                                                               :========------::-====+*******************###*++=.                                                                                       
                                                                .:======---:::::-===++++************######**+++=.                                                                                       
                                                                  :=====-===-===+*****************#######**+++**=.                                                                                      
                                                                   .:=+======++**##################%%%##***++++##*+====-::.                                                                             
                                                                     :=*******##%%%%%%%%%%%%%##%%%%%##****+++++*%%%####*++=:.                                                                           
                                                                      :==*%%%%%%%%%%%%%%%%%%%%%%%%###*****++++=*%%%%%%%*****=.                                                                          
                                                                      .===*#%%%%%%%%%%%%%%%%%%%%####*******+++=+%%%%%%#*****+=:                                                                         
                                                                       :=-==*#%%%%%%%%%%%%%%%######*******++++++*@@@%%****#***=:                                                                        
                                                                       :=--===+*%%%%%%%%%%########********++++++*%@@@%*####****+:.                                                                      
                                                                       :+=:---=+**#%%%%%#########********+++++++**%@%#######*****=:                                                                     
                                                                      .-++:::--==+**#%%#######***********++++++****%######*******+=:.                                                                   
                                                                   .:====*-::::-===+**#####***************+++*******#######*#*******=:..                                                                
                                                                 .:===++##=::::--==+***###*************************##########*********++==:.                                                            
                                                                :===+***#*=::::---==+***#*************************###########*************+====-:..                                                     
                                                             .:====*#**%#**-::-----=+***************************#############***********++*+++++++===-:.                                                
                                                           .:-==++*##*##*++=::---===**************************##############******##************+++=======-:.                                           
                                                         .:-==+***####**+**+:::--==*************************#%##############*****#******************+=========-::                                       
                                                       .:-==+****#********%*::::-=+***********************#%%#########*##*******************+++++=======++=========:.                                   
                                                     .:-==++*#**+********##=:::::-=+******************++*%%%########*#**********#********+++++======++++++==+++==+===+-.                                
                                                  .::-==+++====+********#*-+:::::-==+********+++*++=::=*##***********#*********##******+++++++==+++++++++++++++++++++++=+=:                             
                                                .:-=======+++************:=+::::::-==++++++++++=-:.:=+****+********####*******##*****+++++++++++++**+*****+++++++++++++*+++=:.                          
                                              .:-==+=+****************++- =*::::::-====++=====:..:-+****++*****************++*%#****+++++++++++++************+++++++++****++*+=:                        
                                           .::======+*%*+==++*++++=:-:-=. .+:.::::-=======-:. .:-+****+++***************+**+*##*****++++++++++******************+++++++********+-.                      
                                         .:========+***+==+**=:::...::-=.  ::.........      .:=++*+*+++************+++++*****%#*****++++++++************************+++**********=:                     
                                       .:=======+*****+******+-::::::-*=                 .:=++*+*+*+=++++++++***++++++++*++*%%#***++++*++*********************************+*****+**-.                   
                                     .:=====++==*%******###*##*:.::--++=.       ...:::--==+*+*+*++==+++++++++++++++********#%#*******+**********************************************=:                  
                                   .:-=====+*+=+%%***#**#**###*-::-==*+=:..:--:-=======++**+*+*++=++++***+*++**+********+**%%##***+******************************##*********++********-.                
                                  :======++*+=+*#**+#####*#%%#*---==*#+===========++++*++*+*+*++=====+++++**++++*****+*++*%%%%#***++*****************************##********************=.               
                                .-====+=++**+=+****+*****#%%##*=-==+##*++++++++++++*+**+++++**#%%#*====+++***+++*******+*#%%%%#**********************************#%*********************+:.             
                               .-===+++++***++*****+*#*##%%%##*====*#*+++++++++++++*+*++*%%%%%@@@@@%#+==++*+**+*******++#%%%%##**+******************************#%%***********************=.            
                              :==+++++++****+******+*####%%###*===+#%**++++++++**+****+#%%%@@@@@@@@@@@%*+++**+*+*****++*%%%%%%**********************************#%%****#*******************=.           
                             .==++=++++*****+*****#+*###%%%%##*==+*%%#*++*****+++**+++#%%@@@@@@@@@@@@@@@%#*+++*******+*#%%%%%#************##********************#%%****##*****++*****##*****+:          
                            .-+++++++*******+********###%%%%%#*==+#%#**+++==++*******#%%%%@@@@@@%%%%%%@@@@@%*+++****++*%%%%%%#***********##****####*#***##******#%%**###*****++++************+:.        
                            :++*++++*******+*********#%%%%%%%%*++*%%#**+++***+++*++++#%@@%%%%%%#%%%%%%%%@@@%%#*+++*++*%%%%%%%***********###****#*#**#**###*****##%%**###******++*******##******-.       
                           .=++*+++******#*+****#**+*##%%%%%%%*+*#%##**+*+++*+**+++**%%%%%%#####%%%%###%%%%**#%#**+*#%%%%%%%#**********####***##*#########*****##%%*###*****************####***+:.      
                          .-=+*+++******##*+********+*#%%%%%%%***%%##*++*+**+==*+**+*##*****#%%%###**#%%%#***##%%%%%%%%%%%%%#**********####****##########*****###%%*###******************##*##**+:      
                          :+++*++*******#*+*********+*#%%%%%%#**%%##**+*+++++**+++++******#%%%#*****##%%#*****#%%%@%%%%%%%%#**********####***##*#########******##%%###*******************###*##***:     
                         .-*+++++******##***********+*#%%%%%%**#%%##**+*++*+=+***#*+*****#%%#******##%%*******#%%%%#*#%%%%%#*********#####**#############*****###%%##********************####**#**=.    
                         :=+*++++******#**************#%%%%%%**%%%##*+*++++++*******##**#%#*******###%*******##%%%%**###%%#**********####***#############***#####%%##**##*****************#%##*****-.   
                         :+**+++*******#**************#%%%%%#*%%%###***+++++********%**#%#*******####*+*******%%%%#***##************######**############****#####%%#####**#****************#%##*****:   
                         :+**+++******##**************##%%%%*#@@%%#*******+++******##**#*********###*+*******#%%%%***###***********#####################****#####%%%##%#*#**#####***********%%###***=:  
                        .-+**+++*****##***********+****###%#*%@%%##***+++********+*##***********##**++*******#%%%#**###************######**#############***#####%%%%###*##**######**********#%#####**=. 
                        :=+*++++*****#***********+*****#%%%**%@%###******+*+*******##***+******##*++********#%%%%#**##************#######**#############***#####%%%%%%###**######**********#*######***: 
                        :+**=+*******#*++********+***+*#%%#**%%%%##******+******+*##**********##*++*********#%%%%***##************#####################**######%%%%%%%###*###%%#******##***#**######**+:
                       .:+****+*****#%#+*******+++*****%%%***%%%%%%#************+***************++*********#%%%%%**##************###########%##########**######%%%%%%%*##*###%%#******###*****######***=
                       .-****++*****##*+++******+*****%%%#***%%%%###************+*#************++*********##%%%%#*###**********#############%###########*######%%%%%%%##*##%%%##******####*****#######*+
            

Hello, world.

My name is Steven Warner. I am a web developer in Los Angeles, CA.

I primarily work with React and Next.js, but I also like to experiment with React Native, Swift, SQL, & plain old javascript.

Projects

Guitar chord database

  • Basic CRUD app built with Next.js & Postgres.
  • Chords are stored as arrays ['x',3,2,0,1,0] and charts are dynamically rendered as SVGs.
  • Because the site uses no images and is all server side rendered, it is extremely fast.
Project Demo

UI component library

  • Simple React form element components
  • SOLID principles
  • Storybook and Github deploy/publish actions
(work in progress)
Project Demo

RSS feed podcast player

  • Next.js server side components
  • Fetches RSS feed as XML and parsed to json
Project Demo

Reddit client

  • Next.js Reddit client mimicing TikTok scrolling with css scroll snap
  • Tanstack Query infinite scrolling via intersection observer
  • Implemented Reddit OAuth
(Abandoned due to Reddit API changes/cost)
Project
☺︎