Search
Notices
Career Questions Career advice, interview prep and gouges, job fairs, etc.

Digital Logbooks

Thread Tools
 
Search this Thread
 
Old 01-31-2022, 03:46 AM
  #11  
Gets Weekends Off
 
Joined APC: Feb 2019
Posts: 307
Default

I’ve been using foreflight’s logbook. Has anyone made the switch from foreflight to logten pro? Was it easy to transfer everything over?
DontLookDown is offline  
Old 01-31-2022, 04:12 AM
  #12  
Gets Weekends Off
 
Joined APC: Jul 2014
Position: B747 FO
Posts: 610
Default

I’ve been using CrewLounge PilotLog since 2009 (called mccPilotLog back then) works on any platform and super easy interface integration
JohnnyBekkestad is offline  
Old 01-31-2022, 05:21 AM
  #13  
Line Holder
 
Joined APC: Jun 2017
Posts: 53
Default

Originally Posted by DontLookDown View Post
I’ve been using foreflight’s logbook. Has anyone made the switch from foreflight to logten pro? Was it easy to transfer everything over?
I just had to send the csv file to Logbook Pro and they made it a seamless transition. I did this back in 2018 and at that time Foreflight’s logbook was not that great. For logbook pro (desktop only unless you pay subscription for data entry app) I just log the flights on a notes app after each leg. You get a rhythm down and when you go home it’s spreadsheet style entry so it goes quick.
afcraig2010 is offline  
Old 01-31-2022, 01:16 PM
  #14  
Gets Weekends Off
 
Joined APC: Mar 2015
Posts: 963
Default

Originally Posted by UnbeatenPath View Post
I personally wrote up an excel file a while ago. I can tailor it to what I need, so if I'm filling out an app, I can filter things out for some of the weirder times that would be hard to figure otherwise. It's all on Google drive so I just enter times on my phone after shutting down at the gate.
The best way IMHO. Though spreadsheets are a hot cup of ****. Use postresql and with sufficient constraints and indices to satisfy your perfectionism and write a web frontend. The trick is not going crazy on the frontend. Make it stupid and ugly, just the bare minimum, if you value your time. Like rails scaffold ugly if not worse. So ugly that you could delete the whole thing and rebuild it in half a day. Realize the value is in the database and the one single pretty print of it. This is for YOU, not some mouth breathing dip****. It should be hard to use but have one single beautiful output. I'm not kidding VERY HARD TO USE is best. No matter what it will be easier than a spreadsheet. You literally have to work to make something suck more than a spreadsheet. But DIY for sure. It's best.
fadec is offline  
Old 01-31-2022, 01:21 PM
  #15  
Furloughed Again?!
 
ZapBrannigan's Avatar
 
Joined APC: Aug 2007
Position: Boeing 737
Posts: 4,796
Default

Originally Posted by HalinTexas View Post
OK, getting back in the cockpit after airline training for 5 ½ years. Always used paper. It was required in Japan.

Looking for digital logbook recs. with a best reason why.

Standing by for ridicule, humiliation and the harsh.
Congrats Hal! You’ll be missed!
ZapBrannigan is offline  
Old 01-31-2022, 02:08 PM
  #16  
Prime Minister/Moderator
 
rickair7777's Avatar
 
Joined APC: Jan 2006
Position: Engines Turn Or People Swim
Posts: 39,275
Default

Originally Posted by fadec View Post
The best way IMHO. Though spreadsheets are a hot cup of ****. Use postresql and with sufficient constraints and indices to satisfy your perfectionism and write a web frontend. The trick is not going crazy on the frontend. Make it stupid and ugly, just the bare minimum, if you value your time. Like rails scaffold ugly if not worse. So ugly that you could delete the whole thing and rebuild it in half a day. Realize the value is in the database and the one single pretty print of it. This is for YOU, not some mouth breathing dip****. It should be hard to use but have one single beautiful output. I'm not kidding VERY HARD TO USE is best. No matter what it will be easier than a spreadsheet. You literally have to work to make something suck more than a spreadsheet. But DIY for sure. It's best.
That's what I did for my checkbook, using MS access. It's ugly, but ergonomic... the forms tab in a logical (to me) order and auto-populate when it makes sense.
rickair7777 is offline  
Old 01-31-2022, 04:09 PM
  #17  
Gets Weekends Off
 
TangoIndiaMike1's Avatar
 
