Entries filed under English

Contribute to wappalyzer

Posted on 20. Mai 2020 Comments

Wappalyzer is an open source website analyzer written in node.js. It basically just parses a big json file and uses regular expressions to find patterns in websites HTML, CSS, JavaScript and Server Headers.

  1. Fork the repository https://github.com/AliasIO/wappalyzer
  2. Clone the fork to your computer
  3. Install Docker
  4. ./run links
  5. Write Regex
  6. Check with regex101.com or similar tool
  7. Add valid json to apps.json
  8. Add a 32×32, 64×64 PNG or SVG to the icons folder
  9. Commit to another branch on your fork
  10. Push
  11. Create Pull Request, showing that it’s a relevant project: 1k+ stars on GitHub, Pages using it etc

I just created a pull request for Alpine.js, A rugged, minimal framework for composing JavaScript behavior in your markup, that I like to pull in when Vue or React would be overkill.

Deploy with envoyer and artisan

Posted on 20. Mai 2020 Comments

I just revived JustParks Envoyer Deploy package and updated it for Laravel 5.5+ (handle() and fire() – both work now), 6 and 7. I haven’t written it, so all the credit goes to Dayle Rees/JustPark.

Updated envoyer:deploy package on packagist

As you can tell from the README, Install like so:

composer require repat/envoyer-deploy --dev

Then publish the config file by executing this and selecting the number that says JustPark\Deploy\ServiceProviders\EnvoyerServiceProvider.

php artisan vendor:publish

In the envoyer.php config file, fill in the unique ID that comes after the /deploy in the link you can find in the Deployment Hooks tab in envoyer, e.g. https://envoyer.io/deploy/4aLDdfsfsd4s6fSzeKGNfakekey75R45wOwTQULEDJNrj

You can now deploy with

php artisan envoyer:deploy

Sourcecode for repat/envoyer-deploy on GitHub

Digital Nomad Guide to Self-Isolation in New Zealand during the Corona Virus Outbreak 2020

Posted on 18. März 2020 Comments

Update: Well, as expected this post didn’t age well. New Zealand closed its borders to non-residents.

As anything written about the Corona Virus outbreak doesn’t age well, consider this article was written on Thursday 19th March 2020 and I entered NZ on Tuesday 17th March 2020. Things might’ve drastically changed by the time you read this, so do some more research! Also, this is not legal advice, obviously.

When you’re looking for (temporary) refuge from the recent Corona Virus outbreak and you’re in South-East Asia, New Zealand looks like a good option: it’s a civilized democracy with great healthcare, friendly people, a fairly reasonable government, good internet connection and low amount of confirmed cases so far. Even if you’re „stuck“ here for longer, I’m sure you won’t run out of things to do. Alternatives to New Zealand could be Australia and Singapore.

However, you will need to self-isolate for 14 days, so first things first, here’s the official NZ government website about how to self-isolate. There are always idiots that think they don’t have to follow these rules, but NZ police will do spot checks, as I can tell you also from personal experience. And while the rules are not as strict as in e.g. Singapore, they might also force quarantine or deport you if you break the rules or even change them while you’re still isolating.

