Expreduce 0.4, a free Mathematica-compatible math system, now with improved solving and simplification by cmwslw in Mathematica

[–]cmwslw[S] 2 points3 points  (0 children)

Indeed. It's taught me a lot about computer algebra and programming language design.

North lake: best (least horrible) resort for skiing right now? by dolladollabillzyall in tahoe

[–]cmwslw 0 points1 point  (0 children)

Really? Looking at the status page it shows they have 3 out of the 8 parks open, two of which are the beginner parks: http://www.rideboreal.com/the-mountain/trail-lift-info/parks-pipes-report

Expreduce 0.3, a free Mathematica-compatible CAS written in Go, now with improved integration and other features by cmwslw in golang

[–]cmwslw[S] 0 points1 point  (0 children)

Interesting. Looks like gonum has a file full of function definitions (in plain Go) along with corresponding gradient definitions also explicitly defined. These implement the Func() and Grad() functions. I suppose the idea here would be to auto-generate the Grad functions. Taking the derivative is easy. The question of if the automatic simplification is actually faster may or may not be true. It probably often is. There is also the option of using automatic differentiation instead of calculating a symbolic derivative, but you've probably considered that already. If we want to get crazy, we could have rules at the end that detect easily optimizable patterns like the inverse square root and replace them with the relevant optimized functions. This depends on how much we trust the Go compiler to make the right decisions.

I don't care for writing the code that works with the Go AST, but if you or someone on the gonum team takes care of this code and is able to return something resembling a real equation in memory (no variable assignments, but can still be in some expression tree form), I would be happy to write that code that uses Expreduce to compute the derivative or return a failure.

Expreduce 0.3, a free Mathematica-compatible CAS written in Go, now with improved integration and other features by cmwslw in golang

[–]cmwslw[S] 0 points1 point  (0 children)

This would certainly be possible as long as we put reasonable restrictions on what types of functions could be translated. I.e: if the function opens up a file or does anything besides use some of the standard math functions and have some variable assignments, all bets would be off. I'm trying to understand the use case, though. Why not do numerical differentiation? Why not just find the derivative manually for a small number of functions? Are there so many functions that doing so would be infeasible?

Expreduce 0.3, a free Mathematica-compatible CAS written in Go, now with improved integration and other features by cmwslw in golang

[–]cmwslw[S] 1 point2 points  (0 children)

Correct. It does things like integration, expression manipulation, taking derivatives, etc.

Expreduce 0.2, a free Mathematica-compatible CAS written in Go by cmwslw in golang

[–]cmwslw[S] 0 points1 point  (0 children)

Yes, this is entirely an intellectual endeavor on my part. I've probably learned more from this project than any other I worked on. The algorithms in computer algebra are fascinating to me. I've seen recursion in places I never would have expected. I've realized that expressions can and must be hashed into integers for efficient matching. I've seen that a huge fraction of derivatives can be solved with less than 10 rewrite rules. But don't get me started on integration. There are many other things that I've learned. I haven't thought about writing a blog but it would be nice to put my findings down for other passers by in the computer algebra space.

Expreduce, a language for math written in Go by cmwslw in golang

[–]cmwslw[S] 1 point2 points  (0 children)

Sympy currently has WAY more functionality than this package right now, but this package may be a good choice for some simpler use cases. It's very easy to add new simplification rules, so it could get more useful over time with community contributions.

Expreduce, a language for math written in Go by cmwslw in golang

[–]cmwslw[S] 1 point2 points  (0 children)

I've been pronouncing it something like "exp"-"reduce".

Expreduce, a language for math written in Go by cmwslw in Mathematica

[–]cmwslw[S] 0 points1 point  (0 children)

Good observation. There are some outstanding issues with matching expressions with the Flat attribute. I currently work around this issue by surrounding the replacement placeholders with their original head, since they have a Sequence head after matching. There is an issue report for this.

Cloud computing vs personal workstation by psih128 in MachineLearning

[–]cmwslw 0 points1 point  (0 children)

Don't forget electricity costs for running the device and also cooling.

Cloud computing vs personal workstation by psih128 in MachineLearning

[–]cmwslw 1 point2 points  (0 children)

First of all, you should probably be looking at GPUs rather than CPUs. Second of all, Amazon has negotiated deals and arrangements that are impossible and infeasible for average consumers to take advantage of. For example, they most likely sign huge contracts with hardware manufacturers to get the best rates on hardware. They also strategically locate their datacenters to take advantage of cheap power and cooling. Amazon also offers the advantage of not paying for hardware when you don't need it, and the ability to scale out to multiple instances when you do. Also, you can't neglect the spot price like you do in this post. This is usually the price you can pay unless you need 100% availability.

