We ' re having the same issue . You can use protocol buffers or similar to share data . There ' s also Microsoft Bond which is written in Haskell , supports generics , and is written in Haskell . None of these support function types , so these schemabased tools are useless when multiple languages are used in the same process . In those cases you typically need callbacks . We rolled our own for this , declaring data types in . yaml files and generating code from it . <| sep |> Are the muses from Hercules ? <| sep |> You don ' t know him , he goes to another school . <| sep |> I would highly recommend limiting yourself to 45 liters , since that is the maximum volume for a carry on backpack . Though since airlines measure dimensions rather than volume you have to make sure the dimensions match . Anything larger than that you will have to check in as luggage every time . The two best carry on backpacks on the market right now seem to beTortuga Outbreaker $ 249 , 45 LtravelbackpackandOsprey Farpoint 40 $ 160 , 40 L 40 FARPNT 40 . htmlThere are a ton of reviews comparing the two , so I won ' t go into it much except to say I think Tortuga is better for urban travel and Osprey is better for more ruraloutdoorsy travel . Unfortunately I don ' t think either of them ship to UAE . You may be able to get a sporting goods store to order the Osprey one for you particularly if they carry the brand but Tortuga is going to be difficult if you don ' t have a friend in the USCanadaEurope you can ship to or if you don ' t have a package forwarding service account . Don ' t just buy some random backpack though . It ' s going to be just as expensive and will end up being disappointing with lots of minor annoyances while traveling .