Things to consider:

  1. A lot of nationalities (most of Europe, US, Canada) need to sign up for NZETA, the Kiwi version of US ESTA, a visa waiver program. It can take up to 72h and costs only $47 NZD so do it now, just to have the option. It’s valid for 2 years, so it’s not like it’s wasted money. For me it took literally one minute to get the confirmation. You have the right to stay 3 months with this or more if e.g. you’re a British Citizen.
  2. You need a return flight to either your home country or a place you have either a visa for or don’t need a visa. Check with passportindex.org for your passport. Common destinations are Australia, as flights are usually < $100 but you might need a visa, or visa waiver ETA for that too (not for transit) – some countries just need to sign up for free. However, this can also take 2 days or not arrive at all. Another option that’s visa free for a lot of passports is Singapore. You need this at check-in to board the flight to NZ.
  3. A lot of flights are already cancelled and more will probably follow as Air New Zealand for example announced a up to 85% cut of their routes. It seems like other Airlines will do the same as they really struggle at the moment. Chances are, the earlier you decide to come the easier it will be.
  4. New Zealand is far away from pretty much everything and it might be difficult to go back home, especially to Europe where no direct flights are available and you rely on transit hubs such as DXB, BKK or SIN. If something happens to your loved ones far away, it might take days and multiple hops and cancelled flights (so, lots of cash) to even get there in the future. Likewise, if something happens to you (and be it something unrelated to Covid-19, like a car accident), chances are your loved ones can’t come see you, certainly not for 14 days. There are however direct flights to the US possible.
  5. You will be asked if you’re sick before immigration, fill out an extra Covid-19 Form and they have a thermometer although they didn’t take peoples temperature when I arrived. That might have changed.
  6. There’s Uber and Uber Eats. When you arrive in Auckland AKL airport, the Uber pickup station is on your left. Take the exit next to McDonalds. It’s probably a more sensible option than public transport. You can let the Uber Eats delivery person know in the app to leave the food in front of the door or the lobby because you’re self-isolating and track when it arrives in the app.
  7. You can stay in Hotels, AirBnbs (try to get self-checkin) and (for now) camper vans, if they include a shower and toilet (so you don’t share public facilities). However, it seems you have to stay in one place and not take a road trip like these idiots, potentially infecting other people on camp grounds. You also have to inform the host that you’re self-isolating and not everybody will let you. The same goes for camp grounds/trailer parks.
  8. You are allowed to go outside to go e.g. grocery shopping but limit interaction both in distance (2m+) and time (< 15min). Obviously do this the least amount possible and buy lots in one go.
  9. Even though you could grocery shop, there’s online grocery shopping at Countdown.co.nz and New World with either pickup or delivery. They even have a Corona mode now, where they leave the food in front of the door. Obviously delivery is to be preferred but they are receiving a lot of orders nowadays and it can take 3-7 days until you get a delivery window. And just picking up a pre packed order is better than walking through the aisles. You might need to have a NZ telephone number to sign up and you can get SIM cards at the airports.
  10. Consider e.g. nightly walks, when less people are outside anyway. It’s important to take this seriously to make sure you and this wonderful host country stay safe, so stay at home as much as possible but also consider your mental health, getting some fresh air in and some sun light (while it’s still late summer), and read the CDC mental health guidelines as well as the ones from the NZ Minitry of Health.
  11. If you show any symptoms or feel unwell, call 0800 779 977 and also let your hotel, AirBnb host or camper van company know so they can be extra careful cleaning before the next person moves in.

Here’s the leaflet you will get at the airport:

Last but not least, chances are you are in Bali: There’s an Emirates flight directly from DPS-AKL at ~4 in the afternoon (coming from DXB), which has 20MB free WiFi and it’s $16 USD for the whole flight. If the login page doesn’t open go to http://172.19.248.2

Please honor the Kiwi hospitality and stay safe!

Laravel QueueWorker: database not configured

Posted on 4. November 2019 Comments

It doesn’t matter which queue system you’re using: Redis, a relational database such as MySQL or a cloud solution like AWS SQS ; you can always store failed jobs in a normal database table. This configuration is done in config/queue.php in the last array:

'failed' => [
    'driver' => 'database',
    'database' => 'default', // NOTE: connection, not database!
    'table' => 'jobs_failed',
],

The key is to put in the connection name, not the database name for ‚database‘. If you don’t you will get the error message „Database default not configured“ every time a job fails instead.

Check out my Laravel Job Eloquent Models.


Crawling with Web Storage in PHP

Posted on 28. September 2019 Comments

Some pages have an extra screen before the real site appears, e.g. for age verification (like porn, for now anyways, or drug sites) or country/currency selection (like travel and big company sites). As far as I researched this, sometimes the selection is stored in a cookie, sometimes in Web Storage.

Crawling with Cookies is no problem with Guzzle.

But for example, at https://cannabis.wiki the age verification is stored in the Local Storage as you can see in the Chrome DevTools:

image

Using spatie/crawler we can inject a Browsershot (puppeteer) instance, that sets the localStorage key ageConfirmed through custom JavaScript:

$js = "localStorage.setItem('ageConfirmed', '1');";
$browsershot->setOption('addScriptTag', json_encode(['content' => $js]));

However, the code is only injected after the side is already loaded. Therefore we have to use JavaScript to reload the page:

$js = "localStorage.setItem('ageConfirmed', '1');location.reload()";
$browsershot->setOption('addScriptTag', json_encode(['content' => $js]));

You can test this on the console e.g. by using ->save($pathToFile); and have a look at the screenshot to see if it worked.

