bl

JSJ 337: Microstates.js – Composable State Primitives for JavaScript with Charles Lowell & Taras Mankovski

Panel:

  • Aimee Knight
  • Charles Max Wood
  • Joe Eames
  • AJ O’Neil
  • Chris Ferdinandi 

Special Guests: Charles Lowell (New Mexico) & Taras Mankovski (Toronto)

In this episode, the panel talks with two special guests Charles and Taras. Charles Lowell is a principle engineer at Frontside, and he loves to code. Taras works with Charles and joined Frontside, because of Charles’ love for coding. There are great personalities at Frontside, which are quite diverse. Check out this episode to hear about microstates, microstates with react, Redux, and much more!

Show Topics:

1:20 – Chuck: Let’s talk about microstates – what is that?

1:32 – Guest: My mind is focused on the how and not the what. I will zoom my mind out and let’s talk about the purposes of microstates. It means a few things. 1.) It’s going to work no matter what framework you are using. 2.) You shouldn’t have to be constantly reinventing the wheel. React Roundup – I talked about it there at this conference. 

Finally, it really needs to feel JavaScript. We didn’t want you to feel like you weren’t using JavaScript. It uses computer properties off of those models. It doesn’t feel like there is anything special that you are doing. There are just a few simple rules. You can’t mutate the state in place. If you work with JavaScript you can use it very easily. Is that a high-level view?

7:13 – Panel: There are a lot of pieces. If I spoke on a few specific things I would say that it enables programming with state machines.

7:42 – Panel: We wanted it to fell like JavaScript – that’s what I heard.

7:49 – Aimee: I heard that, too.

7:59 – Guest.

8:15 – Aimee: Redux feels like JavaScript to me.

8:25 – Guest: It’s actually – a tool – that it feels natural so it’s not contrived. It’s all JavaScript.

8:49 – Panel.

9:28 – Guest: Idiomatic Ember for example. Idiomatic in the sense that it gives you object for you to work with, which are simple objects.

10:12 – Guest: You have your reducers and your...we could do those things but ultimately it’s powerful – and not action names – we use method names; the name of the method.

11:20 – Panel: I was digging through docs, and it feels like NORMAL JavaScript. It doesn’t seem like it’s tied to a certain framework or library platform?

11:45 – Guest: Yes, we felt a lot of time designing the interfaces the API and the implementation. We wanted it to feel natural but a tool that people reach for.

(Guest continues to talk about WHY they created microstates.)

Guest: We wanted to scale very well what you need when your needs to change.

13:39 – Chuck: I have a lot of friends who get into React and then they put in Redux then they realize they have to do a lot of work – and that makes sense to do less is more.

14:17 – Guest: To define these microstates and build them up incrementally...building smaller microstates out of larger ones.

Guest continued: Will we be able to people can distribute React components a sweet array of components ready for me to use – would I be able to do the same for a small piece of state? We call them state machines, but ultimately we have some state that is driving it. Would we be able to distribute and share?

16:15 – Panel: I understand that this is tiny – but why wouldn’t I just use the native features in specific the immutability component to it?

16:42 – Guest: I’m glad you asked that question. We wanted to answer the question...

Guest: With microstates you can have strict control and it gives you the benefit of doing sophisticated things very easily.

18:33 – Guest: You mentioned immutability that’s good that you did. It’s important to capture – and capturing the naturalness of JavaScript. It’s easy to build complex structures – and there is an appeal to that. We are building these graphs and these building up these trees. You brought up immutability – why through it away b/c it’s the essence of being a developer. If you have 3-4-5 levels of nesting you have to de-structure – get to the piece of data – change it – and in your state transition 80% of your code is navigating to the change and only 20% to actually make the change. You don’t have to make that tradeoff.

21:25 – Aimee: The one thing I like about the immutability b/c of the way you test it.

21:45 – Guest: There a few things you can test. 

23:01 – Aimee: You did a good job of explaining it.

23:15 – Guest: It makes the things usually hard  easy! With immutability you can loose control, and if that happens you can get so confused. You don’t have a way to have a way to navigate to clarity. That’s what this does is make it less confusing. It gives you order and structure. It gives you a very clear path to do things you need to do. If there is a property on your object, and if there is a way to change it...

