Hi and welcome to our session making it easier to make things with WebAssembly and the Internet of Things There'll be two of us presenting today. My name is Jonathan Barry. I'm the CEO of Goliath an IoT platform company I'm joining my good friend Alvaro. Hello everyone. My name is Alvaro I'm a Google developer expert for IoT and also work as a software engineer at leverage working on IoT projects there You'll be hearing from Alvaro later today Now let's talk about our agenda Four major sections. We'll start with defining. What is WebAssembly or Lawsum as we use it interchangeably Then we'll move on to how what WebAssembly has moved beyond the browser and Next we'll be talking about the meat of this conversation Which is WebAssembly and IoT a great combination and the last part of the talk. We'll be showing you code All right, let's get into it So what is WebAssembly if We go to WebAssembly.org the main website for the specification. You'll see this definition I'm going to highlight a few key points. Basically WebAssembly is an instruction format like an ISA to be run in a specialized virtual machine and That means that you can take languages that can compile to WebAssembly and run it in a bad environment And the first use case is really focusing on the web hence the name and With that definition comes some goals and first the most well-known goal of WebAssembly is to be a fast and efficient because it's not just important to have a compiled target in a VM, but it needs to be able to Be efficient for let's say the browser and it needs to be more efficient than Things like JavaScript and other virtual machine technologies before it. The second goal is to be safe and that also means security and Just like the web has some basic constructs for safety and security like tab isolation WebAssembly has to support those as well and in some parts of WebAssembly they try to even increase safety and security. The third goal is being open and debuggable And that's really about enabling developers to build complicated applications with WebAssembly But also to have room to experiment and grow and evolve the specification The last goal is being part of the open web platform And that's about not just being able to execute code in a VM But to interact with his environment to interface with in this case the web platform like JavaScript APIs and browser capabilities As we're talking about browsers WebAssembly on the web has broad browser adoption It's actually been supported by every major web browser for quite some time and what's notable about WebAssembly as a Standard is that it's one of the few that got unified across the browser vendors All at once Actually Microsoft, Google, Mozilla and Apple all contributed to the original founding specification So there's something special about WebAssembly from its early beginnings Now there's a broad adoption because of those browser support and you'll find hundreds of examples on the internet I tend to bucket into four major categories and here's just some examples from those major categories So I'll go through them quickly the most common use case for using WebAssembly on the web is For games and game engines support compiling to WebAssembly And so as a game developer you can build your game using the platform of your choice Targeting mobile or desktop or console and then also get a web app Pretty much for free, which has been one of the early success stories of WebAssembly second large category is Taking legacy desktop applications that you that was written in the millions of lines of probably C++ code and porting that to the web similar to game engines and there's a success story With Autodesk and AutoCAD where they basically took their You know 30 year old application and now they have a web app and as they continue to develop AutoCAD They get that web app with all the greatest latest greatest features They didn't have to build a purpose built web app as well. It was is almost they got that web app for free The next category one that I think is the most relevant and useful role of WebAssembly at large is to take it and Apply it almost like a scalpel to improve specific areas of web applications where performance or security is critical And let's say JavaScript can't meet those those those performance needs So one example is Figma, which is a web-based visual design tool They use WebAssembly for their layout engine very computationally intensive And another example is eBay They have a QR code scanner and they need that that speed that JavaScript just couldn't give The last category I want to touch on is code reuse and that's not quite the same as porting a desktop library But actually taking let's say a module library that might be complicated And compile it to WebAssembly so you can use it in different environments There's a write-up from the Google Earth team of how they have a very sophisticated rendering engine that they wanted to reuse between the web and mobile and through WebAssembly they can compile their their desktop Library and bring it into the web and then build a this you know native Natural you know web-based application around it. So let's talk about WebAssembly beyond the browser and Now the creators of WebAssembly While they chose the name to the web I thought about the use cases that might be relevant beyond just Beyond this the browser and in fact if you go to the WebAssembly website You'll see a whole section about non-web embeddings they talk about how the same goals of WebAssembly could be applied to other environments and They did they they actually split up the spec to have a core spec Which is about the compilation target low-level primitives of the spec and then the JavaScript bindings to separate that out so that in the future other bindings can be brought in as as they become relevant and And some of these use cases are cloud computing where we have traditional virtual machines Maybe you could replace that with WebAssembly blockchain which runs third-party code on top of a blockchain stack tooling and CLIs which have pretty bespoke implementation Requirements and the thing that we're interested in the most which is the Internet things by the way whenever you see a cartoon That's blueish like this in my slides That's credit to Ling Clark over at Missile Research Which is a fantastic job taking deeply complicated specs and making them accessible to developers like ourselves and Actually WebAssembly is being adopted beyond the browser There's a handful of categories of use cases that I'll go through some of them now Your cloud is probably the most Interesting in the first to come on the scene and that's everything from Cloudflare and Flastly and even Microsoft Taking traditional server workloads and running it in a WebAssembly VM Or even extending the cloud Projects like Envoy, which is a popular proxy can be extended and create new functionality using using WebAssembly And then there's blockchain and I think it really got started when the theorem foundation Said that they're going to take the proprietary bespoke EVM the theorem VM and move it to a WebAssembly based implementation and a ton of other projects started to follow suit as well a Lot of activity in the blockchain world with WebAssembly Of course to run it outside the browser you need run times that can run beyond the browser And there's a an array of different types of runtimes with different characteristics Some optimized for for cloud based some of them for IoT. We'll go into some of those later And the last category I want to talk about is languages themselves And that's not to say taking in one language and compiling to WebAssembly and running it somewhere But actually extending the capability of the language itself. So Node Node.js for example has the ability to pull in a WebAssembly modules first-class support and add new capabilities to node without having to deal with native bindings and cross compilation challenges and by the way other languages can be Extended in the same way with WebAssembly just through a third-party extension framework Now this is all about running code and it's the VM part of WebAssembly But in all these use cases there is there needs to be some interaction with the host environment with the server serving infrastructure with the blockchain Etc. And there needs to be some interface to be defined to have that interaction And that's that's called wazi the WebAssembly system interface And it's a spec and a work stream to define what those interfaces should look like and that's a whole Talking of itself, but this is a key piece to WebAssembly story And actually a noble quote is from Solomon Hikes who is the creator of Docker And he said that if wasm and was existed prior to 2008 they probably wouldn't have to have created Docker And so There's a lot to be a lot to be lots to be done here, but it's super interesting that that's so powerful and Like I mentioned, it's a whole other topic and we don't have time for that But you can think of wazi as an API contract Between the WebAssembly runtime and wherever it's running and the environment you're trying to work at So there's a wazi core which has some of these interface defined for things like file system networking And the community is then expanding upon and proposing new use cases blockchain folks talking about smart contracts VR 3D graphics, etc And so this is one area that is under active development and actually an opportunity to to come in and be part of the story Now to the meat of what we're here to talk about WebAssembly and IoT and before we get into the details I Want to start just to find what is IoT or the Internet of Things when we talk about machines and computers with connectivity We think of smartphones Laptops and servers, but when when we say IoT we don't mean these kinds of things We mean more like these kind of things. So door locks digital assistants medical devices signage and effectively I would categorize those as traditional embedded systems and the main difference between an embedded system and maybe a general-purpose computing platform is that the embedded systems Really have constraints and we call these environments constrained environments or constrained devices That's everything from its processing power and computing capabilities To other resources on the device and just as a point of comparison the the machine You're probably watching us on has multiple cores with gigahertz of compute power where your traditional IoT device might have 64 megahertz on a single core Maybe 128 kilobytes of RAM half a mega flash It also extends to power and power usage So if it's a battery power device, it might be running two hours two or two years on a single AA Even as networking might be constrained. So only 50 kilobytes per second for upload speeds And so to build systems with IoT devices with all these constraints You actually have to have very specialized software custom networking stacks, etc. And it's requires a very specialized skill set And so whenever I talk about IoT devices and meet developers interested in the space the first question I usually get is can I run Java scripts on an Arduino or an IoT device more generally? And I think it's reasonable questions. They they come from that world and experience They have those tools and I tripped this a lot to to Atwood's law and Jeff Atwood famous software developer coined this phrase Any application that can be written in JavaScript will eventually be written in JavaScript And to me that's really about Software platform where there's an influx of new developers. They are always looking for some level of abstraction And in the IoT world, that's that's certainly the case And there's a whole bunch of folks working on Specialized implementations that can be run in a constrained environments In fact, there are multiple implementations of JavaScript Runtimes that can work on microcontroller devices and there are implementations in other languages that can run on constrained devices now the big challenge with these is besides being hard to make there's no room for code reuse and Because each language needs to support array devices all the work to make micro Python For example work on our Arduino class devices that can't be used in Jerry script the job script implementation And as you build libraries to talk to sensors and other devices those two cannot be used and reuse So a lot of us start to ask the question. Well, can we use web assembly potentially to create an abstract layer? So there's some common low-level implementation that we can all share and each language can build on top of it And if you reflect back on to the goals of what web assembly in general, they play really well to IoT devices Everybody's are constrained devices. So what was simply being efficient really helps out here Safety and security. That's a critical part of some of these mission critical devices being open and debuggable would allow us to create the complicated IoT software, but also extend it to all the different use cases that might come up And really the only difference is not just supporting the web ecosystem, but also the hardware ecosystem and in fact, that's what's being done today and It's not just theory. It's it's really something you can grab it with your own projects And actually the rest of this talk will be talking through how you can start using web assembly with IoT devices From here, I'll hand it over to Alroad to give us all the details Hello everyone. So I'm here to show you a quick little demo of using web assembly To run multiple high-level languages on an IoT device. So the approach that we are going to show here is more like an Extentual approach. So as we are going to see we are not like fully replacing all the like embedded system development with web assembly because the devices still have to provide like device drivers networking and memory management So we are going to like handle most of the logic of the system using web assembly But we still need to implement some things on the device itself. So this is how it's going to work So we are going to get like three languages in this case tiny go assembly script and rust we are going to compile to assembly script and The device that we chose is an ESP32 and it is providing an OTA interface that basically we can post web assembly files to it It is going to save on the device internal flash and then every time the device reboots It's going to like run that web assembly file using the web assembly runtime. In this case we are using the UASM3 library and then for that runtime into work and provide the interfaces and Access to the underlying things on the ESP32 We need to implement a bridge to have access to GPIO memory and Wi-Fi connections So we are going to show that how it works But first let's go through the demo and I'm going to show the code and sending some code to the device itself Cool. So here I have my device already running assembly script and also it's like blinking in an LED here having access to the device pins and Connecting to connected to Wi-Fi This here is the assembly script code. It looks a lot like an Arduino code, but in this case, of course, it's written in In a like flavor of type script But assembly script is actually like a smaller subset because it compiles with this like more low-level thing Which is a web assembly But the code basically does have some functions to connect to Wi-Fi check if it is connected or not Connect to a given SSID password. We try print the local IP address We have like a setup function that set up those pins to output so I can toggle the LED on and off and we have our like Normal loop function that we usually have on our Some of our Arduino code and prototypes to do something on the loop in this case It's just blinking in the LED and printing some messages So we are going to compile the assembly script code here. Let me enter the folder here I'm gonna delete the old code and then I'm gonna run the npm script here that uses the assembly script Commands to compile the code that we are seeing here. Oh Actually to show that it's different. Let's change the message here like a low open source summit Europe Let's compile So let's see the Web assembly file size. So in this case for the assembly script Code compile is just like four kilobytes So it's pretty small if you think about because when you have to do like a full TA on an ESP 32 device For example, it usually takes like one megabyte for a full code. So let's update the device So we have like a HTTP interface on it. So we can post some Post the file to it and it's also using MDNS. So we don't need to type in the IP address So I'm gonna call that file and after the device we seize that file is going to reboot. So yeah, it's rebooting now And yeah, it's now running the new code. So it's connecting to Wi-Fi getting the IP address and Printing out the new message and let's do that with another language. Let's get now tiny go And let me open the tiny go code here So it's the same logic. We just written the same code, but in different language. This case is go So it's connecting to Wi-Fi set up the GPIOs and our loop function just checks the Wi-Fi Connection and prints the local IP address, but in this case is hello, tiny girl So I'm gonna remove the old file And let's run a bit script here. Just using tiny go to compile it to web assembly And in this case the web assembly file is much bigger probably because the tiny go compiler is not as optimized for the You web assembly world, but it's still like super small. It's just like eight kilobytes. So let's send the OTA So the device Same thing the device is gonna receive that file And after it saves it's gonna reboot running the new code Okay, and rebooting hello from tiny go and it's doing the same thing connecting to Wi-Fi Getting the IP address in such a sense. And now last one. Let's do for rust Let me delete the old file Let's run my boot script here In this case for rust the actual compile code is super small like the press compilers super optimize it So it's like a really small code. So it's just one kilobyte. So we are going to OTA that to the device again Let me show the rust code here is the same thing But yeah, I'm connecting to Wi-Fi and running the loop as we presented before and yeah, it's now running rust Cool so another cool thing about web assembly that we talked before is that it opens The possibilities to making like some debugging or even simulation tools Because it's more like a standard way of doing things and for example, we can actually Implement the same apis that the device is implemented on the web and then we can run those same web assembly files To be simulated on the web. So let me show that to you So I'm going to start my server here And there you go. This is the the same This is the web interface that is simulating Uh, the same apis that is provided by the device in this case is running the assembly script code is connecting to the Wi-Fi network Uh, and I mean I'm providing apis for serial console in this case is just bringing to Element here on the dawn And for example, I can simulate that the ip address is different For example, the answer with 10 and then I can change to run rust code And then it's going to get like this simulated ip address But it's too connected to the same wi-fi interface and I can test like the tiny go code Uh, etc. So, yeah, that's a nice thing. So maybe we can have like some debugging tools For that so we can simulate the actual hardware like blinking the led or maybe connecting to other things If we build those interfaces Cool. So back to the slides here. Let's show how this works under the hood So basically you need to build that bridge between the web assembly world and the iot and the embedded system world So we need to implement that glue to make both Work together. So right now there's no standard way to to build that yet So we had to define our own contract to make that work So how we define an interface or contract to make that work So first we need to define which functions are going to be implemented by the hardware side Those functions are known as the sporting functions So basically for example, if I want to make gpio available or wi-fi interface available I need to define those methods That are going to be available for the web assembly world to use And those functions are going to be implemented in cnc plus plus because we are talking about the Hosted the embedded system side and for the high level language like we presented with rust tiny go An assembly script those functions are going to be imported or external functions So basically they're just going to be used by those high level language. They don't need like extra Implementation although we are going to talk about some complex types handling But most of the work is on the embedded system side And the cool thing is after we define those interfaces and implement them on the hardware side Other languages that have targets for web assembly can be used And use those external functions later So for example, we didn't pretend here c plus plus but c plus plus also can be compelled to web assembly and c plus plus Can also use those functions In this scenario So this is our pseudo contract. I'm just showing this to to give an idea think of that as a protocol buffer type of definition Maybe this can generate some code in this case not doing but it's just to present the whole idea on how We define the contract to make those two work So, uh, basically they find three modules. The first one is just the Arduino module They have like the milis function that returns kind of the uptime of the system A delay function that receives some milliseconds to like sleep for a while Or just stop a bit pin configuration gpio configuration toggle those pins And also, uh, I added a function to return like maybe an internal LED configuration on a pin this did the full pin to to be toggle here Uh, we have a serial interface and the wi-fi interface that we can have like the status connect wi-fi and get the local ip And as you can see here and also as a reminder, web assembly is a low level, uh thing So they only provide you like basic types. So we only have numbers and pointers So for example for the wi-fi connection function, we need to To pass strings for the ss id and password, but we don't have that So we have to pass like a pointer to a byte buffer and that buffer Is filled with like a given size and the password is the same thing. We're passing a pointer and the size of that buffer and for the local wi-fi Although it returns a string. We don't have a way to return a string by itself We just pass a pointer that is a buffer that's going to be filled out by the host OS like by the s peter too In this case and then on the the high level language. We can have access to that I'm going to show how this is implemented on both sides. So this is uh, the definitions of those functions on the uosme 3 World or in the s peter two side in this case So we are just declaring here the modules like the Arduino modules the functions And also this library have this cool notation that you define Like the return method of those functions and also the parameters So for example the millisecond functions here Returns a number and they're have no parameters The delay function returns void doesn't return anything But receives a number as a parameter and we have more complex examples like the wi-fi connect Function that doesn't return anything but receives a pointer and a number a point in the number Which is the ssid and password pointers that we are going to pass through the strings later And for the actual implementation of those functions Here's the basic example of the system of time or the millis Function we just declared the return type Which is a number and then we call the Millis function for the Arduino framework for example in this case here For the gpio implementation We also have a way to get like parameters that are coming from the The high level language or the thing that was compiled to have assembly So in this case we're receiving two parameters the pin number and the value and we just call the digital write function On the Arduino framework and as we are not returning anything we just call the functions of success And on the high level language in this case is assembly script we just declare their functions They are coming from the host thing that this is going to run. So in this case i'm just Uh getting uh importing those functions that are already implemented on the device itself So for the assembly script world those functions already exist. I just use them But for more complex Examples like the wi-fi connection that we need to pass strings. Like I said, we don't have strings natively so in this case the arguments are going to be like Points pointers for like memory Spaces on that device. So we receive like the pointer to the ssid the size of the ssid Pointer to the password and the size of the password and then we convert that to in the string And then we call the wi-fi function on the Arduino framework to connect to wi-fi And then again, this function doesn't return anything. We just call success And on the high level language side again showing assembly script Although assembly script supports the strings as we talk, there's no support for that Only wasmy word. So we need to do the conversion between the strings and the byte buffers So in this case on the assembly script, I need to convert to utf 8 and code into a byte array Get the length and then pass those pointers to the underlying Wasmy word here and the same thing for the local wi-fi in this case the host os is returning in the string So we need to like allocate some memory pass that pointer to the host os And then that host os is going to fill out with the local wi-fi in this case and then we convert back to in the string So to summarize we need to define an interface and a contract with those methods that are going to be Used on our use case. We need to implement that contract on the host. So most of the work Right now is to the to implement that on the host system and the embedded system And we need to always like remember that we need to handle like those complex types And we need to do some some allocation and memory management because web assembly only defined basic types So we only have numbers end pointers So yeah, I mean what is the future for web assembly and iot the thing that I just presented here and the not so good news is Someone has to build those bridges. So we as a community need to define more standard ways to like bridge Make bridges between web assembly and iot and as we talked before maybe was is the solution But right now wasi is defining more things for more common use cases like file system access Um crypto apis and those kind of things But for the iot world we need more than that. So we need access to gpio's networking that can be wi-fi, internet, ble or other types of hardware access And also for example for iot. Maybe we need a Thank for power management, which is really specific for iot and a lot of use cases need that So yeah, we need to define those standard ways to access that And the cool thing is that we have some really good rtos and embedded system projects that are trying to standardize Those layers to support multiple devices But they are doing on the like embedded world is still like c and c++ And a really good example of that is like zaffer artos So maybe what we can do is build some layers on top of those Good abstractions for multiple devices. So maybe building something on top of zaffer for example And leverage those really good apis that they are creating So yeah, I mean it's something that we can discuss and maybe use And one good example of a company that is building some set of Interface and apis to do that with web assemblies and is intel They have something called rammer application framework that they find they define some interfaces contracts like we did here How to build applications using web assembly for iot but they defining Not so so not so standard way those interfaces, but they have that example And you can check later with some of the links that we are going to make available here But yeah, we are excited with the future of web assembly and iot There are still a lot of things to do and Things to be standardized and maybe apis to be read them So we invite you all to join this cause and maybe Help us make things easier to be able to be using web assembly and iot And as I mentioned before here are some links about web assembly in general like the web assembly dot org and rosy dot that for the wealthy spec We have the discord channel that You can follow like some things that are happening on the web assembly world like some projects and new specs coming up All the demo that are presented here is available on github So if you want to check the code in more details, you can just go to That github repository and check the code and also jonathan. I Provide this google docs with some other links about web assembly, of course in the web assembly and iot in general So you can definitely just access that link and and see that google docs. We are going to post more content in there But yeah, thanks everyone for joining and jonathan. I will be here available to answer all of your questions