Connect SequelPro with DigitalOcean Managed MySQL 8.0.X

Posted on 19. September 2019 Comments

ALTER USER 'doadmin' IDENTIFIED WITH mysql_native_password BY 'secret_password';

Change ’secret_password‘ to the password given to you by DigitalOcean.

The reason behind this is that SequelPro and other MySQL Clients only work with the old (5.X) way of MySQL authentication vs. the new (8.X) caching_sha2_password. It has nothing to do with the MySQL version itself as Sequel Pro seems to work just as well with version 8.X. You can find more information in the MySQL documentation.

Traveling from Asunción to Clorinda and back

Posted on 23. Juli 2019 Comments

There is very little (English) information on the internet about how to travel from the Paraguayan capital Asunción to the little town Clorinda, just across the border. Since I don’t have a travel blog but this ranks fairly well, I thought I’d put it up. The only thing I could find, apart from TripAdvisor and LonelyPlanet posts from 10y ago, is this article in Spanish from ultimahora.com.

There are (at least) 2 border crossings and I recently did both. I imagine they work they same the other way around.

Puerto Falcón/José Falcón

  1. Go to the main bus station, Terminal the Omnibus Asunción, but don’t go inside. There are a few food stands outside on the Avenida República Argentina where buses regularly stop, going north. Just stand there for a while and wait until a bus comes that says „Puerto Falcón“ on the side. If you’re unsure, just say those 2 words to the driver and he will most likely nod. The trip is 6000 PYG, which at the time of writing is ~1 USD. This bus had air conditioning. It seems to depart at Mercado but I’m not sure about that.
  2. The bus takes you up the road past the airport and then takes a turn west across the Rio Paraguay on the bridge Puente Remanso. Driving through the city, especially in traffic, is a bit geographical nonsense, as you can see on the map. But it does get you there.
  3. Everybody will have to get out at the border station in Puerto Falcón. You then cross the river over the bridge into Argentina already, no need to do anything on the Paraguayan side.
  4. On the Argentinian side of the bridge, go to the very right. You will find 2 immigration offices there where you get your exit stamp from Paraguay and your entry stamp from Argentina. It took less than 2 minutes.
  5. Go a little further to the next street crossing, past the taxis. To the left there will be a dirt road that goes into town (in case you want to walk) but every now and then a pretty run down bus comes by. It’s 5000 PYG (~0.84 USD) to go to the center of Clorinda and takes about 10-15 minutes. It also goes past the western part of town, Juan Domingo Peron. The taxis waiting there seem to be expensive, to make sure not agree on a price before and not get ripped off.

Buses to the border depart from outside the central bus station
Buses to the border depart from outside the central bus station
Dirt road to Clorinda Center, if you want to walk ~2km
Dirt road to Clorinda Center, if you want to walk ~2km
Pretty run down bus that goes from the border to Clorinda Central for 5000 PYG
Pretty run down bus that goes from the border to Clorinda Central for 5000 PYG

Nanawa / Puerto Elsa

  1. Go to the Cruce Fronterizo in Clorinda. You will either walk down the riverside and see a pretty colorful bridge (s. picture) or come from a small market hall, where you can see the immigration office at the end.
  2. Go to immigration and get an exit stamp from Argentina and an entry stamp from Paraguay! It’s possible to cross into Paraguay without it, but you need that stamp, especially if you got a stamp in Puerto Falcón. Otherwise you will have problems leaving Paraguay again via any other border station, including the airport.
  3. Cross the colorful bridge Pasarela de la Amistad Clorinda – Nanawa through the markets.
  4. Turn left and walk up the riverside past the Casino. Then turn right to the Terminal de Omnibus Puerto Elsa. This is not the Terminal de Omnibus Clorinda (that would be in Argentina – this is Paraguay already on the other side of the river). It’s not on Google Maps but OpenStreetMap (e.g. Maps.me) will have it. In fact, it doesn’t look like a terminal at all. Just a roof some some dude making hamburgers and some chickens running around. But there will most likely be a bus waiting. They seem to be run in the collectivo way – so they only go when they’re full, not with a specific schedule. And people also sometimes referred to these quite big buses as collectivo. Not exactly what you might know as a collectivo from Central America.
  5. The bus line is 101 but there are apparently different versions that end up in different places, like 101A and 101B. Mine was 101A and left me at the famous Mercado 4 and did not go to the central but station. Again, the bus was 6000 PYG (~1USD). In the evenings/night it’s apparently not the safest place so make sure you can either take an Uber or take enough cash for a taxi to get home. Also, it had no air conditioning and is a lot more like the chicken buses in LatAm, drives slow and stops at every little house on the road. It’s good fun though and the locals are super friendly!