25:29 – Guest: The only constant is change no matter what framework you are working on.

24:46 – Chuck: We are talking about the benefits and philosophy. What if I have an app – and I realize I need state management – how do I put microstates into my app? It’s using Angular or React – how do I get my data into microstates?

26:35 – Guest: I can tell you what the integration looks like for any framework. You take a type and you passed that type and some value to the create function so what you get is a microstate.

(The Guest continues diving into his answer.)

28:18 – Guest: That story is very similar to Redux, basically an event emitter. The state changes on the store.

Maybe this is a good time to talk about the stability benefits and the lazy benefits because microstates is both of those things.

Stability – if I invoke a transition and the result is unchanged – same microstate – it doesn’t emit an event. It recognizes it internally. It will recognize that it’s the same item. Using that in Ember or Redux you’d have to be doing thousands of actions and doing all that computation, but stability at that level.

Also, stability in the sense of a tree. If I change one object then that changes it won’t change an element that it doesn’t need to change.

31:33 – Advertisement: Sentry.io

32:29 – Guest: I want to go back to your question, Chuck. Did we answer it?

32:40 – Chuck: Kind of.

32:50 – Guest.

32:59 – Guest: In Angular for example you can essentially turn a microstate...

33:51 – Guest: You could implement a connect, too. Because the primitive is small – there is no limit.

34:18 – Chuck summarizes their answers into his own words.

34:42 – Guest: If you were using a vanilla React component – this dot – I will bind this. You bind all of these features and then you pass them into your template. You can take it as a property...those are those handlers. They will perform the transition, update and what needs to be updated will happen.

35:55 – Chuck: Data and transitions are 2 separate things but you melded them together to feel like 1 thing. This way it keeps clean and fast.

36:16 – Guest: Every framework helps you in each way.

Microstates let’s you do a few things: the quality of your data all in one place and you can share.

38:12 – Guest: He made and integrated Microstates with Redux tools.

38:28 – Guest talks about paths, microstates to trees.

39:22 – Chuck.

39:25 – Panel: When I think about state machines I have been half listening / half going through the docs. When I think of state machines I think about discreet operations like a literal machine. Like a robot of many steps it can step through. We have been talking about frontend frameworks like React - is this applicable to the more traditional systems like mechanical control or is it geared towards Vue layered applications?

40:23 – Guest: Absolutely. We have BIG TEST and it has a Vue component.

41:15 – Guest: when you create a microstate from a type you are creating an object that you can work with.

42:11 – Guest: Joe, I know you have experience with Angular I would love to get your insight.

42:33 – Joe: I feel like I have less experience with RX.js. A lot of what we are talking about and I am a traditionalist, and I would like you to introduce you guys to this topic. From my perspective, where would someone start if they haven’t been doing Flux pattern and I hear this podcast. I think this is a great solution – where do I get started? The official documents? Or is it the right solution to that person?

43:50 – Guest: Draw out the state machine that you want to represent in your Vue. These are the states that this can be in and this is the data that is required to get from one thing to the other. It’s a rope process. The arrow corresponds to the method, and...

44:49 – Panel: It reminds me back in the day of rational rows.

44:56 – Guest: My first job we were using rational rows.

45:22 – Panelist: Think through the state transitions – interesting that you are saying that. What about that I am in the middle – do you stop and think through it or no?

46:06 – Guest: I think it’s a Trojan horse in some ways. I think what’s interesting you start to realize how you implement your state transitions.

48:00 – (Guest continues.)

48:45 – Panel: That’s interesting. Do you have that in the docs to that process of stopping and thinking through your state transitions and putting into the microstate?

49:05 – Guest: I talked about this back in 2016. I outlined that process. When this project was in the Ember community.

49:16 – Guest: The next step for us is to make this information accessible. We’ve been shedding a few topics and saying this is how to use microstates in your project. We need to write up those guides to help them benefit in their applications.

50:00 – Chuck: What’s the future look like?

50:03 – Guest: We are working on performance profiling.

Essentially you can hook up microstates to a fire hose.

The next thing is settling on a pattern for modeling side effects inside microstates. Microstates are STATE and it’s immutable.

52:12 – Guest: Getting documentation. We have good README but we need traditional docs, too.

52:20 – Chuck: Anything else?