Internal Revenue Service IRS Tax News. IRS opens free portal to file information returns. New electronic option can reduce millions of paper forms 1099 estimated to be filed by businesses in 2023. Wow, that sounds great and easy. But I know how this works. Once the government makes giving them personal information easy, they inevitably want more personal information. I mean just look at how much more information they want on the form 1040 as they did like 10 years ago. I mean honestly, I used to be able to call in my taxes over the phone and that's before they had a cell phone. Like the form 1099 will soon look like an encyclopedia drilling down on minute personal details. What's that Phil?  Wait a second here Phil. I'm sorry but I think the full story is that they're banning books to kindergarteners. I mean it seems like that last bit is an important part of the story Phil. I mean honestly they ban stuffed animals to kindergartners like even if the eye is made out of something hard or something. Because when we're kids we're so dumb we may try to tear out the eyeball of the stuffed animal and shove it in our ear.  I mean and honestly like the IRS requiring personal information does not seem like the same thing as banning books because like the author of the books meant to sell the books to the public. Whereas I wasn't planning on making my pet hamster's sexual preference known to the IRS which given the way all government officials seem to spew confidential documents everywhere they go means my pet hamster's sexual preference will be made public if they require me to put it on like a form 1099. But my hamster's still really young and considering the average kid these days transitions through an average of like four genders before hitting puberty which is the rationale for the use of puberty blockers because if we could just delay things a bit kids could possibly double the number of genders they go through before puberty. But that's not the point. The point is I don't feel I should have to include this sensitive hamster info on IRS documentation just because politicians need more sensitive personal data that they can use as confetti at their next like global warming party like in Davos or wherever or something. I'm just saying that's what that's what's going to happen and I'm telling you. Anyways whatever. Let's get on with the news. IR 2023-14 January 25th 2023 Washington the internal revenue service announced today that businesses can now file form 1099 series information returns using a new online portal available free from the IRS. There is no one as the information that returns intake system IRS or Iris which sounds like a part of the eyeball I believe which has to make you think of Sauron they've apparently they've installed Sauron into the tax system which is a little scary hopefully Gandalf will come save us or something at some point but any case we've got that's what it is. This free electronic filing service is secure accurate and requires no special software though available to any business of any size iris may especially helpful to any small business that recent that currently sends their 1099 forms on paper to the IRS quote the IRS is excited to offer any business especially small companies a great new way to electronically file their 1099s for free end quote said IRS acting commissioner Doug O'Donald end quote so they're trying to automate everything of course which does you know make sense on their side so everything would kind of be automated they're still getting those paper returns on the 1099s and they've you know they've got this policy where they they don't go into the office anymore because of social distancing or whatever even though they hired a million new people so they want to automate the system and everything which makes sense but it should be an easier system so it does kind of make sense to do any case quote this simplifies filing for those issuing 1099s and helps recipients receive information timely the launch of iris can help reduce the millions of paper forms 1099 and project will filed in 2023 and demonstrates our commitment to finding useful and innovative ways of reducing paperwork on the business community and others issuing 1099s this is part of the large effort underway to make improvements and transform operations at the IRS end quote does seem like a logical step you would think but any case filers can use the platform to create upload edit and view information and download completed copies of 1099 series forms for distribution and verification with iris businesses can e-file both small and large volumes of 1099 series forms by either keying in the information or uploading a file with the use of a downloadable template currently iris accepts form 1099 only for tax year 2022 and later the iris encourages any business especially those that now file on paper to switch to e-filing through the platform and share in its benefits so basically they're saying please do this electronically because we're trying to have all these new people that we just hired be able to kick back and watch the system and the money roll in without having to go through the papers and stuff which I understand so I but I just feel like they can automate it and then possibly we could maybe reduce some of the cost of all the points usually of the automation but any case these benefits include e-file security standards keep information safe and protected the portal is an accurate filing method that automatically details filing errors and provides alerts for missing information filers can submit automatic extensions and make corrections to information returns filed through the platform and so that's nice so you can adjust the 1099s if you did something wrong because issuing the 1099 that is incorrect can cause people a lot of problems and whatnot that you have to correct it or the iris thinks that you made money that you didn't make or something so the irs encourages recipients of the return in an easily early the irs acknowledges receipt of the return in as early as 48 hours that is the platform keeps issue or information from year to year and prior years filed through this platform providing convenience in to 1099 filers e filing elements strips to the post office and can reduce office expenses for paper postage and storage space so that's true enrollment for the iris filing platform so you're going to enroll with iris it's now available there's a link to that here filers should begin the enrollment process immediately the filing information returns electronically fire system will remain available for bulk filing form 1099 series and other information returns through at least the 2023 filing system for more information about iris visit e file form 1099 with iris there's a link to that here additional resources you got publication 5717 iris taxpayer portal user guide you got the general instructions for certain information returns you got form 1096 1097 1098 1099 3921 3922 5498 and the w2g form provides general information instructions and requirements for 1099 series forms and others select information returns more information at the fact sheet 2023-03 iris reminder important backup and worth withholding deadlines so you've got those deadlines those zombie lines their lines but they're dead so they still rise up and try to eat your brains anyways there's links to all that stuff here there'll be a link to this in the description