Make sure to get your passport stamps before crossing the bridge - even though there are no controls.
Make sure to get your passport stamps before crossing the bridge – even though there are no controls.
Bridge between Clorinda, AR and Nanawa, PY
Bridge between Clorinda, AR and Nanawa, PY
Línea 101A back to Asunción Mercado 4
Línea 101A back to Asunción Mercado 4

Ferry Puerto Pilcomayo – COPANATRA Servicio de balsas

There is one report about a ferry and timetables on Facebook but I asked around and the ferry doesn’t seem to run on Saturdays, probably not the whole weekend.

A few notes on Clorinda

This little town with some odd 40k inhabitants is pretty dead. There’s apparently one hotel, one ATM (though Paraguayn Guaranís/PYG are accepted everywhere, even on the bus!), a few shops selling mostly things like dog food or mate in bulk, a few mum and pop supermarkets. I didn’t see an open café or restaurant, but it might’ve been the time of day. There’s nothing for sightseeing and if you want to travel to e.g. Buenos Aires I’d suggest taking to long distance Bus directly from Asuncións Bus Terminal. It will take the same route anyways but is way less hassle. On the Nanawa side, there’s an interesting market, but selling mostly cheap stuff from China and some local produce – and of course, Mate and accessories. It’s ok for an afternoon or to get the passport stamp to check off the country – although I highly encourage everybody to travel in Patagonia extensively and visit Buenos Aires – this is not the way to see Argentina 😉

Travel Setup

Posted on 22. Juni 2018 Comments

For a while now I’ve been bouncing around from country to country and while occasionally, e.g. in Iceland, I don’t have everything I need, it’s usually possible (and in case of Iceland – expensive) to just buy things wherever you are. So I only travel with a Osprey 40L backpack. I’ve been wanting to write a packing list for a while. In it is:

 

Electronics

  • MacBookPro 13“ in Crumpler case
  • Macbook USB-C charger + European plug + American plug
  • 15.6“ External monitor + USB-C cable (power+data)
  • SD/µSD Card Reader
  • USB charger with American plug
  • Powerbank
  • Small Bose speaker
  • External harddrive + USB cable
  • Adapter for UK/Ireland
  • Feature phone for my German SIM card (double SIM phone would be better)
  • 2 USB-C to USB adapter
  • USB to USB-C chord (charging phone with powerbank)
  • CCTV disguised as power adapter
  • Nexus 5X
  • Koss Porta Pro
  • Cheap ear phones since they break anyway
  • iPad + charger cable

 

Clothes

  • 3-4 Merino T-Shirts
  • 1 Merino Long Sleeve
  • 1 Merino Sweatshirt
  • 1 Primaloft jacket
  • 1 Rain jacket
  • 1 Belt
  • A whole bunch of underwear + socks

 

Scuba Diving Equipment

  • Cressi Mask
  • Mares Computer
  • Cheap Actioncam on a bungee cord
  • Logbook + Pen
  • PADI C-Card
  • Small waterproof bag

 

Documents

  • Drivers license + International
  • 1 Credit card from each company (Visa, MasterCard, Amex, Diners Club)
  • Passport
  • Vaccination Documents (to prove e.g. yellow fever vaccination)
  • Medical information document

 

Bathroom stuff

  • Toothbrush + toothpaste
  • Small bottle with shower gel
  • Nail cutter
  • Ibuprofen + Tylenol + something against diarrhoea
  • Thermometer to check for fever

 

Misc

  • 100 USD in cash for emergencies
  • Cheap antibacterial gel
  • Keychain

Apart from a few guitars, some outdoor equipment (tent, sleeping bag, stove etc), 2 bicycles, a bunch of books and few warm clothes I store on my parents attic and my scuba diving equipment on Gran Canaria that’s also all I own.

A Digital Nomads Guide for Caye Caulker, Belize

Posted on 27. März 2018 Comments