52:28 – Guest: If you need help email us and gives us a shot-out.

53:03 – Chuck: Let’s do some picks!

53:05 – Advertisement for Charles Max Wood’s course!

Links:

Sponsors:

Picks:

Aimee

Taras

Charles Lowell

Chris

Joe

AJ

Charles

  • Podwrench.com -  beta
  • getacoderjob.com




bl

JSJ BONUS EPISODE: Observables and RxJS Live with Aaron Frost

JSJ BONUS EPISODE: Observables and RxJS Live with Aaron Frost

Mon Jul 29 2019 13:00:56 GMT+0300 (+03)

Episode Number: bonus

Duration: 29:35

https://media.devchat.tv/js-jabber/JSJ_Bonus_Aaron_Frost.mp3

 

Host: Charles Max Wood

Joined by Special Guest: Aaron Frost

Episode Summary

Aaron Frost joins Charles to talk about what Observables are and why developers should learn about them and use them in their code. He explains the difference between Observables, Promises and Callbacks with an example. Aaron then invites all listeners to attend the upcoming RxJS Live Conference and introduces the impressive speaker line-up. The conference will take place on September 5-6 in Las Vegas and tickets are still available. Aaron also offers a $100 discount to all listeners with the code "chuckforlife". For any questions you can DM Aaron at his Twitter account.

Links




bl

JSJ 396: Publishing Your Book with Jonathan Lee Martin

Jonathan Lee Martin is an instructor and developer. He got his start in teaching at Big Nerd Ranch doing 1-2 week trainings for mid to senior developers, and then transitioned to 16 week courses for career switchers. He also worked for Digital Crafts for a year, and then wanted to focus on building out his own personal teaching brand. One of his first steps toward building his own brand was to publish his book, Functional Design Patterns for Express.js.The inspiration for Jonathan’s book came from his experience teaching career switchers. He wanted to experiment in the classroom with teaching functional programming in a way that would be very approachable and applicable and dispel some of the magic around backend programming, and that became the template for the book. 

Jonathan loves the minimalist nature of Express.js and talks about its many uses. He believes that it knowing design patterns can take you pretty far in programming, and this view is related to his background in Rails. When he was working in Rails taming huge middleware stacks, he discovered that applying design patterns made builds take less time. He talks about other situations where knowing design patterns has helped. Express.js leans towards object oriented style over functional programming, and so it takes to these patterns well. Express.js has its shortcomings, and that’s where Jonathan’s favorite library Koa comes into play. 

The conversation switches back to Jonathan’s book, which is a good way to start learning these higher level concepts. He purposely made it appealing to mid and senior level programmers, but at the same time it does not require a lot of background knowledge. Jonathan talks about his teaching methods that give people a proper appreciation for the tool. Jonathan talks more about why he likes to use Express.js and chose to use it for his book. He cautions that his book is not a book of monads, but rather about being influenced by the idea of composition over inheritance. He talks about the role of middleware in programming. 

The panel asks about Jonathan’s toolchain and approach to writing books, and he explains how his books are set up to show code. They discuss the different forms required when publishing a book such as epub, MOBI, and PDF. Jonathan found it difficult to distribute his book through Amazon, so he talks about how he built his own server. Charles notes that your method of distributing your book will depend on your goal. If you want to make the most money possible, make your own site. If you want to get it into as many hands as possible, get it on Amazon.

Many of the JavaScript Jabber panelists have had experience publishing books, and Jonathan shares that you can reach out to a publisher after you’ve self-published a book and they can get it distributed. Jonathan believes that If he had gone straight to a publisher, he would have gotten overwhelmed and given up on the book, but the step by step process of self-publishing kept things manageable. The panelists discuss difficulties encountered when publishing and editing books, especially with Markdown. Jonathan compares the perks of self-editing to traditional editing. Though he does not plan to opensource his entire editing pipeline, he may make some parts available. The show concludes with the panelists discussing the clout that comes with being a published author. 

Panelists

  • Charles Max Wood

  • Christopher Buecheler 

  • J.C. Hyatt

With special guest: Jonathan Lee Martin

Sponsors

Links

Follow DevChatTV on Facebook and Twitter

Picks

Christopher Buecheler:

J.C. Hyatt:

Charles Max Wood:

Jonathan Lee Martin:




bl

Yellow crocodiles and blue oranges [electronic resource] : Russian animated film since World War Two / David MacFadyen

MacFadyen, David, 1964-




bl

Yellow dogs and Republicans [electronic resource] : Allan Shivers and Texas two-party politics / Ricky F. Dobbs

Dobbs, Ricky F




bl

Yet I loved Jacob [electronic resource] : reclaiming the biblical concept of election / Joel S. Kaminsky

Kaminsky, Joel S., 1960-




bl

You gotta deal with it [electronic resource] : Black family relations in a Southern community / Theodore R. Kennedy

Kennedy, Theodore R., 1936-




bl

Young America [electronic resource] : land, labor, and the Republican community / Mark A. Lause

Lause, Mark A




bl

You're addicted to you [electronic resource] : why it's so hard to change--and what you can do about it / Noah Blumenthal

Blumenthal, Noah, 1972-




bl

You're not from around here, are you? [electronic resource] : a lesbian in small-town America / Louise A. Blum

Blum, Louise A., 1960-




bl

Youth employment and joblessness in advanced countries [electronic resource] / edited by David G. Blanchflower and Richard B. Freeman




bl

Youth employment in Sierra Leone [electronic resource] : sustainable livelihood opportunities in a post-conflict setting / Pia Peeters ... [et al.]




bl

Youth entrepreneurship and local development in Central and Eastern Europe [electronic resource] / edited by Paul Blokker, Bruno Dallago




bl

Youth gambling [electronic resource] : the hidden addiction / edited by Jeffrey Derevensky, Daniel T.L. Shek, and Joav Merrick




bl

The youth gang problem [electronic resource] : a community approach / Irving A. Spergel

Spergel, Irving A




bl

The Youth labor market problem [electronic resource] : its nature, causes, and consequences / edited by Richard B. Freeman and David A. Wise




bl

Zambia [electronic resource] : public expenditure management and financial accountability review




bl

Zimbabwe [electronic resource] : the blame game / Tendai R. Mwanaka

Mwanaka, Tendai R




bl

Blood Pressure Patterns in Young Adulthood and Cardiovascular Disease and Mortality in Middle Age

This cohort study assesses whether long-term variability and rate of change of blood pressure from young adulthood to midlife are associated with cardiovascular disease and all-cause mortality by middle age.




bl

John Jacob Wolfe and Esther Blum Wolfe papers, 1929-2012 [New Finding Aid]

John Jacob Wolfe, dentist and physician; and his wife, Esther Blum Wolfe. Correspondence, writings, wartime journal, lectures, memorabilia, photographs, press clippings, and other documents pertaining primarily to their life and work in China and India in the 1930s and 1940s and his service as a medical officer with the United States Tenth Air Force in the China-Burma-India Theater during World...




bl

Troubled memories: iconic Mexican women and the traps of representation / Oswaldo Estrada

Hayden Library - PQ7123.W6 E88 2018




bl

While avoiding overt discrimination, parties stoke voters’ prejudices subliminally

The disappearance of inflammatory communal slogans from political speeches suggests development is the agenda for 2014.




bl

[ASAP] Condensation Induced Blistering as a Measurement Technique for the Adhesion Energy of Nanoscale Polymer Films

Nano Letters
DOI: 10.1021/acs.nanolett.0c01086




bl

[ASAP] Tunable Room-Temperature Ferromagnetism in Two-Dimensional Cr<sub>2</sub>Te<sub>3</sub>

Nano Letters
DOI: 10.1021/acs.nanolett.9b05128




bl

[ASAP] Non-Periodic Epsilon-Near-Zero Metamaterials at Visible Wavelengths for Efficient Non-Resonant Optical Sensing

Nano Letters
DOI: 10.1021/acs.nanolett.0c01095




bl

[ASAP] Soft Polymeric Matrix as a Macroscopic Cage for Magnetically Modulating Reversible Nanoscale Ligand Presentation

Nano Letters
DOI: 10.1021/acs.nanolett.9b05315




bl

[ASAP] Multimodal Enzyme Delivery and Therapy Enabled by Cell Membrane-Coated Metal–Organic Framework Nanoparticles

