Saturday, May 25, 2019

हिंदी को अधिक सरल बनाने का प्रयास

हाल ही में, मैं अपनी बेटी को हिंदी सिखाते वक्त मैंने देखा कि कुछ ची ज़ो को बदल दें तो हम हिंदी को और सरल बना सकतें हैं।

1. अ के आशोधनों को अन्य अक्षरों से अलग प्रकार से लिखा जाता है। इसको ऐसे बदलना चाहिये

इस बदलाव से अक्षर की लिखायी सुसंगत हो जायेगी और छात्रों को अतिरिक्त अक्षर सीखने नहीं पडेंगे।

2. तू, तुम और आप कि जगह, सब को "तुम" से ही बुलाना चाहीये। अंग्रेजी में सिर्फ "you" का शब्द इन तीन तूकार्राथी शब्दों के बदले में उपयोग किया जाता है। इससे वार्तालाप में समानता बढेगी।

More notes from an amateur Hindi teacher later,
Kuntal.


Monday, January 28, 2019

A machine learning approach to teaching math to an 8 year old

Over the weekend, I came across a bunch of "mathletes" question papers that my son had used over the years. He is now in high school. My daughter is in 2nd grade and I thought I'd pick age appropriate problems for her to think about. There were some concepts that she had not heard about so instead of teaching them the regular way, I thought I'd give her a few examples and see if she can learn the algorithm. She knows place values, addition, subtraction, multiplication and can do division graphically, by distributing the dividend sequentially into the divisor.

Average

I showed her the table below and asked her what "average" means:

Numbers Average
3,5 4
4,4 4
6, 6, 6 6
4,6 5
3,4,5 4
She said the average was somewhere in the middle but couldn't come up with a formula to find it. I then asked her to add the numbers and see if the sum was related to the average. At that point, she figured out that the sum was double that of the average. For the rows with 3 numbers, I asked her to write the times table of the average and see if she could figure it out. At that point she lit up and said we need to count the numbers. After that, she put all the steps in words, very nicely.

Rounding

The question was "round 10424 to the nearest hundred," so I started with some examples.
Number Round to 10
9 10
11 10
17 20
23 20
29 30

This was particularly pleasing, because she not only worked out the operation by herself, she also asked how would "5s" be handled. And I explained that all the mathematicians in the world had gathered together and shook each others' hands and agreed to always round it up.

I then gave her a few round up to 100 examples, which she understood quickly. Then she could answer the question correctly, after making one mistake in which she rounded up to 10.

Remainder

The question was, what is the remainder when dividing 124 by 8. The picture below shows the 3 columns that were initially given to her as examples - Dividend, Divisor, Remainder. All artwork is her own :).
This one, she hasn't completed yet. She got pretty close with the circled examples dividing 7 and 8 by 3, but hasn't formulated the algorithm just yet. Will update the blog once we do that.

Have a nice day  - and don't worry about #ftcqcom.
Kuntal.

Sunday, July 22, 2018

Recommendations for spectrum allocation in India for 5G

4G and earlier

Despite obvious advantages with respect to interoperability, breadth of coverage and overall capital expenditure, instead of choosing either GSM or CDMA, India's Department of Telecommunications allowed operators to offer services with both radio protocols. For a country that should be worried about efficient allocation of capital, this was a choice that led to short term windfall for the government in terms of spectrum auction prices but eventually led to public-borne losses due to defaults by Reliance Communications [Ref 1].

It is imperative that the relevant government authorities learn from past failures and follow well established international practices on spectrum allocation to come up with a 5G spectrum allocation method.

5G

Expected Impact

5G has significant technical improvements over 4G that are expected to enable new use cases and improve productivity. In particular relevance to this blog, 5G can enable more functionality in connected autonomous vehicles. A study claims that within a decade of investment, economic output per person could increase by up to US $1500 after a decade of 5G rollout [Ref 2].  The 5G global value chain including network operators, core technology and component suppliers, device OEMs, infrastructure providers, and content and application developers, is expected to grow to $3.5 trillion in 2035 [Ref 3].

Early indications

5G has two leading contenders - "sub 6" for frequences < 6 GHz and "mmWave" for frequencies > 30 GHz and > 6 GHz.
The Indian government has, as per early indications, come out in support of the 24.25-27.5 GHz band. This seems a reasonable first step since it aligns with EU and China plans [Ref 4].

Recommendations


  1. Align with China.
    Unlike 3G and 4G, where an advanced economy like the United States could afford nationwide rollout of both GSM (AT&T and T-Mobile) and CDMA (Verizon and Sprint), a developing economy like India could gain economies of scale by adopting one standard with multiple suppliers.  The size of the Chinese market can be expected to be supplied by multiple network equipment vendors from around the world.
  2. Partake in the value chain
    While base stations will need to change to support the new radio interface, the back-end can be leveraged from existing networks, albeit with lowered latencies and higher bandwidths. India can target specific elements in infrastructure to be sourced from local companies. Software based switching stations, integrated billing software, nationwide emergency services integration, etc. could be targeted for such initiatives.
    Another way to partake in the value chain would be to encourage purchase from suppliers that build their sofware in India.
  3. Overlay security on top
    Assume that the underlying network elements are insecure, build a secure layer on top that enables end to end security. 
  4. Localize network management
    Prioritize growth in local expertise of network management and software. Network management expertise may lead to custom APIs for Indian needs such as for congestion and emergency management.
  5. Finally, accelerate deployment of 5G. ज़माने के साथ चलना पड़ेगा यदि भारत को एक विकसित देश बनाना है|