Joined APC: Oct 2015
Position: Captain for Skyhawks
Posts: 482
Default

Originally Posted by KVGT CFI View Post
My flight book

Free, great support, allows specialized categories like part 121, 135, dual given for all levels (private/instrument/Comm) etc

I second my flight book. If there’s issues the developer has always responded to my emails or facebooks message/ comments within a few hours.


Sent from my iPhone using Tapatalk
TangoIndiaMike1 is offline  
Old 01-31-2022, 04:42 PM
  #18  
Gets Weekends Off
 
Joined APC: Sep 2021
Posts: 274
Default

Originally Posted by TangoIndiaMike1 View Post
I second my flight book. If there’s issues the developer has always responded to my emails or facebooks message/ comments within a few hours.


Sent from my iPhone using Tapatalk
And it’s open source
cantflylist is offline  
Old 02-08-2022, 12:01 AM
  #19  
Gets Weekends Off
 
Joined APC: Sep 2006
Position: ERJ CA
Posts: 1,082
Default

Originally Posted by fadec View Post
Use postresql and with sufficient constraints and indices to satisfy your perfectionism and write a web frontend.
Can I see your schema?
Blackwing is offline  
Old 02-08-2022, 07:24 AM
  #20  
Gets Weekends Off
 
Joined APC: Mar 2015
Posts: 963
Default

Originally Posted by Blackwing View Post
Can I see your schema?
You don't want to do what I did. Trust me. I'm afraid pg_dump -s contains doxing info. It's also 2441 lines since I used to import schedules, actual times, even US registered aircraft. PSA: Don't be a messy data hog. It's sufficiently normalized IMHO, with a role table for PIC/SIC/instructor/etc, an aircraft table for N12345/etc, an aircraft type table for C-152/etc. The general idea was to avoid logging multi-engine time and instead let that be a property of a type of an aircraft of a flight having a time. I also had a table for approaches, glides in a glider, and I took the FAA's requirement to log holding quite literally. I'll share some tables leaving out indices for fkeys and uniques.

Code:
CREATE TABLE public.flights (
   id integer NOT NULL,
   user_id integer NOT NULL,
   origin_airfield_id integer NOT NULL,
   destination_airfield_id integer NOT NULL,
   date date NOT NULL,
   aircraft_id integer,
   role_id integer,
   flight_number character varying(255) NOT NULL,
   actual_out timestamp without time zone,
   actual_in timestamp without time zone,
   actual_block integer,
   night integer,
   instrument integer,
   hood integer,
   cross_country boolean,
   remarks text,
   scheduled_out timestamp without time zone,
   scheduled_in timestamp without time zone,
   scheduled_block integer,
   created_at timestamp without time zone,
   updated_at timestamp without time zone,
   number_of_passengers integer,
   day_landings integer,
   night_landings integer,
   day_takeoffs integer,
   night_takeoffs integer,
   CONSTRAINT flights_actual_block_matches_in_out CHECK (((actual_block)::double precision = date_part('epoch'::text, (actual_in - actual_out)))),
   CONSTRAINT flights_actual_out_before_in CHECK ((actual_out <= actual_in)),
   CONSTRAINT flights_positive_values CHECK (((scheduled_block >= 0) AND (actual_block >= 0) AND (night >= 0) AND (instrument >= 0) AND (hood >= 0) AND (day_landings >= 0) A
ND (night_landings >= 0) AND (day_takeoffs >= 0) AND (night_takeoffs >= 0) AND (number_of_passengers >= 0))),
   CONSTRAINT flights_scheduled_block_matches_in_out CHECK (((scheduled_block)::double precision = date_part('epoch'::text, (scheduled_in - scheduled_out)))),
   CONSTRAINT flights_scheduled_out_before_in CHECK ((scheduled_out <= scheduled_in)),
   CONSTRAINT flights_times_within_actual_block CHECK (((night <= actual_block) AND (instrument <= actual_block) AND (hood <= actual_block)))
);

CREATE TABLE public.enroute_stops ( 
   id integer NOT NULL,
   flight_id integer NOT NULL,
   airfield_id integer NOT NULL,
   sequence integer NOT NULL,
   created_at timestamp without time zone,
   updated_at timestamp without time zone,
   user_id integer NOT NULL
);