Caye Caulker is a small limestone coral island off the coast of Belize in the Caribbean Sea measuring about 5 miles (8.0 km) (north to south) by less than 1 mile (1.6 km) (east to west).

— https://en.wikipedia.org/wiki/Caye_Caulker

NomadList doesn’t really give it a good rating but in my opinion that’s not quite fair. What attracted me was that it’s smaller than San Pedro with a laid back hippie vibe and good scuba diving spots.

How to get there

  1. Fly, mostly from Belize City
  2. WaterTaxi from Chetumal, MX (with immigration in San Pedro for ~1h), daily at either 3 or 3.30pm + the usual Mexican delay, ~50 USD
  3. WaterTaxi from Belize City/Airport

How to get around

When you arrive (on the eastern side) you can quite literally see the water on the western side of the island. My point is: Caye Caulker is super small! You can easily walk everywhere, rent a bike or, if need be, a golf cart. Not even the police has cars but drive golf carts and motorbikes. I saw about 3 real cars in total and a few construction trucks, but not in the center.

Where to stay

For 30-50€/night you will get a decent apartment/hotel room on AirBnB/booking.com with WiFi and AC.

For 17€ (35 BZD) you will get a bunk bed in a 2 bed „room“ (called „sleep box“) in La Cubana that resembles one of the box hotels found in Japan or Abu Dhabi Airport. But if you spent the majority of the time outside anyway, what more do you need. Otherwise, for the same money, you mostly get big rooms with 8-10+ people and possibly no AC. Here, at least the AC runs from 8pm to 8am. If that (and warm showers) doesn’t interest you, Yuma Hostel directly at the pier seems relaxed (not a party hostel) and has 2 lovely dogs. Further north is the famous Drifted Coconut Hostel.

CoWorking Spaces

Nope! There are no CoWorking spaces or not even DN Hotspot Cafés (that I saw) on Caye Caulker. You have to work wherever you find a nice spot. I can recommend Ice and Beans on the ocean side for your cliché working-on-the-beach-instagram-photo but more importantly: really good coffee! Other than that try the restaurant underneath La Cubana as they have WiFi and power plugs.

Ice and Beans Cafe Caye Caulker

Tropical Paradise Hotel at the (literal) end of the road (how fitting, the cemetery is next door) also has power plugs and decent WiFi, not to mention a good barkeeper/selection of alcohol and drinks on the menu for after-hours.

Across the road from La Cubana is the internet café Caye Board which offers WiFi at 30BZD/4h. I know it seems old school but the place has air conditioning, is relatively calm compared to cafés/restaurants:

http://www.speedtest.net/result/7176882409

You might have problems with your laptop and the high humidity (80%+). My MacBook Pro Keyboard stopped working for a whole morning. Try to blow it out with a Scuba tank (since I couldn’t find anybody with a pressurised air can) to make sure theres no sand/dust in it. And then try working from an air conditioned room because AC does not only make it colder but also dry. If the computer still turns on, try to install software that turns on the internal fan to sort of dry it out. Also read 5 Ways to Protect Your Laptop in the Tropics by Too Many Adapters.

Cost/Money

The Belizian Dollar (BZD) is directly tied to the US Dollar with 2:1, meaning 2 BZD = 1 USD. You can use USD as a method of payment and will sometimes even get change back in USD. While certainly not as cheap as the neighboring countries it’s not an expensive country per se. Caye Caulker is small though and everything comes by plane or ship so expect a surcharge. It’s quite touristy so that adds another few dollars to everything you buy.

Diving

There are 6(?) dive shops on the island and a few tour operators that re-sell those dives:

Only 3 (or 4?) of those go to the famous Blue Hole which is a few hours on a bumpy speed boat away. Only BDS offers tech/cave diving. They all have some sort of bad reputation and reviews on the web, reaching from reckless boat driving where people got injured to cowboy attitudes by Divemasters, faulty equipment, no oxygen on board despite the obvious risk of DCS with the Blue Hole being ~120m/400ft deep, to even harassment of women and an instructor dying in the Blue Hole. Surely the safest option is to bring your own equipment, some experience and a good buddy. There have been dive centers that had to close down only to reopen a little later with the same staff (Belize  ¯\_(ツ)_/¯ ) That said, there are plenty of people happily diving with those companies and nothing bad happens. Safest bet is not to pay for multiple days in advance as most of them don’t seem to give you your money back (German) if you don’t end up going (weather, illness etc). Alternatively, snorkeling can be just as pretty 🙂