Nano Letters
DOI: 10.1021/acs.nanolett.0c01654




bl

[ASAP] Overcoming Hypoxia-Restrained Radiotherapy Using an Erythrocyte-Inspired and Glucose-Activatable Platform

Nano Letters
DOI: 10.1021/acs.nanolett.0c00650




bl

[ASAP] Stretchable Nanolayered Thermoelectric Energy Harvester on Complex and Dynamic Surfaces

Nano Letters
DOI: 10.1021/acs.nanolett.0c01225




bl

[ASAP] Simultaneous Intravital Optical and Acoustic Monitoring of Ultrasound-Triggered Nanobubble Generation and Extravasation

Nano Letters
DOI: 10.1021/acs.nanolett.0c01310




bl

Marine ecosystems : human impacts on biodiversity, functioning and services / edited by Tasman P. Crowe, University College Dublin, Ireland, Christopher L.J. Frid, Griffith University, Queensland, Australia




bl

Water capitalism : the case for privatizing oceans, rivers, lakes, and aquifers / Walter E. Block and Peter Lothian Nelson

Block, Walter, 1941- author




bl

Water policy and planning in a variable changing climate : insights from the Western United States/ edited by Kathleen A. Miller [and three others]




bl

Pollution status, environmental protection, and renewable energy production in marine systems / Ahmed El Nemr, editor




bl

The atlas of water : mapping the world's most critical resource / Maggie Black

Black, Maggie, 1945- author




bl

Environmental problems in marine biology : methodological aspects and applications / editors, Tamara García Barrera, Department of Chemistry, Faculty of Experimental Sciences, University of Huelva, Huelva, Spain ; José Luis Gómez Ariza, Dep




bl

Revitalizing urban waterway communities : streams of environmental justice / Richard Smardon, Sharon Moran, and April Karen Baptiste ; with contributions from Blake Neumann and Jill Weiss

Smardon, Richard C., author




bl

Palladium-catalyzed double carbonylation of propargyl amines and aryl halides to access 1-aroyl-3-aryl-1,5-dihydro-2H-pyrrol-2-ones

Org. Chem. Front., 2020, 7,1006-1010
DOI: 10.1039/D0QO00007H, Research Article
Jun Ying, Zhengjie Le, Zhi-Peng Bao, Xiao-Feng Wu
A palladium-catalyzed carbonylative procedure for the synthesis of 1-aroyl-3-aryl-1,5-dihydro-2H-pyrrol-2-ones from propargyl amines and aryl halides with TFBen as the CO source has been developed.
The content of this RSS Feed (c) The Royal Society of Chemistry




bl

Double allylic defluorinative alkylation of 1,1-bisnucleophiles with (trifluoromethyl)alkenes: construction of all-carbon quaternary centers

Org. Chem. Front., 2020, Advance Article
DOI: 10.1039/D0QO00121J, Research Article
Yingying Cai, Hao Zeng, Chuanle Zhu, Chi Liu, Guangying Liu, Huanfeng Jiang
Synthesis of symmetric gem-difluoroalkene substituted products bearing all-carbon quaternary centers via double allylic defluorinative alkylation of 1,1-bisnucleophiles with (trifluoromethyl)alkenes.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




bl

Visible-light mediated oxidative ring expansion of anellated cyclopropanes to fused endoperoxides with antimalarial activity

Org. Chem. Front., 2020, Advance Article
DOI: 10.1039/D0QO00168F, Research Article
Simon Budde, Felix Goerdeler, Johannes Floß, Peter Kreitmeier, Elliot F. Hicks, Oren Moscovitz, Peter H. Seeberger, Huw M. L. Davies, Oliver Reiser
Hetero- and carbocyclic anellated cyclopropanes were converted in one step by a visible light induced photooxidation to their corresponding polycyclic endoperoxides, which show promising antimalarial activity.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




bl

Asymmetric Organocatalytic Double 1,6-Addition: Rapid Access to Chiral Chromans with Molecular Complexity

Org. Chem. Front., 2020, Accepted Manuscript
DOI: 10.1039/D0QO00354A, Research Article
Indranil Chatterjee, Sourav Roy, Suman Pradhan, Krishan Kumar
An organocatalytic cascade vinylogous double 1,6-addition strategy for the synthesis of chiral chroman derivatives is reported. The cascade reaction follows oxa-Michael/1,6-addition reactions between ortho-hydroxyphenyl-substituted para-quinone methadies and 2,4-dienal derivatives to...
The content of this RSS Feed (c) The Royal Society of Chemistry