CREATE TABLE public.airfields ( 
   id integer NOT NULL,
   user_id integer NOT NULL,
   name character varying(255),
   city character varying(255),
   state character varying(255),
   country character varying(255),
   latitude double precision,
   longitude double precision,
   elevation integer,
   timezone character varying(255),
   remarks text,
   created_at timestamp without time zone,
   updated_at timestamp without time zone,
   icao_code character varying(255),
   iata_code character varying(255),
   identifier character varying(255) NOT NULL,
   seconds_std_offset integer,
   seconds_dst_offset integer
);


CREATE TABLE public.approaches (
   id integer NOT NULL,
   flight_id integer NOT NULL,
   airfield_id integer NOT NULL,
   approach_type_id integer NOT NULL,
   runway character varying(255),
   ceiling character varying(255),
   visibility character varying(255),
   coupled boolean,
   missed boolean,
   created_at timestamp without time zone,
   updated_at timestamp without time zone,
   user_id integer NOT NULL
);

CREATE TABLE public.roles ( 
   id integer NOT NULL,
   user_id integer NOT NULL,
   identifier character varying(255) NOT NULL,
   created_at timestamp without time zone,
   updated_at timestamp without time zone,
   description character varying(255)
);

CREATE TABLE public.aircraft ( 
   id integer NOT NULL,
   user_id integer NOT NULL,
   remarks text,
   created_at timestamp without time zone,
   updated_at timestamp without time zone,
   aircraft_type_id integer,
   serial_number character varying(255),
   registration_number character varying(255),
   fleet_number character varying(255),
   identifier character varying(255) NOT NULL
); 

CREATE TABLE public.aircraft_types ( 
   id integer NOT NULL,
   user_id integer NOT NULL,
   identifier character varying(255) NOT NULL,
   description character varying(255),
   created_at timestamp without time zone,
   updated_at timestamp without time zone
); 

CREATE TABLE public.aircraft_properties ( 
   id integer NOT NULL,
   identifier character varying(255),
   description character varying(255)
); 


CREATE TABLE public.glides ( 
   id integer NOT NULL,
   flight_id integer NOT NULL,
   launch_type_id integer NOT NULL,
   duration integer,
   distance double precision,
   release_altitude double precision,
   max_altitude double precision,
   engine_start_altitude double precision,
   created_at timestamp without time zone,
   updated_at timestamp without time zone
);

CREATE TABLE public.holds ( 
   id integer NOT NULL,
   flight_id integer NOT NULL,
   location character varying(255),
   turns integer,
   duration integer,
   created_at timestamp without time zone,
   updated_at timestamp without time zone
);
Since writing this I've moved to a more CREATE ONLY mentality, where UPDATE is reserved for entry errors. Since dabbling in accounting I've come to see, for the better, table rows as journal entries first rather than objects. They are primarily verbs or events, not nouns or things. If a noun is to be represented then the facts must be true in all future cases. Logic should be (borrowing from prolog lingo) monotonic. Defeasible reasoning should be avoided. If I restrict my reasoning to CREATE while avoiding UPDATE/DELETE then I get reasonable normalization, almost no NULLs, and monotonicity. This is pretty straight forward in a logbook since it is essentially a journal. For sure I'd rip out that scheduled_ time crap. I'd also remove the multiuser stuff, which caused me to run mulit-column fkeys to ensure integrity. This is just offensive when using surrogate keys. On that, I might also move to natural keys. One downside of natural keys in web-apps (I use a web front end) is that there is no atomic update+move in REST, which is actually what you need when changing a primary key. In practice you can use a choice of POST/PUT/PATCH and return a redirect but it's not technically restful. CREATE ONLY logic defeats this conceptual problem too, by avoiding UPDATE.

Minimum 4 tables I'd recommend after exiting this rabbit hole: flights, aircraft, aircraft_types, roles. You can do the rest in a remarks field without undue ceremony or harm. Flights logs times that aren't a property of an aircraft or a seat/job and landings. Aircraft types would contain all the booleans you need such as multi-engine, tailwheel. PIC/SIC/instructor would be roles. Do these 4 tables and KISS.
fadec is offline  
Related Topics
Thread
Thread Starter
Forum
Replies
Last Post
SunDevilPilot
Flight Schools and Training
10
07-23-2021 09:36 AM
wiezzy
Regional
4
12-27-2019 12:16 PM
jmw116
Hiring News
6
03-21-2019 06:07 PM
mozak
Flight Schools and Training
8
01-14-2015 02:21 PM
zyttocs
Corporate
22
06-05-2013 04:36 AM

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



Your Privacy Choices