Starting on the website for ✈ now, I will log the full development right here in this thread 👇 airlinelist.co
I always start like this in my code editor, just raw HTML code, no styling (yet), to get the basic functionality down
I'm also adding a BOOK FLIGHT option, which gets the flights from an API like @kiwicom247 and rates each flight by service, comfort, on-time and safety
Now I need to get the data from the Google sheet I made into my SQLite database, for that I use this script (I took it from Nomad List's code), it goes over the sheet and inserts all data into the db docs.google.com/spreadsheets/d…
I've added database-style column names in the sheet, these have to correspond with the SQLite table structure I'm gonna make now...
I use phpLiteAdmin, a light-weight editor for SQLite databases that runs on PHP. Let's make airlines.db!
Inside airlines.db I make the table airlines (I always use one table per .db file to keep it simple)
Here's my airlines table structure, I can always add/edit later so it doesn't have to be perfect immediately. I use "epoch" as a seconds since 1970-01-01 (epoch) field to save when it's last updated
Here's my airlines table structure, I can always add/edit later so it doesn't have to be perfect immediately. I use "epoch" as a seconds since 1970-01-01 (epoch) field to save when it's last updated
Here's the code which puts it into SQLite, it's a bit ugly, but makes sure every value I want goes in there. I can make it dynamic later, but for now this is easiest to make.
Yay, it worked 😙 the spreadsheet data is now in a SQLite db called airlines.db, now I will try access it from the site...
To test if it worked I load the DB on /index.php and do
echo json_encode($airlines);
This prints the data into JSON, so I can see if it's readable by my site.
I can now start putting in a <table>
Now I put it in a foreach($airlines as $airline) loop inside <table> HTML, here's how it looks if you open it
I made all this on my laptop, so now I want to deploy it to so you can see it too.
I go to @namecheap to DNS and add my server's IP as an A/AA record. It was a URL redirect before to the Google spreadsheet, that ends now. airlinelist.co
Now I have to wait for an hour for the name servers to update. Meanwhile I've added some styling to the buttons, and made them toggle-able with jQuery.
I'll go over all the filter buttons to find which one are pressed and then do a call to the server to filter airlines!
^ the color of the button I picked from the ✈️ airplane emoji on MacOS. Emojis are a nice way to find colors ^_^
I did some more <style>'ing so now it looks like this. I centered the page by adding a <div class="container"> which wraps around all the elements. It's set to max-width:1000px; and centered with margin:0 auto;
Now for some logic. I want the filters to actually do something. So I define each filter inside the button with 3 data tags:
data-key
data-operator
data-value
For ex. safe airline should be
"safety_score"
greater-than
3
(where 3 is out of 5)
Here's the JS code for it. It collects each filter's data attributes key, operator and value. Puts them in a data array. This array we will then AJAX to the server where PHP receives it, filters, and sends back the airlines.
Yay! It works. JS collects the filters successfully, sends them as AJAX to server and PHP reads the filters accurately.
Meanwhile the DNS has propagated. So now we can get a @letsencrypt https SSL certificate. I use an app called CERTBOT for it. If you type CERTBOT CERTONLY it lets you authorize a server. I had to kill my NGINX server for it (I know I'm noob) when doing it for a 30 secs. But works
On the server, I edit /etc/nginx/sites/airlinelist.co, which is my virtual host config file for NGINX. It lets the server know I want to have a website with and the server should respond with files from /srv/http/airlinelist.co like index.php! airlinelist.co
It's not opening here yet BUT it is on the server. So it can show up any time now. DNS can takes hours, sometimes days to update on all people's providers.
While we're waiting for that, I've made the filters work. Every click is an AJAX request with the active filters (see tweets above), and the PHP sends the airlines as <tr><td></td></tr> table rows back! JS then puts that in the <table><tbody>. Very simple.
Okay it seems to be working for some people: try it 👉 airlinelist.co
Added a disclaimer so I don't get sued by airlines + region filters airlinelist.co
• • •
Missing some Tweet in this thread? You can try to
force a refresh
The period from age 12 to 30 in Jesus life is somehow not described anywhere
He just showed up at 30 and did his thing
Most concepts Jesus preached seem to overlap strongly with Buddhism and even more with Hinduism like compassion, love your neighbors and enemies, detachment from materialism, treat others how you'd like to be treated (karma) etc
What's interesting is that Islam itself is a 500 year later fork of Christianity and Jesus is a non-holy prophet in the Qu'ran
So if that's true and you keep going back the origins of most religions may just be Hinduism and Judaism
So last year @Wayfair, an $8B company, launched their own AI interior design tool
This week someone at Wayfair asked me to cancel their subscription of , which is my AI interior design tool launched 2 years ago
I was confused why would they sign up to it if they have their own? Well, because they signed up to it before they had their own and used it to build their version of it! 😂
They had 8 different accounts on Interior AI that ran for months 🤯
I learnt a bit about competitive spying today!
Told ya the big companies were checking what indie hackers did, that was my entire point when I said "indie hacking is dead", we're part of the big market now where billion dollar companies are INSIDE our apps!InteriorAI.com
If I did competitive spying I'd at least use a different domain name though, not my own company @wayfair.com
P.S. it's all good, I think it's even legal, just kinda funny a big billion dollar company is INSIDE MY APPS!
I test parameters on Photo AI on a % of photos taken
Then I check what % of photos are ❤️ favorited
Based on that I can figure out what parameters is better on 700,000 photos taken per month
But sometimes you get 1 or 2 users ❤️ favoriting lots of photos with one specific parameter which affects the data and makes one parameter choice come out as a winner when actually it's just a few users doing it
Any stat solution for this?
Right now my SQL is smth like this
SELECT upscale_strength,count(upscale_strength) as cnt FROM photos WHERE upscale_strength IS NOT NULL AND (saved IS NOT NULL) GROUP BY upscale_strength ORDER BY cnt DESC LIMIT 10
I can add count(distinct(user_id)) for ex:
SELECT upscale_strength,count(upscale_strength) as cnt,count(distinct(user_id)) FROM photos WHERE (saved IS NOT NULL) GROUP BY upscale_strength ORDER BY cnt DESC LIMIT 10