bl

Organocatalytic 1,5-trifluoromethylthio-sulfonylation of vinylcyclopropane mediated by visible light in the water phase

Org. Chem. Front., 2020, Advance Article
DOI: 10.1039/D0QO00343C, Research Article
Junkai Liu, Hong Yao, Xinnan Li, Hongyu Wu, Aijun Lin, Hequan Yao, Jinyi Xu, Shengtao Xu
1,2-Difunctionalization has developed into a robust tool for the preparation of complex organic molecules, and remote difunctionalization has also aroused widespread interest to achieve pluripotency of difunctionalization.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




bl

Ag2O-catalysed nucleophilic isocyanation: selective formation of less-stable benzylic isonitriles

Org. Chem. Front., 2020, Advance Article
DOI: 10.1039/D0QO00336K, Research Article
Taiga Yurino, Yuji Tange, Ryutaro Tani, Takeshi Ohkuma
Both primary and secondary benzylic isonitriles were exclusively produced by the Ag2O-catalysed reaction of benzylic phosphates and trimethylsilyl cyanide without formation of the thermodynamically favoured regioisomers, benzylic nitriles.
To cite this article before page numbers are assigned, use the DOI form of citation above.
The content of this RSS Feed (c) The Royal Society of Chemistry




bl

Discrete boronate ester ladders from the dynamic covalent self-assembly of oligo(phenylene ethynylene) derivatives and phenylenebis(boronic acid)

Org. Chem. Front., 2020, 7,1082-1094
DOI: 10.1039/D0QO00083C, Research Article
Vasileios Drogkaris, Brian H. Northrop
Reversible boronate ester chemistry enables the controlled, dynamic self-assembly of olig(phenylene ethynylene)s into highly conjugated ladder frameworks.
The content of this RSS Feed (c) The Royal Society of Chemistry




bl

Direct synthesis of annulated indoles through palladium-catalyzed double alkylations

Org. Chem. Front., 2020, 7,1149-1157
DOI: 10.1039/D0QO00135J, Research Article
Yadong Gao, Jianhua Li, Songlin Bai, Daoquan Tu, Chao Yang, Zhiwen Ye, Bingcheng Hu, Xiangbing Qi, Chao Jiang
A facile, one-step synthesis of annulated indoles from (N–H) indoles and dibromoalkanes was developed through a palladium-catalyzed double alkylation process.
The content of this RSS Feed (c) The Royal Society of Chemistry




bl

Rh(III)-Catalyzed switchable C–H functionalization of 2-(1H-pyrazol-1-yl)pyridine with internal alkynes

Org. Chem. Front., 2020, 7,1158-1163
DOI: 10.1039/D0QO00248H, Research Article
Shaonan Wu, Zhuo Wang, Dianxue Ma, Chen Chen, Bolin Zhu
We reported a Rh(III)-catalyzed switchable C–H functionalization of 2-(1H-pyrazol-1-yl)pyridine with internal alkynes, which provided diversiform functionalized N,N-bidentate chelating compounds.
The content of this RSS Feed (c) The Royal Society of Chemistry




bl

Anthranils: versatile building blocks in the construction of C–N bonds and N-heterocycles

Org. Chem. Front., 2020, 7,1177-1196
DOI: 10.1039/D0QO00163E, Review Article
Yang Gao, Jianhong Nie, Yanping Huo, Xiao-Qiang Hu
This review article provides an overview of the recent progress in the transformations of anthranils, which have emerged as versatile building blocks in the assembly of various C–N bonds and medicinally active heterocyclic systems.
The content of this RSS Feed (c) The Royal Society of Chemistry




bl

How to write and publish a scientific paper / Robert A. Day

Day, Robert A., 1924-




bl

The art of scientific writing : from student reports to professional publications in chemistry and related fields / Hans F. Ebel, Claus Bliefert, William E. Russey

Ebel, Hans Friedrich




bl

How to write and publish a scientific paper / Robert A. Day

Day, Robert A., 1924-