References

1.RCom plunges more than 20% on mounting debt woes, Q4 loss.



Friday, March 16, 2018

Empowering software integration

Software integration is often looked down upon in the software development community despite the key role it plays in the software delivery process. Quite often, even the broader scoped Software Configuration Management is not given its due in terms of resources or recognition. Here are my suggestions to make software integration contribute in a more meaningful way to make the entire software delivery cycle more efficient:

Software integration is the process of pulling multiple sources of code together, building them, testing the output and releasing either the source or the generated binary. The established best practice is to enable continuous delivery of software where the integration, build, test and release tasks are handled automatically when new source code is submitted for integration.

Where Continuous Integration starts to particularly break down is on embedded systems when the work output of largely independent software teams is integrated and the resultant output runs on a single processor with constrained memory and clock cycles. Each team contributes to thoroughly testing its own deliverable, but an integrated test is needed for performance under concurrency. Most often, this "integrated test" is simply a concurrent run of the individual tests. The challenge is to select the right tests to run concurrently and to establish metrics that signal the test pass/fail status.

By shifting ownership of the concurrent test and performance metrics to the integration team, one can make the team contribute more meaningfully to the software delivery life cycle. The integration team should establish checks to ensure that each contributing team consumes its pre-established amount of system resources such as memory and processor cycles. This structure also automatically establishes a triage workflow since any concurrency related failures are first looked at by the team that performed the integration rather than the individual technology team, thus speeding up troubleshooting.

Linking test delivery to code, with coverage based pass/fail is a topic for another day.
-Kuntal.

Monday, December 5, 2016

The elements of learning to bike

As an accomplished father who just taught his 5yo to ride a bike in 4 sessions of 30-45 minutes each, I can unequivocally say that starting with the pedals removed is indeed a quicker way to learn. While I did not refer to it before teaching my daughter, I referenced it before writing this post and I can say that this post by REI documents the process well.

Here are the implicit rules my daughter followed while learning how to bike:

  1. If the bike went too close to parked cars, she'd stop.
    Implicit rule: don't touch things that do not belong to you. She has no problems running into me with her scooter.
  2. If the bike went too fast for her comfort, she'd drag her feet and bring it to a stop.
    Implicit rule: uncontrolled speed may cause injury.
  3. When there is little room to steer between people on one side and a tree on the other side, get closer to the trees.
    Implicit rule: don't hurt a human. 
If something unexpected happened, such as a fall, then she'd take a break before getting convinced to start again. This seems to be a critical aspect of learning - to fail, pause to internally assess what went wrong and retry with a plan.
I'll close with her picture - the sheer joy of learning something new is quite apparent!
Regards,
Kuntal.
PS: I wrote this back in July 2016 but didn't get around to publishing it.

Friday, September 9, 2016

Halide for ADAS

Luggage space will decide the winner of autonomous vehicle race.

Automakers have two choices towards meeting sensor fusion compute requirements for autonomous vehicles - take up all the trunk space for server-grade computers OR optimize processing so that compute can fit in a pizza box and leave room in the trunk for luggage.

As I described in my earlier post on ADAS framework challenges, optimizing sensor processing tasks is a time intensive process and may well be the rate-determining factor in deciding on how to use the trunk.

I have looked at image processing frameworks available in the industry and I have come to the conclusion that Halide is the most suitable framework to quickly connect sensor processing algorithms and experiment with their optimal load distribution on an SoC. I encourage system designers to learn about Halide directly from the link above. The key features that make Halide attractive for an ADAS sensor compute framework are:

  • Split algorithm from implementation
    • This allows the algorithm designer to focus on the algorithm and not on how to optimally construct it for a particular SoC.
  • Enable implementation iteration over cores, threads, rows, tiles, SIMD sizes
    • An SoC expert can take a working algorithm and then experiment with various load distributions without worrying about changing the algorithm. Thus if a particular SoC has a mix of CPU, GPU, DSP, vision-specific accelerators, the implementation can quickly take advantage of these elements. 
  • Function-call type pipeline constructs
    • Frameworks such as OpenVX mistakenly focus on pipeline connections and conformance as the problems to be solved, but these are rather trivial aspects as compared to the bigger problem of quick experimentation with load-distribution.
  • Defined interfaces between Halide and C++ based functions such as that in OpenCV
    • Halide isn't suitable for control-intensive algorithms such as finding contours. One can easily integrate OpenCV with Halide. 
  • The ability to visualize performance
    • This is an often overlooked aspect of optimization. Halide has a built-in, elegant way of visualizing performance.
Finally, although the Halide run-time and tools haven't yet been qualified for ISO26262, the way the language is constructed makes it well suited for ADAS usage nonetheless. Image boundaries (a common source of bugs) are syntactically handled. Bounds inference on input and output buffers is automated. 

All said and done, Halide offers a faster path to move from server-sized compute to optimized compute in a smaller form factor. I'd rather buy a car that I can load my luggage into. 


And it might be a while until my next post.
Kuntal.