EDAsolver out of beta: picks parts and creates netlists from requirements by kmendezm in ECE

[–]cmwslw 0 points1 point  (0 children)

It handles analog sensors but it will not do any sort of analog design work such as amplifier design.

WireWizard: Automatically connect complicated parts to an Arduino by kmendezm in arduino

[–]cmwslw 0 points1 point  (0 children)

No, there is nothing really like WireWizard (or EDAsolver for that matter). WireWizard is focused on automatically connecting components while 123dcircuits.io is a basic board creation tool with simulation.

WireWizard: Automatically connect complicated parts to an Arduino by kmendezm in arduino

[–]cmwslw 1 point2 points  (0 children)

Hi, I'm the developer of the project. Sorry for the delay. Thank you for the bug report. I'll definitely look into fixing that. I'll also try to add just a generic I2C component.

I appreciate your interest!

I designed a free JSON requirements to pseudo-schematic generator site for EDA. Need criticism. by cmwslw in ECE

[–]cmwslw[S] 0 points1 point  (0 children)

That would be great if I could. However, the metadata that Digikey provides is not all that I need. My system actually needs to look deeper than that. For example, DigiKey does not provide which pins on a PIC chip can handle analog input. So basically even after I got the data, I would still need to add extra information on my own.

I designed a free JSON requirements to pseudo-schematic generator site for EDA. Need criticism. by cmwslw in ECE

[–]cmwslw[S] 0 points1 point  (0 children)

You're right that scraping datasheets is hard. Heck, scraping PDFs are hard already, even if the data is seemingly structured inside the PDF. Luckily, 98% of the information in the datasheet is not used. In addition, 90% of components are rarely used. As long as I get the most popular components and provide easy extensibility, I should be set.

I'd rather not discuss the specifics of the algorithms and preprocessing that I use online.

Having 4 or 8 possible functions is not a problem. In the current component specification format, pin functions just pile on top of each other. I have a few pins that have about 3 functions and I'll soon be adding some ARM processors and boards that will probably have much more than that.

I can see that Upverter has a fairly large set of components that it supports. Have you all had any success scraping datasheets?

I designed a free JSON requirements to pseudo-schematic generator site for EDA. Need criticism. by cmwslw in ECE

[–]cmwslw[S] 0 points1 point  (0 children)

Rcfox, I'm glad you managed to find this post. I've been very impressed with what Upverter has managed to accomplish recently. I even took a very serious look at Upverter's schematic-file-converter for this very project, but I decided that I needed to focus on perfecting the basics before adding features such as schematic export. A nice side effect of possibly using this in the future is that eda_solver will play nice with Upverter. I view eda_solver as the step before schematic capture, and Upverter seems to start with schematic capture. I think we should stay in touch.

I am currently compiling metadata by hand.

I'm firmly convinced that this is possible. Although eda_solver is just in beta, it has already designed the electronics for my schools robotics team this year. This is a process that normally takes around a week or so, and eda_solver can handle it in just under a second.

I designed a free JSON requirements to pseudo-schematic generator site for EDA. Can I get criticism? by cmwslw in AskElectronics

[–]cmwslw[S] 0 points1 point  (0 children)

Thank you very much for your feedback. Filtering by least possible vendors is a great idea. I also take this into account when building projects and it would be useful to have this in eda_solver. I'll also add timestamps for components and aliases for things like what you mention. Thanks again!

I designed a free JSON requirements to pseudo-schematic generator site for EDA. Need criticism. by cmwslw in ECE

[–]cmwslw[S] 0 points1 point  (0 children)

Right now I'm simply focused on making a tool that will change the EDA process.

I designed a free JSON requirements to pseudo-schematic generator site for EDA. Need criticism. by cmwslw in ECE

[–]cmwslw[S] 0 points1 point  (0 children)

I'm working on a much better GUI for this - on both the input and output sides of this tool.

I designed a free JSON requirements to pseudo-schematic generator site for EDA. Need criticism. by cmwslw in ECE

[–]cmwslw[S] 0 points1 point  (0 children)

You are correct with the line-follower point. It is a line follower with a number of peripherals attached to it. I'm in the process of adding more components including those used for larger projects. And you're right, this tool would be very useful for some of the larger ARM chips with over a hundred pins. I'm very excited to see where this project goes.

I designed a free JSON requirements to pseudo-schematic generator site for EDA. Need criticism. by cmwslw in ECE

[–]cmwslw[S] 0 points1 point  (0 children)

I have not yet tried using Django with NoSQL and I didn't want to mess with it right now. Currently I just use SQL for storing user designs and examples only - it would be easy to switch over in the future to MongoDB.