Good morning Hank, it's Tuesday, so you didn't think I could take you behind the scenes of a deep dark place populated by strange creatures? Well joke's on you buddy, because I'm back on Tumblr. That's right Hank, here's the behind the scenes of my new Tumblr, sort of mine. Quick backstory Tumblr is an ancient creaky social media platform known for its friendliness to brands, its abundance of ships, its fondness for copypasta. I felt very welcome on Tumblr when I joined in 2011, and then later I felt less welcome and then eventually left. I would say that when I left Tumblr, neither Tumblr nor I expected a reunion, but life is long if you're lucky and full of surprises. So here's what happened. A while back I decided I didn't need a Twitter, and so I turned my Twitter into the Awesome Coffee Club, which sends you the freshest, most delicious coffee you've ever encountered and then donates all of its profit to charity. Along with its cousin the Awesome Socks Club, the Awesome Coffee Club is a really important part of providing ongoing funding to fight maternal mortality in Sierra Leone, and I just thought, like, I shouldn't have a Twitter with all these followers, but the Awesome Coffee Club should, so I handed the password over to longtime nerdfighter Peyton and bid farewell to Twitter. But then I missed the social internet, partly because I missed making low quality memes like this one about how Twitter wasn't a bad website, it was the worst one, and partly because I missed the adventure and the adrenaline, and I guess the dread, and there was Tumblr lurking as it always is in the shadows. And so I had a long conversation with several loved ones in which they were like, please God, don't do this, and then I rejoined Tumblr, but as a coffee company. I let the Tumblr algorithm pick my new username, SizzlingSandwichPerfection-blog, and then I logged on. And much to my surprise, Tumblr is pretty fun. They collectively made a non-existent film from 1973 called Gancharov. They make a lot of art. They're still debating aspects of the television program Supernatural. It's kind of great. Anyway, I entered the fray, but not as myself, as a coffee company that definitely isn't a person. Oh, by the way, today the Awesome Coffee Club is launching our decaf roast. It's called Paradoxica, which, like all of our roasts, is named after Sierra Leonean Butterfly, so now whether you like light roasts, medium dark roasts, or decaf, the Awesome Coffee Club has you covered at AwesomeCoffeeClub.com. And that's basically what I post about. Like I do sometimes answer questions, but mostly it's memes about how I was famously bullied off of Tumblr, but have now returned not as a human being endowed with a soul, but as a coffee company that donates its profit to charity. I no longer want to be an individual with all of their inherent fragility. I want to be a company, which is also a person if you ask the US Supreme Court. I would rather draw 25 than be a person on the internet again. I am here to drink milk and sell coffee, and I just finished my milk. Anyway, as I kept posting on Tumblr, I slowly began to invent the lore of myself. I started thinking about how I've done a fair amount of work for the Awesome Coffee Club, but I haven't been paid for it, and that's when I realized, Hank, I am the world's only ethically sourced, unpaid intern. And that is how I am on Tumblr. I am a coffee company that is run by a person who is me, who is not being paid in any way to tell the truth, which is that the Awesome Coffee Club provides amazing coffee now including decaf to over 10,000 subscribers around the US and Canada, and then donates 100% of the profits to charity. And you should join us, maybe not on Tumblr, but definitely at awesomecoffeeclub.com. How is this gonna end?  No, of course it's gonna end in catastrophe, but I can never resist the social internet even if I know how it will end. You'll find a link in the duplicate here to my Tumblr, and more importantly to awesomecoffeeclub.com, which makes amazing coffee now including decaf. Hank, I'll see you on Friday.