Please refuse to dive with faulty equipment, no matter what the owner/instructor/divemaster says! On return to the island (all dives are boat dives), report them to PADI or SDI/TDI and if necessary to the police. If you have a medical emergency or signs of decompression sickness go immediately go the doctor and call DAN/your insurance. The next hyperbaric chamber is on San Pedro. You can do very little against unfair business policies or unfriendly staff but don’t let them endanger your life or the lives of others on the boat!

Laundry

For ~10BZD in Calle de Sol (the one going west from the pier) on the left/south side 2 very friendly ladies will wash your clothes. I guess it depends on the amount but I don’t own many things and washed pretty much everything I had minus shorts + T-Shirt I was wearing.

WiFi

Most restaurants and cafés have WiFi of various speeds and reliability. Get mobile internet as backup since sometimes the internet is just gone for a few minutes and the latency for VoIP calls is better on mobile.

Mobile Internet

BTL is virtually the only provider for GSM based phones (CDMA as used in US/NZ/AUS supported by Smart!). The BTL shop is a little difficult to find since the official address on the website is „backstreet“. Which isn’t exactly wrong but even Google Maps can’t find it. Also the GPS coordinates found on infomarket.bz are wrong, however you will find a said laundry on the opposite site of that road. Your safest bet is to walk towards the big cell towers and ask around. Or take a screenshot of Google Maps:

These are the correct GPS coordinates: 

17°44’35.7″N 88°01’32.0″W

Google Maps shows this at the the corner of Avenida Mangle and Calle de Sol (again, the street straight from the pier all the way down). It’s a white and purple building. OpenStreetMap (e.g. with maps.me) shows this as Belize Telecom Limited:

BTL office for SIM Cards on Caye Caulker (c) OpenStreetMap

To register you need ~15minutes, an ID and ~20 BZD for the SIM card + whatever you want to charge. For 1GB, expect ~30BZD although they seem to have more or less permanent monthly specials which double the amount of data. For 30 BZD I got 4.8GB (March 2018). Although they advertise 4G/LTE I could never get more then HSDPA/3G. Fun fact: on the wall in the BTL building there is a poster with the goal of reaching 25MBit/s Download in 2020. South Korean homing pidgeons might have been faster in the 90s but that’s ok for an island who’s motto is „Go Slow“.

Nice to know

  • The first thing I heard, even before „Taxi?“, was „Marijuana?“. You can indeed smell it on every other street corner although it is not legal at all, no matter what the locals say. A big sign on the police station also confirms that. Many seemingly relaxed and hippie vibe hostels do not tolerate drugs at all and the laws are pretty strict.
  • Belize is an ex-colony of the UK and – as the only country in Central America – the main language is English. The accent is similar to those in the British (ex-) territories in the Caribbean and easy to understand. Most people understand Spanish too and the locals speak Creole, a mixture of languages.
  • If you’re easily sunburned use plenty of sunscreen as with the white sand, you can apparently get a sunburn just from the reflection while standing in the shade. Even if that’d be a myth, the sun can be pretty strong and due to the wind you might not notice the burn fast enough.

 

Any additions? Contact me! 🙂

Laravel: Serialization of ‚Closure‘ is not allowed with Jobs and Queues

Posted on 26. Februar 2018 Comments

When dispatching Jobs onto a queue it’s possible to get the following error:

Serialization of ‚Closure‘ is not allowed

This basically means that you are either passing a class that contains anonymous functions („closures“ in PHP) or that in the Job itself there is an anonymous function. This could also be a library you are using. PHP is unable to serialize closures per se. When Jobs get dispatched onto the queue, everything has to be serialized before. If you absolutely must use them this way, look into the Super Closure package by jeremeamia. However, just rewriting the code a little might be easier:

 

Solution

Instead of passing a whole object to the Job like so:

$objOfClassWithClosures = ...;
$job = new Job($objOfClassWithClosures);
dispatch($job);

Pass the Fully Qualified Class Name (that’s what ClassName::class returns) to the job and instantiate the object on the other side, possibly even using Laravels Container:

$job = new Job(ClassWithClosures::class);
dispatch($job);

Inside the job you can then use the constructor to make a new instance of that class:

public function __construct(string $fqcn) {
$objOfClassWithClosures = app()->make($fqcn);
}