install lineageOS on blueline (pixel 3)

copy of https://lineageosroms.com/blueline/ for posterity

Install LineageOS on blueline

Basic requirements

  1. Make sure your computer has adb and fastboot. Setup instructions can be found here.
  2. Enable USB debugging on your device.

Unlocking the bootloader

  1. Enable OEM unlock in the Developer options under device Settings, if present.
  2. Connect the device to your PC via USB.
  3. On the computer, open a command prompt (on Windows) or terminal (on Linux or macOS) window, and type:
    adb reboot bootloader
    

    You can also boot into fastboot mode via a key combination:

    • With the device powered off, hold Volume Down + Power.
  4. Once the device is in fastboot mode, verify your PC finds it by typing:
    fastboot devices
    
  5. Now type the following command to unlock the bootloader:
    fastboot flashing unlock
    
  6. If the device doesn’t automatically reboot, reboot it. It should now be unlocked.
  7. Since the device resets completely, you will need to re-enable USB debugging to continue.

Temporarily booting a custom recovery using fastboot

  1. Download a custom recovery – you can download Lineage Recovery. Simply download the latest recovery file, named something like lineage-17.1-20201116-recovery-blueline.img.
  2. Connect your device to your PC via USB.
  3. On the computer, open a command prompt (on Windows) or terminal (on Linux or macOS) window, and type:
    adb reboot bootloader
    

    You can also boot into fastboot mode via a key combination:

    • With the device powered off, hold Volume Down + Power.
  4. Once the device is in fastboot mode, verify your PC finds it by typing:
    fastboot devices
    
  5. Temporarily flash a recovery on your device by typing:
    fastboot flash boot <recovery_filename>.img
    
  6. With the device powered off, hold Volume Down + Power.

Installing LineageOS from recovery

  1. Download the LineageOS installation package that you would like to install or build the package yourself.
    • Optionally, download additional application packages such as Google Apps (use the arm64 architecture).
  2. If you are not in recovery, reboot into recovery:
    • With the device powered off, hold Volume Down + Power.
  3. Now tap Factory Reset, then Format data / factory reset and continue with the formatting process. This will remove encryption and delete all files stored in the internal storage, as well as format your cache partition (if you have one).
  4. Return to the main menu.
  5. Sideload the LineageOS .zip package:
    • On the device, select “Apply Update”, then “Apply from ADB” to begin sideload.
    • On the host machine, sideload the package using: adb sideload filename.zip
  6. (Optionally): If you want to install any additional add-ons, click Advanced, then Reboot to Recovery, then when your device reboots, click Apply Update, then Apply from ADB, then adb sideload filename.zip those packages in sequence.
  7. Once you have installed everything successfully, click the back arrow in the top left of the screen, then “Reboot system now”.

Update to a newer build of the same LineageOS version on blueline

Updating your device

Using the LineageOS Updater app

  1. Open Settings, navigate to “System”, then “Updater”.
  2. Click the Refresh Icon in the top right corner.
  3. Choose which update you’d like and press “Download”.
  4. When the download completes, click “Install”. Once the update process has finished, the device will display a “Reboot” button, you may need to go into the Updater menu in Settings, “System” to see it. This will reboot you into the updated system.

From your PC via the push_update script (Linux/macOS only)

  1. Make sure your computer has working adb. Setup instructions can be found here.
  2. Enable USB debugging on your device. Additionally, open Settings, then “System”, then “Developer Options”, and then either check “Rooted Debugging” (LineageOS 17.1 or above) or select “Root Access Options”, then “ADB Only”.
  3. Run adb root
  4. Run wget
    https://raw.githubusercontent.com/LineageOS/android_packages_apps_Updater/lineage-16.0/push-update.sh
    && chmod +x push-update.sh
  5. Run: ./push-update.sh /path/to/zip
  6. Open Settings, navigate to “System”, then “Updater”. click “Install”. Once the update process has finished, the device will display a “Reboot” button, you may need to go into the Updater menu in Settings, “System” to see it. This will reboot you into the updated system.

backup/install android app from adb

search elsewhere for how to enable developer mode, and how to enable usb debugging.

#then find the fullname of the app

$adb shell 'pm list packages' |grep i foo
package:com.bar.android.foo

#Then find the path to the app

$ adb shell pm path com.bar.android.foo
package:/data/app/com.bar.android.foo-asdfasdfasdfasdfasdfas==/base.apk

# then download the app

$ adb pull /data/app/com.bar.android.foo-asdfasdfasdfasdfasdfas==/base.apk

#then later or on another device restore the app

$ adb install -r base.apk

 

psql restore from pg_dump file – invalid command \N

when searching for this error ‘invalid command \N’ when trying to restore my database from a backup I made with the following:

$ pg_dump -d foo -t bar > bar.psql

I got lots of suggestions but what I needed was to drop the darn table before restoring it …

$psql
foo=> drop table bar;

$psql < bar.psql

julia postgres libpq update example

The Julia community seems shy about posting examples of database things…

use LibPQ, Tables

db="db" 
server="localhost" 
usr="psql"
passwd="nope"

conn = LibPQ.Connection("host=$server dbname=$db user=$usr password=$passwd")
sql = """select char from foo""" 

conn2 = LibPQ.Connection("host=$server dbname=$db user=$usr password=$passwd") 
sql2 = prepare(conn2, """update bar set agility = \$1 , bravery = \$2 where char = \$3""" ) 

response = execute(conn, sql) 

for row in rowtable(response)
  ag = agility(row[:char])
  br = bravery(row[:char])
  execute(sql2, (ag, br, row[:char]))
end

Goodbye linksys

So the last time I purchased a new wireless router – I tried to find a wireless router that had a future – something where I could replace the stock firmware once the software updates stopped coming from the manufacture. But by this time linksys had sold its soul and stopped shipping wireless routers with the serial headers – my EA6350v2 was one such of these, prior to attempting to solder on pins or making a clothespin serial doohickey, I purchased a backup EA6350v2 off ebay so I wouldn’t have to repeat the cycle if I botched the job. Fortunately the backup EA6350v2 had the serial port pins so I was able to get ddwrt going with out too much fuss. However a few weeks in the wifi was behaving funky on this backup 6350v2 so I went looking for another router – I was looking for a new/better linksys router  but came across this sentence: as of October 2020, WE CANNOT ENDORSE BUYING A EA8500 ANYMORE – as linksys has started making it even harder to get alternate firmware installed.  So I picked up a Netgear r6300v2, cracked the case, loaded recent version of ddwrt via serial port and added linksys to my never list.

julia mysql mariadb dbinterface update

https://github.com/JuliaDatabases/DBInterface.jl  mariadb — mysql

while doing a query on “conn”, I opended second connection “conn2”, and updated the table while stepping through the results of the first query

conn = DBInterface.connect(MySQL.Connection,"localhost","user","pass",db="foo")
sql = """select char from foo"""
response = DBInterface.execute(conn,sql)
conn2 = DBInterface.connect(MySQL.Connection,"localhost","user","pass",db="foo")
sql2 = DBInterface.prepare(conn2, "UPDATE foo set agility = ?, bravery = ? where character = ?")
for row in response
    ag=agility(char)
    br=bravery(char)
    DBInterface.execute(sql2, (ag, br, char))
end

julia complains without the parens around the arguments on the DBInterace.execute line.