Yeah, Cricket Loved the Cricket is where we start this Thursday edition of the Sportsmax Zone. Australia are in sight of victory in the first test against the West Indies at the Adelaide Oval. The winners produced a respectable bowling performance but then failed to follow up with the bat in their second innings putting the Aussies in a good position for a day three result. The winners resumed day two on 59 foot two in their first innings replying to 188 main point the Caribbean side. Here's Jeroed Marseille with the day two recap. As Australia's number four and Usman Kouwaj and Craig Prythwaite, who saw... Guyanese speedster Shamar Joseph picked up where he left off on day one producing a gem of a delivery to get rid of Camel Green for 14. That was the catalyst for a successful session in the field. Justin Grey is removing Usman Kouwajer for 45 and the Kimar Roach taking care of Mitch Marsh for five limiting the Aussies to 85 for three as they went to lunch at five for 144. After lunch the Caribbean side continued to plug away. Grey's maybe the surprise package ended with two for 36. The right arm median getting rid of Alice Keary, Joshua De Silva holding on this time a neat catch as well. Thanks for 168 at that stage West Indies may be even harboring hopes of an unlikely first in his lead. But the number five batsman Travis Head was going about his business in fine style. The left handed adding 54 for the seventh wicket with a middle stark before Shamar Joseph struck again the 24 year old getting his fourth wicket by removing Stark for 10. There was no stopping head though. He'd bring up his second hundred against the Windies. The left hander went on to a top score of 119 coming off 134 deliveries before Azami Joseph had him caught by Kevin Hodge and then it was time for Shamar Joseph to bring up a milestone of his own. Australia eventually bowed out for 283 a first in his lead of 95. Sadly for the Windies though their batting lineup could not replicate the brilliance of their bowlers and again Josh Hazel would prove too much to handle snatching the first four wickets. It started with Tate and Ray Shandepal for a duck and then captain Brathwood for one. One for two became seven for three when Alec Atheneys also fell for a duck before Kevin Hodge was sent back for three at four for 19. Kirk McKenzie struck four fours in his 26 a top score so far but fell softly by picking out Labushain at short cover Cameron Green with his first wicket of the match West Indies 5 for 40. Graves got 24 but was undone by Nathan Lyon on review that turning out to be the last action of the day the silver unbeaten on 17 West Indies 6 for 73 22 runs away from making Australia bat again. Yeah very much the case Australia in control of the test match Lance and Mariah and as I pointed out earlier thought the West Indies actually bowled well I think they can be extremely proud of the bowling performance led by Shamar Joseph of course but all the bowlers I thought had a good day Justin Graves as Gerard pointed out in that wrap quite likely the surprise package I was impressed with how he bowled as well 15 overs two for 36. Good a cashmoty not quite in the contest but it's early days for the spinner maybe but overall a very good bowling performance from this unit. Yeah I have to agree with you there Ricardo all the bowlers did what they had to do and I was about to bring up that point about good a cashmoty because I know a lot of our team members feels as if you know they expect to see good a cashmoty not only be an economical but of course among the wicket takers and of course we did not get to see that so far but Ricardo has been very lenient and he says that what did you say to the team Ricardo that it's okay because his wickets are going to come right. Yeah I think good a cashmoty is a quality border and I think part of the problem and it has been a problem with Caribbean cricket supporters over the years that once you bring a spinner into the lineup you expect them to take five wickets every single match or every single innings and you've got to give them time and you've got to give more to time it's the first innings of one match where he did not take any wickets my goodness me give the guy a break. Yeah but can I just add I'm one of those viewers of cricket like when I see a spinner come on I instantly believe that I'm gonna get wickets right not discussing more to you anything in that situation but I'm just saying like when I see a spinner come on and I think we've been spoiled by like Sunil Narayan and they so like when you see a spinner come on to the field you expect that and then good a cashmoty the quality that he has displayed previously it's just something it's natural to expect that. Yeah well Faz as always said that spinners aren't given a fair break in in West Indies cricket because of the tradition of the four prong pace attack and the success that West Indies boss bowlers over time have had so that that has been a problem but I do I do agree with the point that the bowlers did a good job it's just that the batsmen weren't able to replicate. Yeah and by the way quickly Lance that's I think a ridiculous way to look at it right because if you think about it how many fast bowlers have you seen play test matches and gone for one for 100 one for 90 odd one for 80 odd. They're usually forgiven. They are forgiven because oh they have some pace and people believe that once you have some pace sooner or later you're gonna be bowling down teams. It's the same way in football that once you have a player who is willing to do a couple of shifts here and there and run up the field whether or not they have an end product everybody goes yeah man that one has tremendous talent rubbish. Let's get Fazir Muhammad in on this discussion not the football discussion but the cricket discussion and the performance of the West Indies on day number two Fazir Muhammad who are you doing? I hope you're in a good mood. Well let's put it this way if the mood depending on the fortunes of the West Indies have been a terrible but this is one of the realities of the modern era especially when the West Indies are in Australia. How many were assessed day number two of this test match Faz? It was a day of two halves from a West Indies point of view because I thought that first session was outstanding with the way the West Indies fought that the thinking the process not just the wickets taken by Shamar Joseph but that process in which we saw Justin Graves first get a wicket himself and then come in closer and closer in that third slip position because of the lack of bounce to Kim Har Rouge and the way they worked it out was absolutely brilliant but again it's about sustaining it. Sustaining it. Travis Head is the type of player he always looks like he's going to get out yet he always seems to really get on top of the bowling once he survives and that made all the difference because we I think we always suspected any sort of lead 50 plus closer to 100 as it turned out would be a worry for the West Indies and therefore what happened in that final session when the West Indies capitulating so badly really wasn't all that surprising it's very much in keeping with what we've seen so very often from the West Indies at home and especially abroad. Yeah and I guess some would say if the West Indies could dismiss Australia for 283 then things would always be more difficult for them having only scored 188 in the first innings but I want to give a lot of credit to the West Indies boarding attack fans because we have seen in the past and even speaking specifically to tours in Australia where the Australians have gotten a ton load of runs and the West Indies batsmen haven't been able to follow suit and or bowling was poor as well but that wasn't the case last night I wonder as well how much credit you would give to the captain Craig Brathwaite and how well he shepherded the the bowling lineup on a helpful surface but against the high quality Australian batting lineup Craig Brathwaite has always come in for criticism for being too cautious I lacking in any innovation being too defensive very much in the mindset of his batting at the top of the order but I think this time around you have to give him credit as I mentioned that that the way they worked out that this missile of of marsh and and really just generally the way he used his resources yes the talk will be about Moti but again I think you all covered that that ground very effectively so there's no need to go there I thought he did quite well and the important thing lady and gentlemen is to understand once again that when you're playing just two test matches and you you're struggling the early ones as it very only happened for the West Indies there's no coming back whereas if you were playing three tests or four tests or five tests and I had matches in between which doesn't happen anymore we appreciate that reality but we also appreciate the manner in which the game has now gone where only Australia England and India play five test series that there's really no room for these players to develop their skills in an Australian setting in test much cricket probably for the next five or six five or six years because West cities are not in demand anymore and and therefore you have that situation so really it is one in which the players have limited scope limited opportunity to to really develop themselves in these circumstances in these conditions and as you said quite correctly just over a year ago the West Indies were in Australia for two test matches and the Aussies batted for virtually the first two days of those tests and one comfortably in the end so this bowling effort was certainly very very commendable yeah and Fazz just to move away a bit now from the bowling effort you touched on it briefly when you spoke about Craig Brasswick being cautious of course you know when batting and of course making his decisions as captain what did you make of the manner of the dismissals for the Windy's batsmen a number of different things here Barai first and foremost and we've talked about Josh Hazelwood already you know that is the line he's going to bow and again change around Chanderpolt played at it got the outside edge maybe a bit slow reacting we saw that in the dismissal as well of Kevin Hodge he seemed to be on the move going into the drive and therefore edge to slip uh Bradford he does play that way and again credit to the Australians because he does have that jerky stodgy we are playing pushing hard forward it got a bit of sea movement took the the interface of the bat and was a very good catch taken certainly for Travis Head he was quite some distance away and short like that allowed him to react but still it was a very good catch but overall what you're seeing again is a situation where players with talent players obviously with ability with shot making ability but lack the know-how of batting for long periods lack that that comprehensive understanding based on actual match experience of what is required to take on this type of disciplined bowling for for long periods because getting caught at extra cover short extra cover as happened to Mackenzie these sorts of situations speak to that that lack of awareness of the situation that you're in where basically you've got to occupy the crease yes you've got to score runs but you've got to be mindful of the situation that you're facing as we saw with that hook shot from Anthony's and then there that point I was making about Kevin Hodge not really being to the pitch of the ball and driving the Aussies will eat you up breakfast lunch and dinner playing like that so again it's about whether or not these players will have the opportunity to benefit from this exposure because it's going to be a heavy deep likely as well in the second test match in Brisbane next week will they be able to really have the chance to benefit from this sort of exposure yeah and as you know I want to backpedal just a bit because as things now stand there is hardly any positives for the Westerners outside of how diligently the bowler the bowlers took on the the task yesterday and I want to emphasize that without Travis Head's innings this game could have looked completely different we talk about in batting partnerships being being the key but there weren't many significant partnerships because the best partnership the Aussies had would have been the stand between Stark and Travis Head only 54 runs and outside of Travis's century I think Kowarja with 45 was the next best scorer I'm saying that to say that outside of Travis Head's pivotal hundred this game could look completely different it could have but the point is and again as you mentioned Kowarja remember he was dropped from three yes relatively straight forward chance to Joshua the Silver so so again it's about really grasping your opportunities I thought the West Indies balled well yes I really not just Shamar Drew's one credit to him as well I think Shamar Drew's it is going to be a real shining light whether it's for the West Indies or some franchise is going to snap him up the fact that he took a bow to the audience after taking the five book at all tells me that this is a young man who loves the big stage he's not overwrought by it he's not daunted by it you're hearing a lot of condescending remarks about him coming from the world from the bush and the being scared of heights and being afraid of an escalator all sorts of comments but I think if you cast all of that aside you've got here another case of a young player with an appetite for the big stage and therefore the concern will be maybe some franchise might want to snap him up but to get back to your specific point Lance I think the West Indies bowling if you think about it when you think of the resources that are available if Jaden Seals gets fully fit once again and challenges Kim Auroch for his place you've got there the resources that could have the West Indies consistently competitive but again Lance it depends on whether or not the authorities will prepare surfaces in the Caribbean that will be similarly encouraging and you know that has been a constant bugbear and therefore there are many angles to this particular discussion but yes to your specific point the West Indies bowlers I think did themselves immense credit with the way they performed in the first place yeah and I just want to emphasize the point that we've already made about the kind of star quality that we're seeing from Shamar Joseph because I got the distinct impression to when he got his first wicket an illustration there that his teammates love him because that catch by Justin Graves at slip was a tremendous catch it was a brilliant catch and when he took it none of his teammates went to him everyone ran directly to Shamar Joseph and it was to me an indicator that his teammates love him and there is a a kind of impact that he has made immediately with this team that he has endeared himself to not only his teammates but as you said as illustrated by his bow to the to the to the to the fans that he does have some star quality about him and I think um he could not have asked for a better start to his career internationally absolutely and therefore whoever's around him whoever's guiding him whoever's ever mentoring him whether it's back home in Barakara whether it's at Georgetown whether it's with the squad right now whether there's any mentor that he looks up to they should remind him as Rohan Kanhai reminded Brian Lara after his 277 in the Sydney test match of 1993 that their next inning starts at zero and therefore his next spell starts at note for note and it could be a very different experience so so therefore it's about yes enjoying the moment enjoying the the adulation reveling in the conditions which he hardly would have ever experienced anywhere in the Caribbean which he did of course in South Africa which is why he was so successful but ultimately it's about someone who wants to be part of the action and when you have someone like that who is not overwrought by the challenge who yearns for the contest and revels in the atmosphere that is someone you think can go very very far in the game whether internationally for the Western days or as as always seems more than likely now with some franchise somewhere in the world well Fazir Muhammad we surely hope that his next spell does not start in the second test because that would mean that the West Indies would likely have lost my innings in this opening match and it would be over by lunch on day number three and we're hoping that it will go beyond lunch of course Fazir we had predicted that it would end in three days I don't know if Lance and Mariah still think that we will go to a fourth day that would require some heroics maybe from Shamar Joseph at number 11 but it looks as if we're on course to be right Fazir not that I'm gloating he is no you never you never gloat at all you know just very quickly when this happens when the West Indies are six weeks down for next to nothing very often against Australia we all stages always remember a seventh wicked partnership of 347 unbroken against Australia in 1955 the first match the two Nicosia ever covered as a 15 year old junior so even as unlikely as it is we live in hope thank you for that Fazir thank you very much Fazir for giving Lance and Mariah and the entire West Indies hope let's go to a break on the sportsman zone we'll be back with more